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.
Dann behebe den neuen Fehler, Mr. Java Profi. Sollte doch ganz einfach für jemanden sein der Java kann, oder nicht?
Was hast du den?"Mr Java Profi" habe ich jemals damit angegeben dass ich sau gut Java kann?Äh ne dazu wäre ich wohl nicht hier wenn ich es nicht oft genug selbst probiert hätte....
Aber hier kriegt man ja sehr gute hilfe ;)
Würde ich mal gute Tipps usw bekommen und nicht "Lern Java" hören dann wär dieser Thread schon geschlossen und das Problem wäre gelöst....
 
Ey, wir geben dir gute Tipps. Lern java ist ein guter Tipp.
 
Ey, wir geben dir gute Tipps. Lern java ist ein guter Tipp.
Gute Tipps?Wann kommen die denn? Dazu kann ich java also....
Und wenn ich super Java könnte dann wäre ich nicht hier....
Wenn alle in der Szene die"Coden" gut Java könnten usw gäb es teile des Forums überhaupt nicht. .....
 
Gute Tipps?Wann kommen die denn? Dazu kann ich java also....
Und wenn ich super Java könnte dann wäre ich nicht hier....
Wenn alle in der Szene die"Coden" gut Java könnten usw gäb es teile des Forums überhaupt nicht. .....
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
 
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
Ich kann mehr als die Grundlagen, aber ich lerne noch und ich hatte eine frage und habe hilfe gesucht diese frage bzw die hilfe für mein problem habe ich noch nicht bekommen usw
Das Java lernen ein guter Tipp ist stimmt aber irgendwann nervt der tipp auch und ich versuche doch nur dieses Kack GUI hinzukriegen.....
Ich könnte auch ein GUI skidden aber ich frage lieber und nutze eine API und wenn diese läuft setze ich mich daran diese zu editieren um mir ein "eigenes" zu machen aber dafür bräuchte ich erstmal dass problem hinkriegen
 
Du bist einfach zu inkompetent dass umzusetzten was ich dir gesagt habe xD
 
Du bist einfach zu inkompetent dass umzusetzten was ich dir gesagt habe xD
was hast du mir den gesagt was ich umsetzen soll?Ich habe den SettingsManager initialisiert hats geholfen?-Ähm nö
 
was hast du mir den gesagt was ich umsetzen soll?Ich habe den SettingsManager initialisiert hats geholfen?-Ähm nö
schick mal deine clickguiklasse (die mod klasse), deine mod klasse und deine main. Dann kann ich dir whsl sagen woran es liegt.
 
schick mal deine clickguiklasse (die mod klasse), deine mod klasse und deine main. Dann kann ich dir whsl sagen woran es liegt.
Ich verstehe nicht warum ihr euch noch mit dem Typen auseinandersetzt er hat keine selbstreflektion, er ist immer noch der Meinung das er Java kann, was natürlich die dümmste Aussage ist die ich jemals gehört habe, und will sich ja anscheinend nicht wirklich helfen lassen.
 
schick mal deine clickguiklasse (die mod klasse), deine mod klasse und deine main. Dann kann ich dir whsl sagen woran es liegt.
ok hier:"
Module:
import com.darkmagician6.eventapi.events.Event;

import net.minecraft.client.Minecraft;

