Welcome on MasterOf13FPS! MasterOf13FPS

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

Clean Probleme bei der HeroCode GUI API

Status
Not open for further replies.
Das ist meine CLICKGUI Klasse (in der API)Habe aber eigentlich nichts richtig geändert:

import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import de.Hero.clickgui.elements.Element;
import de.Hero.clickgui.elements.ModuleButton;
import de.Hero.clickgui.elements.menu.ElementSlider;
import de.Hero.clickgui.util.ColorUtil;
import de.Hero.clickgui.util.FontUtil;
import de.Hero.settings.SettingsManager;

//Deine Imports
import de.Player.client.Client;
import de.Player.client.Category;
import de.Player.client.Module;
import de.Player.client.ModuleMgr;

/**
* Made by HeroCode
* it's free to use
* but you have to credit me
*
* @author HeroCode
*/
public class ClickGUI extends GuiScreen {
public static ArrayList<Panel> panels;
public static ArrayList<Panel> rpanels;
private ModuleButton mb = null;
public SettingsManager setmgr;

/*
* Konstrukor sollte nur einmal aufgerufen werden => in der MainMethode des eigenen Codes
* hier Client.startClient()
* das GUI wird dann so geöffnet:
* mc.displayGuiScreen(Client.clickgui);
* this.setToggled(false);
* das Module wird sofort wieder beendet damit
* nächstes mal nicht 2mal der z.B. 'RSHIFT' Knopf gedrückt
* werden muss
*/
public ClickGUI() {
setmgr = Client.setmgr;

FontUtil.setupFontUtils();
panels = new ArrayList<>();
double pwidth = 80;
double pheight = 15;
double px = 10;
double py = 10;
double pyplus = pheight + 10;

/*
* Zum Sortieren der Panels einfach die Reihenfolge im Enum ändern ;)
*/
for (Category c : Category.values()) {
String title = Character.toUpperCase(c.name().toLowerCase().charAt(0)) + c.name().toLowerCase().substring(1);
ClickGUI.panels.add(new Panel(title, px, py, pwidth, pheight, false, this) {
@Override
public void setup() {
for (Module m : Client.instance.modulemgr.mods) {
if (!m.getCategory().equals(c))continue;
this.Elements.add(new ModuleButton(m, this));
}
}
});
py += pyplus;
}

/*
* Wieso nicht einfach
* rpanels = panels;
* Collections.reverse(rpanels);
* Ganz eifach:
* durch diese Zuweisung wird rpanels einfach nur eine Weiterleitung
* zu panels, was mit 'Collections.reverse(rpanels);' nicht ganz
* funktionieren würde. Und da die Elemente nur 'rüberkopiert' werden
* gibt es keine Probleme ;)
*/
rpanels = new ArrayList<Panel>();
for (Panel p : panels) {
rpanels.add(p);
}
Collections.reverse(rpanels);

}

@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
/*
* Panels und damit auch Buttons rendern.
* panels wird NUR hier im Code verwendet, da das
* zuletzt gerenderte Panel ganz oben ist
* Auch wenn es manchmal egal wäre ob panels/rpanels
* benutzt wird habe ich mich einfach mal dazu entschieden,
* einfach weil es einfacher ist nur einmal panels zu benutzen
*/
for (Panel p : panels) {
p.drawScreen(mouseX, mouseY, partialTicks);
}


/* */ ScaledResolution s = new ScaledResolution(mc, mc.displayWidth,mc.displayHeight);
/* DO NOT REMOVE */ GL11.glPushMatrix();
/* copyright HeroCode 2017 */ GL11.glTranslated(s.getScaledWidth(), s.getScaledHeight(), 0);GL11.glScaled(0.5, 0.5, 0.5);
/* https://www.youtube.com/channel/UCJum3PIbnYvIfIEu05GL_yQ */ FontUtil.drawStringWithShadow("b"+"y"+ "H"+"e"+"r"+"o"+"C"+"o"+"d"+"e", -Minecraft.getMinecraft().fontRendererObj.getStringWidth("b"+"y"+ "H"+"e"+"r"+"o"+"C"+"o"+"d"+"e"), -Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT, 0xff11F86B);
/* */ GL11.glPopMatrix();

mb = null;
/*
* Überprüfen ob ein Button listening == true hat, wenn
* ja, dann soll nicht mehr gesucht werden, nicht dass
* 1+ auf listening steht...
*/
listen:
for (Panel p : panels) {
if (p != null && p.visible && p.extended && p.Elements != null
&& p.Elements.size() > 0) {
for (ModuleButton e : p.Elements) {
if (e.listening) {
mb = e;
break listen;
}
}
}
}

/*
* Settings rendern. Da Settings über alles gerendert werden soll,
* abgesehen vom ListeningOverlay werden die Elements von hier aus
* fast am Schluss gerendert
*/
for (Panel panel : panels) {
if (panel.extended && panel.visible && panel.Elements != null) {
for (ModuleButton b : panel.Elements) {
if (b.extended && b.menuelements != null && !b.menuelements.isEmpty()) {
double off = 0;
Color temp = ColorUtil.getClickGUIColor().darker();
int outlineColor = new Color(temp.getRed(), temp.getGreen(), temp.getBlue(), 170).getRGB();

for (Element e : b.menuelements) {
e.offset = off;
e.update();
if(Client.setmgr.getSettingByName("Design").getValString().equalsIgnoreCase("New")){
Gui.drawRect(e.x, e.y, e.x + e.width + 2, e.y + e.height, outlineColor);
}
e.drawScreen(mouseX, mouseY, partialTicks);
off += e.height;
}
}
}
}

}

/*
* Wenn mb != null ist => ein Button listening == true
* dann wird das Overlay gerendert mit ein paar Informationen.
*/


/*
* Nicht benötigt, aber es ist so einfach sauberer ;)
* Und ohne diesen call können keine GUIButtons/andere Elemente
* gerendert werden
*/
super.drawScreen(mouseX, mouseY, partialTicks);
}
Du hast echt was gegen Hastebin / Pastebin oder den fucking [ CODE ] [ /CODE ] block, stimmts?
 
