SteamWar/BauSystem2.0
Archiviert
12
0

Merge remote-tracking branch 'origin/master'

Dieser Commit ist enthalten in:
yoyosource 2021-05-24 12:19:22 +02:00
Commit 2579d7b6e6
2 geänderte Dateien mit 86 neuen und 57 gelöschten Zeilen

Datei anzeigen

@ -27,6 +27,8 @@ import org.bukkit.inventory.ItemStack;
public class InventoryListener_15 { public class InventoryListener_15 {
private static final int threshold = 2048;
public static boolean checkItemStack(ItemStack item) { public static boolean checkItemStack(ItemStack item) {
net.minecraft.server.v1_15_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); net.minecraft.server.v1_15_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
NBTTagCompound tag = nmsItem.getTag(); NBTTagCompound tag = nmsItem.getTag();
@ -34,13 +36,13 @@ public class InventoryListener_15 {
NBTTagCompound blockTag = tag.getCompound("BlockEntityTag"); NBTTagCompound blockTag = tag.getCompound("BlockEntityTag");
assert blockTag != null; assert blockTag != null;
if (blockTag.hasKey("Items")) { if (blockTag.hasKey("Items")) {
return drillDown(blockTag.getList("Items", 10), 0, 0) > 1024; return drillDown(blockTag.getList("Items", 10), 0, 0) > threshold;
} }
return false; return false;
} }
private static int drillDown(NBTTagList items, int layer, int start) { private static int drillDown(NBTTagList items, int layer, int start) {
if (layer > 2) return start + 1024; if (layer > 2) return start + threshold;
int invalid = start; int invalid = start;
for (NBTBase nbtBase : items) { for (NBTBase nbtBase : items) {
if (!(nbtBase instanceof NBTTagCompound)) if (!(nbtBase instanceof NBTTagCompound))
@ -56,7 +58,7 @@ public class InventoryListener_15 {
} }
} }
} }
if (invalid > 1024) if (invalid > threshold)
break; break;
} }
return invalid; return invalid;

Datei anzeigen

