diff --git a/pom.xml b/pom.xml
index d624282..857029b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,6 +118,12 @@
1.26.0
provided
+
+ org.projectlombok
+ lombok
+ 1.18.34
+ provided
+
@@ -157,4 +163,4 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/ce/ajneb97/ConditionalEvents.java b/src/main/java/ce/ajneb97/ConditionalEvents.java
index 6bb23fa..0556553 100644
--- a/src/main/java/ce/ajneb97/ConditionalEvents.java
+++ b/src/main/java/ce/ajneb97/ConditionalEvents.java
@@ -55,7 +55,7 @@ public void onEnable(){
this.eventsManager = new EventsManager(this);
this.dependencyManager = new DependencyManager(this);
this.bungeeMessagingManager = new BungeeMessagingManager(this);
- this.debugManager = new DebugManager(this);
+ this.debugManager = new DebugManager();
this.playerManager = new PlayerManager(this);
this.savedItemsManager = new SavedItemsManager(this);
this.apiManager = new APIManager(this);
@@ -109,11 +109,11 @@ public void registerEvents() {
pm.registerEvents(new OtherEventsListener(this), this);
pm.registerEvents(new CustomEventListener(this), this);
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_9_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_9_R1)) {
pm.registerEvents(new ItemSelectListenerNew(), this);
pm.registerEvents(new PlayerEventsListenerNew1_9(this), this);
}
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_16_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_16_R1)) {
pm.registerEvents(new PlayerEventsListenerNew1_16(this), this);
}
diff --git a/src/main/java/ce/ajneb97/MainCommand.java b/src/main/java/ce/ajneb97/MainCommand.java
index bab79b7..e7ca712 100644
--- a/src/main/java/ce/ajneb97/MainCommand.java
+++ b/src/main/java/ce/ajneb97/MainCommand.java
@@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.UUID;
public class MainCommand implements CommandExecutor, TabCompleter {
@@ -196,7 +195,7 @@ public void debug(String[] args,CommandSender sender,FileConfiguration config,Me
playerName = args[2];
}
- boolean result = plugin.getDebugManager().setDebugSender(sender,eventName,playerName);
+ boolean result = plugin.getDebugManager().addDebugger(sender,eventName,playerName);
if(result){
if(playerName != null){
msgManager.sendMessage(sender,config.getString("Messages.debugEnabledPlayer")
diff --git a/src/main/java/ce/ajneb97/configs/ConfigsManager.java b/src/main/java/ce/ajneb97/configs/ConfigsManager.java
index e736c03..ff23556 100644
--- a/src/main/java/ce/ajneb97/configs/ConfigsManager.java
+++ b/src/main/java/ce/ajneb97/configs/ConfigsManager.java
@@ -156,19 +156,19 @@ public void configureEvents(){
}
}
if(config.contains(path+".cooldown")) {
- cooldown = Long.valueOf(config.getString(path+".cooldown"));
+ cooldown = Long.parseLong(config.getString(path + ".cooldown"));
}
if(config.contains(path+".ignore_with_permission")) {
ignoreWithPermission = config.getString(path+".ignore_with_permission");
}
if(config.contains(path+".one_time")) {
- oneTime = Boolean.valueOf(config.getString(path+".one_time"));
+ oneTime = Boolean.parseBoolean(config.getString(path + ".one_time"));
}
if(config.contains(path+".enabled")) {
- enabled = Boolean.valueOf(config.getString(path+".enabled"));
+ enabled = Boolean.parseBoolean(config.getString(path + ".enabled"));
}
if(config.contains(path+".ignore_if_cancelled")) {
- ignoreIfCancelled = Boolean.valueOf(config.getString(path+".ignore_if_cancelled"));
+ ignoreIfCancelled = Boolean.parseBoolean(config.getString(path + ".ignore_if_cancelled"));
}
if(config.contains(path+".prevent_cooldown_activation")){
preventCooldownActivationActionGroups = config.getStringList(path+".prevent_cooldown_activation");
@@ -177,7 +177,7 @@ public void configureEvents(){
preventOneTimeActivationActionGroups = config.getStringList(path+".prevent_one_time_activation");
}
if(config.contains(path+".allow_math_formulas_in_conditions")) {
- allowMathFormulasInConditions = Boolean.valueOf(config.getString(path+".allow_math_formulas_in_conditions"));
+ allowMathFormulasInConditions = Boolean.parseBoolean(config.getString(path + ".allow_math_formulas_in_conditions"));
}
event.setEventType(eventType);
diff --git a/src/main/java/ce/ajneb97/configs/MainConfigManager.java b/src/main/java/ce/ajneb97/configs/MainConfigManager.java
index 718574c..84492d1 100644
--- a/src/main/java/ce/ajneb97/configs/MainConfigManager.java
+++ b/src/main/java/ce/ajneb97/configs/MainConfigManager.java
@@ -2,13 +2,8 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.managers.MessagesManager;
-import ce.ajneb97.managers.RepetitiveManager;
-import ce.ajneb97.model.CEEvent;
-import ce.ajneb97.model.CustomEventProperties;
-import ce.ajneb97.model.EventType;
import ce.ajneb97.model.ToConditionGroup;
-import ce.ajneb97.model.actions.*;
-import org.bukkit.Bukkit;
+import lombok.Getter;
import org.bukkit.configuration.file.FileConfiguration;
import java.io.IOException;
@@ -26,7 +21,10 @@ public class MainConfigManager {
private boolean updateNotifications;
private boolean debugActions;
private boolean experimentalVariableReplacement;
+ @Getter
+ private boolean experimentalSerializeItemMeta;
private ArrayList toConditionGroups;
+
public MainConfigManager(ConditionalEvents plugin){
this.plugin = plugin;
this.configFile = new CEConfig("config.yml",plugin,null);
@@ -40,6 +38,7 @@ public void configure(){
updateNotifications = config.getBoolean("Config.update_notification");
debugActions = config.getBoolean("Config.debug_actions");
experimentalVariableReplacement = config.getBoolean("Config.experimental.variable_replacement");
+ experimentalSerializeItemMeta = config.getBoolean("Config.experimental.serialize_item_meta", true);
toConditionGroups = new ArrayList();
String path = "Config.to_condition_groups";
if(config.contains(path)){
diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java
index 434dac1..4c2f390 100644
--- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java
+++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java
@@ -89,11 +89,10 @@ public final void inventoryClick(final InventoryClickEvent e){
}
}
}else{
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
if(isAirOrNull(e.getCursor()) && !isAirOrNull(e.getCurrentItem())){// unequip with no new item going into the slot.
newArmorType = ArmorType.matchType(e.getCurrentItem());
}
- if(ConditionalEvents.serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_9_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_9_R1)) {
ItemStack offhandItem = e.getWhoClicked().getInventory().getItemInOffHand();
if(e.getSlotType() == SlotType.ARMOR && !isAirOrNull(offhandItem)){
ArmorType offhandArmorType = ArmorType.matchType(offhandItem);
@@ -135,12 +134,11 @@ public void playerInteractEvent(PlayerInteractEvent e){
ArmorType newArmorType = ArmorType.matchType(e.getItem());
if(newArmorType != null && !isHead(e.getItem())){
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
ItemStack newArmorPiece = e.getItem();
ItemStack oldArmorPiece = null;
- if(ConditionalEvents.serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R1)) {
switch(newArmorType){
case HELMET:
oldArmorPiece = player.getInventory().getHelmet();
@@ -234,8 +232,7 @@ public static boolean isAirOrNull(ItemStack item){
public static boolean isHead(ItemStack item) {
String materialName = item.getType().name();
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_13_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_13_R1)) {
if(materialName.equals("CARVED_PUMPKIN")){
return true;
}
diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java
index ac45f9c..0eca102 100644
--- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java
+++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java
@@ -2,7 +2,6 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.utils.ServerVersion;
-import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
/**
@@ -28,8 +27,7 @@ public static ArmorType matchType(final ItemStack itemStack){
if(ArmorListener.isAirOrNull(itemStack)) return null;
String type = itemStack.getType().name();
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_13_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_13_R1)) {
if(type.equals("CARVED_PUMPKIN")){
return HELMET;
}
diff --git a/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java b/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java
index 4e83a61..6d81400 100644
--- a/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java
+++ b/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java
@@ -323,10 +323,10 @@ public void onCommandUse(PlayerCommandPreprocessEvent event) {
public void onChat(AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
- new ConditionEvent(plugin, player, event, EventType.PLAYER_CHAT, null)
+ new ConditionEvent(plugin, player, event, EventType.PLAYER_CHAT, null, true)
.addVariables(
new StoredVariable("%message%",event.getMessage())
- ).setAsync(true).checkEvent();
+ ).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
diff --git a/src/main/java/ce/ajneb97/managers/DebugManager.java b/src/main/java/ce/ajneb97/managers/DebugManager.java
index 878d3af..7d3ceff 100644
--- a/src/main/java/ce/ajneb97/managers/DebugManager.java
+++ b/src/main/java/ce/ajneb97/managers/DebugManager.java
@@ -1,158 +1,137 @@
package ce.ajneb97.managers;
-import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.model.actions.ActionTargeter;
import ce.ajneb97.model.actions.ActionTargeterType;
import ce.ajneb97.model.actions.ActionType;
-import ce.ajneb97.model.internal.DebugSender;
-import org.bukkit.Bukkit;
+import ce.ajneb97.model.internal.Debugger;
+import lombok.val;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
-import java.util.ArrayList;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
public class DebugManager {
- private ConditionalEvents plugin;
- private ArrayList debugSenders;
- public DebugManager(ConditionalEvents plugin){
- this.plugin = plugin;
- this.debugSenders = new ArrayList();
- }
+ private static final Map debuggers = new HashMap<>();
+
+ public boolean addDebugger(@Nonnull final CommandSender sender,
+ @Nonnull final String event,
+ @Nullable final String playerName) {
- public boolean setDebugSender(CommandSender sender,String event,String playerName){
- DebugSender debugSender = getDebugSender(sender);
- if(debugSender == null){
- this.debugSenders.add(new DebugSender(sender,event,playerName));
+ val debugger = debuggers.get(sender.getName());
+
+ if (debugger != null) {
+ if (Objects.equals(debugger.getEvent(), event)) {
+ removeDebugger(sender);
+ return false;
+ } else {
+ debugger.setEvent(event);
+ }
+
+ if (!Objects.equals(debugger.getPlayerName(), playerName)) {
+ debugger.setPlayerName(playerName);
+ }
return true;
}
- if(debugSender.getEvent().equals(event)){
- //If the same, then remove it
- removeDebugSender(sender);
- return false;
- }
- //If not the same, update it
- debugSender.setEvent(event);
+
+ debuggers.put(sender.getName(), new Debugger(sender, event, playerName));
return true;
}
- public DebugSender getDebugSender(CommandSender sender){
- for(DebugSender debugSender : debugSenders){
- if(debugSender.getSender().equals(sender)){
- return debugSender;
- }
- }
- return null;
+ public void removeDebugger(@Nonnull final CommandSender sender) {
+ debuggers.remove(sender.getName());
}
- public void removeDebugSender(CommandSender sender){
- for(int i=0;i conditionGroup, Player player
for(int c=0;c eventVariables;
- private Event minecraftEvent;
- private EventType eventType;
+ private final ConditionalEvents plugin;
+
+ private final Player player;
+ private final Player target;
+ private final ArrayList eventVariables;
+ private final Event minecraftEvent;
+ private final EventType eventType;
+ private final boolean async;
+
+ @Setter
private CEEvent currentEvent; //The current event that is being checked
- private boolean async;
+ public ConditionEvent(@Nonnull final ConditionalEvents plugin,
+ @Nullable final Player player,
+ @Nullable final Event minecraftEvent,
+ @Nonnull final EventType eventType,
+ @Nullable final Player target) {
+ this(plugin, player, minecraftEvent, eventType, target, false);
+ }
- public ConditionEvent(ConditionalEvents plugin,Player player, Event minecraftEvent, EventType eventType
- , Player target) {
- this.plugin = plugin;
+ public ConditionEvent(@Nonnull final ConditionalEvents plugin,
+ @Nullable final Player player,
+ @Nullable final Event minecraftEvent,
+ @Nonnull final EventType eventType,
+ @Nullable final Player target,
+ final boolean async) {
+ this.plugin = Objects.requireNonNull(plugin);
this.player = player;
- this.eventVariables = new ArrayList();
+ this.eventVariables = new ArrayList<>();
this.minecraftEvent = minecraftEvent;
- this.eventType = eventType;
+ this.eventType = Objects.requireNonNull(eventType);
this.target = target;
- this.async = false;
- }
-
- public Player getPlayer() {
- return player;
- }
-
- public Player getTarget() {
- return target;
- }
-
- public ArrayList getEventVariables() {
- return eventVariables;
- }
-
- public Event getMinecraftEvent() {
- return minecraftEvent;
- }
-
- public EventType getEventType() {
- return eventType;
- }
-
- public CEEvent getCurrentEvent() {
- return currentEvent;
- }
-
- public void setCurrentEvent(CEEvent currentEvent) {
- this.currentEvent = currentEvent;
+ this.async = async;
}
- public void checkEvent(){
+ public void checkEvent() {
plugin.getEventsManager().checkEvent(this);
}
- public boolean containsValidEvents(){
+ public boolean containsValidEvents() {
ArrayList validEvents = plugin.getEventsManager().getValidEvents(eventType);
- if(validEvents.size() == 0){
- return false;
- }
- return true;
+ return !validEvents.isEmpty();
}
- public ConditionEvent addVariables(StoredVariable... storedVariables){
- for(StoredVariable v : storedVariables){
- eventVariables.add(v);
- }
+ public ConditionEvent addVariables(@Nonnull final StoredVariable... variables) {
+ eventVariables.addAll(ImmutableList.copyOf(Objects.requireNonNull(variables)));
return this;
}
- public ConditionEvent addVariables(ArrayList storedVariables){
- eventVariables.addAll(storedVariables);
+ public ConditionEvent addVariables(@Nonnull final List variables) {
+ eventVariables.addAll(Objects.requireNonNull(variables));
return this;
}
- public ConditionEvent setCommonBlockVariables(Block block){
- Location l = block.getLocation();
- eventVariables.add(new StoredVariable("%block_x%",l.getBlockX()+""));
- eventVariables.add(new StoredVariable("%block_y%",l.getBlockY()+""));
- eventVariables.add(new StoredVariable("%block_z%",l.getBlockZ()+""));
- eventVariables.add(new StoredVariable("%block_world%",l.getWorld().getName()));
- eventVariables.add(new StoredVariable("%block%",block.getType().name()));
- eventVariables.add(new StoredVariable("%block_head_texture%", BlockUtils.getHeadTextureData(block)));
- if(OtherUtils.isLegacy()){
- eventVariables.add(new StoredVariable("%block_data%",block.getData()+""));
- }else{
- eventVariables.add(new StoredVariable("%block_data%",
- BlockUtils.getBlockDataStringFromObject(block.getBlockData())));
+ public ConditionEvent setCommonBlockVariables(@Nonnull final Block block) {
+ final Location location = block.getLocation();
+ addStoredVariable("block_x", String.valueOf(location.getBlockX()));
+ addStoredVariable("block_y", String.valueOf(location.getBlockY()));
+ addStoredVariable("block_z", String.valueOf(location.getBlockZ()));
+ addStoredVariable("block_world", location.getWorld().getName());
+ addStoredVariable("block", block.getType().name());
+ addStoredVariable("block_head_texture", BlockUtils.getHeadTextureData(block));
+ if (OtherUtils.isLegacy()) {
+ //noinspection deprecation
+ addStoredVariable("block_data", String.valueOf(block.getData()));
+ } else {
+ addStoredVariable("block_data", BlockUtils.getBlockDataStringFromObject(block.getBlockData()));
}
-
return this;
}
- public ConditionEvent setCommonActionVariables(Action action,Player player){
- String actionVariable = null;
- String actionName = action.name();
- if(player.isSneaking()) {
- if(actionName.contains("RIGHT_CLICK")) {
- actionVariable = "SHIFT_RIGHT_CLICK";
- }else if(actionName.contains("LEFT_CLICK")) {
- actionVariable = "SHIFT_LEFT_CLICK";
- }else if(action.equals(Action.PHYSICAL)) {
- actionVariable = "PHYSICAL";
- }
- }else {
- if(actionName.contains("RIGHT_CLICK")) {
- actionVariable = "RIGHT_CLICK";
- }else if(actionName.contains("LEFT_CLICK")) {
- actionVariable = "LEFT_CLICK";
- }else if(action.equals(Action.PHYSICAL)) {
- actionVariable = "PHYSICAL";
- }
+ private static final String SHIFT_RIGHT_CLICK = "SHIFT_RIGHT_CLICK";
+ private static final String RIGHT_CLICK = "RIGHT_CLICK";
+ private static final String SHIFT_LEFT_CLICK = "SHIFT_LEFT_CLICK";
+ private static final String LEFT_CLICK = "LEFT_CLICK";
+ private static final String PHYSICAL = "PHYSICAL";
+
+ public ConditionEvent setCommonActionVariables(@Nonnull final Action action,
+ @Nonnull final Player player) {
+ final String actionVariable;
+
+ switch (action) {
+ case RIGHT_CLICK_AIR:
+ case RIGHT_CLICK_BLOCK:
+ actionVariable = player.isSneaking() ? SHIFT_RIGHT_CLICK : RIGHT_CLICK;
+ break;
+ case LEFT_CLICK_AIR:
+ case LEFT_CLICK_BLOCK:
+ actionVariable = player.isSneaking() ? SHIFT_LEFT_CLICK : LEFT_CLICK;
+ break;
+ case PHYSICAL:
+ actionVariable = PHYSICAL;
+ break;
+ default:
+ return this;
}
- if(actionVariable != null){
- eventVariables.add(new StoredVariable("%action_type%",actionVariable));
- }
+ addStoredVariable("action_type", actionVariable);
return this;
}
- public ConditionEvent setCommonVictimVariables(Entity entity){
- String victimType = entity.getType().name();
- String victimName = "";
- String victimNameColorFormat = "";
- String victimUuid = entity.getUniqueId().toString();
- if(entity.getCustomName() != null) {
- victimName = ChatColor.stripColor(entity.getCustomName());
- victimNameColorFormat = entity.getCustomName().replace("§", "&");
+ public ConditionEvent setCommonItemVariables(@Nullable final ItemStack item,
+ @Nullable String otherItemTag) {
+
+ //Example: %offhand:%
+ if (otherItemTag == null) {
+ otherItemTag = "%";
+ } else {
+ otherItemTag = "%" + otherItemTag + ":";
}
- Location location = entity.getLocation();
-
- eventVariables.add(new StoredVariable("%victim%",victimType));
- eventVariables.add(new StoredVariable("%victim_name%",victimName));
- eventVariables.add(new StoredVariable("%victim_color_format_name%",victimNameColorFormat));
- eventVariables.add(new StoredVariable("%victim_block_x%",location.getBlockX()+""));
- eventVariables.add(new StoredVariable("%victim_block_y%",location.getBlockY()+""));
- eventVariables.add(new StoredVariable("%victim_block_z%",location.getBlockZ()+""));
- eventVariables.add(new StoredVariable("%victim_block_world%",location.getWorld().getName()));
- eventVariables.add(new StoredVariable("%victim_uuid%",victimUuid));
- return this;
- }
- public ConditionEvent setCommonItemVariables(ItemStack item,String otherItemTag){
- String name = "";
- String colorFormatName = "";
- String material = "";
- String loreString = "";
- String colorFormatLoreString = "";
+ String material = null;
short durability = 0;
int amount = 0;
- List loreList = new ArrayList();
- List colorFormatLoreList = new ArrayList();
+
+ String name = null;
+ String colorFormatName = null;
+
+ String metaString = null;
+ String loreWithoutColorsFullString = null;
+ String loreWithColorsFullString = null;
+ List loreWithoutColors = null;
+ List loreWithColors = null;
+
int customModelData = 0;
- String metaString = "";
- if(item != null) {
- durability = item.getDurability();
+ if (item != null) {
material = item.getType().name();
+ //noinspection deprecation
+ durability = item.getDurability();
amount = item.getAmount();
- if(item.hasItemMeta()) {
- ItemMeta meta = item.getItemMeta();
- metaString = meta.toString();
- if(meta.hasDisplayName()) {
- name = ChatColor.stripColor(meta.getDisplayName());
- colorFormatName = meta.getDisplayName().replace("§", "&");
+ if (item.hasItemMeta()) {
+
+ val meta = item.getItemMeta();
+
+ if (plugin.getConfigsManager().getMainConfigManager().isExperimentalSerializeItemMeta()) {
+ metaString = meta.toString();
+ }
+
+ if (meta.hasDisplayName()) {
+ //noinspection deprecation
+ final String displayName = meta.getDisplayName();
+ name = ColorUtils.stripColor(displayName);
+ colorFormatName = displayName.replace("§", "&");
}
- if(meta.hasLore()) {
- List lore = meta.getLore();
- for(int i=0;i lore = meta.getLore();
+ if (lore != null && !lore.isEmpty()) {
+ final ImmutableList.Builder loreWithoutColorsBuilder = ImmutableList.builder();
+ final ImmutableList.Builder loreWithColorsBuilder = ImmutableList.builder();
+
+ for (final String line : lore) {
+ loreWithoutColorsBuilder.add(ColorUtils.stripColor(line));
+ loreWithColorsBuilder.add(line.replace("§", "&"));
}
+
+ loreWithoutColors = loreWithoutColorsBuilder.build();
+ loreWithColors = loreWithColorsBuilder.build();
+
+ loreWithoutColorsFullString = String.join(" ", loreWithoutColors);
+ loreWithColorsFullString = String.join(" ", loreWithColors);
}
}
- if(OtherUtils.isNew() && meta.hasCustomModelData()){
+
+ if (meta.hasEnchants()) {
+ //noinspection deprecation
+ val enchants = meta.getEnchants().entrySet()
+ .stream()
+ .map(entry -> String.format("%s:%d", entry.getKey().getName(), entry.getValue()))
+ .collect(Collectors.joining(","));
+ addStoredVariable(String.format("%sitem_enchants", otherItemTag), enchants);
+ }
+
+ if (OtherUtils.isNew() && meta.hasCustomModelData()) {
customModelData = meta.getCustomModelData();
}
}
}
- //Example: %offhand:%
- if(otherItemTag == null){
- otherItemTag = "%";
- }else{
- otherItemTag = "%"+otherItemTag+":";
+ addStoredVariable(String.format("%sitem", otherItemTag), nullToEmptyString(material));
+ addStoredVariable(String.format("%sitem_name", otherItemTag), nullToEmptyString(name));
+ addStoredVariable(String.format("%sitem_color_format_name", otherItemTag), nullToEmptyString(colorFormatName));
+ addStoredVariable(String.format("%sitem_durability", otherItemTag), String.valueOf(durability));
+ addStoredVariable(String.format("%sitem_amount", otherItemTag), String.valueOf(amount));
+ addStoredVariable(String.format("%sitem_lore", otherItemTag), nullToEmptyString(loreWithoutColorsFullString));
+ addStoredVariable(String.format("%sitem_color_format_lore", otherItemTag), nullToEmptyString(loreWithColorsFullString));
+ addStoredVariable(String.format("%sitem_custom_model_data", otherItemTag), String.valueOf(customModelData));
+
+ if (plugin.getConfigsManager().getMainConfigManager().isExperimentalSerializeItemMeta()) {
+ addStoredVariable(String.format("%sitem_meta", otherItemTag), nullToEmptyString(metaString));
}
- eventVariables.add(new StoredVariable(otherItemTag+"item%",material));
- eventVariables.add(new StoredVariable(otherItemTag+"item_name%",name));
- eventVariables.add(new StoredVariable(otherItemTag+"item_color_format_name%",colorFormatName));
- eventVariables.add(new StoredVariable(otherItemTag+"item_durability%",durability+""));
- eventVariables.add(new StoredVariable(otherItemTag+"item_amount%",amount+""));
- eventVariables.add(new StoredVariable(otherItemTag+"item_lore%",loreString));
- eventVariables.add(new StoredVariable(otherItemTag+"item_color_format_lore%",colorFormatLoreString));
- eventVariables.add(new StoredVariable(otherItemTag+"item_custom_model_data%",customModelData+""));
- eventVariables.add(new StoredVariable(otherItemTag+"item_meta%",metaString));
- for(int i=0;i %name%
+ this.eventVariables.add(new StoredVariable(String.format("%%%s%%",
+ Objects.requireNonNull(name)),
+ Objects.requireNonNull(value)
+ ));
}
- public ConditionEvent setAsync(boolean async) {
- this.async = async;
- return this;
+ @Nonnull
+ private String nullToEmptyString(@Nullable final Object object) {
+ if (object == null) return "";
+ return object.toString();
}
+
}
diff --git a/src/main/java/ce/ajneb97/model/internal/DebugSender.java b/src/main/java/ce/ajneb97/model/internal/DebugSender.java
deleted file mode 100644
index 4391c5e..0000000
--- a/src/main/java/ce/ajneb97/model/internal/DebugSender.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package ce.ajneb97.model.internal;
-
-import org.bukkit.command.CommandSender;
-
-public class DebugSender {
- private CommandSender sender;
- private String event;
- private String playerName;
-
- public DebugSender(CommandSender sender, String event, String playerName) {
- this.sender = sender;
- this.event = event;
- this.playerName = playerName;
- }
-
- public CommandSender getSender() {
- return sender;
- }
-
- public void setSender(CommandSender sender) {
- this.sender = sender;
- }
-
- public String getEvent() {
- return event;
- }
-
- public void setEvent(String event) {
- this.event = event;
- }
-
- public String getPlayerName() {
- return playerName;
- }
-
- public void setPlayerName(String playerName) {
- this.playerName = playerName;
- }
-}
diff --git a/src/main/java/ce/ajneb97/model/internal/Debugger.java b/src/main/java/ce/ajneb97/model/internal/Debugger.java
new file mode 100644
index 0000000..850cbf3
--- /dev/null
+++ b/src/main/java/ce/ajneb97/model/internal/Debugger.java
@@ -0,0 +1,16 @@
+package ce.ajneb97.model.internal;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.bukkit.command.CommandSender;
+
+@Data
+@AllArgsConstructor
+public class Debugger {
+
+ private final CommandSender sender;
+
+ private String event;
+ private String playerName;
+
+}
diff --git a/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java b/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java
index cafc054..77e6198 100644
--- a/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java
+++ b/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java
@@ -159,8 +159,8 @@ private void executeActionsFinal(){
}
}else if(targeterType.equals(ActionTargeterType.TO_RANGE)){
String[] sep = parametersLine.split(";");
- double range = Double.valueOf(sep[0]);
- boolean includePlayer = Boolean.valueOf(sep[1]);
+ double range = Double.parseDouble(sep[0]);
+ boolean includePlayer = Boolean.parseBoolean(sep[1]);
ArrayList globalPlayers = new ArrayList();
if(includePlayer){
globalPlayers.add(player);
diff --git a/src/main/java/ce/ajneb97/utils/ActionUtils.java b/src/main/java/ce/ajneb97/utils/ActionUtils.java
index 62483d2..6f7122d 100644
--- a/src/main/java/ce/ajneb97/utils/ActionUtils.java
+++ b/src/main/java/ce/ajneb97/utils/ActionUtils.java
@@ -54,9 +54,8 @@ public static void jsonMessage(Player player,String actionLine){
player.spigot().sendMessage(base);
}
- public static void miniMessage(Player player,String actionLine,ConditionalEvents plugin){
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(plugin.getDependencyManager().isPaper() && serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_19_R3)) {
+ public static void miniMessage(Player player, String actionLine, ConditionalEvents plugin) {
+ if (plugin.getDependencyManager().isPaper() && ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_19_R3)) {
player.sendRichMessage(actionLine);
}
}
@@ -90,11 +89,11 @@ public static void sendToServer(Player player,String actionLine,ConditionalEvent
public static void teleport(Player player, String actionLine, Event minecraftEvent){
String[] sep = actionLine.split(";");
World world = Bukkit.getWorld(sep[0]);
- double x = Double.valueOf(sep[1]);
- double y = Double.valueOf(sep[2]);
- double z = Double.valueOf(sep[3]);
- float yaw = Float.valueOf(sep[4]);
- float pitch = Float.valueOf(sep[5]);
+ double x = Double.parseDouble(sep[1]);
+ double y = Double.parseDouble(sep[2]);
+ double z = Double.parseDouble(sep[3]);
+ float yaw = Float.parseFloat(sep[4]);
+ float pitch = Float.parseFloat(sep[5]);
Location l = new Location(world,x,y,z,yaw,pitch);
if(minecraftEvent instanceof PlayerRespawnEvent) {
@@ -133,14 +132,14 @@ public static void removeItem(Player player,String actionLine){
String[] sep = actionLine.split(";");
String material = sep[0];
- int amount = Integer.valueOf(sep[1]);
+ int amount = Integer.parseInt(sep[1]);
short datavalue = 0;
String name = null;
String loreContainsLoreLine = null;
for(String sepLine : sep) {
if(sepLine.startsWith("datavalue: ")) {
- datavalue = Short.valueOf(sepLine.replace("datavalue: ", ""));
+ datavalue = Short.parseShort(sepLine.replace("datavalue: ", ""));
}else if(sepLine.startsWith("name: ")) {
name = sepLine.replace("name: ", "");
}else if(sepLine.startsWith("lorecontains: ")) {
@@ -204,11 +203,11 @@ public static void removeItem(Player player,String actionLine){
public static void givePotionEffect(Player player,String actionLine){
String[] sep = actionLine.split(";");
PotionEffectType potionEffectType = PotionEffectType.getByName(sep[0]);
- int duration = Integer.valueOf(sep[1]);
- int level = Integer.valueOf(sep[2])-1;
+ int duration = Integer.parseInt(sep[1]);
+ int level = Integer.parseInt(sep[2]) - 1;
boolean showParticles = true;
if(sep.length >= 4) {
- showParticles = Boolean.valueOf(sep[3]);
+ showParticles = Boolean.parseBoolean(sep[3]);
}
PotionEffect effect = new PotionEffect(potionEffectType,duration,level,false,showParticles);
player.addPotionEffect(effect);
@@ -220,7 +219,7 @@ public static void removePotionEffect(Player player,String actionLine){
}
public static void cancelEvent(String actionLine,Event minecraftEvent){
- boolean cancel = Boolean.valueOf(actionLine);
+ boolean cancel = Boolean.parseBoolean(actionLine);
if(minecraftEvent != null && minecraftEvent instanceof Cancellable) {
Cancellable cancellableEvent = (Cancellable) minecraftEvent;
cancellableEvent.setCancelled(cancel);
@@ -295,11 +294,10 @@ public static void playSoundResourcePack(Player player,String actionLine){
public static void stopSound(Player player,String actionLine){
// stopsound: sound/all
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_10_R1)) {
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_10_R1)) {
Sound sound = null;
if(actionLine.equals("all")){
- if(!serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_17_R1)){
+ if (!ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_17_R1)) {
return;
}
player.stopAllSounds();
@@ -535,15 +533,15 @@ public static void summon(String actionLine) {
public static void actionbar(Player player,String actionLine,ConditionalEvents plugin){
String[] sep = actionLine.split(";");
String text = sep[0];
- int duration = Integer.valueOf(sep[1]);
+ int duration = Integer.parseInt(sep[1]);
ActionBarAPI.sendActionBar(player,text,duration,plugin);
}
public static void title(Player player,String actionLine){
String[] sep = actionLine.split(";");
- int fadeIn = Integer.valueOf(sep[0]);
- int stay = Integer.valueOf(sep[1]);
- int fadeOut = Integer.valueOf(sep[2]);
+ int fadeIn = Integer.parseInt(sep[0]);
+ int stay = Integer.parseInt(sep[1]);
+ int fadeOut = Integer.parseInt(sep[2]);
String title = sep[3];
String subtitle = sep[4];
@@ -594,7 +592,7 @@ public static void firework(Player player,String actionLine,ConditionalEvents pl
}
}else if(s.startsWith("power:")) {
s = s.replace("power:", "");
- power = Integer.valueOf(s);
+ power = Integer.parseInt(s);
}else if(s.startsWith("location:")) {
String[] sep2 = s.replace("location:", "").split(";");
location = new Location(
@@ -607,11 +605,10 @@ public static void firework(Player player,String actionLine,ConditionalEvents pl
location = player.getLocation();
}
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- EntityType entityType = null;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R4)){
+ EntityType entityType;
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R4)) {
entityType = EntityType.FIREWORK_ROCKET;
- }else{
+ } else {
entityType = EntityType.valueOf("FIREWORK");
}
Firework firework = (Firework) location.getWorld().spawnEntity(location, entityType);
@@ -705,10 +702,9 @@ public static void setOnFire(Player player,String actionLine){
}
- public static void freeze(Player player,String actionLine){
+ public static void freeze(Player player, String actionLine) {
// freeze:
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_17_R1)) {
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_17_R1)) {
player.setFreezeTicks(Integer.parseInt(actionLine));
}
}
@@ -732,7 +728,7 @@ public static void setFoodLevel(Player player,String actionLine){
public static void wait(String actionLine, ExecutedEvent executedEvent){
executedEvent.setOnWait(true);
- int timeSeconds = Integer.valueOf(actionLine);
+ int timeSeconds = Integer.parseInt(actionLine);
new BukkitRunnable(){
@Override
@@ -744,7 +740,7 @@ public void run() {
public static void waitTicks(String actionLine, ExecutedEvent executedEvent){
executedEvent.setOnWait(true);
- long timeTicks = Long.valueOf(actionLine);
+ long timeTicks = Long.parseLong(actionLine);
new BukkitRunnable(){
@Override
diff --git a/src/main/java/ce/ajneb97/utils/BlockUtils.java b/src/main/java/ce/ajneb97/utils/BlockUtils.java
index 11c4c7a..33f2a21 100644
--- a/src/main/java/ce/ajneb97/utils/BlockUtils.java
+++ b/src/main/java/ce/ajneb97/utils/BlockUtils.java
@@ -33,8 +33,7 @@ public static String getHeadTextureData(Block block) {
if(material.name().equals("PLAYER_HEAD") || material.name().equals("SKULL") || material.name().equals("PLAYER_WALL_HEAD")) {
Skull skullBlock = (Skull) block.getState();
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_21_R1)) {
if(skullBlock.getOwnerProfile() == null){
return "";
}
@@ -60,7 +59,7 @@ public static String getHeadTextureData(Block block) {
gameProfile.getProperties().containsKey("textures")) {
Collection properties = gameProfile.getProperties().get("textures");
for(Property p : properties) {
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R2)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R2)) {
String pName = (String)p.getClass().getMethod("name").invoke(p);
if(pName.equals("textures")){
return (String)p.getClass().getMethod("value").invoke(p);
@@ -95,8 +94,7 @@ public static void setHeadTextureData(Block block,String texture,String owner){
return;
}
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R2)){
+ if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R2)) {
PlayerProfile profile = Bukkit.createPlayerProfile(UUID.randomUUID());
PlayerTextures textures = profile.getTextures();
URL url;
diff --git a/src/main/java/ce/ajneb97/utils/ColorUtils.java b/src/main/java/ce/ajneb97/utils/ColorUtils.java
new file mode 100644
index 0000000..5bf32b9
--- /dev/null
+++ b/src/main/java/ce/ajneb97/utils/ColorUtils.java
@@ -0,0 +1,18 @@
+package ce.ajneb97.utils;
+
+import org.bukkit.ChatColor;
+
+import javax.annotation.Nullable;
+
+public final class ColorUtils {
+
+ public static String stripColor(@Nullable final String text) {
+ if (text == null) return null;
+ //noinspection deprecation
+ return ChatColor.stripColor(text);
+ }
+
+ private ColorUtils() {
+ }
+
+}
diff --git a/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java b/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java
index b2fa199..4f144b3 100644
--- a/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java
+++ b/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java
@@ -75,8 +75,8 @@ public static String variableRandomPlayerWorld(String variable){
public static String variableRandomMinMax(String variable){
String variableLR = variable.replace("random_", "");
String[] variableLRSplit = variableLR.split("_");
- int num1 = Integer.valueOf(variableLRSplit[0]);
- int num2 = Integer.valueOf(variableLRSplit[1]);
+ int num1 = Integer.parseInt(variableLRSplit[0]);
+ int num2 = Integer.parseInt(variableLRSplit[1]);
int numFinal = MathUtils.getRandomNumber(num1, num2);
return numFinal+"";
}
@@ -161,9 +161,9 @@ public static String variableIsNearby(Player finalPlayer,String variable){
String variableLR = variable.replace("is_nearby_", "");
String[] variableLRSplit = variableLR.split("_");
try {
- int x = Integer.valueOf(variableLRSplit[0]);
- int y = Integer.valueOf(variableLRSplit[1]);
- int z = Integer.valueOf(variableLRSplit[2]);
+ int x = Integer.parseInt(variableLRSplit[0]);
+ int y = Integer.parseInt(variableLRSplit[1]);
+ int z = Integer.parseInt(variableLRSplit[2]);
String worldName = "";
for(int i=3;i= version2.ordinal();
}
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 60e0681..0545739 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -3,6 +3,7 @@ Config:
data_save_time: 5
debug_actions: true
experimental:
+ serialize_item_meta: true
variable_replacement: false
register_commands:
- "hello"