diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java index 81a1e917..7d0ceab1 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java @@ -17,6 +17,7 @@ import me.clip.placeholderapi.PlaceholderAPI; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.spongepowered.configurate.ConfigurationNode; @@ -150,7 +151,8 @@ public class Menu { Type finalType = type; guiItem.setAction(event -> { - if (finalType != null) finalType.run(user, config); + final ClickType clickType = event.getClick(); + if (finalType != null) finalType.run(user, config, clickType); for (int i : slots) { gui.updateItem(i, updateLore(player, originalItem.clone())); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java index dbdeee87..5311c446 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java @@ -1,6 +1,7 @@ package com.hibiscusmc.hmccosmetics.gui.type; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.meta.ItemMeta; import org.spongepowered.configurate.ConfigurationNode; @@ -18,6 +19,9 @@ public class Type { } public void run(CosmeticUser user, ConfigurationNode config) { + run(user, config, null); + } + public void run(CosmeticUser user, ConfigurationNode config, ClickType clickType) { // Override } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java index ca59855d..93d5dd19 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java @@ -7,6 +7,7 @@ import com.hibiscusmc.hmccosmetics.gui.special.DyeMenu; import com.hibiscusmc.hmccosmetics.gui.type.Type; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; +import org.bukkit.event.inventory.ClickType; import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.serialize.SerializationException; @@ -20,7 +21,7 @@ public class TypeCosmetic extends Type { } @Override - public void run(CosmeticUser user, ConfigurationNode config) { + public void run(CosmeticUser user, ConfigurationNode config, ClickType clickType) { if (config.node("cosmetic").virtual()) return; String cosmeticName = config.node("cosmetic").getString(); Cosmetic cosmetic = Cosmetics.getCosmetic(cosmeticName); @@ -40,6 +41,15 @@ public class TypeCosmetic extends Type { try { if (!actionConfig.node("any").virtual()) actionStrings.addAll(actionConfig.node("any").getList(String.class)); + if (clickType != null) { + if (clickType.isLeftClick()) { + if (!actionConfig.node("left-click").virtual()) actionStrings.addAll(actionConfig.node("left-click").getList(String.class)); + } + if (clickType.isRightClick()) { + if (!actionConfig.node("right-click").virtual()) actionStrings.addAll(actionConfig.node("right-click").getList(String.class)); + } + } + if (user.getCosmetic(cosmetic.getSlot()) == cosmetic) { if (!actionConfig.node("on-unequip").virtual()) actionStrings.addAll(actionConfig.node("on-unequip").getList(String.class)); MessagesUtil.sendDebugMessages("on-unequip"); @@ -61,7 +71,6 @@ public class TypeCosmetic extends Type { throw new RuntimeException(e); } - //user.toggleCosmetic(cosmetic); user.updateCosmetic(cosmetic.getSlot()); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java index a06e0acc..d0212286 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java @@ -3,6 +3,7 @@ package com.hibiscusmc.hmccosmetics.gui.type.types; import com.hibiscusmc.hmccosmetics.gui.action.Actions; import com.hibiscusmc.hmccosmetics.gui.type.Type; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.inventory.ClickType; import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.serialize.SerializationException; @@ -20,7 +21,7 @@ public class TypeEmpty extends Type { // This is the code that's run when the item is clicked. @Override - public void run(CosmeticUser user, ConfigurationNode config) { + public void run(CosmeticUser user, ConfigurationNode config, ClickType clickType) { List actionStrings = new ArrayList<>(); // List where we keep the actions the server will execute. ConfigurationNode actionConfig = config.node("actions"); // Configuration node that actions are under. @@ -31,6 +32,15 @@ public class TypeEmpty extends Type { // with actions, mearly what should be done for each item. if (!actionConfig.node("any").virtual()) actionStrings.addAll(actionConfig.node("any").getList(String.class)); + if (clickType != null) { + if (clickType.isLeftClick()) { + if (!actionConfig.node("left-click").virtual()) actionStrings.addAll(actionConfig.node("left-click").getList(String.class)); + } + if (clickType.isRightClick()) { + if (!actionConfig.node("right-click").virtual()) actionStrings.addAll(actionConfig.node("right-click").getList(String.class)); + } + } + // We run the actions once we got the raw strings from the config. Actions.runActions(user, actionStrings); } catch (SerializationException e) {