public class Module {
protected static Minecraft mc = Minecraft.getMinecraft();

private String name;
private int keyBind;
protected boolean enabled;
private int color;
private Category category;
private String addon;



public Module(String name, int color, Category category) {
this.name = name;
this.color = color;
this.category = category;
this.setup();
}




public int getColor() {
return color;
}

public void setKeyBind(int keyBind) {
this.keyBind = keyBind;
}

public int getKeyBind() {
return keyBind;
}

public String getName() {
return name;
}

public boolean isEnabled() {
return enabled;
}

public void setColor(int color) {
this.color = color;
}

public Category getCategory() {
return category;
}
public String getAddon() {
return this.addon;
}

public void setAddon(String addon) {
this.addon = addon;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public void setup() {
}

public void toggle() {
if (enabled) {
enabled = false;
onDisable();
} else {
enabled = true;
onEnable();
}
}

public void onEnable() {}
public void onDisable() {}
public void onTick() {}
public void onUpdate() {}
public void onPostUpdate() {}
public void onRender() {}
public void onEvent(Event event) {}
public boolean isToggled() {
return false;
}







}

ClickGUI:
package de.Player.client.hacks;

import java.util.ArrayList;

import com.darkmagician6.eventapi.EventTarget;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import de.Hero.settings.Setting;
import de.Hero.settings.SettingsManager;
import de.Player.client.Category;
import de.Player.client.Module;

import de.Player.client.Client;
public class ClickGUI extends Module{

public ClickGUI() {
super("ClickGUI", 0xFFFFF, Category.HUD);

}
@Override
public void setup(){
ArrayList<String> options = new ArrayList<>();
options.add("JellyLike");
options.add("New");
Client.setmgr.rSetting(new Setting("Design", this, "New", options));
Client.setmgr.rSetting(new Setting("Sound", this, false));
Client.setmgr.rSetting(new Setting("GuiRed", this, 255, 0, 255, true));
Client.setmgr.rSetting(new Setting("GuiGreen", this, 26, 0, 255, true));
Client.setmgr.rSetting(new Setting("GuiBlue", this, 42, 0, 255, true));
}

@Override
public void onEnable() {
mc.displayGuiScreen(Client.clickgui);
toggle();
super.onEnable();

}




}


Main:
import java.io.File;
import org.lwjgl.opengl.Display;
import net.minecraft.client.Minecraft;
import de.Player.client.command.CommandManager;
import de.Hero.clickgui.ClickGUI;
import de.Player.client.ModuleMgr;
import de.Hero.settings.SettingsManager;

public class Client {
public static String clientName = "Client";
public static Client instance;
public static SettingsManager setmgr;
public static ModuleMgr modulemgr;
public static ClickGUI clickgui;

public File directory;
public static ModuleMgr moduleManager;
public CommandManager commandManager;
public KeybindManager keyManager;
public SettingsManager settings = new SettingsManager();

public void enable() {
instance = this;

Display.setTitle("Client beta1.35");

directory = new File(Minecraft.getMinecraft().mcDataDir, "Client");
if (!directory.exists())
directory.mkdir();

commandManager = new CommandManager();
moduleManager = new ModuleMgr();
keyManager = new KeybindManager();
keyManager.setKeyBinds();
SettingsManager setmgr;

modulemgr = new ModuleMgr();
}
public void setup(){
modulemgr = new ModuleMgr();
clickgui = new ClickGUI();
SettingsManager setmgr;
setmgr = new SettingsManager();

}



}
"
Und ja der Client Name ist "Client" da mir noch kein guter name eingefallen ist x)
Wenn irgendwo was zu verbessern ist dann dies bitte auch sagen habe vllt ab und zu fehler/flüchtigkeits fehler gemacht usw... :D
Ach und ich habe alles so gelassen wie ich es vor dem SettingsManager settings zeug gemacht hatte
 
setup Methode in jedem Modul Konstruktor aufrufen was diese benutzt.
 
Drei seiten. Für so etwas einfaches? l3l
 
Vlt hast du die drawString Methoden ind der ClickGui Klasse auskommentiert.
 
Oder probier den ModuleManager über den SettingManager zu initialisieren.
 
Lasst es einfach. Er wird es nie im Leben schaffen, auch wenn man ihm hilft...
 
Vlt hast du die drawString Methoden ind der ClickGui Klasse auskommentiert.
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);
}
 
@Override
public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
/*
* Damit man nicht nochmal den Listeningmode aktivieren kann,
* wenn er schon aktiviert ist
*/
if(mb != null)return;

/*
* Benötigt damit auch mit Elements interagiert werden kann
* besonders zu beachten ist dabei, dass zum einen rpanels aufgerufen
* wird welche eine Eigenständige Kopie von panels ist, genauer oben erklärt
* Also rpanels damit zuerst das panel 'untersucht' wird, dass als letztes
* gerendert wurde => Ganz oben ist!
* sodass der Nutzer nicht mit dem Unteren interagiern kann, weil er es wohl
* nicht will. Und damit nicht einfach mit Panels anstatt Elements interagiert wird
* werden hier nur die Settings untersucht. Und wenn wirklich interagiert wurde, dann
* endet diese Methode hier.
* Das ist auch in anderen Loops zu beobachten
*/
for (Panel panel : rpanels) {
if (panel.extended && panel.visible && panel.Elements != null) {
for (ModuleButton b : panel.Elements) {
if (b.extended) {
for (Element e : b.menuelements) {
if (e.mouseClicked(mouseX, mouseY, mouseButton))
return;
}
}
}
}
}

/*
* Benötigt damit mit ModuleButtons interagiert werden kann
* und Panels 'gegriffen' werden können
*/
for (Panel p : rpanels) {
if (p.mouseClicked(mouseX, mouseY, mouseButton))
return;
}

/*
* Nicht benötigt, aber es ist so einfach sauberer ;)
*/
try {
super.mouseClicked(mouseX, mouseY, mouseButton);
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void mouseReleased(int mouseX, int mouseY, int state) {
/*
* Damit man nicht nochmal den Listeningmode aktivieren kann,
* wenn er schon aktiviert ist
*/
if(mb != null)return;

/*
* Eigentlich nur für die Slider benötigt, aber
* durch diesen Call erfährt jedes Element, wenn
* z.B. Rechtsklick losgelassen wurde
*/
for (Panel panel : rpanels) {
if (panel.extended && panel.visible && panel.Elements != null) {
for (ModuleButton b : panel.Elements) {
if (b.extended) {
for (Element e : b.menuelements) {
e.mouseReleased(mouseX, mouseY, state);
}
}
}
}
}

/*
* Benötigt damit Slider auch losgelassen werden können und nicht
* immer an der Maus 'festkleben' :>
*/
for (Panel p : rpanels) {
p.mouseReleased(mouseX, mouseY, state);
}

/*
* Nicht benötigt, aber es ist so einfach sauberer ;)
*/
super.mouseReleased(mouseX, mouseY, state);
}


@Override
public void initGui() {
/*
* Start blur
*/
if (OpenGlHelper.shadersSupported && mc.func_175606_aa() instanceof EntityPlayer) {
if (mc.entityRenderer.theShaderGroup != null) {
mc.entityRenderer.theShaderGroup.deleteShaderGroup();
}
mc.entityRenderer.func_175069_a(new ResourceLocation("shaders/post/blur.json"));
}
}

@Override
public void onGuiClosed() {
/*
* End blur
*/
if (mc.entityRenderer.theShaderGroup != null) {
mc.entityRenderer.theShaderGroup.deleteShaderGroup();
mc.entityRenderer.theShaderGroup = null;
}
/*
* Sliderfix
*/
for (Panel panel : ClickGUI.rpanels) {
if (panel.extended && panel.visible && panel.Elements != null) {
for (ModuleButton b : panel.Elements) {
if (b.extended) {
for (Element e : b.menuelements) {
if(e instanceof ElementSlider){
((ElementSlider)e).dragging = false;
}
}
}
}
}
}
}

public void closeAllSettings() {
for (Panel p : rpanels) {
if (p != null && p.visible && p.extended && p.Elements != null
&& p.Elements.size() > 0) {
for (ModuleButton e : p.Elements) {
//e.extended = false;
}
}
}
}
}
 
Status
Not open for further replies.
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top