SteamWar/BauSystem2.0
Archiviert
12
0

Add EventType.Scoreboard
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Add more Constants

Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
yoyosource 2022-12-28 14:23:17 +01:00
Ursprung 1bfcb55d35
Commit 162fbbaa0c
18 geänderte Dateien mit 276 neuen und 164 gelöschten Zeilen

Datei anzeigen

@ -401,6 +401,7 @@ SCRIPT_GUI_CUSTOM_EVENTS_LORE_14 = §eSelfJoin §8-§7 x, y, z, playerName
SCRIPT_GUI_CUSTOM_EVENTS_LORE_15 = §eSelfLeave §8-§7 x, y, z, playerName SCRIPT_GUI_CUSTOM_EVENTS_LORE_15 = §eSelfLeave §8-§7 x, y, z, playerName
SCRIPT_GUI_CUSTOM_EVENTS_LORE_16 = §eDropItem §8-§7 material, x, y, z SCRIPT_GUI_CUSTOM_EVENTS_LORE_16 = §eDropItem §8-§7 material, x, y, z
SCRIPT_GUI_CUSTOM_EVENTS_LORE_17 = §eEntityDeath §8-§7 entityType, x, y, z SCRIPT_GUI_CUSTOM_EVENTS_LORE_17 = §eEntityDeath §8-§7 entityType, x, y, z
SCRIPT_GUI_CUSTOM_EVENTS_LORE_18 = §eScoreboard
SCRIPT_GUI_CUSTOM_EVENTS_LORE_STAR_1 = §e* §8-§7 Everything in brackets is only set if the variable before is set on §etrue§7. SCRIPT_GUI_CUSTOM_EVENTS_LORE_STAR_1 = §e* §8-§7 Everything in brackets is only set if the variable before is set on §etrue§7.
SCRIPT_GUI_OTHER = §eOther SCRIPT_GUI_OTHER = §eOther
@ -427,7 +428,11 @@ SCRIPT_GUI_COMMAND_NAME = §7Command: §e{0}
SCRIPT_GUI_CUSTOM_VARIABLES = §eCustom Variables SCRIPT_GUI_CUSTOM_VARIABLES = §eCustom Variables
SCRIPT_GUI_CONSTANT_OVERRIDEABLE = §eoverwriteable SCRIPT_GUI_CONSTANT_TIME_NAME = §7Constant §etime
SCRIPT_GUI_CONSTANT_TIME_LORE = §7Formatted time variable.
SCRIPT_GUI_CONSTANT_TICKS_NAME = §7Constant §eticks
SCRIPT_GUI_CONSTANT_TICKS_LORE = §7Ticks since server start.
SCRIPT_GUI_CONSTANT_TRACE_NAME = §7Constant §etrace SCRIPT_GUI_CONSTANT_TRACE_NAME = §7Constant §etrace
SCRIPT_GUI_CONSTANT_TRACE_LORE = §etrue§7 if the trace is activated. SCRIPT_GUI_CONSTANT_TRACE_LORE = §etrue§7 if the trace is activated.
@ -435,6 +440,15 @@ SCRIPT_GUI_CONSTANT_TRACE_LORE = §etrue§7 if the trace is activated.
SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME = §7Constant §eautotrace SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME = §7Constant §eautotrace
SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE = §etrue§7 if the auto trace is activated. SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE = §etrue§7 if the auto trace is activated.
SCRIPT_GUI_CONSTANT_TRACE_STATUS_NAME = §7Constant §etrace_status
SCRIPT_GUI_CONSTANT_TRACE_STATUS_LORE = §7One of: §eOFF§8, §eIDLE§8, §eIDLE_AUTO_EXPLODE§8, §eIDLE_AUTO_IGNITE§8, §eIDLE_SINGLE
SCRIPT_GUI_CONSTANT_TRACE_TIME_NAME = §7Constant §etrace_time
SCRIPT_GUI_CONSTANT_TRACE_TIME_LORE = §e0§7 if the trace is not active, otherwise the time in ticks since the trace was started.
SCRIPT_GUI_CONSTANT_LOADER_STATUS_NAME = §7Constant §eloader_status
SCRIPT_GUI_CONSTANT_LOADER_STATUS_LORE = §7One of: §eOFF§8, §eSETUP§8, §eRUNNING§8, §eSINGLE§8, §ePAUSE§8, §eEND
SCRIPT_GUI_CONSTANT_TNT_NAME = §7Constant §etnt SCRIPT_GUI_CONSTANT_TNT_NAME = §7Constant §etnt
SCRIPT_GUI_CONSTANT_TNT_LORE = §etrue§7 if tnt is not deactivated. SCRIPT_GUI_CONSTANT_TNT_LORE = §etrue§7 if tnt is not deactivated.
@ -486,6 +500,9 @@ SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_DISPLAY_LORE = §eName§7 of the item in t
SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME = §7Constant §eregion_type SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME = §7Constant §eregion_type
SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE = §eregion type§7 of the current region SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE = §eregion type§7 of the current region
SCRIPT_GUI_CONSTANT_REGION_NAME_NAME = §7Constant §eregion_name
SCRIPT_GUI_CONSTANT_REGION_NAME_LORE = §eregion name§7 of the current region
SCRIPT_GUI_CONSTANT_TPS_NAME = §7Constant §etps SCRIPT_GUI_CONSTANT_TPS_NAME = §7Constant §etps
SCRIPT_GUI_CONSTANT_TPS_LORE = §etps§7 of the server SCRIPT_GUI_CONSTANT_TPS_LORE = §etps§7 of the server

Datei anzeigen