Das ist meine CLICKGUI Klasse (in der API)Habe aber eigentlich nichts richtig geändert:

import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import de.Hero.clickgui.elements.Element;
import de.Hero.clickgui.elements.ModuleButton;
import de.Hero.clickgui.elements.menu.ElementSlider;
import de.Hero.clickgui.util.ColorUtil;
import de.Hero.clickgui.util.FontUtil;
import de.Hero.settings.SettingsManager;

//Deine Imports
import de.Player.client.Client;
import de.Player.client.Category;
import de.Player.client.Module;
import de.Player.client.ModuleMgr;

/**
* Made by HeroCode
* it's free to use
* but you have to credit me
*
* @author HeroCode
*/
public class ClickGUI extends GuiScreen {
public static ArrayList<Panel> panels;
public static ArrayList<Panel> rpanels;
private ModuleButton mb = null;
public SettingsManager setmgr;

/*
* Konstrukor sollte nur einmal aufgerufen werden => in der MainMethode des eigenen Codes
* hier Client.startClient()
* das GUI wird dann so geöffnet:
* mc.displayGuiScreen(Client.clickgui);
* this.setToggled(false);
* das Module wird sofort wieder beendet damit
* nächstes mal nicht 2mal der z.B. 'RSHIFT' Knopf gedrückt
* werden muss
*/
public ClickGUI() {
setmgr = Client.setmgr;

FontUtil.setupFontUtils();
panels = new ArrayList<>();
double pwidth = 80;
double pheight = 15;
double px = 10;
double py = 10;
double pyplus = pheight + 10;

/*
* Zum Sortieren der Panels einfach die Reihenfolge im Enum ändern ;)
*/
for (Category c : Category.values()) {
String title = Character.toUpperCase(c.name().toLowerCase().charAt(0)) + c.name().toLowerCase().substring(1);
ClickGUI.panels.add(new Panel(title, px, py, pwidth, pheight, false, this) {
@Override
public void setup() {
for (Module m : Client.instance.modulemgr.mods) {
if (!m.getCategory().equals(c))continue;
this.Elements.add(new ModuleButton(m, this));
}
}
});
py += pyplus;
}

/*
* Wieso nicht einfach
* rpanels = panels;
* Collections.reverse(rpanels);
* Ganz eifach:
* durch diese Zuweisung wird rpanels einfach nur eine Weiterleitung
* zu panels, was mit 'Collections.reverse(rpanels);' nicht ganz
* funktionieren würde. Und da die Elemente nur 'rüberkopiert' werden
* gibt es keine Probleme ;)
*/
rpanels = new ArrayList<Panel>();
for (Panel p : panels) {
rpanels.add(p);
}
Collections.reverse(rpanels);

}

@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
/*
* Panels und damit auch Buttons rendern.
* panels wird NUR hier im Code verwendet, da das
* zuletzt gerenderte Panel ganz oben ist
* Auch wenn es manchmal egal wäre ob panels/rpanels
* benutzt wird habe ich mich einfach mal dazu entschieden,
* einfach weil es einfacher ist nur einmal panels zu benutzen
*/
for (Panel p : panels) {
p.drawScreen(mouseX, mouseY, partialTicks);
}


/* */ ScaledResolution s = new ScaledResolution(mc, mc.displayWidth,mc.displayHeight);
/* DO NOT REMOVE */ GL11.glPushMatrix();
/* copyright HeroCode 2017 */ GL11.glTranslated(s.getScaledWidth(), s.getScaledHeight(), 0);GL11.glScaled(0.5, 0.5, 0.5);
/* https://www.youtube.com/channel/UCJum3PIbnYvIfIEu05GL_yQ */ FontUtil.drawStringWithShadow("b"+"y"+ "H"+"e"+"r"+"o"+"C"+"o"+"d"+"e", -Minecraft.getMinecraft().fontRendererObj.getStringWidth("b"+"y"+ "H"+"e"+"r"+"o"+"C"+"o"+"d"+"e"), -Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT, 0xff11F86B);
/* */ GL11.glPopMatrix();

mb = null;
/*
* Überprüfen ob ein Button listening == true hat, wenn
* ja, dann soll nicht mehr gesucht werden, nicht dass
* 1+ auf listening steht...
*/
listen:
for (Panel p : panels) {
if (p != null && p.visible && p.extended && p.Elements != null
&& p.Elements.size() > 0) {
for (ModuleButton e : p.Elements) {
if (e.listening) {
mb = e;
break listen;
}
}
}
}

/*
* Settings rendern. Da Settings über alles gerendert werden soll,
* abgesehen vom ListeningOverlay werden die Elements von hier aus
* fast am Schluss gerendert
*/
for (Panel panel : panels) {
if (panel.extended && panel.visible && panel.Elements != null) {
for (ModuleButton b : panel.Elements) {
if (b.extended && b.menuelements != null && !b.menuelements.isEmpty()) {
double off = 0;
Color temp = ColorUtil.getClickGUIColor().darker();
int outlineColor = new Color(temp.getRed(), temp.getGreen(), temp.getBlue(), 170).getRGB();

for (Element e : b.menuelements) {
e.offset = off;
e.update();
if(Client.setmgr.getSettingByName("Design").getValString().equalsIgnoreCase("New")){
Gui.drawRect(e.x, e.y, e.x + e.width + 2, e.y + e.height, outlineColor);
}
e.drawScreen(mouseX, mouseY, partialTicks);
off += e.height;
}
}
}
}

}

/*
* Wenn mb != null ist => ein Button listening == true
* dann wird das Overlay gerendert mit ein paar Informationen.
*/


/*
* Nicht benötigt, aber es ist so einfach sauberer ;)
* Und ohne diesen call können keine GUIButtons/andere Elemente
* gerendert werden
*/
super.drawScreen(mouseX, mouseY, partialTicks);
}
Erstens CODE BLOCK
Zweitens Junge falsche Klasse für was brauchen wir die ClickGUI Klasse wenn die Font in ModuleButton gedrawt wird?

