RedstoneTester #202
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
3 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BauSystem#202
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "RedstoneTester" 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?
Closes: #201
@ -0,0 +21,4 @@
import java.util.List;
public class TabCompleteUtils {
Why The Hell brauch das eine eigene Klasse? Man kann auch das mit den PlayerUtils zusammenlegen und eine SWUtils o.Ä. machen
@ -0,0 +31,4 @@
private void help(Player player) {
player.sendMessage("§7Messe die Zeit zwischen der Aktivierung zweier Redstone Komponenten");
player.sendMessage("§8/§eredstonetester help §8- §7Zeigt diese Nachricht");
Könnte man bitte mal versuchen diese Command Syntaxen Konsistent halten?
Die erste Zeile ist die help nachricht um das feature zu verstehen.
Ich hab die andere Zeile makiert
@ -52,16 +53,7 @@ public class CommandTNTTabComplete implements TabCompleter {
if (args.length >= 2) {
return new ArrayList<>();
}
return manageList(tabComplete, args, 0);
Dat sind aber net alle TabCompleter (Kann man eig. in einem eig. PR machen)
Und ich mache die Änderung da, wo ich dann sehe, dass ich Code dopplung habe, welche ich geändert haben möchte. Dafür kriegt ihr keinen zweiten PR. Sorry das wäre mir zu blöd.
@ -0,0 +25,4 @@
import java.util.List;
public class SWUtils {
Kann man das nicht in einen eigenen PR machen?
Ich würde dies nicht machen, weil das nur unnütz neue PR's macht und ich ja genau hier die Verbesserung dadurch mache.
Mach es für die Prüfbarkeit in einen eigenen PR, man sollte nicht zwei große änderungen bzw. eine Änderung und ein Refactor in einem PR machen
@ -81,0 +79,4 @@
ItemStack redstoneWand = wand(player, RedstoneListener.WAND, "§8/§7redstonetester", null, "");
inv.setItem(37, redstoneWand, clickType -> {
player.closeInventory();
player.performCommand("redstonetester");
Wenn man auf den Wand klickt, dann sollte man auch den Wand bekommen. Und keine Help message
@ -0,0 +97,4 @@
Player player = event.getPlayer();
Block block = event.getClickedBlock();
event.setCancelled(true);
Der sollte schon irgendeine Permission haben e.g. Build
Warum sollte man hierfür irgendeine Berechtigung haben brauchen?
@ -0,0 +102,4 @@
case RIGHT_CLICK_AIR:
if (player.isSneaking()) {
playerMap.remove(event.getPlayer());
player.sendMessage(BauSystem.PREFIX + "Positionen gelöscht§8.");
Warum hat der Punkt eine andere Farbe?
Weil Sonderzeichen bei uns immer dunkel grau sind.
@ -0,0 +119,4 @@
}
private void sendLocation(Player player, String prefix, Location location) {
player.sendMessage(BauSystem.PREFIX + prefix + "§8: §e" + locationToString(location));
Wie wäre es, wenn man auf die Nachricht klickt, und dann zu diesem Punkt TPt wird?
Ich weiß nicht wie sinnvoll das ist, weil du ja explizit auf den block clickst.
@ -0,0 +59,4 @@
}
switch (args[0].toLowerCase()) {
case "wand":
Bei nur einem Subbefehl, sollte man es gleich lassen und bei dem /redstonetester befehl den Wand geben.
@ -0,0 +38,4 @@
private List<String> commandTabComplete(Player player, String[] args) {
List<String> tabComplete = new ArrayList<>();
tabComplete.add("help");
Der ist garnicht in der Helpmessage
@ -0,0 +106,4 @@
case RIGHT_CLICK_AIR:
if (player.isSneaking()) {
playerMap.remove(event.getPlayer());
player.sendMessage(BauSystem.PREFIX + "Positionen gelöscht§8.");
Der Punkt braucht keine andere Farbe
@ -38,1 +40,4 @@
private static long ticksSinceServerStart = 0;
@SuppressWarnings("java:S4276")
public static final Supplier<Long> currentTick = () -> ticksSinceServerStart;
STATIC FINAL IST IM UPPERCASE
Nein an der Stelle werde ich es getrosst ignorieren, weil es so einfacher zu benutzen ist!
@ -0,0 +35,4 @@
}
}
public static List<String> manageList(List<String> strings, String[] args, int index) {
Die
SWUtils
in einen eigenen PR@ -0,0 +49,4 @@
return false;
}
player.sendMessage("§7Messe die Zeit zwischen der Aktivierung zweier Redstone Komponenten");
Hier noch der SW-Prefix
@ -0,0 +25,4 @@
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
Mit BlockData wird es in der 1.12 etwas eng, aka. Nicht existent
Wie soll man es alternativ lösen?
@ -99,6 +99,9 @@ public class BauSystem extends JavaPlugin implements Listener {
getCommand("script").setExecutor(new CommandScript());
getCommand("simulator").setExecutor(new CommandSimulator());
getCommand("simulator").setTabCompleter(new CommandSimulatorTabCompleter());
if (Core.getVersion() >= 15) {
Das kann man auch mit der VersionedRunnable machen.
btw: Anstat es nur 1.15 zu machen, könnte man es auch machen, dass man sich den Byte des Aktuellen Blockstates speichert und wenn dieser sich ändert dann wird das der Tester getriggert.
Ich glaube trotzdem, dass diese Sache nur für die 1.15 unsere main bau version gebraucht wird. Und ich finde dies so schöner, weil man dann nicht noch die doppelte verschaltelung der VersionedRunnable hat, welche nur einen Wert hat. Sind 2 Objekte weniger für die VM.
Aber trotzdem sollte man es einheitlich halten, und da auch wenn dann eine VersionedRunnable nutzen.
Sonst wäre das jetzt der einzigste ort, wo das so gemacht werden würde.
@ -0,0 +45,4 @@
public class RedstoneListener implements Listener {
private static class RedstoneTester {
Innere Klassen kommen nach unten
@ -0,0 +80,4 @@
}
private Map<Player, RedstoneTester> playerMap = new HashMap<>();
Warum ist das nicht Static?
@ -0,0 +81,4 @@
}
private Map<Player, RedstoneTester> playerMap = new HashMap<>();
public static final ItemStack WAND = new SWItem(Material.BLAZE_ROD, "§eRedstonetester", Arrays.asList("§eLinksklick Block §8- §7Setzt die 1. Position", "§eRechtsklick Block §8- §7Setzt die 2. Position", "§eShift-Rechtsklick Luft §8- §7Zurücksetzten"), false, null).getItemStack();
Static nach ganz oben
@ -37,2 +39,4 @@
private static long nanoDOffset = 0;
private static long ticksSinceServerStart = 0;
@SuppressWarnings("java:S4276")
Etwas unnötig, meine ich
@ -81,0 +81,4 @@
if (Welt.noPermission(player, Permission.build))
return;
player.closeInventory();
if (Core.getVersion() >= 15) {
Diesen Check sollte man eher im redstonetester command machen
Ok mache ich am Wochenende
@ -0,0 +100,4 @@
private boolean validBlock(Player player, BlockData block) {
if (block instanceof Powerable) return true;
if (block instanceof Piston) return true;
player.sendMessage(BauSystem.PREFIX + "Unbekannte Position");
§c
@ -0,0 +45,4 @@
if (!(commandSender instanceof Player))
return false;
Player player = (Player) commandSender;
if (Core.getVersion() >= 15) {
Hier kann man auch noch die VersionedCallable nehmen. :D
@ -0,0 +166,4 @@
return;
}
if (tick != null && loc2.equals(location)) {
player.sendMessage(BauSystem.PREFIX + "Differenz§8: §e" + (TPSUtils.currentTick.get() - tick) + "§8 - §7in GameTicks");
Ticks sollte hier reichen, vllt. in Klammern hinter die Ticks, die Ticks / 2 -> RedstoneTicks. Dann kann man auch nur Ticks schreiben und dem spieler ist klar, was was ist.
Sieht gut aus, hab jetzt nichts mehr gefunden, was ich anzukreiden hätte