@ -421,7 +421,11 @@ SCRIPT_GUI_COMMAND_NAME = §7Command: §e{0}
SCRIPT_GUI_CUSTOM_VARIABLES = §eCustom Variables SCRIPT_GUI_CUSTOM_VARIABLES = §eCustom Variables
SCRIPT_GUI_CONSTANT_OVERRIDEABLE = §eÜberschreibbar SCRIPT_GUI_CONSTANT_TIME_NAME = §7Constant §etime
SCRIPT_GUI_CONSTANT_TIME_LORE = §7Formattierte Uhrzeit
SCRIPT_GUI_CONSTANT_TICKS_NAME = §7Constant §eticks
SCRIPT_GUI_CONSTANT_TICKS_LORE = §7Ticks seit dem Serverstart
SCRIPT_GUI_CONSTANT_TRACE_NAME = §7Constant §etrace SCRIPT_GUI_CONSTANT_TRACE_NAME = §7Constant §etrace
SCRIPT_GUI_CONSTANT_TRACE_LORE = §etrue§7 wenn gerade der Tracer an ist. SCRIPT_GUI_CONSTANT_TRACE_LORE = §etrue§7 wenn gerade der Tracer an ist.
@ -429,6 +433,15 @@ SCRIPT_GUI_CONSTANT_TRACE_LORE = §etrue§7 wenn gerade der Tracer an ist.
SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME = §7Constant §eautotrace SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME = §7Constant §eautotrace
SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE = §etrue§7 wenn gerade der AutoTracer an ist. SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE = §etrue§7 wenn gerade der AutoTracer an ist.
SCRIPT_GUI_CONSTANT_TRACE_STATUS_NAME = §7Constant §etrace_status
SCRIPT_GUI_CONSTANT_TRACE_STATUS_LORE = §7Ein Wert von: §eOFF§8, §eIDLE§8, §eIDLE_AUTO_EXPLODE§8, §eIDLE_AUTO_IGNITE§8, §eIDLE_SINGLE
SCRIPT_GUI_CONSTANT_TRACE_TIME_NAME = §7Constant §etrace_time
SCRIPT_GUI_CONSTANT_TRACE_TIME_LORE = §e0§7 wenn gerade kein TNT getraced wird, ansonsten die Zeit in Ticks seit dem Start des Tracers.
SCRIPT_GUI_CONSTANT_LOADER_STATUS_NAME = §7Constant §eloader_status
SCRIPT_GUI_CONSTANT_LOADER_STATUS_LORE = §7Ein Wert von: §eOFF§8, §eSETUP§8, §eRUNNING§8, §eSINGLE§8, §ePAUSE§8, §eEND
SCRIPT_GUI_CONSTANT_TNT_NAME = §7Constant §etnt SCRIPT_GUI_CONSTANT_TNT_NAME = §7Constant §etnt
SCRIPT_GUI_CONSTANT_TNT_LORE = §etrue§7 wenn TNT nicht ausgeschaltet ist. SCRIPT_GUI_CONSTANT_TNT_LORE = §etrue§7 wenn TNT nicht ausgeschaltet ist.
@ -480,6 +493,9 @@ SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_DISPLAY_LORE = §eName§7 des Items in der
SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME = §7Constant §eregion_type SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME = §7Constant §eregion_type
SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE = §eRegionstype§7 der jetztigen Region SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE = §eRegionstype§7 der jetztigen Region
SCRIPT_GUI_CONSTANT_REGION_NAME_NAME = §7Constant §eregion_name
SCRIPT_GUI_CONSTANT_REGION_NAME_LORE = §eRegionsname§7 der jetztigen Region
SCRIPT_GUI_CONSTANT_TPS_NAME = §7Constant §etps SCRIPT_GUI_CONSTANT_TPS_NAME = §7Constant §etps
SCRIPT_GUI_CONSTANT_TPS_LORE = §etps§7 vom Server SCRIPT_GUI_CONSTANT_TPS_LORE = §etps§7 vom Server

Datei anzeigen

@ -35,6 +35,7 @@ import yapion.hierarchy.types.YAPIONMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Consumer;
@UtilityClass @UtilityClass
public class CustomScript { public class CustomScript {
@ -67,7 +68,7 @@ public class CustomScript {
Map<String, Value> variables = new HashMap<>(); Map<String, Value> variables = new HashMap<>();
variables.put("pressed", new Value.BooleanValue(pressed)); variables.put("pressed", new Value.BooleanValue(pressed));
variables.put("released", new Value.BooleanValue(!pressed)); variables.put("released", new Value.BooleanValue(!pressed));
new ScriptExecutor(bookMeta, p, variables); new ScriptExecutor(bookMeta, p, variables, null);
return false; return false;
} }
} }
@ -87,7 +88,7 @@ public class CustomScript {
Map<String, Value> variables = new HashMap<>(); Map<String, Value> variables = new HashMap<>();
variables.put("pressed", new Value.BooleanValue(pressed)); variables.put("pressed", new Value.BooleanValue(pressed));
variables.put("released", new Value.BooleanValue(!pressed)); variables.put("released", new Value.BooleanValue(!pressed));
new ScriptExecutor(pages, p, variables); new ScriptExecutor(pages, p, variables, null);
return false; return false;
} }
@ -116,7 +117,7 @@ public class CustomScript {
public interface CustomEvent extends Script { public interface CustomEvent extends Script {
String eventName(); String eventName();
boolean execute(Event e, Player p, Map<String, Value> variables); boolean execute(Player p, Map<String, Value> variables, Consumer<String> echoConsumer);
} }
@ -131,8 +132,8 @@ public class CustomScript {
} }
@Override @Override
public boolean execute(Event e, Player p, Map<String, Value> variables) { public boolean execute(Player p, Map<String, Value> variables, Consumer<String> echoConsumer) {
new ScriptExecutor(bookMeta, p, variables); new ScriptExecutor(bookMeta, p, variables, echoConsumer);
return true; return true;
} }
} }
@ -148,8 +149,8 @@ public class CustomScript {
} }
@Override @Override
public boolean execute(Event e, Player p, Map<String, Value> variables) { public boolean execute(Player p, Map<String, Value> variables, Consumer<String> echoConsumer) {
new ScriptExecutor(pages, p, variables); new ScriptExecutor(pages, p, variables, echoConsumer);
return false; return false;
} }
@ -253,7 +254,7 @@ public class CustomScript {
} }
e.setCancelled(true); e.setCancelled(true);
new ScriptExecutor(bookMeta, e.getPlayer(), arguments); new ScriptExecutor(bookMeta, e.getPlayer(), arguments, null);
return true; return true;
} }
} }
@ -275,7 +276,7 @@ public class CustomScript {
} }
e.setCancelled(true); e.setCancelled(true);
new ScriptExecutor(pages, e.getPlayer(), arguments); new ScriptExecutor(pages, e.getPlayer(), arguments, null);
return true; return true;
} }

Datei anzeigen