:EDIT
Das zeigt alleine dein Wissen das du nicht mal dich mit der API auseinander gesetzt hast.
 
Last edited by a moderator:
Erstens CODE BLOCK
Zweitens Junge falsche Klasse für was brauchen wir die ClickGUI Klasse wenn die Font in ModuleButton gedrawt wird?

:EDIT
Das zeigt alleine dein Wissen das du nicht mal dich mit der API auseinander gesetzt hast.
Ich wurde nach der CLICKGUI klasse gefragt diese habe ich auch geschrieben
2.Hier ist die ModuleButton Klasse:
import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;

import org.lwjgl.input.Keyboard;

import de.Hero.clickgui.Panel;
import de.Hero.clickgui.elements.menu.ElementCheckBox;
import de.Hero.clickgui.elements.menu.ElementComboBox;
import de.Hero.clickgui.elements.menu.ElementSlider;
import de.Hero.clickgui.util.ColorUtil;
import de.Hero.clickgui.util.FontUtil;
import de.Hero.settings.Setting;

//Deine Imports
import de.Player.client.Client;
import de.Player.client.Module;

/**
* Made by HeroCode
* it's free to use
* but you have to credit me
*
* @author HeroCode
*/
public class ModuleButton {
public Module mod;
public ArrayList<Element> menuelements;
public Panel parent;
public double x;
public double y;
public double width;
public double height;
public boolean extended = false;
public boolean listening = false;

/*
* Konstrukor
*/
public ModuleButton(Module imod, Panel pl) {
mod = imod;
height = Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT + 2;
parent = pl;
menuelements = new ArrayList<>();
/*
* Settings wurden zuvor in eine ArrayList eingetragen
* dieses SettingSystem hat 3 Konstruktoren je nach
* verwendetem Konstruktor ändert sich die Value
* bei .isCheck() usw. so kann man ganz einfach ohne
* irgendeinen Aufwand bestimmen welches Element
* für ein Setting benötigt wird :>
*/
if (Client.setmgr.getSettingsByMod(imod) != null)
for (Setting s : Client.setmgr.getSettingsByMod(imod)) {
if (s.isCheck()) {
menuelements.add(new ElementCheckBox(this, s));
} else if (s.isSlider()) {
menuelements.add(new ElementSlider(this, s));
} else if (s.isCombo()) {
menuelements.add(new ElementComboBox(this, s));
}
}

}

/*
* Rendern des Elements
*/
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
Color temp = ColorUtil.getClickGUIColor();
int color = new Color(temp.getRed(), temp.getGreen(), temp.getBlue(), 150).getRGB();

/*
* Ist das Module an, wenn ja dann soll
* #ein neues Rechteck in Größe des Buttons den Knopf als Toggled kennzeichnen
* #sich der Text anders färben
*/
int textcolor = 0xffafafaf;
if (mod.isToggled()) {
Gui.drawRect(x - 2, y, x + width + 2, y + height + 1, color);
textcolor = 0xffefefef;
}

/*
* Ist die Maus über dem Element, wenn ja dann soll der Button sich anders färben
*/
if (isHovered(mouseX, mouseY)) {
Gui.drawRect(x - 2, y, x + width + 2, y + height + 1, 0x55111111);
}

/*
* Den Namen des Modules in die Mitte (x und y) rendern
*/
FontUtil.drawTotalCenteredStringWithShadow(mod.getName(), x + width / 2, y + 1 + height / 2, textcolor);
}

