Add more Constants Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
Ursprung
1bfcb55d35
Commit
162fbbaa0c
@ -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_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_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_OTHER = §eOther
|
||||
@ -427,7 +428,11 @@ SCRIPT_GUI_COMMAND_NAME = §7Command: §e{0}
|
||||
|
||||
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_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_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_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_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_LORE = §etps§7 of the server
|
||||
|
||||
|
@ -421,7 +421,11 @@ SCRIPT_GUI_COMMAND_NAME = §7Command: §e{0}
|
||||
|
||||
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_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_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_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_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_LORE = §etps§7 vom Server
|
||||
|
||||
|
@ -35,6 +35,7 @@ import yapion.hierarchy.types.YAPIONMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@UtilityClass
|
||||
public class CustomScript {
|
||||
@ -67,7 +68,7 @@ public class CustomScript {
|
||||
Map<String, Value> variables = new HashMap<>();
|
||||
variables.put("pressed", new Value.BooleanValue(pressed));
|
||||
variables.put("released", new Value.BooleanValue(!pressed));
|
||||
new ScriptExecutor(bookMeta, p, variables);
|
||||
new ScriptExecutor(bookMeta, p, variables, null);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -87,7 +88,7 @@ public class CustomScript {
|
||||
Map<String, Value> variables = new HashMap<>();
|
||||
variables.put("pressed", new Value.BooleanValue(pressed));
|
||||
variables.put("released", new Value.BooleanValue(!pressed));
|
||||
new ScriptExecutor(pages, p, variables);
|
||||
new ScriptExecutor(pages, p, variables, null);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -116,7 +117,7 @@ public class CustomScript {
|
||||
|
||||
public interface CustomEvent extends Script {
|
||||
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
|
||||
public boolean execute(Event e, Player p, Map<String, Value> variables) {
|
||||
new ScriptExecutor(bookMeta, p, variables);
|
||||
public boolean execute(Player p, Map<String, Value> variables, Consumer<String> echoConsumer) {
|
||||
new ScriptExecutor(bookMeta, p, variables, echoConsumer);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -148,8 +149,8 @@ public class CustomScript {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(Event e, Player p, Map<String, Value> variables) {
|
||||
new ScriptExecutor(pages, p, variables);
|
||||
public boolean execute(Player p, Map<String, Value> variables, Consumer<String> echoConsumer) {
|
||||
new ScriptExecutor(pages, p, variables, echoConsumer);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -253,7 +254,7 @@ public class CustomScript {
|
||||
}
|
||||
|
||||
e.setCancelled(true);
|
||||
new ScriptExecutor(bookMeta, e.getPlayer(), arguments);
|
||||
new ScriptExecutor(bookMeta, e.getPlayer(), arguments, null);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -275,7 +276,7 @@ public class CustomScript {
|
||||
}
|
||||
|
||||
e.setCancelled(true);
|
||||
new ScriptExecutor(pages, e.getPlayer(), arguments);
|
||||
new ScriptExecutor(pages, e.getPlayer(), arguments, null);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,7 @@ import yapion.hierarchy.types.YAPIONValue;
|
||||
import yapion.parser.YAPIONParser;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Linked
|
||||
@ -267,6 +268,22 @@ public class CustomScriptManager implements Listener {
|
||||
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) {
|
||||
if (eventType == null) return;
|
||||
if (!eventType.getEventType().equals(e.getClass())) return;
|
||||
@ -281,7 +298,7 @@ public class CustomScriptManager implements Listener {
|
||||
if (e instanceof Cancellable) {
|
||||
variables.put("cancel", new Value.BooleanValue(((Cancellable) e).isCancelled()));
|
||||
}
|
||||
customEvent.execute(e, p, variables);
|
||||
customEvent.execute(p, variables, null);
|
||||
if (variables.containsKey("cancel")) {
|
||||
Value value = variables.get("cancel");
|
||||
((Cancellable) e).setCancelled(value.asBoolean());
|
||||
|
@ -106,6 +106,9 @@ public enum EventType {
|
||||
addXYZ(valueMap, event.getEntity().getLocation());
|
||||
return valueMap;
|
||||
}),
|
||||
Scoreboard(Event.class, event -> {
|
||||
return new HashMap<>();
|
||||
}),
|
||||
;
|
||||
|
||||
private static void addXYZ(Map<String, Value> valueMap, Location location) {
|
||||
|
@ -39,36 +39,43 @@ public class ScriptCommand extends SWCommand {
|
||||
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_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);
|
||||
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);
|
||||
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));
|
||||
addEmptyItems(swItems, 4);
|
||||
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_NAME", "SCRIPT_GUI_CONSTANT_TRACE_LORE", false);
|
||||
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME", "SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE", false);
|
||||
addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_TNT_NAME", "SCRIPT_GUI_CONSTANT_TNT_LORE", false);
|
||||
addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_ONLY_TB_NAME", "SCRIPT_GUI_CONSTANT_ONLY_TB_LORE", false);
|
||||
addConstantItem(swItems, p, Material.GUNPOWDER, "SCRIPT_GUI_CONSTANT_FREEZE_NAME", "SCRIPT_GUI_CONSTANT_FREEZE_LORE", false);
|
||||
addConstantItem(swItems, p, Material.FIRE_CHARGE, "SCRIPT_GUI_CONSTANT_FIRE_NAME", "SCRIPT_GUI_CONSTANT_FIRE_LORE", false);
|
||||
addConstantItem(swItems, p, Material.OBSIDIAN, "SCRIPT_GUI_CONSTANT_PROTECT_NAME", "SCRIPT_GUI_CONSTANT_PROTECT_LORE", false);
|
||||
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_X_NAME", "SCRIPT_GUI_CONSTANT_X_LORE", true);
|
||||
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Y_NAME", "SCRIPT_GUI_CONSTANT_Y_LORE", true);
|
||||
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Z_NAME", "SCRIPT_GUI_CONSTANT_Z_LORE", true);
|
||||
addConstantItem(swItems, p, Material.NAME_TAG, "SCRIPT_GUI_CONSTANT_NAME_NAME", "SCRIPT_GUI_CONSTANT_NAME_LORE", false);
|
||||
addConstantItem(swItems, p, Material.IRON_BOOTS, "SCRIPT_GUI_CONSTANT_SNEAK_NAME", "SCRIPT_GUI_CONSTANT_SNEAK_LORE", false);
|
||||
addConstantItem(swItems, p, Material.DIAMOND_BOOTS, "SCRIPT_GUI_CONSTANT_SPRINTING_NAME", "SCRIPT_GUI_CONSTANT_SPRINTING_LORE", false);
|
||||
addConstantItem(swItems, p, Material.ARROW, "SCRIPT_GUI_CONSTANT_SLOT_NAME", "SCRIPT_GUI_CONSTANT_SLOT_LORE", false);
|
||||
addConstantItem(swItems, p, Material.GRASS_BLOCK, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_LORE", false);
|
||||
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.BIRCH_SIGN, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_DISPLAY_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_DISPLAY_LORE", false);
|
||||
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.MAP, "SCRIPT_GUI_CONSTANT_REGION_TYPE_NAME", "SCRIPT_GUI_CONSTANT_REGION_TYPE_LORE", false);
|
||||
addConstantItem(swItems, p, Material.COMPASS, "SCRIPT_GUI_CONSTANT_TPS_NAME", "SCRIPT_GUI_CONSTANT_TPS_LORE", false);
|
||||
addConstantItem(swItems, p, Material.COMPASS, "SCRIPT_GUI_CONSTANT_TPS_LIMIT_NAME", "SCRIPT_GUI_CONSTANT_TPS_LIMIT_LORE", false);
|
||||
addEmptyItems(swItems, 2 * 9 - 3);
|
||||
addConstantItem(swItems, p, Material.CLOCK, "SCRIPT_GUI_CONSTANT_TIME_NAME", "SCRIPT_GUI_CONSTANT_TIME_LORE");
|
||||
addConstantItem(swItems, p, Material.CLOCK, "SCRIPT_GUI_CONSTANT_TICKS_NAME", "SCRIPT_GUI_CONSTANT_TICKS_LORE");
|
||||
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_NAME", "SCRIPT_GUI_CONSTANT_TRACE_LORE");
|
||||
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_AUTO_TRACE_NAME", "SCRIPT_GUI_CONSTANT_AUTO_TRACE_LORE");
|
||||
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_STATUS_NAME", "SCRIPT_GUI_CONSTANT_TRACE_STATUS_LORE");
|
||||
addConstantItem(swItems, p, Material.TNT_MINECART, "SCRIPT_GUI_CONSTANT_TRACE_TIME_NAME", "SCRIPT_GUI_CONSTANT_TRACE_TIME_LORE");
|
||||
addConstantItem(swItems, p, Material.HOPPER, "SCRIPT_GUI_CONSTANT_LOADER_STATUS_NAME", "SCRIPT_GUI_CONSTANT_LOADER_STATUS_LORE");
|
||||
addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_TNT_NAME", "SCRIPT_GUI_CONSTANT_TNT_LORE");
|
||||
addConstantItem(swItems, p, Material.TNT, "SCRIPT_GUI_CONSTANT_ONLY_TB_NAME", "SCRIPT_GUI_CONSTANT_ONLY_TB_LORE");
|
||||
addConstantItem(swItems, p, Material.GUNPOWDER, "SCRIPT_GUI_CONSTANT_FREEZE_NAME", "SCRIPT_GUI_CONSTANT_FREEZE_LORE");
|
||||
addConstantItem(swItems, p, Material.FIRE_CHARGE, "SCRIPT_GUI_CONSTANT_FIRE_NAME", "SCRIPT_GUI_CONSTANT_FIRE_LORE");
|
||||
addConstantItem(swItems, p, Material.OBSIDIAN, "SCRIPT_GUI_CONSTANT_PROTECT_NAME", "SCRIPT_GUI_CONSTANT_PROTECT_LORE");
|
||||
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_X_NAME", "SCRIPT_GUI_CONSTANT_X_LORE");
|
||||
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Y_NAME", "SCRIPT_GUI_CONSTANT_Y_LORE");
|
||||
addConstantItem(swItems, p, Material.PLAYER_HEAD, "SCRIPT_GUI_CONSTANT_Z_NAME", "SCRIPT_GUI_CONSTANT_Z_LORE");
|
||||
addConstantItem(swItems, p, Material.NAME_TAG, "SCRIPT_GUI_CONSTANT_NAME_NAME", "SCRIPT_GUI_CONSTANT_NAME_LORE");
|
||||
addConstantItem(swItems, p, Material.IRON_BOOTS, "SCRIPT_GUI_CONSTANT_SNEAK_NAME", "SCRIPT_GUI_CONSTANT_SNEAK_LORE");
|
||||
addConstantItem(swItems, p, Material.DIAMOND_BOOTS, "SCRIPT_GUI_CONSTANT_SPRINTING_NAME", "SCRIPT_GUI_CONSTANT_SPRINTING_LORE");
|
||||
addConstantItem(swItems, p, Material.ARROW, "SCRIPT_GUI_CONSTANT_SLOT_NAME", "SCRIPT_GUI_CONSTANT_SLOT_LORE");
|
||||
addConstantItem(swItems, p, Material.GRASS_BLOCK, "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_SLOT_MATERIAL_LORE");
|
||||
addConstantItem(swItems, p, Material.IRON_BLOCK, "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_NAME", "SCRIPT_GUI_CONSTANT_OFF_HAND_MATERIAL_LORE");
|
||||
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) -> {
|
||||
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<>();
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -17,12 +17,14 @@ import de.steamwar.bausystem.linkage.LinkageUtils;
|
||||
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public final class ScriptExecutor {
|
||||
@ -58,29 +60,38 @@ public final class ScriptExecutor {
|
||||
@Setter
|
||||
private int index = 0;
|
||||
|
||||
public ScriptExecutor(BookMeta bookMeta, Player player) {
|
||||
this(bookMeta, player, new HashMap<>());
|
||||
@Getter
|
||||
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) {
|
||||
this(pages, player, new HashMap<>());
|
||||
public ScriptExecutor(List<String> pages, Player player, Consumer<String> echoConsumer) {
|
||||
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;
|
||||
globalVariables = ScriptListener.getGlobalContext(player);
|
||||
|
||||
parseMeta(bookMeta);
|
||||
this.echoConsumer = echoConsumer != null ? echoConsumer : s -> {
|
||||
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", player, s);
|
||||
};
|
||||
if (commands.isEmpty()) return;
|
||||
localVariables.forEach(this.localVariables::putValue);
|
||||
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;
|
||||
globalVariables = ScriptListener.getGlobalContext(player);
|
||||
|
||||
parseList(pages);
|
||||
this.echoConsumer = echoConsumer != null ? echoConsumer : s -> {
|
||||
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", player, s);
|
||||
};
|
||||
if (commands.isEmpty()) return;
|
||||
localVariables.forEach(this.localVariables::putValue);
|
||||
resume();
|
||||
|
@ -44,7 +44,7 @@ public class ScriptListener implements Listener {
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
new ScriptExecutor((BookMeta) item.getItemMeta(), event.getPlayer());
|
||||
new ScriptExecutor((BookMeta) item.getItemMeta(), event.getPlayer(), null);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -32,7 +32,7 @@ public class Echo implements SpecialCommand {
|
||||
@Override
|
||||
public boolean execute(String[] command, ScriptExecutor scriptExecutor) {
|
||||
if (command.length <= 1) {
|
||||
BauSystem.MESSAGE.send("SCRIPT_COMMAND_IO_ECHO_MESSAGE", scriptExecutor.getPlayer(), "");
|
||||
scriptExecutor.getEchoConsumer().accept("");
|
||||
return true;
|
||||
}
|
||||
StringBuilder st = new StringBuilder();
|
||||
@ -42,7 +42,7 @@ public class Echo implements SpecialCommand {
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,13 @@
|
||||
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.TPSUtils;
|
||||
import de.steamwar.bausystem.features.tracer.record.ActiveTracer;
|
||||
import de.steamwar.bausystem.features.tracer.record.AutoTraceRecorder;
|
||||
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.flags.Flag;
|
||||
import de.steamwar.bausystem.region.flags.flagvalues.FireMode;
|
||||
@ -17,6 +20,8 @@ import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -32,20 +37,12 @@ public class Constants {
|
||||
private static class ConstantDoubleValue extends Value.DoubleValue {
|
||||
|
||||
private Supplier<Double> doubleSupplier;
|
||||
private Consumer<Double> doubleConsumer = ignored -> {
|
||||
};
|
||||
|
||||
public ConstantDoubleValue(Supplier<Double> doubleSupplier) {
|
||||
super(doubleSupplier.get());
|
||||
this.doubleSupplier = doubleSupplier;
|
||||
}
|
||||
|
||||
public ConstantDoubleValue(Supplier<Double> doubleSupplier, Consumer<Double> doubleConsumer) {
|
||||
super(doubleSupplier.get());
|
||||
this.doubleSupplier = doubleSupplier;
|
||||
this.doubleConsumer = doubleConsumer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long asLong() {
|
||||
value = doubleSupplier.get();
|
||||
@ -69,31 +66,17 @@ public class Constants {
|
||||
value = doubleSupplier.get();
|
||||
return super.asString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromValue(Value value) {
|
||||
super.fromValue(value);
|
||||
doubleConsumer.accept(this.value);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ConstantLongValue extends Value.LongValue {
|
||||
|
||||
private Supplier<Long> longSupplier;
|
||||
private Consumer<Long> longConsumer = ignored -> {
|
||||
};
|
||||
|
||||
public ConstantLongValue(Supplier<Long> longSupplier) {
|
||||
super(longSupplier.get());
|
||||
this.longSupplier = longSupplier;
|
||||
}
|
||||
|
||||
public ConstantLongValue(Supplier<Long> longSupplier, Consumer<Long> longConsumer) {
|
||||
super(longSupplier.get());
|
||||
this.longSupplier = longSupplier;
|
||||
this.longConsumer = longConsumer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long asLong() {
|
||||
value = longSupplier.get();
|
||||
@ -117,31 +100,17 @@ public class Constants {
|
||||
value = longSupplier.get();
|
||||
return super.asString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromValue(Value value) {
|
||||
super.fromValue(value);
|
||||
longConsumer.accept(this.value);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ConstantBooleanValue extends Value.BooleanValue {
|
||||
|
||||
private Supplier<Boolean> booleanSupplier;
|
||||
private Consumer<Boolean> booleanConsumer = ignored -> {
|
||||
};
|
||||
|
||||
public ConstantBooleanValue(Supplier<Boolean> booleanSupplier) {
|
||||
super(booleanSupplier.get());
|
||||
this.booleanSupplier = booleanSupplier;
|
||||
}
|
||||
|
||||
public ConstantBooleanValue(Supplier<Boolean> booleanSupplier, Consumer<Boolean> booleanConsumer) {
|
||||
super(booleanSupplier.get());
|
||||
this.booleanSupplier = booleanSupplier;
|
||||
this.booleanConsumer = booleanConsumer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long asLong() {
|
||||
value = booleanSupplier.get();
|
||||
@ -165,31 +134,17 @@ public class Constants {
|
||||
value = booleanSupplier.get();
|
||||
return super.asString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromValue(Value value) {
|
||||
super.fromValue(value);
|
||||
booleanConsumer.accept(this.value);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ConstantStringValue extends Value.StringValue {
|
||||
|
||||
private Supplier<String> stringSupplier;
|
||||
private Consumer<String> stringConsumer = ignored -> {
|
||||
};
|
||||
|
||||
public ConstantStringValue(Supplier<String> stringSupplier) {
|
||||
super(stringSupplier.get());
|
||||
this.stringSupplier = stringSupplier;
|
||||
}
|
||||
|
||||
public ConstantStringValue(Supplier<String> stringSupplier, Consumer<String> stringConsumer) {
|
||||
super(stringSupplier.get());
|
||||
this.stringSupplier = stringSupplier;
|
||||
this.stringConsumer = stringConsumer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long asLong() {
|
||||
value = stringSupplier.get();
|
||||
@ -213,12 +168,6 @@ public class Constants {
|
||||
value = stringSupplier.get();
|
||||
return super.asString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromValue(Value value) {
|
||||
super.fromValue(value);
|
||||
stringConsumer.accept(this.value);
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
@ -236,41 +185,42 @@ public class Constants {
|
||||
}
|
||||
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 -> {
|
||||
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.TNT, TNTMode.class) != TNTMode.DENY);
|
||||
});
|
||||
CONSTANTS.put("tnt_onlytb", player -> {
|
||||
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);
|
||||
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.TNT, TNTMode.class) == TNTMode.ONLY_TB);
|
||||
});
|
||||
|
||||
CONSTANTS.put("fire", player -> {
|
||||
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 -> {
|
||||
return new ConstantBooleanValue(() -> Region.getRegion(player.getLocation()).getPlain(Flag.PROTECT, ProtectMode.class) == ProtectMode.ACTIVE);
|
||||
});
|
||||
|
||||
CONSTANTS.put("x", player -> {
|
||||
return new ConstantDoubleValue(() -> player.getLocation().getX(), aLong -> {
|
||||
Location location = player.getLocation();
|
||||
location.setX((double) aLong);
|
||||
player.teleport(location);
|
||||
});
|
||||
return new ConstantDoubleValue(() -> player.getLocation().getX());
|
||||
});
|
||||
CONSTANTS.put("y", player -> {
|
||||
return new ConstantDoubleValue(() -> player.getLocation().getY(), aLong -> {
|
||||
Location location = player.getLocation();
|
||||
location.setY((double) aLong);
|
||||
player.teleport(location);
|
||||
});
|
||||
return new ConstantDoubleValue(() -> player.getLocation().getY());
|
||||
});
|
||||
CONSTANTS.put("z", player -> {
|
||||
return new ConstantDoubleValue(() -> player.getLocation().getZ(), aLong -> {
|
||||
Location location = player.getLocation();
|
||||
location.setZ((double) aLong);
|
||||
player.teleport(location);
|
||||
});
|
||||
return new ConstantDoubleValue(() -> player.getLocation().getZ());
|
||||
});
|
||||
CONSTANTS.put("name", player -> {
|
||||
return new ConstantStringValue(player::getDisplayName);
|
||||
@ -282,15 +232,7 @@ public class Constants {
|
||||
return new ConstantBooleanValue(player::isSprinting);
|
||||
});
|
||||
CONSTANTS.put("slot", player -> {
|
||||
return new ConstantLongValue(() -> (long) player.getInventory().getHeldItemSlot(), slot -> {
|
||||
if (slot > 8) {
|
||||
slot = 8L;
|
||||
}
|
||||
if (slot < 0) {
|
||||
slot = 0L;
|
||||
}
|
||||
player.getInventory().setHeldItemSlot((int) (long) slot);
|
||||
});
|
||||
return new ConstantLongValue(() -> (long) player.getInventory().getHeldItemSlot());
|
||||
});
|
||||
CONSTANTS.put("slotmaterial", player -> {
|
||||
return new ConstantStringValue(() -> player.getInventory().getItemInMainHand().getType().name());
|
||||
@ -316,6 +258,7 @@ public class Constants {
|
||||
return itemMeta.getDisplayName();
|
||||
});
|
||||
});
|
||||
|
||||
CONSTANTS.put("region_type", player -> {
|
||||
Region region = Region.getRegion(player.getLocation());
|
||||
if (region.isGlobal()) {
|
||||
@ -323,12 +266,35 @@ public class Constants {
|
||||
}
|
||||
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 -> {
|
||||
return new ConstantDoubleValue(TPSWatcher::getTPS);
|
||||
});
|
||||
CONSTANTS.put("tps_limit", player -> {
|
||||
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() {
|
||||
|
@ -30,4 +30,9 @@ public class AutoExplodeTraceRecorder extends AutoTraceRecorder {
|
||||
protected boolean shouldStartRecording(StartType startType) {
|
||||
return startType == StartType.EXPLODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getScriptState() {
|
||||
return "IDLE_AUTO_EXPLODE";
|
||||
}
|
||||
}
|
||||
|
@ -30,4 +30,9 @@ public class AutoIgniteTraceRecorder extends AutoTraceRecorder implements Active
|
||||
protected boolean shouldStartRecording(StartType startType) {
|
||||
return startType == StartType.IGNITE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getScriptState() {
|
||||
return "IDLE_AUTO_IGNITE";
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ import java.util.function.Supplier;
|
||||
|
||||
public abstract class AutoTraceRecorder implements TraceRecorder {
|
||||
|
||||
private boolean recording = false;
|
||||
protected boolean recording = false;
|
||||
private long startTime = TPSUtils.currentTick.get();
|
||||
private long lastExplosion = 0;
|
||||
|
||||
@ -121,4 +121,16 @@ public abstract class AutoTraceRecorder implements TraceRecorder {
|
||||
IGNITE,
|
||||
EXPLODE
|
||||
}
|
||||
|
||||
protected abstract String getScriptState();
|
||||
|
||||
@Override
|
||||
public String scriptState() {
|
||||
return recording ? "RECORDING" : getScriptState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long scriptTime() {
|
||||
return TPSUtils.currentTick.get() - startTime;
|
||||
}
|
||||
}
|
||||
|
@ -65,6 +65,16 @@ public class Recorder implements Listener {
|
||||
@Override
|
||||
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();
|
||||
|
||||
@ -85,6 +95,16 @@ public class Recorder implements Listener {
|
||||
@Override
|
||||
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();
|
||||
|
||||
|
@ -72,4 +72,14 @@ public class SimpleTraceRecorder implements TraceRecorder, ActiveTracer {
|
||||
tntRecord.explode(tntPrimed);
|
||||
recordMap.remove(tntPrimed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String scriptState() {
|
||||
return "RECORD";
|
||||
}
|
||||
|
||||
@Override
|
||||
public long scriptTime() {
|
||||
return TPSUtils.currentTick.get() - startTime;
|
||||
}
|
||||
}
|
||||
|
@ -43,4 +43,9 @@ public class SingleTraceRecorder extends AutoTraceRecorder {
|
||||
protected void stoppedRecording() {
|
||||
Recorder.INSTANCE.remove(region);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getScriptState() {
|
||||
return "IDLE_SINGLE";
|
||||
}
|
||||
}
|
||||
|
@ -38,4 +38,7 @@ public interface TraceRecorder {
|
||||
void explode(TNTPrimed tntPrimed, boolean inBuildRegion);
|
||||
default void tick() {
|
||||
}
|
||||
|
||||
String scriptState();
|
||||
long scriptTime();
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package de.steamwar.bausystem.features.world;
|
||||
|
||||
import de.steamwar.bausystem.BauSystem;
|
||||
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.TPSLimitUtils;
|
||||
import de.steamwar.bausystem.features.tpslimit.TPSWarpUtils;
|
||||
@ -20,17 +21,28 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
@Linked
|
||||
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
|
||||
public Recorder recorder;
|
||||
|
||||
@LinkedInstance
|
||||
public CustomScriptManager customScriptManager;
|
||||
|
||||
@EventHandler
|
||||
public void handlePlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
@ -57,44 +69,47 @@ public class BauScoreboard implements Listener {
|
||||
private HashMap<String, Integer> sidebar(Player p) {
|
||||
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<>();
|
||||
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(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_REGION", p) + "§8: §7" + region.getDisplayName());
|
||||
}
|
||||
|
||||
strings.add("§2");
|
||||
for (Flag flag : Flag.getFlags()) {
|
||||
if (!flag.getRegionPredicate().test(region)) {
|
||||
continue;
|
||||
if (!customScriptManager.callScoreboard(p, new HashMap<>(), strings::add)) {
|
||||
// String colorCode = BauSystem.MESSAGE.parse(region.get(Flag.COLOR).getChatValue(), p).substring(0, 2);
|
||||
String colorCode = "§e";
|
||||
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(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_REGION", p) + "§8: §7" + region.getDisplayName());
|
||||
}
|
||||
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");
|
||||
String traceScore = recorder.get(region).scoreboard(p);
|
||||
if (traceScore != null) {
|
||||
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TRACE", p) + "§8: " + traceScore);
|
||||
}
|
||||
strings.add("§2");
|
||||
for (Flag flag : Flag.getFlags()) {
|
||||
if (!flag.getRegionPredicate().test(region)) {
|
||||
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(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_LOADER", p) + "§8: " + BauSystem.MESSAGE.parse(loader != null ? loader.getStage().getChatValue() : "LOADER_OFF", p));
|
||||
strings.add("§3");
|
||||
String traceScore = recorder.get(region).scoreboard(p);
|
||||
if (traceScore != null) {
|
||||
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TRACE", p) + "§8: " + traceScore);
|
||||
}
|
||||
|
||||
strings.add("§5");
|
||||
if (FreezeUtils.frozen()) {
|
||||
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_TPS", p) + 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());
|
||||
Loader loader = Loader.getLoader(p);
|
||||
strings.add(colorCode + BauSystem.MESSAGE.parse("SCOREBOARD_LOADER", p) + "§8: " + BauSystem.MESSAGE.parse(loader != null ? loader.getStage().getChatValue() : "LOADER_OFF", p));
|
||||
|
||||
strings.add("§5");
|
||||
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();
|
||||
HashMap<String, Integer> result = new HashMap<>();
|
||||
for (String s : strings) {
|
||||
if (s.isEmpty()) {
|
||||
s = getRandomColorCode();
|
||||
}
|
||||
result.put(s, i--);
|
||||
}
|
||||
return result;
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren