Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

UnicodeFontRenderer

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Hallo,
ich möchte in dem UnicodeFontRenderer auch String mit Minecraft Farbcodes rendern lassen nun meine Frage: Wie mach ich sorg ich dar für, dass der UnicodeFontRenderer auch Strings mit z.B. §3 rendert?
 
Du findest die farbcodes und änderst bei dem Punkt die Farbe, fertig.
 
Beim Parameter color in drawString fügst du einfach deine gewünschte Farbe mittels Farbcode ein. Diese findest du z.B. hier:
http://www.farb-tabelle.de/de/farbtabelle.htm


Da das HTML Codes sind, entfernst du das "#" und schreibst noch "0x" davor. z.B. Ich nehme die Farbe #FFFFFF (weiß). In drawString schreibe ich es jetzt 0xFFFFFF
 
Minecraft Farbcodes
Beim Parameter color in drawString fügst du einfach deine gewünschte Farbe mittels Farbcode ein. Diese findest du z.B. hier:
http://www.farb-tabelle.de/de/farbtabelle.htm


Da das HTML Codes sind, entfernst du das "#" und schreibst noch "0x" davor. z.B. Ich nehme die Farbe #FFFFFF (weiß). In drawString schreibe ich es jetzt 0xFFFFFF
@TraceYT Du verwechselst da die Gesamt-Farbe des Textes mit der selbst gewählten Formatierung von Teilen des Textes.
Der Text soll allerdings mit einer anderen Schriftart als die des derzeitigen Minecraft Texturenpaketes gerendert werden.
z.B.: Wenn du dem Client eine Nachricht mit dem Inhalt: "Standart, §cRot, §f§oItalic" wird das so formatiert: "Standart, Rot, Italic".
Außerdem ist deine Erklärung nicht wirklich korrekt:
Da das HTML Codes sind
Es sind keine "HTML Codes", es sind hexadezimale Zahlen, welche nach einem (A)RGB Schema aufgebaut sind.
Wenn jemand eine genauere Erklärung haben will soll er/sie/xier(xdxdxd) fragen.
 
Habs geschaft... Wer es haben will:
Code:
 public void drawWithColorString(String string, int x, int y, int color) {
        if(string.contains("§")){
            int x2 = x;
            int leer = this.getStringWidth(" ");
            if(!string.startsWith("§")){
                String wordwithout = string.split(" ")[0];
                this.drawString(wordwithout, x2, y, color);
                x2 += this.getStringWidth(wordwithout) + leer;
                String[] colorss = string.split("§");
                for(int i = 1; i < colorss.length; i++){
                    String colorcode = colorss[i].split("")[0];
                    int colors = ColorUtils.getFromText(colorcode);
                    String word = colorss[i].substring(1);
                    this.drawString(word, x2, y, colors);
                    x2 += this.getStringWidth(word) + leer;
                }
            }else{
                String[] colorss = string.split("§");
                for(int i = 1; i < colorss.length; i++){
                    String colorcode = colorss[i].split("")[0];
                    int colors = ColorUtils.getFromText(colorcode);
                    String word = colorss[i].substring(1);
                    this.drawString(word, x2, y, colors);
                    x2 += this.getStringWidth(word) + leer;
                }
            }
        }else{
            this.drawString(string, x, y, color);
        }
   }

  @Override
    public int getStringWidth(String string) {
        if(string.contains("§")){
            int ret = 0;
            if(!string.startsWith("§")){
                ret += font.getWidth(string.split(" ")[0] +" ")/2;
            }
            String[] colorss = string.split("§");
            for(int i = 1; i < colorss.length; i++){
                ret += font.getWidth(colorss[i].substring(1) +" ")/2;
            }
            return ret;
        }
        return font.getWidth(string) / 2;
    }
Ich weiß ist nicht schön gecoded...
 
Last edited by a moderator:
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top