@ -48,6 +48,7 @@ import yapion.hierarchy.types.YAPIONValue;
import yapion.parser.YAPIONParser; import yapion.parser.YAPIONParser;
import java.util.*; import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Linked @Linked
@ -267,6 +268,22 @@ public class CustomScriptManager implements Listener {
openCommandsMenu(p); openCommandsMenu(p);
} }
public boolean callScoreboard(Player p, Map<String, String> variables, Consumer<String> echoConsumer) {
Map<String, Value> valueMap = new HashMap<>();
for (Map.Entry<String, String> entry : variables.entrySet()) {
valueMap.put(entry.getKey(), new Value.StringValue(entry.getValue()));
}
List<CustomScript.CustomEvent> customEvents = playerMap.getOrDefault(p, new ArrayList<>()).stream().filter(CustomScript.CustomEvent.class::isInstance).map(CustomScript.CustomEvent.class::cast).collect(Collectors.toList());
boolean hasScript = false;
for (CustomScript.CustomEvent customEvent : customEvents) {
if (customEvent.eventName().equals(EventType.Scoreboard.name())) {
customEvent.execute(p, valueMap, echoConsumer);
hasScript = true;
}
}
return hasScript;
}
public void callEvent(EventType eventType, Player p, Event e) { public void callEvent(EventType eventType, Player p, Event e) {
if (eventType == null) return; if (eventType == null) return;
if (!eventType.getEventType().equals(e.getClass())) return; if (!eventType.getEventType().equals(e.getClass())) return;
@ -281,7 +298,7 @@ public class CustomScriptManager implements Listener {
if (e instanceof Cancellable) { if (e instanceof Cancellable) {
variables.put("cancel", new Value.BooleanValue(((Cancellable) e).isCancelled())); variables.put("cancel", new Value.BooleanValue(((Cancellable) e).isCancelled()));
} }
customEvent.execute(e, p, variables); customEvent.execute(p, variables, null);
if (variables.containsKey("cancel")) { if (variables.containsKey("cancel")) {
Value value = variables.get("cancel"); Value value = variables.get("cancel");
((Cancellable) e).setCancelled(value.asBoolean()); ((Cancellable) e).setCancelled(value.asBoolean());

Datei anzeigen

@ -106,6 +106,9 @@ public enum EventType {
addXYZ(valueMap, event.getEntity().getLocation()); addXYZ(valueMap, event.getEntity().getLocation());
return valueMap; return valueMap;
}), }),
Scoreboard(Event.class, event -> {
return new HashMap<>();
}),
; ;
private static void addXYZ(Map<String, Value> valueMap, Location location) { private static void addXYZ(Map<String, Value> valueMap, Location location) {

Datei anzeigen

@ -39,36 +39,43 @@ public class ScriptCommand extends SWCommand {
addEmptyItems(swItems, 2); addEmptyItems(swItems, 2);
swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_HOTKEYS", loreBuilder(p, "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_1", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_2", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_3", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_4", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_5")), null)); swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_HOTKEYS", loreBuilder(p, "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_1", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_2", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_3", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_4", "SCRIPT_GUI_CUSTOM_HOTKEYS_COMMANDS_LORE_5")), null));
swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_COMMANDS", loreBuilder(p, "SCRIPT_GUI_CUSTOM_COMMANDS_LORE_1", "SCRIPT_GUI_CUSTOM_COMMANDS_LORE_2")), null)); swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_COMMANDS", loreBuilder(p, "SCRIPT_GUI_CUSTOM_COMMANDS_LORE_1", "SCRIPT_GUI_CUSTOM_COMMANDS_LORE_2")), null));
swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_EVENTS", loreBuilder(p, "SCRIPT_GUI_CUSTOM_EVENTS_LORE_1", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_2", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_3", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_4", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_5", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_6", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_7", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_8", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_9", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_10", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_11", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_12", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_13", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_14", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_15", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_16", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_17", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_STAR_1")), null)); swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_EVENTS", loreBuilder(p, "SCRIPT_GUI_CUSTOM_EVENTS_LORE_1", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_2", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_3", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_4", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_5", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_6", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_7", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_8", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_9", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_10", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_11", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_12", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_13", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_14", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_15", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_16", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_17", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_18", "SCRIPT_GUI_CUSTOM_EVENTS_LORE_STAR_1")), null));
addEmptyItems(swItems, 1); addEmptyItems(swItems, 1);
swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_OTHER", loreBuilder(p, "SCRIPT_GUI_OTHER_LORE_1", "SCRIPT_GUI_OTHER_LORE_2", "SCRIPT_GUI_OTHER_LORE_3", "SCRIPT_GUI_OTHER_LORE_4", "SCRIPT_GUI_OTHER_LORE_5", "SCRIPT_GUI_OTHER_LORE_6", "SCRIPT_GUI_OTHER_LORE_7", "SCRIPT_GUI_OTHER_LORE_8", "SCRIPT_GUI_OTHER_LORE_9", "SCRIPT_GUI_OTHER_LORE_10", "SCRIPT_GUI_OTHER_LORE_11", "SCRIPT_GUI_OTHER_LORE_12", "SCRIPT_GUI_OTHER_LORE_13", "SCRIPT_GUI_OTHER_LORE_14", "SCRIPT_GUI_OTHER_LORE_15", "SCRIPT_GUI_OTHER_LORE_16", "SCRIPT_GUI_OTHER_LORE_17", "SCRIPT_GUI_OTHER_LORE_18")), null)); swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_OTHER", loreBuilder(p, "SCRIPT_GUI_OTHER_LORE_1", "SCRIPT_GUI_OTHER_LORE_2", "SCRIPT_GUI_OTHER_LORE_3", "SCRIPT_GUI_OTHER_LORE_4", "SCRIPT_GUI_OTHER_LORE_5", "SCRIPT_GUI_OTHER_LORE_6", "SCRIPT_GUI_OTHER_LORE_7", "SCRIPT_GUI_OTHER_LORE_8", "SCRIPT_GUI_OTHER_LORE_9", "SCRIPT_GUI_OTHER_LORE_10", "SCRIPT_GUI_OTHER_LORE_11", "SCRIPT_GUI_OTHER_LORE_12", "SCRIPT_GUI_OTHER_LORE_13", "SCRIPT_GUI_OTHER_LORE_14", "SCRIPT_GUI_OTHER_LORE_15", "SCRIPT_GUI_OTHER_LORE_16", "SCRIPT_GUI_OTHER_LORE_17", "SCRIPT_GUI_OTHER_LORE_18")), null));
addEmptyItems(swItems, 2); addEmptyItems(swItems, 2);
addCustomScriptsItems(swItems, p); addCustomScriptsItems(swItems, p);
addEmptyItems(swItems, 16); addEmptyItems(swItems, 45 - swItems.size() % 45);
addEmptyItems(swItems, 4);
swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_VARIABLES", new ArrayList<>()), null)); swItems.add(new SWListInv.SWListEntry<>(createItem(p, Material.BOOK, "SCRIPT_GUI_CUSTOM_VARIABLES", new ArrayList<>()), null));
addEmptyItems(swItems, 4); addEmptyItems(swItems, 4);
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_NAME", "SCRIPT_GUI_CONSTANT_TRACE_LORE", false); addConstantItem(swItems, p, Material.CLOCK, "SCRIPT_GUI_CONSTANT_TIME_NAME", "SCRIPT_GUI_CONSTANT_TIME_LORE");
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME", "SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE", false); addConstantItem(swItems, p, Material.CLOCK, "SCRIPT_GUI_CONSTANT_TICKS_NAME", "SCRIPT_GUI_CONSTANT_TICKS_LORE");
addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_TNT_NAME", "SCRIPT_GUI_CONSTANT_TNT_LORE", false); addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_NAME", "SCRIPT_GUI_CONSTANT_TRACE_LORE");
addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_ONLY_TB_NAME", "SCRIPT_GUI_CONSTANT_ONLY_TB_LORE", false); addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME", "SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE");
addConstantItem(swItems, p, Material.GUNPOWDER, "SCRIPT_GUI_CONSTANT_FREEZE_NAME", "SCRIPT_GUI_CONSTANT_FREEZE_LORE", false); addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_STATUS_NAME", "SCRIPT_GUI_CONSTANT_TRACE_STATUS_LORE");
addConstantItem(swItems, p, Material.FIRE_CHARGE, "SCRIPT_GUI_CONSTANT_FIRE_NAME", "SCRIPT_GUI_CONSTANT_FIRE_LORE", false); addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_TIME_NAME", "SCRIPT_GUI_CONSTANT_TRACE_TIME_LORE");
addConstantItem(swItems, p, Material.OBSIDIAN, "SCRIPT_GUI_CONSTANT_PROTECT_NAME", "SCRIPT_GUI_CONSTANT_PROTECT_LORE", false); addConstantItem(swItems, p, Material.HOPPER, "SCRIPT_GUI_CONSTANT_LOADER_STATUS_NAME", "SCRIPT_GUI_CONSTANT_LOADER_STATUS_LORE");
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_X_NAME", "SCRIPT_GUI_CONSTANT_X_LORE", true); addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_TNT_NAME", "SCRIPT_GUI_CONSTANT_TNT_LORE");
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Y_NAME", "SCRIPT_GUI_CONSTANT_Y_LORE", true); addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_ONLY_TB_NAME", "SCRIPT_GUI_CONSTANT_ONLY_TB_LORE");
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Z_NAME", "SCRIPT_GUI_CONSTANT_Z_LORE", true); addConstantItem(swItems, p, Material.GUNPOWDER, "SCRIPT_GUI_CONSTANT_FREEZE_NAME", "SCRIPT_GUI_CONSTANT_FREEZE_LORE");
addConstantItem(swItems, p, Material.NAME_TAG, "SCRIPT_GUI_CONSTANT_NAME_NAME", "SCRIPT_GUI_CONSTANT_NAME_LORE", false); addConstantItem(swItems, p, Material.FIRE_CHARGE, "SCRIPT_GUI_CONSTANT_FIRE_NAME", "SCRIPT_GUI_CONSTANT_FIRE_LORE");
addConstantItem(swItems, p, Material.IRON_BOOTS, "SCRIPT_GUI_CONSTANT_SNEAK_NAME", "SCRIPT_GUI_CONSTANT_SNEAK_LORE", false); addConstantItem(swItems, p, Material.OBSIDIAN, "SCRIPT_GUI_CONSTANT_PROTECT_NAME", "SCRIPT_GUI_CONSTANT_PROTECT_LORE");
addConstantItem(swItems, p, Material.DIAMOND_BOOTS, "SCRIPT_GUI_CONSTANT_SPRINTING_NAME", "SCRIPT_GUI_CONSTANT_SPRINTING_LORE", false); addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_X_NAME", "SCRIPT_GUI_CONSTANT_X_LORE");
addConstantItem(swItems, p, Material.ARROW, "SCRIPT_GUI_CONSTANT_SLOT_NAME", "SCRIPT_GUI_CONSTANT_SLOT_LORE", false); addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Y_NAME", "SCRIPT_GUI_CONSTANT_Y_LORE");
addConstantItem(swItems, p, Material.GRASS_BLOCK, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_LORE", false); addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Z_NAME", "SCRIPT_GUI_CONSTANT_Z_LORE");
addConstantItem(swItems, p, Material.IRON_BLOCK, "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_LORE", false); addConstantItem(swItems, p, Material.NAME_TAG, "SCRIPT_GUI_CONSTANT_NAME_NAME", "SCRIPT_GUI_CONSTANT_NAME_LORE");
addConstantItem(swItems, p, Material.BIRCH_SIGN, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_DISPLAY_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_DISPLAY_LORE", false); addConstantItem(swItems, p, Material.IRON_BOOTS, "SCRIPT_GUI_CONSTANT_SNEAK_NAME", "SCRIPT_GUI_CONSTANT_SNEAK_LORE");
addConstantItem(swItems, p, Material.ACACIA_SIGN, "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_DISPLAY_NAME", "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_DISPLAY_LORE", false); addConstantItem(swItems, p, Material.DIAMOND_BOOTS, "SCRIPT_GUI_CONSTANT_SPRINTING_NAME", "SCRIPT_GUI_CONSTANT_SPRINTING_LORE");
addConstantItem(swItems, p, Material.MAP, "SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME", "SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE", false); addConstantItem(swItems, p, Material.ARROW, "SCRIPT_GUI_CONSTANT_SLOT_NAME", "SCRIPT_GUI_CONSTANT_SLOT_LORE");
addConstantItem(swItems, p, Material.COMPASS, "SCRIPT_GUI_CONSTANT_TPS_NAME", "SCRIPT_GUI_CONSTANT_TPS_LORE", false); addConstantItem(swItems, p, Material.GRASS_BLOCK, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_LORE");
addConstantItem(swItems, p, Material.COMPASS, "SCRIPT_GUI_CONSTANT_TPS_LIMIT_NAME", "SCRIPT_GUI_CONSTANT_TPS_LIMIT_LORE", false); addConstantItem(swItems, p, Material.IRON_BLOCK, "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_LORE");
addEmptyItems(swItems, 2 * 9 - 3); addConstantItem(swItems, p, Material.BIRCH_SIGN, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_DISPLAY_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_DISPLAY_LORE");
addConstantItem(swItems, p, Material.ACACIA_SIGN, "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_DISPLAY_NAME", "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_DISPLAY_LORE");
addConstantItem(swItems, p, Material.MAP, "SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME", "SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE");
addConstantItem(swItems, p, Material.MAP, "SCRIPT_GUI_CONSTANT_REGION_NAME_NAME", "SCRIPT_GUI_CONSTANT_REGION_NAME_LORE");
addConstantItem(swItems, p, Material.COMPASS, "SCRIPT_GUI_CONSTANT_TPS_NAME", "SCRIPT_GUI_CONSTANT_TPS_LORE");
addConstantItem(swItems, p, Material.COMPASS, "SCRIPT_GUI_CONSTANT_TPS_LIMIT_NAME", "SCRIPT_GUI_CONSTANT_TPS_LIMIT_LORE");
addEmptyItems(swItems, 45 - swItems.size() % 45);
SWListInv<SpecialCommand> swListInv = new SWListInv<>(p, BauSystem.MESSAGE.parse("SCRIPT_GUI_NAME", p), swItems, (clickType, o) -> { SWListInv<SpecialCommand> swListInv = new SWListInv<>(p, BauSystem.MESSAGE.parse("SCRIPT_GUI_NAME", p), swItems, (clickType, o) -> {
if (o != null) { if (o != null) {
@ -98,10 +105,9 @@ public class ScriptCommand extends SWCommand {
}); });
} }
private void addConstantItem(List<SWListInv.SWListEntry<SpecialCommand>> swItems, Player p, Material material, String name, String lore, boolean overrideable) { private void addConstantItem(List<SWListInv.SWListEntry<SpecialCommand>> swItems, Player p, Material material, String name, String lore) {
List<String> itemLore = new ArrayList<>(); List<String> itemLore = new ArrayList<>();
itemLore.add(BauSystem.MESSAGE.parse(lore, p)); itemLore.add(BauSystem.MESSAGE.parse(lore, p));
if (overrideable) itemLore.add(BauSystem.MESSAGE.parse("SCRIPT_GUI_CONSTANT_OVERRIDEABLE", p));
swItems.add(new SWListInv.SWListEntry<>(createItem(p, material, name, itemLore), null)); swItems.add(new SWListInv.SWListEntry<>(createItem(p, material, name, itemLore), null));
} }

Datei anzeigen

@ -17,12 +17,14 @@ import de.steamwar.bausystem.linkage.LinkageUtils;
import de.steamwar.bausystem.utils.WorldEditUtils; import de.steamwar.bausystem.utils.WorldEditUtils;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.BookMeta;
import java.util.*; import java.util.*;
import java.util.function.Consumer;
import java.util.logging.Level; import java.util.logging.Level;
public final class ScriptExecutor { public final class ScriptExecutor {
@ -58,29 +60,38 @@ public final class ScriptExecutor {
@Setter @Setter
private int index = 0; private int index = 0;
public ScriptExecutor(BookMeta bookMeta, Player player) { @Getter
this(bookMeta, player, new HashMap<>()); private final Consumer<String> echoConsumer;
public ScriptExecutor(BookMeta bookMeta, Player player, Consumer<String> echoConsumer) {
this(bookMeta, player, new HashMap<>(), echoConsumer);
} }
public ScriptExecutor(List<String> pages, Player player) { public ScriptExecutor(List<String> pages, Player player, Consumer<String> echoConsumer) {
this(pages, player, new HashMap<>()); this(pages, player, new HashMap<>(), echoConsumer);
} }
public ScriptExecutor(BookMeta bookMeta, Player player, Map<String, Value> localVariables) { public ScriptExecutor(BookMeta bookMeta, Player player, Map<String, Value> localVariables, Consumer<String> echoConsumer) {
this.player = player; this.player = player;
globalVariables = ScriptListener.getGlobalContext(player); globalVariables = ScriptListener.getGlobalContext(player);
parseMeta(bookMeta); parseMeta(bookMeta);
this.echoConsumer = echoConsumer != null ? echoConsumer : s -> {
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", player, s);
};
if (commands.isEmpty()) return; if (commands.isEmpty()) return;
localVariables.forEach(this.localVariables::putValue); localVariables.forEach(this.localVariables::putValue);
resume(); resume();
} }
public ScriptExecutor(List<String> pages, Player player, Map<String, Value> localVariables) { public ScriptExecutor(List<String> pages, Player player, Map<String, Value> localVariables, Consumer<String> echoConsumer) {
this.player = player; this.player = player;
globalVariables = ScriptListener.getGlobalContext(player); globalVariables = ScriptListener.getGlobalContext(player);
parseList(pages); parseList(pages);
this.echoConsumer = echoConsumer != null ? echoConsumer : s -> {
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", player, s);
};
if (commands.isEmpty()) return; if (commands.isEmpty()) return;
localVariables.forEach(this.localVariables::putValue); localVariables.forEach(this.localVariables::putValue);
resume(); resume();

Datei anzeigen

@ -44,7 +44,7 @@ public class ScriptListener implements Listener {
} }
event.setCancelled(true); event.setCancelled(true);
new ScriptExecutor((BookMeta) item.getItemMeta(), event.getPlayer()); new ScriptExecutor((BookMeta) item.getItemMeta(), event.getPlayer(), null);
} }
@EventHandler @EventHandler

Datei anzeigen

@ -32,7 +32,7 @@ public class Echo implements SpecialCommand {
@Override @Override
public boolean execute(String[] command, ScriptExecutor scriptExecutor) { public boolean execute(String[] command, ScriptExecutor scriptExecutor) {
if (command.length <= 1) { if (command.length <= 1) {
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", scriptExecutor.getPlayer(), ""); scriptExecutor.getEchoConsumer().accept("");
return true; return true;
} }
StringBuilder st = new StringBuilder(); StringBuilder st = new StringBuilder();
@ -42,7 +42,7 @@ public class Echo implements SpecialCommand {
} }
st.append(command[i]); st.append(command[i]);
} }
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", scriptExecutor.getPlayer(), ChatColor.translateAlternateColorCodes('&', st.toString())); scriptExecutor.getEchoConsumer().accept(ChatColor.translateAlternateColorCodes('&', st.toString()));
return true; return true;
} }

Datei anzeigen

@ -1,10 +1,13 @@
package de.steamwar.bausystem.features.script.variables; package de.steamwar.bausystem.features.script.variables;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.loader.Loader;
import de.steamwar.bausystem.features.tpslimit.TPSLimitUtils; import de.steamwar.bausystem.features.tpslimit.TPSLimitUtils;
import de.steamwar.bausystem.features.tpslimit.TPSUtils; import de.steamwar.bausystem.features.tpslimit.TPSUtils;
import de.steamwar.bausystem.features.tracer.record.ActiveTracer; import de.steamwar.bausystem.features.tracer.record.ActiveTracer;
import de.steamwar.bausystem.features.tracer.record.AutoTraceRecorder; import de.steamwar.bausystem.features.tracer.record.AutoTraceRecorder;
import de.steamwar.bausystem.features.tracer.record.Recorder; import de.steamwar.bausystem.features.tracer.record.Recorder;
import de.steamwar.bausystem.features.tracer.record.TraceRecorder;
import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.flags.Flag; import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.bausystem.region.flags.flagvalues.FireMode; import de.steamwar.bausystem.region.flags.flagvalues.FireMode;
@ -17,6 +20,8 @@ import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -32,20 +37,12 @@ public class Constants {
private static class ConstantDoubleValue extends Value.DoubleValue { private static class ConstantDoubleValue extends Value.DoubleValue {
private Supplier<Double> doubleSupplier; private Supplier<Double> doubleSupplier;
private Consumer<Double> doubleConsumer = ignored -> {
};
public ConstantDoubleValue(Supplier<Double> doubleSupplier) { public ConstantDoubleValue(Supplier<Double> doubleSupplier) {
super(doubleSupplier.get()); super(doubleSupplier.get());
this.doubleSupplier = doubleSupplier; this.doubleSupplier = doubleSupplier;
} }
public ConstantDoubleValue(Supplier<Double> doubleSupplier, Consumer<Double> doubleConsumer) {
super(doubleSupplier.get());
this.doubleSupplier = doubleSupplier;
this.doubleConsumer = doubleConsumer;
}
@Override @Override
public long asLong() { public long asLong() {
value = doubleSupplier.get(); value = doubleSupplier.get();
@ -69,31 +66,17 @@ public class Constants {
value = doubleSupplier.get(); value = doubleSupplier.get();
return super.asString(); return super.asString();
} }
@Override
public void fromValue(Value value) {
super.fromValue(value);
doubleConsumer.accept(this.value);
}
} }
private static class ConstantLongValue extends Value.LongValue { private static class ConstantLongValue extends Value.LongValue {
private Supplier<Long> longSupplier; private Supplier<Long> longSupplier;
private Consumer<Long> longConsumer = ignored -> {
};
public ConstantLongValue(Supplier<Long> longSupplier) { public ConstantLongValue(Supplier<Long> longSupplier) {
super(longSupplier.get()); super(longSupplier.get());
this.longSupplier = longSupplier; this.longSupplier = longSupplier;
} }
public ConstantLongValue(Supplier<Long> longSupplier, Consumer<Long> longConsumer) {
super(longSupplier.get());
this.longSupplier = longSupplier;
this.longConsumer = longConsumer;
}
@Override @Override
public long asLong() { public long asLong() {
value = longSupplier.get(); value = longSupplier.get();
@ -117,31 +100,17 @@ public class Constants {
value = longSupplier.get(); value = longSupplier.get();
return super.asString(); return super.asString();
} }
@Override
public void fromValue(Value value) {
super.fromValue(value);
longConsumer.accept(this.value);
}
} }
private static class ConstantBooleanValue extends Value.BooleanValue { private static class ConstantBooleanValue extends Value.BooleanValue {
private Supplier<Boolean> booleanSupplier; private Supplier<Boolean> booleanSupplier;
private Consumer<Boolean> booleanConsumer = ignored -> {
};
public ConstantBooleanValue(Supplier<Boolean> booleanSupplier) { public ConstantBooleanValue(Supplier<Boolean> booleanSupplier) {
super(booleanSupplier.get()); super(booleanSupplier.get());
this.booleanSupplier = booleanSupplier; this.booleanSupplier = booleanSupplier;
} }
public ConstantBooleanValue(Supplier<Boolean> booleanSupplier, Consumer<Boolean> booleanConsumer) {
super(booleanSupplier.get());
this.booleanSupplier = booleanSupplier;
this.booleanConsumer = booleanConsumer;
}
@Override @Override
public long asLong() { public long asLong() {
value = booleanSupplier.get(); value = booleanSupplier.get();
@ -165,31 +134,17 @@ public class Constants {
value = booleanSupplier.get(); value = booleanSupplier.get();
return super.asString(); return super.asString();
} }
@Override
public void fromValue(Value value) {
super.fromValue(value);
booleanConsumer.accept(this.value);
}
} }
private static class ConstantStringValue extends Value.StringValue { private static class ConstantStringValue extends Value.StringValue {
private Supplier<String> stringSupplier; private Supplier<String> stringSupplier;
private Consumer<String> stringConsumer = ignored -> {
};
public ConstantStringValue(Supplier<String> stringSupplier) { public ConstantStringValue(Supplier<String> stringSupplier) {
super(stringSupplier.get()); super(stringSupplier.get());
this.stringSupplier = stringSupplier; this.stringSupplier = stringSupplier;
} }
public ConstantStringValue(Supplier<String> stringSupplier, Consumer<String> stringConsumer) {
super(stringSupplier.get());
this.stringSupplier = stringSupplier;
this.stringConsumer = stringConsumer;
}
@Override @Override
public long asLong() { public long asLong() {
value = stringSupplier.get(); value = stringSupplier.get();
@ -213,12 +168,6 @@ public class Constants {
value = stringSupplier.get(); value = stringSupplier.get();
return super.asString(); return super.asString();
} }
@Override
public void fromValue(Value value) {
super.fromValue(value);
stringConsumer.accept(this.value);
}
} }
static { static {
@ -236,41 +185,42 @@ public class Constants {
} }
return new ConstantBooleanValue(() -> Recorder.INSTANCE.get(region) instanceof AutoTraceRecorder); return new ConstantBooleanValue(() -> Recorder.INSTANCE.get(region) instanceof AutoTraceRecorder);
}); });
CONSTANTS.put("trace_status", player -> {
TraceRecorder recorder = Recorder.INSTANCE.get(Region.getRegion(player.getLocation()));
return new ConstantStringValue(recorder::scriptState);
});
CONSTANTS.put("trace_time", player -> {
TraceRecorder recorder = Recorder.INSTANCE.get(Region.getRegion(player.getLocation()));
return new ConstantLongValue(recorder::scriptTime);
});
CONSTANTS.put("tnt", player -> { CONSTANTS.put("tnt", player -> {
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.TNT, TNTMode.class) != TNTMode.DENY); return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.TNT, TNTMode.class) != TNTMode.DENY);
}); });
CONSTANTS.put("tnt_onlytb", player -> { CONSTANTS.put("tnt_onlytb", player -> {
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.TNT, TNTMode.class) != TNTMode.ONLY_TB); return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.TNT, TNTMode.class) == TNTMode.ONLY_TB);
});
CONSTANTS.put("freeze", player -> {
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.FREEZE, FreezeMode.class) == FreezeMode.ACTIVE);
}); });
CONSTANTS.put("fire", player -> { CONSTANTS.put("fire", player -> {
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.FIRE, FireMode.class) == FireMode.ALLOW); return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.FIRE, FireMode.class) == FireMode.ALLOW);
}); });
CONSTANTS.put("freeze", player -> {
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.FREEZE, FreezeMode.class) == FreezeMode.ACTIVE);
});
CONSTANTS.put("protect", player -> { CONSTANTS.put("protect", player -> {
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.PROTECT, ProtectMode.class) == ProtectMode.ACTIVE); return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.PROTECT, ProtectMode.class) == ProtectMode.ACTIVE);
}); });
CONSTANTS.put("x", player -> { CONSTANTS.put("x", player -> {
return new ConstantDoubleValue(() -> player.getLocation().getX(), aLong -> { return new ConstantDoubleValue(() -> player.getLocation().getX());
Location location = player.getLocation();
location.setX((double) aLong);
player.teleport(location);
});
}); });
CONSTANTS.put("y", player -> { CONSTANTS.put("y", player -> {
return new ConstantDoubleValue(() -> player.getLocation().getY(), aLong -> { return new ConstantDoubleValue(() -> player.getLocation().getY());
Location location = player.getLocation();
location.setY((double) aLong);
player.teleport(location);
});
}); });
CONSTANTS.put("z", player -> { CONSTANTS.put("z", player -> {
return new ConstantDoubleValue(() -> player.getLocation().getZ(), aLong -> { return new ConstantDoubleValue(() -> player.getLocation().getZ());
Location location = player.getLocation();
location.setZ((double) aLong);
player.teleport(location);
});
}); });
CONSTANTS.put("name", player -> { CONSTANTS.put("name", player -> {
return new ConstantStringValue(player::getDisplayName); return new ConstantStringValue(player::getDisplayName);
@ -282,15 +232,7 @@ public class Constants {
return new ConstantBooleanValue(player::isSprinting); return new ConstantBooleanValue(player::isSprinting);
}); });
CONSTANTS.put("slot", player -> { CONSTANTS.put("slot", player -> {
return new ConstantLongValue(() -> (long) player.getInventory().getHeldItemSlot(), slot -> { return new ConstantLongValue(() -> (long) player.getInventory().getHeldItemSlot());
if (slot > 8) {
slot = 8L;
}
if (slot < 0) {
slot = 0L;
}
player.getInventory().setHeldItemSlot((int) (long) slot);
});
}); });
CONSTANTS.put("slotmaterial", player -> { CONSTANTS.put("slotmaterial", player -> {
return new ConstantStringValue(() -> player.getInventory().getItemInMainHand().getType().name()); return new ConstantStringValue(() -> player.getInventory().getItemInMainHand().getType().name());
@ -316,6 +258,7 @@ public class Constants {
return itemMeta.getDisplayName(); return itemMeta.getDisplayName();
}); });
}); });
CONSTANTS.put("region_type", player -> { CONSTANTS.put("region_type", player -> {
Region region = Region.getRegion(player.getLocation()); Region region = Region.getRegion(player.getLocation());
if (region.isGlobal()) { if (region.isGlobal()) {
@ -323,12 +266,35 @@ public class Constants {
} }
return new ConstantStringValue(() -> region.getPrototype().getDisplayName().replace(' ', '_').toLowerCase()); return new ConstantStringValue(() -> region.getPrototype().getDisplayName().replace(' ', '_').toLowerCase());
}); });
CONSTANTS.put("region_name", player -> {
Region region = Region.getRegion(player.getLocation());
if (region.isGlobal()) {
return new ConstantStringValue(() -> "Global");
}
return new ConstantStringValue(() -> region.getPrototype().getDisplayName());
});
CONSTANTS.put("tps", player -> { CONSTANTS.put("tps", player -> {
return new ConstantDoubleValue(TPSWatcher::getTPS); return new ConstantDoubleValue(TPSWatcher::getTPS);
}); });
CONSTANTS.put("tps_limit", player -> { CONSTANTS.put("tps_limit", player -> {
return new ConstantDoubleValue(TPSLimitUtils::getCurrentTPSLimit); return new ConstantDoubleValue(TPSLimitUtils::getCurrentTPSLimit);
}); });
CONSTANTS.put("ticks", player -> {
return new ConstantLongValue(TPSUtils.currentTick);
});
CONSTANTS.put("time", player -> {
return new ConstantStringValue(() -> new SimpleDateFormat(BauSystem.MESSAGE.parse("TIME", player)).format(Calendar.getInstance().getTime()));
});
CONSTANTS.put("loader_status", player -> {
Loader loader = Loader.getLoader(player);
if (loader == null) {
return new ConstantStringValue(() -> "OFF");
}
return new ConstantStringValue(() -> loader.getStage().name());
});
} }
public Set<String> allVariables() { public Set<String> allVariables() {

Datei anzeigen

@ -30,4 +30,9 @@ public class AutoExplodeTraceRecorder extends AutoTraceRecorder {
protected boolean shouldStartRecording(StartType startType) { protected boolean shouldStartRecording(StartType startType) {
return startType == StartType.EXPLODE; return startType == StartType.EXPLODE;
} }
@Override
protected String getScriptState() {
return "IDLE_AUTO_EXPLODE";
}
} }

Datei anzeigen

@ -30,4 +30,9 @@ public class AutoIgniteTraceRecorder extends AutoTraceRecorder implements Active
protected boolean shouldStartRecording(StartType startType) { protected boolean shouldStartRecording(StartType startType) {
return startType == StartType.IGNITE; return startType == StartType.IGNITE;
} }
@Override
protected String getScriptState() {
return "IDLE_AUTO_IGNITE";
}
} }