/*
* 'true' oder 'false' bedeutet hat der Nutzer damit interagiert und
* sollen alle anderen Versuche der Interaktion abgebrochen werden?
*/
public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) {
if (!isHovered(mouseX, mouseY))
return false;

/*
* Rechtsklick, wenn ja dann Module togglen,
*/
if (mouseButton == 0) {
mod.toggle();

if(Client.setmgr.getSettingByName("Sound").getValBoolean())
Minecraft.getMinecraft().thePlayer.playSound("random.click", 0.5f, 0.5f);
} else if (mouseButton == 1) {
/*
* Wenn ein Settingsmenu existiert dann sollen alle Settingsmenus
* geschlossen werden und dieses geöffnet/geschlossen werden
*/
if (menuelements != null && menuelements.size() > 0) {
boolean b = !this.extended;
Client.clickgui.closeAllSettings();
this.extended = b;

if(Client.setmgr.getSettingByName("Sound").getValBoolean())
if(extended)Minecraft.getMinecraft().thePlayer.playSound("tile.piston.out", 1f, 1f);else Minecraft.getMinecraft().thePlayer.playSound("tile.piston.in", 1f, 1f);
}
} else if (mouseButton == 2) {
/*
* MidClick => Set keybind (wait for next key)
*/
listening = true;
}
return true;
}


public boolean isHovered(int mouseX, int mouseY) {
return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height;
}

}
 
Ich wurde nach der CLICKGUI klasse gefragt diese habe ich auch geschrieben
2.Hier ist die ModuleButton Klasse:
import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;

import org.lwjgl.input.Keyboard;

import de.Hero.clickgui.Panel;
import de.Hero.clickgui.elements.menu.ElementCheckBox;
import de.Hero.clickgui.elements.menu.ElementComboBox;
import de.Hero.clickgui.elements.menu.ElementSlider;
import de.Hero.clickgui.util.ColorUtil;
import de.Hero.clickgui.util.FontUtil;
import de.Hero.settings.Setting;

//Deine Imports
import de.Player.client.Client;
import de.Player.client.Module;

/**
* Made by HeroCode
* it's free to use
* but you have to credit me
*
* @author HeroCode
*/
public class ModuleButton {
public Module mod;
public ArrayList<Element> menuelements;
public Panel parent;
public double x;
public double y;
public double width;
public double height;
public boolean extended = false;
public boolean listening = false;

/*
* Konstrukor
*/
public ModuleButton(Module imod, Panel pl) {
mod = imod;
height = Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT + 2;
parent = pl;
menuelements = new ArrayList<>();
/*
* Settings wurden zuvor in eine ArrayList eingetragen
* dieses SettingSystem hat 3 Konstruktoren je nach
* verwendetem Konstruktor ändert sich die Value
* bei .isCheck() usw. so kann man ganz einfach ohne
* irgendeinen Aufwand bestimmen welches Element
* für ein Setting benötigt wird :>
*/
if (Client.setmgr.getSettingsByMod(imod) != null)
for (Setting s : Client.setmgr.getSettingsByMod(imod)) {
if (s.isCheck()) {
menuelements.add(new ElementCheckBox(this, s));
} else if (s.isSlider()) {
menuelements.add(new ElementSlider(this, s));
} else if (s.isCombo()) {
menuelements.add(new ElementComboBox(this, s));
}
}

}

/*
* Rendern des Elements
*/
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
Color temp = ColorUtil.getClickGUIColor();
int color = new Color(temp.getRed(), temp.getGreen(), temp.getBlue(), 150).getRGB();

/*
* Ist das Module an, wenn ja dann soll
* #ein neues Rechteck in Größe des Buttons den Knopf als Toggled kennzeichnen
* #sich der Text anders färben
*/
int textcolor = 0xffafafaf;
if (mod.isToggled()) {
Gui.drawRect(x - 2, y, x + width + 2, y + height + 1, color);
textcolor = 0xffefefef;
}

/*
* Ist die Maus über dem Element, wenn ja dann soll der Button sich anders färben
*/
if (isHovered(mouseX, mouseY)) {
Gui.drawRect(x - 2, y, x + width + 2, y + height + 1, 0x55111111);
}

/*
* Den Namen des Modules in die Mitte (x und y) rendern
*/
FontUtil.drawTotalCenteredStringWithShadow(mod.getName(), x + width / 2, y + 1 + height / 2, textcolor);
}

