Add TraceGUI #161
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BauSystem#161
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "TraceGui" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
@ -39,6 +40,7 @@ public class CommandTrace implements CommandExecutor {
player.sendMessage("§8/§etrace start §8- §7Startet die Aufnahme aller TNT-Positionen");
player.sendMessage("§8/§etrace stop §8- §7Stoppt den TNT-Tracer");
player.sendMessage("§8/§etrace toggleauto §8- §7Automatischer Aufnahmenstart");
player.sendMessage("§8/§etrace show gui §8- §7Zeigt die Trace show gui");
Warum nicht trace gui? Es ist kein Showmodus und wird die meisten nur verwirren.
Weil die Trace GUI, für die Auswahl einzelner TNT sein soll. Also einen ganz anderen Zweck hat. Und ja dies ist kein Show Mode, weshalb ich diese auch einzeln in der Help Nachricht aufgeführt habe.
Und ich wollte dir auch keinen 300 Zeilen PR wieder hier geben. Sondern nur eine GUI nach der anderen implementieren. Und da fange ich mit dieser ganz bewusst an, um die '/trace show' Sache zu vereinfachen.
@ -0,0 +47,4 @@
playerShowMode.setInterpolate_XZ(false);
SHOW_MODE_PARAMETER_HASH_MAP.put(player, playerShowMode);
SWInventory swInventory = new SWInventory(player, 9, BauSystem.PREFIX + "ShowGUI");
Trace GUI heißt das Teil. Und nicht so komisch. Das ist der TITEL der GUI.
Ich würde es
Trace Show GUI
nehmen, da das besser zu dem passt, wofür dies gemacht istJagut. Aber dann einfach Trace Show GUI nennen, und nicht §eBau§8System» §7ShowGUI
Dies ist passiert.
@ -0,0 +54,4 @@
SWItem trace_hide = new SWItem(Material.RED_CONCRETE, "§cTraces Ausgeblendet", new ArrayList<>(), false, clickType -> {});
setActiveShow(player, swInventory, trace_show, trace_hide);
SWItem water = new SWItem(Material.TNT, "§eWasser §7Positionen", Arrays.asList("§7Zeigt alles TNT, welches", "§7im Wasser explodiert ist"), false, clickType -> {});
Deutsch. Wasserpositionen
Nach ist ein .
@ -0,0 +58,4 @@
swInventory.setItem(5, water);
swInventory.setCallback(5, clickType -> toggleHideTNTinWaterExploded(player, swInventory, water));
SWItem interpolateY = new SWItem(Material.QUARTZ_STAIRS, "§eInterpolation §7Y-Achse", Arrays.asList("§7Zeigt die Interpolation", "§7auf der Y-Achse"), false, clickType -> {});
Nach einem ganzen Satz ein ganzer Punkt.
@ -0,0 +62,4 @@
swInventory.setItem(6, interpolateY);
swInventory.setCallback(6, clickType -> toggleInterpolateYPosition(player, swInventory, interpolateY));
SWItem interpolateXZ = new SWItem(Material.QUARTZ_SLAB, "§eInterpolation §7XZ-Achse", Arrays.asList("§7Zeigt die Interpolation", "§7auf der XZ-Achse"), false, clickType -> {});
Funktionieren die Materials auch in der 1.12? Und der Punkt.
Guck ich gleich mal nach, aber soweit ich weiß sollte dies schon immer so genannt worden sein.
@ -0,0 +91,4 @@
}
private static void toggleHideTNTinWaterExploded(Player player, SWInventory swInventory, SWItem swItem) {
ShowModeParameter showModeParameter = SHOW_MODE_PARAMETER_HASH_MAP.get(player);
Die meisten dürften das nicht verstehen, dass die Änderungen erst beim klicken auf Show auch umgesetzt werden. Daher wäre es weitaus besser, wenn beim Anklicken von InWater oder anderem sofort die Änderungen umgesetzt werden. Dann brauchst du auch deine SHOW_MODE_PARAMETER_HASH_MAP nicht mehr (PS: Die ist keine Konstante).
Warum sollte ich diese nicht mehr brauchen. Ich muss mir wohl irgendwo merken, was du alles aktiv hast!
@ -0,0 +120,4 @@
swInventory.setCallback(7, clickType -> toggleInterpolateXZPosition(player, swInventory, swItem));
}
private static void show(Player player) {
Wie stellst du dir die Erweiterbarkeit vor, wenn z.B. ein Block-Show-Modus dazu kommt oder ein Particle-Show-Modus?
Vllt neben show/hide als block dann 3 blöcke nehmen, für Block/Entity/Particle? Irgendwie ein Spawn Ei für entity, ein nether star für particle und ein brick für block? Vllt sollten wir da aber das Menü eh dann nochmal ändern, womit wir doch dann auch darüber nachdenken können oder?
@ -0,0 +123,4 @@
private static void show(Player player) {
ShowModeParameter showModeParameter = SHOW_MODE_PARAMETER_HASH_MAP.get(player);
ShowMode showMode;
if (showModeParameter.isAdvanced()) {
Hier beists sich langsam, dass du zwischen basic und advanced für den gleichen EntityTracer unterscheidest.
Würdest du also die beiden Tracer mergen? Sodass wir kein Basic/Advanced sondern Entity haben? Jedoch würde ich das hier nicht in diesen PR machen, weil das das Thema des PR's etwas verfehlt.
Ja, das fände ich strukturell sinnvoller.
Ja dann mache ich das, jedoch erst wenn dieser PR durch ist, sonst muss ich wieder irgendwie in 2 branches das ganze machen.
Auch hier habe ich nun sachen behoben
@ -0,0 +55,4 @@
swInventory.addCloseCallback(clickType -> ShowModeParameterMap.remove(player));
SWItem trace_show = new SWItem(Material.LIME_CONCRETE, "§aTraces Angezeigt", new ArrayList<>(), false, clickType -> {});
SWItem trace_hide = new SWItem(Material.RED_CONCRETE, "§cTraces Ausgeblendet", new ArrayList<>(), false, clickType -> {});
angezeigt & ausgeblendet jeweils kleinschreiben
@ -0,0 +58,4 @@
SWItem trace_hide = new SWItem(Material.RED_CONCRETE, "§cTraces Ausgeblendet", new ArrayList<>(), false, clickType -> {});
setActiveShow(player, swInventory, trace_show, trace_hide);
SWItem water = new SWItem(Material.TNT, "§eWasser §7Positionen", Arrays.asList("§7Zeigt alles TNT, welches", "§7im Wasser explodiert ist."), false, clickType -> {});
Wasserpositionen
§7Zeigt auch TNT, welches
§7im Wasser explodiert ist.
@ -0,0 +60,4 @@
SWItem water = new SWItem(Material.TNT, "§eWasser §7Positionen", Arrays.asList("§7Zeigt alles TNT, welches", "§7im Wasser explodiert ist."), false, clickType -> {});
swInventory.setItem(5, water);
swInventory.setCallback(5, clickType -> toggleHideTNTinWaterExploded(player, swInventory, water));
Ich glaube, das mit den Callbacks sollte auch gehen direkt bei der SWItemerstellung mit -> {this}? (Weiß ich nicht sicher, sollte ma n aber mal ausprobieren)
mit 'this' referenciere ich dann die Klasse also GuiTraceShow, nicht die Instanz SWItem und wenn ich das referenziere beim erstellen geht dies auch nicht.
@ -0,0 +76,4 @@
swInventory.open();
}
private static void setActiveShow(Player player, SWInventory swInventory, SWItem shown, SWItem hidden) {
shown & hidden müssen nicht oben extra erzeugt werden, man kann die items auch hier in der Helferfunktion erst erstellen (übersichtlicherer Programmfluss & es müssen nicht immer beide erstellt werden)
@ -0,0 +100,4 @@
show(player);
swItem.setEnchanted(showModeParameter.isWater());
swInventory.setItem(5, swItem);
Hast du das mal so ausprobiert? Ich weiß nicht, ob die GUI so "live"-updatebar ist.
Ja dies tut.