Datei anzeigen

@ -31,7 +31,7 @@ import java.util.function.Supplier;
public abstract class AutoTraceRecorder implements TraceRecorder { public abstract class AutoTraceRecorder implements TraceRecorder {
private boolean recording = false; protected boolean recording = false;
private long startTime = TPSUtils.currentTick.get(); private long startTime = TPSUtils.currentTick.get();
private long lastExplosion = 0; private long lastExplosion = 0;
@ -121,4 +121,16 @@ public abstract class AutoTraceRecorder implements TraceRecorder {
IGNITE, IGNITE,
EXPLODE EXPLODE
} }
protected abstract String getScriptState();
@Override
public String scriptState() {
return recording ? "RECORDING" : getScriptState();
}
@Override
public long scriptTime() {
return TPSUtils.currentTick.get() - startTime;
}
} }

Datei anzeigen

@ -65,6 +65,16 @@ public class Recorder implements Listener {
@Override @Override
public void explode(TNTPrimed tntPrimed, boolean b) { public void explode(TNTPrimed tntPrimed, boolean b) {
} }
@Override
public String scriptState() {
return "OFF";
}
@Override
public long scriptTime() {
return 0;
}
} }
private static final NoopTraceRecorder NOOP = new NoopTraceRecorder(); private static final NoopTraceRecorder NOOP = new NoopTraceRecorder();
@ -85,6 +95,16 @@ public class Recorder implements Listener {
@Override @Override
public void explode(TNTPrimed tntPrimed, boolean b) { public void explode(TNTPrimed tntPrimed, boolean b) {
} }
@Override
public String scriptState() {
return "IDLE";
}
@Override
public long scriptTime() {
return 0;
}
} }
private static final DisabledTracerRecorder DISABLED = new DisabledTracerRecorder(); private static final DisabledTracerRecorder DISABLED = new DisabledTracerRecorder();