/*
* 'true' oder 'false' bedeutet hat der Nutzer damit interagiert und
* sollen alle anderen Versuche der Interaktion abgebrochen werden?
*/
public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) {
if (!isHovered(mouseX, mouseY))
return false;

/*
* Rechtsklick, wenn ja dann Module togglen,
*/
if (mouseButton == 0) {
mod.toggle();

if(Client.setmgr.getSettingByName("Sound").getValBoolean())
Minecraft.getMinecraft().thePlayer.playSound("random.click", 0.5f, 0.5f);
} else if (mouseButton == 1) {
/*
* Wenn ein Settingsmenu existiert dann sollen alle Settingsmenus
* geschlossen werden und dieses geöffnet/geschlossen werden
*/
if (menuelements != null && menuelements.size() > 0) {
boolean b = !this.extended;
Client.clickgui.closeAllSettings();
this.extended = b;

if(Client.setmgr.getSettingByName("Sound").getValBoolean())
if(extended)Minecraft.getMinecraft().thePlayer.playSound("tile.piston.out", 1f, 1f);else Minecraft.getMinecraft().thePlayer.playSound("tile.piston.in", 1f, 1f);
}
} else if (mouseButton == 2) {
/*
* MidClick => Set keybind (wait for next key)
*/
listening = true;
}
return true;
}


public boolean isHovered(int mouseX, int mouseY) {
return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height;
}

}
Ich helfe dir einfach aus Prinzip nicht, kein Code block oder Hastebin, kommst damit das du "Java kannst" und dabei nicht mal wissen was Parameter sind (hat nicht mal was mit Java selbst zutun sondern eher Mathe). Ich will mich hier nicht als was besseres darstellen, ich bin auch nicht wirklich fortgeschritten in Java selbst aber wenigstens fange ich nicht mit Minecraft an um es zu lernen.
 
Ich helfe dir einfach aus Prinzip nicht, kein Code block oder Hastebin, kommst damit das du "Java kannst" und dabei nicht mal wissen was Parameter sind (hat nicht mal was mit Java selbst zutun sondern eher Mathe). Ich will mich hier nicht als was besseres darstellen, ich bin auch nicht wirklich fortgeschritten in Java selbst aber wenigstens fange ich nicht mit Minecraft an um es zu lernen.
Warum hilfst du mir aus Prinzip nicht?
Dazu weiß ich was Parameter sind und ich nutze kein hastebin/ code block weil was soll ich den blocken oder in hastebin packen? Es bringt einfach nichts mehr oder nichts weniger also dazu möchte ich doch nur versuchen ein GUI hinzukriegen
Und ich habe java angefangen unabhängig von MC zu lernen...
Ich versuche jetzt nur in mc mich mit java fortzubilden und ich möchte wirklich nur dass dieses GUI funktioniert :( :/ :(
 
ich nutze kein hastebin/ code block weil was soll ich den blocken oder in hastebin packen?
willst du mich verarschen? Du sollst dein stück Code in hastebin rein packen damit man ihn vernünftig lesen kann und es das Forum nicht voll spammt mit so einem raw paste, nicht mal formatiert ist der Code
 
willst du mich verarschen? Du sollst dein stück Code in hastebin rein packen damit man ihn vernünftig lesen kann und es das Forum nicht voll spammt mit so einem raw paste, nicht mal formatiert ist der Code
Ok packe ihn dass nächste mal in hastebin rein
 

nicht jeder der "coden" kann behaupt er kann java. Das du java lernen sollst ist der best tipp, den man dir geben kann. Whsl meinst du mit "ich kann java" das du weißt was ne methode ist, was datentypen sind und manche java methoden. Mehr nicht. Du kannst kein Java, du kannst die Grundlagen von java

Könnte bitte mal jemand diese HeroCodeGUI API Testen: https://www.dropbox.com/s/l02b6t5gq2w91rd/HeroGUI_v2.zip?dl=1
Diese nutze ich und ich verstehe langsam nichtmehr warum er da keine Schrift bei den Modulen ist aber bei den Settings des Moduls schon....
Vielleicht liegt es ja an der API
 
Status
Not open for further replies.
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top