16.7_dev-19
This commit is contained in:
191
src/main/java/net/t2code/t2codelib/util/T2C_GenerateFrame.java
Normal file
191
src/main/java/net/t2code/t2codelib/util/T2C_GenerateFrame.java
Normal file
@@ -0,0 +1,191 @@
|
||||
// This class was created by JaTiTV.
|
||||
|
||||
package net.t2code.t2codelib.util;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
|
||||
public class T2C_GenerateFrame {
|
||||
|
||||
@Getter
|
||||
private static final String BOTTOM_BORDER = "╚═══════════════════════════════════════════════════════════════════════════╝";
|
||||
@Getter
|
||||
private static final String STROKE = "╠═══════════════════════════════════════════════════════════════════════════╣";
|
||||
private static final int FIXED_WIDTH = BOTTOM_BORDER.length() - 2; // Länge ohne die Randzeichen
|
||||
|
||||
@Getter
|
||||
private static final String COLOR_CODE = "§e";
|
||||
|
||||
private static final String BORDER_CHAR = "═";
|
||||
private static final String TOP_LEFT = "╔";
|
||||
private static final String TOP_RIGHT = "╗";
|
||||
private static final String BOTTOM_LEFT = "╚";
|
||||
private static final String BOTTOM_RIGHT = "╝";
|
||||
private static final String SIDE_BORDER = "║";
|
||||
|
||||
public static String setCenterAligned(String prefix, String text) {
|
||||
String colorCode = COLOR_CODE;
|
||||
|
||||
if (T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
colorCode = "";
|
||||
}
|
||||
// Entfernen von Farbcodes aus der Berechnungslänge
|
||||
String textWithoutColor = removeColorCodes(text);
|
||||
int textLengthWithoutColor = textWithoutColor.length();
|
||||
int totalPaddingSize = FIXED_WIDTH - textLengthWithoutColor;
|
||||
|
||||
// Sicherstellen, dass das Padding nicht negativ wird
|
||||
if (totalPaddingSize < 0) totalPaddingSize = 0;
|
||||
|
||||
// Berechnung des Abstands vor und nach dem Text
|
||||
int paddingLeft = totalPaddingSize / 2;
|
||||
int paddingRight = totalPaddingSize - paddingLeft;
|
||||
// Formatierung der Zeile: Text zentrieren
|
||||
String formattedValue = colorCode + "║" + " ".repeat(paddingLeft) + text + " ".repeat(paddingRight) + colorCode + "║";
|
||||
//T2Csend.console(prefix + " " + formattedValue);
|
||||
if (T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
return removeColorCodes(formattedValue);
|
||||
} else return prefix + " " + formattedValue;
|
||||
}
|
||||
|
||||
|
||||
public static String setLeftAligned(String prefix, String text) {
|
||||
String colorCode = COLOR_CODE;
|
||||
|
||||
if (T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
colorCode = "";
|
||||
}
|
||||
// Entfernen von Farbcodes aus der Berechnungslänge
|
||||
String textWithoutColor = removeColorCodes(text);
|
||||
int textLengthWithoutColor = textWithoutColor.length();
|
||||
int totalPaddingSize = FIXED_WIDTH - textLengthWithoutColor;
|
||||
|
||||
// Sicherstellen, dass das Padding nicht negativ wird
|
||||
if (totalPaddingSize < 0) totalPaddingSize = 0;
|
||||
|
||||
// Berechnung des Abstands nach dem Text und vor dem Rand
|
||||
int paddingRight = totalPaddingSize; // Alles Padding geht nach rechts
|
||||
|
||||
// Formatierung der Zeile: Text am Anfang und dynamischer Abstand zum Ende
|
||||
String formattedValue = colorCode + "║ " + text + " ".repeat((paddingRight - 1)) + colorCode + "║";
|
||||
if (T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
return removeColorCodes(formattedValue);
|
||||
} else return prefix + " " + formattedValue;
|
||||
}
|
||||
|
||||
|
||||
// Methode für mehrere Zeilen Text mit dynamischem Rahmen
|
||||
public static String getFrameLeft(String prefix, boolean console, String... lines) {
|
||||
// Entfernen von Farbcodes und Berechnung der maximalen Länge
|
||||
String colorCode = COLOR_CODE;
|
||||
String nextLine = "<br>";
|
||||
|
||||
if (console && T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
colorCode = "";
|
||||
nextLine = "\n";
|
||||
}
|
||||
int maxLength = 0;
|
||||
for (String line : lines) {
|
||||
String lineWithoutColor = removeColorCodes(line);
|
||||
maxLength = Math.max(maxLength, lineWithoutColor.length());
|
||||
}
|
||||
|
||||
// Berechnung der Rahmenbreite
|
||||
int frameWidth = maxLength + 2; // +2 für die Ränder '║'
|
||||
String topBorder = colorCode + TOP_LEFT + BORDER_CHAR.repeat(frameWidth) + colorCode + TOP_RIGHT;
|
||||
String bottomBorder = colorCode + BOTTOM_LEFT + BORDER_CHAR.repeat(frameWidth) + colorCode + BOTTOM_RIGHT;
|
||||
|
||||
// Gehe durch jede Zeile und formatiere sie
|
||||
StringBuilder builder = new StringBuilder();
|
||||
// Ausgabe der oberen Linie
|
||||
if (console) builder.append(nextLine);
|
||||
builder.append(prefix).append(" ").append(topBorder).append(nextLine);
|
||||
for (String line : lines) {
|
||||
// Entfernen von Farbcodes aus der Berechnungslänge
|
||||
String lineWithoutColor = removeColorCodes(line);
|
||||
int lineLengthWithoutColor = lineWithoutColor.length();
|
||||
int totalPaddingSize = frameWidth - lineLengthWithoutColor; // -2 für die Ränder '║'
|
||||
|
||||
// Sicherstellen, dass das Padding nicht negativ wird
|
||||
if (totalPaddingSize < 0) totalPaddingSize = 0;
|
||||
|
||||
// Berechnung des Abstands nach dem Text und vor dem Rand
|
||||
int paddingLeft = 0; // Kein zusätzlicher Abstand vor dem Text
|
||||
int paddingRight = totalPaddingSize; // Alles Padding geht nach rechts
|
||||
|
||||
// Formatierung der Zeile: Text am Anfang und dynamischer Abstand zum Ende
|
||||
String formattedValue = colorCode + SIDE_BORDER + line + " ".repeat(paddingRight) + colorCode + SIDE_BORDER;
|
||||
builder.append(prefix).append(" ").append(formattedValue).append(nextLine);
|
||||
}
|
||||
// Ausgabe der unteren Linie
|
||||
builder.append(prefix).append(" ").append(bottomBorder);
|
||||
// T2Csend.console(builder.toString());
|
||||
if (console && T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
return removeColorCodes(builder.toString());
|
||||
} else return builder.toString();
|
||||
}
|
||||
|
||||
public static String getFrameCenter(String prefix, boolean console, String... lines) {
|
||||
String colorCode = COLOR_CODE;
|
||||
String nextLine = "<br>";
|
||||
|
||||
|
||||
if (console && T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
System.out.println("conole & velo");
|
||||
colorCode = "";
|
||||
nextLine = "\n";
|
||||
}
|
||||
|
||||
// Entfernen von Farbcodes und Berechnung der maximalen Länge
|
||||
int maxLength = 0;
|
||||
for (String line : lines) {
|
||||
String lineWithoutColor = removeColorCodes(line);
|
||||
maxLength = Math.max(maxLength, lineWithoutColor.length());
|
||||
}
|
||||
|
||||
// Berechnung der Rahmenbreite
|
||||
int frameWidth = maxLength + 2; // +2 für die Ränder '║'
|
||||
String topBorder = colorCode + TOP_LEFT + BORDER_CHAR.repeat(frameWidth) + colorCode + TOP_RIGHT;
|
||||
String bottomBorder = colorCode + BOTTOM_LEFT + BORDER_CHAR.repeat(frameWidth) + colorCode + BOTTOM_RIGHT;
|
||||
|
||||
// Gehe durch jede Zeile und formatiere sie
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
// Ausgabe der oberen Linie
|
||||
if (console) builder.append(nextLine);
|
||||
builder.append(prefix).append(" ").append(topBorder).append(nextLine);
|
||||
for (String line : lines) {
|
||||
// Entfernen von Farbcodes aus der Berechnungslänge
|
||||
String lineWithoutColor = removeColorCodes(line);
|
||||
int lineLengthWithoutColor = lineWithoutColor.length();
|
||||
int totalPaddingSize = frameWidth - lineLengthWithoutColor; // -2 für die Ränder '║'
|
||||
|
||||
// Sicherstellen, dass das Padding nicht negativ wird
|
||||
if (totalPaddingSize < 0) totalPaddingSize = 0;
|
||||
|
||||
// Berechnung des Abstands vor und nach dem Text
|
||||
int paddingLeft = totalPaddingSize / 2;
|
||||
int paddingRight = totalPaddingSize - paddingLeft;
|
||||
|
||||
// Formatierung der Zeile: Text zentrieren
|
||||
String formattedValue = colorCode + SIDE_BORDER + " ".repeat(paddingLeft) + line + " ".repeat(paddingRight) + colorCode + SIDE_BORDER;
|
||||
builder.append(prefix).append(" ").append(formattedValue).append(nextLine);
|
||||
}
|
||||
// Ausgabe der unteren Linie
|
||||
builder.append(prefix).append(" ").append(bottomBorder);
|
||||
// T2Csend.console(builder.toString());
|
||||
if (console && T2C_PlatformDetector.detectPlatform == T2C_PlatformDetector.PlatformType.VELOCITY) {
|
||||
return removeColorCodes(builder.toString());
|
||||
} else return builder.toString();
|
||||
}
|
||||
|
||||
// Methode zum Entfernen von Farbcodes und MiniMessage-Farbcodes aus dem Text, außer <br>
|
||||
public static String removeColorCodes(String text) {
|
||||
// Regex für alle Farbcodes und MiniMessage-Codes außer <br>
|
||||
// String miniMessageRegex = "<(?!br)(color:#([A-Fa-f0-9]{6})|[a-zA-Z_]+)(:[a-zA-Z0-9_]+)?>|</[a-zA-Z_]+>";
|
||||
// return text.replaceAll("§[a-f0-9k-oK-O]", "").replaceAll(miniMessageRegex, "");
|
||||
String s = MiniMessage.miniMessage().stripTags(text).replaceAll("§[a-f0-9k-oK-O]", "");
|
||||
System.out.println(s);
|
||||
return s;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user