Datei anzeigen

@ -72,4 +72,14 @@ public class SimpleTraceRecorder implements TraceRecorder, ActiveTracer {
tntRecord.explode(tntPrimed); tntRecord.explode(tntPrimed);
recordMap.remove(tntPrimed); recordMap.remove(tntPrimed);
} }
@Override
public String scriptState() {
return "RECORD";
}
@Override
public long scriptTime() {
return TPSUtils.currentTick.get() - startTime;
}
} }

Datei anzeigen

@ -43,4 +43,9 @@ public class SingleTraceRecorder extends AutoTraceRecorder {
protected void stoppedRecording() { protected void stoppedRecording() {
Recorder.INSTANCE.remove(region); Recorder.INSTANCE.remove(region);
} }
@Override
protected String getScriptState() {
return "IDLE_SINGLE";
}
} }

Datei anzeigen

@ -38,4 +38,7 @@ public interface TraceRecorder {
void explode(TNTPrimed tntPrimed, boolean inBuildRegion); void explode(TNTPrimed tntPrimed, boolean inBuildRegion);
default void tick() { default void tick() {
} }
String scriptState();
long scriptTime();
} }

Datei anzeigen

@ -2,6 +2,7 @@ package de.steamwar.bausystem.features.world;
import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.loader.Loader; import de.steamwar.bausystem.features.loader.Loader;
import de.steamwar.bausystem.features.script.CustomScriptManager;
import de.steamwar.bausystem.features.tpslimit.FreezeUtils; import de.steamwar.bausystem.features.tpslimit.FreezeUtils;
import de.steamwar.bausystem.features.tpslimit.TPSLimitUtils; import de.steamwar.bausystem.features.tpslimit.TPSLimitUtils;
import de.steamwar.bausystem.features.tpslimit.TPSWarpUtils; import de.steamwar.bausystem.features.tpslimit.TPSWarpUtils;
@ -20,17 +21,28 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
@Linked @Linked
public class BauScoreboard implements Listener { public class BauScoreboard implements Listener {
private static final Random RANDOM = new Random();
private static final String ALL = "0123456789abcdef";
private static String getRandomColorCode() {
StringBuilder st = new StringBuilder();
for (int i = 0; i < 6; i++) {
st.append("§" + ALL.charAt(RANDOM.nextInt(ALL.length())));
}
return st.toString();
}
@LinkedInstance @LinkedInstance
public Recorder recorder; public Recorder recorder;
@LinkedInstance
public CustomScriptManager customScriptManager;
@EventHandler @EventHandler
public void handlePlayerJoin(PlayerJoinEvent event) { public void handlePlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
@ -57,44 +69,47 @@ public class BauScoreboard implements Listener {
private HashMap<String, Integer> sidebar(Player p) { private HashMap<String, Integer> sidebar(Player p) {
Region region = Region.getRegion(p.getLocation()); Region region = Region.getRegion(p.getLocation());
// String colorCode = BauSystem.MESSAGE.parse(region.get(Flag.COLOR).getChatValue(), p).substring(0, 2);
String colorCode = "§e";
List<String> strings = new ArrayList<>(); List<String> strings = new ArrayList<>();
strings.add("§1"); if (!customScriptManager.callScoreboard(p, new HashMap<>(), strings::add)) {
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TIME", p) + "§8: §7" + new SimpleDateFormat(BauSystem.MESSAGE.parse("TIME", p)).format(Calendar.getInstance().getTime())); // String colorCode = BauSystem.MESSAGE.parse(region.get(Flag.COLOR).getChatValue(), p).substring(0, 2);
if (GlobalRegion.getInstance() != region) { String colorCode = "§e";
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_REGION", p) + "§8: §7" + region.getDisplayName()); strings.add("§1");
} strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TIME", p) + "§8: §7" + new SimpleDateFormat(BauSystem.MESSAGE.parse("TIME", p)).format(Calendar.getInstance().getTime()));
if (GlobalRegion.getInstance() != region) {
strings.add("§2"); strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_REGION", p) + "§8: §7" + region.getDisplayName());
for (Flag flag : Flag.getFlags()) {
if (!flag.getRegionPredicate().test(region)) {
continue;
} }
String message = BauSystem.MESSAGE.parse(region.get(flag).getChatValue(), p).replace("§e", colorCode);
strings.add(colorCode + BauSystem.MESSAGE.parse(flag.getChatValue(), p) + "§8: " + message);
}
strings.add("§3"); strings.add("§2");
String traceScore = recorder.get(region).scoreboard(p); for (Flag flag : Flag.getFlags()) {
if (traceScore != null) { if (!flag.getRegionPredicate().test(region)) {
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TRACE", p) + "§8: " + traceScore); continue;
} }
strings.add(colorCode + BauSystem.MESSAGE.parse(flag.getChatValue(), p) + "§8: " + BauSystem.MESSAGE.parse(region.get(flag).getChatValue(), p).replace("§e", colorCode));
}
Loader loader = Loader.getLoader(p); strings.add("§3");
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_LOADER", p) + "§8: " + BauSystem.MESSAGE.parse(loader != null ? loader.getStage().getChatValue() : "LOADER_OFF", p)); String traceScore = recorder.get(region).scoreboard(p);
if (traceScore != null) {
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TRACE", p) + "§8: " + traceScore);
}
strings.add("§5"); Loader loader = Loader.getLoader(p);
if (FreezeUtils.frozen()) { strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_LOADER", p) + "§8: " + BauSystem.MESSAGE.parse(loader != null ? loader.getStage().getChatValue() : "LOADER_OFF", p));
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TPS", p) + BauSystem.MESSAGE.parse("SCOREBOARD_TPS_FROZEN", p));
} else { strings.add("§5");
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TPS", p) + "§8 " + tpsColor() + TPSWarpUtils.getTps(TPSWatcher.TPSType.ONE_SECOND) + tpsLimit()); if (FreezeUtils.frozen()) {
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TPS", p) + "§8: " + BauSystem.MESSAGE.parse("SCOREBOARD_TPS_FROZEN", p));
} else {
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TPS", p) + "§8: " + tpsColor() + TPSWarpUtils.getTps(TPSWatcher.TPSType.ONE_SECOND) + tpsLimit());
}
} }
int i = strings.size(); int i = strings.size();
HashMap<String, Integer> result = new HashMap<>(); HashMap<String, Integer> result = new HashMap<>();
for (String s : strings) { for (String s : strings) {
if (s.isEmpty()) {
s = getRandomColorCode();
}
result.put(s, i--); result.put(s, i--);
} }
return result; return result;