From 515de7d2c819691e7dc6f7b9aa2fbe9f0f4924d0 Mon Sep 17 00:00:00 2001 From: Logan <37521985+LoJoSho@users.noreply.github.com> Date: Sun, 7 Sep 2025 09:44:53 -0500 Subject: [PATCH] feat: add event for cancelling interactions with balloon armorstand --- .../listener/PlayerGameListener.java | 16 ++++++++++------ .../user/manager/UserBalloonManager.java | 3 ++- .../hmccosmetics/util/HMCCServerUtils.java | 7 +++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java index 6a155d20..148a3d63 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java @@ -4,22 +4,16 @@ import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.api.events.PlayerCosmeticPostEquipEvent; import com.hibiscusmc.hmccosmetics.config.Settings; import com.hibiscusmc.hmccosmetics.config.WardrobeSettings; -import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; -import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticArmorType; import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBackpackType; import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBalloonType; -import com.hibiscusmc.hmccosmetics.gui.Menu; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.user.CosmeticUsers; -import com.hibiscusmc.hmccosmetics.user.manager.UserWardrobeManager; import com.hibiscusmc.hmccosmetics.util.HMCCInventoryUtils; import com.hibiscusmc.hmccosmetics.util.HMCCServerUtils; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.packets.HMCCPacketManager; import me.lojosho.hibiscuscommons.api.events.*; -import me.lojosho.hibiscuscommons.nms.MinecraftVersion; -import me.lojosho.hibiscuscommons.nms.NMSHandlers; import me.lojosho.hibiscuscommons.util.packets.PacketManager; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -364,6 +358,16 @@ public class PlayerGameListener implements Listener { } } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onPlayerInteract(PlayerInteractEntityEvent event) { + final Player player = event.getPlayer(); + final Entity entity = event.getRightClicked(); + // Balloons are technically actual entities, so we need to cancel any interactions with them + if (entity.getPersistentDataContainer().has(HMCCServerUtils.getCosmemeticMobKey())) { + event.setCancelled(true); + } + } + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onPlayerVanish(HibiscusPlayerVanishEvent event) { CosmeticUser user = CosmeticUsers.getUser(event.getPlayer()); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java index bc5b22c0..f71e4967 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java @@ -5,6 +5,7 @@ import com.hibiscusmc.hmccosmetics.config.Settings; import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBalloonType; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.user.CosmeticUsers; +import com.hibiscusmc.hmccosmetics.util.HMCCServerUtils; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.packets.HMCCPacketManager; import com.ticxo.modelengine.api.ModelEngineAPI; @@ -49,7 +50,7 @@ public class UserBalloonManager { e.setSmall(true); e.setMarker(true); e.setPersistent(false); - e.getPersistentDataContainer().set(new NamespacedKey(HMCCosmeticsPlugin.getInstance(), "cosmeticMob"), PersistentDataType.SHORT, Short.valueOf("1")); + e.getPersistentDataContainer().set(HMCCServerUtils.getCosmemeticMobKey(), PersistentDataType.SHORT, Short.valueOf("1")); }); } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/HMCCServerUtils.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/HMCCServerUtils.java index 8c244c93..2dce30f8 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/HMCCServerUtils.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/HMCCServerUtils.java @@ -1,5 +1,6 @@ package com.hibiscusmc.hmccosmetics.util; +import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.owen1212055.particlehelper.api.particle.MultiParticle; import com.owen1212055.particlehelper.api.particle.Particle; import com.owen1212055.particlehelper.api.particle.types.*; @@ -9,6 +10,8 @@ import me.lojosho.hibiscuscommons.nms.NMSHandlers; import org.bukkit.Color; import org.bukkit.GameMode; import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.Nullable; import java.math.BigInteger; @@ -157,4 +160,8 @@ public class HMCCServerUtils { } return nextYaw; } + + public static NamespacedKey getCosmemeticMobKey() { + return new NamespacedKey(HMCCosmeticsPlugin.getInstance(), "cosmeticMob"); + } }