@ -20,6 +20,7 @@
package de.steamwar.bausystem.features.loader; package de.steamwar.bausystem.features.loader;
import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.config.ColorConfig; import de.steamwar.bausystem.config.ColorConfig;
import de.steamwar.bausystem.linkage.LinkageType; import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked; import de.steamwar.bausystem.linkage.Linked;
@ -58,100 +59,126 @@ public class LoaderCommand extends SWCommand {
@Register("setup") @Register("setup")
public void setupLoader(Player p) { public void setupLoader(Player p) {
if (Loader.getLoader(p) != null) { if (permissionCheck(p)) {
Loader.getLoader(p).setup(); if (Loader.getLoader(p) != null) {
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Dein Loader ist nun wieder im Setup"); Loader.getLoader(p).setup();
} else { p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Dein Loader ist nun wieder im Setup");
Loader.newLoader(p); } else {
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Belade und feuer einmal die Kanone ab, um den Loader zu initialisieren."); Loader.newLoader(p);
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Führe dann /" + ColorConfig.HIGHLIGHT + "loader start" + ColorConfig.BASE + " um den Loader zu starten"); p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Belade und feuer einmal die Kanone ab, um den Loader zu initialisieren.");
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Führe dann /" + ColorConfig.HIGHLIGHT + "loader start" + ColorConfig.BASE + " um den Loader zu starten");
}
} }
} }
@Register("start") @Register("start")
public void startLoader(Player p) { public void startLoader(Player p) {
Loader loader = Loader.getLoader(p); if (permissionCheck(p)) {
if (loaderNullCheck(loader, p)) { Loader loader = Loader.getLoader(p);
return; if (loaderNullCheck(loader, p)) {
return;
}
loader.start();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader ist nun aktiviert.");
} }
loader.start();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader ist nun aktiviert.");
} }
@Register("stop") @Register("stop")
public void stopLoader(Player p) { public void stopLoader(Player p) {
Loader loader = Loader.getLoader(p); if (permissionCheck(p)) {
if (loaderNullCheck(loader, p)) { Loader loader = Loader.getLoader(p);
return; if (loaderNullCheck(loader, p)) {
return;
}
loader.stop();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader ist nun gestoppt.");
} }
loader.stop();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader ist nun gestoppt.");
} }
@Register("pause") @Register("pause")
public void pauseLoader(Player p) { public void pauseLoader(Player p) {
Loader loader = Loader.getLoader(p); if (permissionCheck(p)) {
if (loaderNullCheck(loader, p)) { Loader loader = Loader.getLoader(p);
return; if (loaderNullCheck(loader, p)) {
return;
}
loader.pause();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader ist nun pausiert.");
} }
loader.pause();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader ist nun pausiert.");
} }
@Register("resume") @Register("resume")
public void resumeLoader(Player p) { public void resumeLoader(Player p) {
Loader loader = Loader.getLoader(p); if (permissionCheck(p)) {
if (loaderNullCheck(loader, p)) { Loader loader = Loader.getLoader(p);
return; if (loaderNullCheck(loader, p)) {
return;
}
loader.resume();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader läuft nun weiter.");
} }
loader.resume();
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Der Loader läuft nun weiter.");
} }
@Register("wait") @Register("wait")
public void shotDelayLoader(Player p, int delay) { public void shotDelayLoader(Player p, int delay) {
if (delay < 1) { if (permissionCheck(p)) {
p.sendMessage(BauSystem.PREFIX + ColorConfig.ERROR + "Die Wartezeit ist zu klein"); if (delay < 1) {
return; p.sendMessage(BauSystem.PREFIX + ColorConfig.ERROR + "Die Wartezeit ist zu klein");
return;
}
Loader loader = Loader.getLoader(p);
if (loaderNullCheck(loader, p)) {
return;
}
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Die Schusswartezeit ist nun: " + delay + ", zuvor " + loader.getTicksBetweenShots());
loader.setTicksBetweenShots(delay);
} }
Loader loader = Loader.getLoader(p);
if (loaderNullCheck(loader, p)) {
return;
}
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Die Schusswartezeit ist nun: " + delay + ", zuvor " + loader.getTicksBetweenShots());
loader.setTicksBetweenShots(delay);
} }
@Register("speed") @Register("speed")
public void speedLoader(Player p, int delay) { public void speedLoader(Player p, int delay) {
if (delay < 1) { if (permissionCheck(p)) {
p.sendMessage(BauSystem.PREFIX + ColorConfig.ERROR + "Die Wartezeit ist zu klein"); if (delay < 1) {
return; p.sendMessage(BauSystem.PREFIX + ColorConfig.ERROR + "Die Wartezeit ist zu klein");
return;
}
Loader loader = Loader.getLoader(p);
if (loaderNullCheck(loader, p)) {
return;
}
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "die Setzwartezeit ist nun: " + delay + ", zuvor " + loader.getTicksBetweenBlocks());
loader.setTicksBetweenShots(delay);
} }
Loader loader = Loader.getLoader(p);
if (loaderNullCheck(loader, p)) {
return;
}
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "die Setzwartezeit ist nun: " + delay + ", zuvor " + loader.getTicksBetweenBlocks());
loader.setTicksBetweenShots(delay);
} }
@Register("undo") @Register("undo")
public void undoLast(Player p) { public void undoLast(Player p) {
Loader loader = Loader.getLoader(p); if (permissionCheck(p)) {
if (loaderNullCheck(loader, p)) { Loader loader = Loader.getLoader(p);
return; if (loaderNullCheck(loader, p)) {
return;
}
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Undo erfolgreich.");
loader.undo();
} }
p.sendMessage(BauSystem.PREFIX + ColorConfig.BASE + "Undo erfolgreich.");
loader.undo();
} }
@Register("clear") @Register("clear")
public void clearLoader(Player p) { public void clearLoader(Player p) {
Loader loader = Loader.getLoader(p); if (permissionCheck(p)) {
if (loaderNullCheck(loader, p)) { Loader loader = Loader.getLoader(p);
return; if (loaderNullCheck(loader, p)) {
return;
}
loader.clear();
} }
loader.clear(); }
private boolean permissionCheck(Player player) {
if (!Permission.hasPermission(player, Permission.WORLD)) {
player.sendMessage(BauSystem.PREFIX + ColorConfig.DISABLE + "Du darfst hier nicht den Detonator nutzen");
return false;
}
return true;
} }
} }