diff --git a/build.gradle b/build.gradle index b604837..b588c3d 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'net.momirealms' -version = '2.2.0.7.3' +version = '2.2.0.8' repositories { maven {name = "aliyun-repo"; url = "https://maven.aliyun.com/repository/public/"} @@ -29,10 +29,11 @@ dependencies { compileOnly ('org.geysermc.floodgate:api:2.0-SNAPSHOT') compileOnly ('net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT') compileOnly ('com.github.LoneDev6:api-itemsadder:3.2.3c') - implementation ('net.kyori:adventure-api:4.13.1') + compileOnly ('com.github.FrancoBM12:API-MagicCosmetics:2.2.0') + implementation ('net.kyori:adventure-api:4.14.0') implementation ('net.kyori:adventure-platform-bukkit:4.3.0') - implementation ('net.kyori:adventure-text-minimessage:4.13.1') - implementation ('net.kyori:adventure-text-serializer-gson:4.13.1') + implementation ('net.kyori:adventure-text-minimessage:4.14.0') + implementation ('net.kyori:adventure-text-serializer-gson:4.14.0') implementation ("org.bstats:bstats-bukkit:3.0.1") implementation fileTree (dir:'libs',includes:['BiomeAPI.jar']) } @@ -61,6 +62,7 @@ processResources { shadowJar { relocate ('net.kyori', 'net.momirealms.customnameplates.libs.net.kyori') relocate ('org.bstats', 'net.momirealms.customnameplates.libs.org.bstats') + relocate ('net.momirealms', 'net.momirealms.customnameplates.libs.net.momirealms') } tasks.register("delete", Delete).get().delete("build/libs/"+project.name+"-"+project.version+".jar") diff --git a/libs/oraxen-api.jar b/libs/oraxen-api.jar new file mode 100644 index 0000000..b1a3bc0 Binary files /dev/null and b/libs/oraxen-api.jar differ diff --git a/src/main/java/net/momirealms/customnameplates/listener/compatibility/MagicCosmeticsListener.java b/src/main/java/net/momirealms/customnameplates/listener/compatibility/MagicCosmeticsListener.java new file mode 100644 index 0000000..53b1fb4 --- /dev/null +++ b/src/main/java/net/momirealms/customnameplates/listener/compatibility/MagicCosmeticsListener.java @@ -0,0 +1,63 @@ +package net.momirealms.customnameplates.listener.compatibility; + +import com.francobm.magicosmetics.api.Cosmetic; +import com.francobm.magicosmetics.api.CosmeticType; +import com.francobm.magicosmetics.api.MagicAPI; +import com.francobm.magicosmetics.cache.cosmetics.Hat; +import com.francobm.magicosmetics.events.CosmeticChangeEquipEvent; +import com.francobm.magicosmetics.events.CosmeticEquipEvent; +import com.francobm.magicosmetics.events.CosmeticUnEquipEvent; +import net.momirealms.customnameplates.object.armorstand.ArmorStandManager; +import net.momirealms.customnameplates.object.nameplate.mode.EntityTag; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class MagicCosmeticsListener implements Listener { + + private final EntityTag entityTag; + + public MagicCosmeticsListener(EntityTag entityTag) { + this.entityTag = entityTag; + } + + @EventHandler + public void onChangeCos(CosmeticChangeEquipEvent event) { + final Cosmetic cosmetic = event.getNewCosmetic(); + final Player player = event.getPlayer(); + if (cosmetic instanceof Hat hat) { + ArmorStandManager asm = entityTag.getArmorStandManager(player); + if (asm != null) { + asm.setHatOffset(hat.getOffSetY()); + } + } + } + + @EventHandler + public void onEquip(CosmeticEquipEvent event) { + final Cosmetic cosmetic = event.getCosmetic(); + final Player player = event.getPlayer(); + if (cosmetic instanceof Hat hat) { + ArmorStandManager asm = entityTag.getArmorStandManager(player); + if (asm != null) { + asm.setHatOffset(hat.getOffSetY()); + } + } + } + + @EventHandler + public void onUnEquip(CosmeticUnEquipEvent event) { + final Player player = event.getPlayer(); + if (event.getCosmeticType() == CosmeticType.HAT) { + ArmorStandManager asm = entityTag.getArmorStandManager(player); + if (asm != null) { + asm.setHatOffset(0); + } + } + } + + //TODO Lack an event + public void onJoin(Player player) { + + } +} diff --git a/src/main/java/net/momirealms/customnameplates/manager/ChatBubblesManager.java b/src/main/java/net/momirealms/customnameplates/manager/ChatBubblesManager.java index 9ebca24..9ba3058 100644 --- a/src/main/java/net/momirealms/customnameplates/manager/ChatBubblesManager.java +++ b/src/main/java/net/momirealms/customnameplates/manager/ChatBubblesManager.java @@ -205,7 +205,6 @@ public class ChatBubblesManager extends EntityTag { @Override public void onJoin(Player player) { super.onJoin(player); - super.createArmorStandManager(player); } @Override @@ -214,6 +213,10 @@ public class ChatBubblesManager extends EntityTag { coolDownMap.remove(player); } + public void init(Player player) { + createArmorStandManager(player); + } + private boolean isCoolDown(Player player, int lines) { long time = System.currentTimeMillis(); if (time - (coolDownMap.getOrDefault(player, time - (long) coolDown * lines)) < (long) coolDown * lines) return true; diff --git a/src/main/java/net/momirealms/customnameplates/manager/NameplateManager.java b/src/main/java/net/momirealms/customnameplates/manager/NameplateManager.java index 07b96d5..633fbae 100644 --- a/src/main/java/net/momirealms/customnameplates/manager/NameplateManager.java +++ b/src/main/java/net/momirealms/customnameplates/manager/NameplateManager.java @@ -162,6 +162,8 @@ public class NameplateManager extends Function { contentMap.put(new ConditionalText(requirements, text), offset); } } + } else if (mode == DisplayMode.TEXT_DISPLAY) { + } else if (mode == DisplayMode.DISABLE) { this.nameplateTag = new DisableNameplate(plugin); } diff --git a/src/main/java/net/momirealms/customnameplates/object/armorstand/ArmorStandManager.java b/src/main/java/net/momirealms/customnameplates/object/armorstand/ArmorStandManager.java index 6cf201d..a02c024 100644 --- a/src/main/java/net/momirealms/customnameplates/object/armorstand/ArmorStandManager.java +++ b/src/main/java/net/momirealms/customnameplates/object/armorstand/ArmorStandManager.java @@ -36,6 +36,7 @@ public class ArmorStandManager { private final Vector nearbyPlayers; private Player[] nearbyPlayerArray ; private final Player owner; + private double hatOffset; public ArmorStandManager(Player owner) { this.owner = owner; @@ -170,4 +171,13 @@ public class ArmorStandManager { fakeArmorStand.teleport(); } } + + public double getHatOffset() { + return hatOffset; + } + + public void setHatOffset(double hatOffset) { + this.hatOffset = hatOffset; + teleport(); + } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customnameplates/object/armorstand/FakeArmorStand.java b/src/main/java/net/momirealms/customnameplates/object/armorstand/FakeArmorStand.java index f262bda..59fd5b3 100644 --- a/src/main/java/net/momirealms/customnameplates/object/armorstand/FakeArmorStand.java +++ b/src/main/java/net/momirealms/customnameplates/object/armorstand/FakeArmorStand.java @@ -204,6 +204,7 @@ public class FakeArmorStand { else y += 1.8; } else y += 0.2; + y += asm.getHatOffset(); return new Location(null, x, y, z); } diff --git a/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/DisplayMode.java b/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/DisplayMode.java index af4a7ac..3d34c42 100644 --- a/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/DisplayMode.java +++ b/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/DisplayMode.java @@ -20,5 +20,6 @@ package net.momirealms.customnameplates.object.nameplate.mode; public enum DisplayMode { TEAM, ARMOR_STAND, + TEXT_DISPLAY, DISABLE } diff --git a/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/EntityTag.java b/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/EntityTag.java index 8577b4a..b981744 100644 --- a/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/EntityTag.java +++ b/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/EntityTag.java @@ -19,6 +19,7 @@ package net.momirealms.customnameplates.object.nameplate.mode; import net.momirealms.customnameplates.CustomNameplates; import net.momirealms.customnameplates.listener.EntityTagListener; +import net.momirealms.customnameplates.listener.compatibility.MagicCosmeticsListener; import net.momirealms.customnameplates.object.armorstand.ArmorStandManager; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -34,10 +35,14 @@ public abstract class EntityTag extends AbstractNameplateTag { protected EntityTagListener entityTagListener; protected PacketsHandler handler; + protected MagicCosmeticsListener magicCosmeticsListener; protected EntityTag(CustomNameplates plugin) { super(plugin); this.entityTagListener = new EntityTagListener(this); + if (Bukkit.getPluginManager().getPlugin("MagicCosmetics") != null) { + this.magicCosmeticsListener = new MagicCosmeticsListener(this); + } } @Override @@ -45,6 +50,7 @@ public abstract class EntityTag extends AbstractNameplateTag { super.load(); handler.load(); Bukkit.getPluginManager().registerEvents(entityTagListener, CustomNameplates.getInstance()); + if (magicCosmeticsListener != null) Bukkit.getPluginManager().registerEvents(magicCosmeticsListener, CustomNameplates.getInstance()); } @Override @@ -56,11 +62,13 @@ public abstract class EntityTag extends AbstractNameplateTag { } armorStandManagerMap.clear(); HandlerList.unregisterAll(entityTagListener); + if (magicCosmeticsListener != null) HandlerList.unregisterAll(magicCosmeticsListener); } @Override public void onJoin(Player player) { handler.onJoin(player); + init(player); } @Override @@ -72,6 +80,10 @@ public abstract class EntityTag extends AbstractNameplateTag { } } + public void init(Player player) { + + } + public ArmorStandManager createArmorStandManager(Player player) { ArmorStandManager asm = new ArmorStandManager(player); armorStandManagerMap.put(player, asm); diff --git a/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/armorstand/ArmorStandTag.java b/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/armorstand/ArmorStandTag.java index 0a07884..5c24a59 100644 --- a/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/armorstand/ArmorStandTag.java +++ b/src/main/java/net/momirealms/customnameplates/object/nameplate/mode/armorstand/ArmorStandTag.java @@ -56,14 +56,17 @@ public class ArmorStandTag extends EntityTag { @Override public void onJoin(Player player) { super.onJoin(player); - ArmorStandManager asm = createArmorStandManager(player); - asm.initNameplateArmorStands(); for (Player viewer : Bukkit.getOnlinePlayers()) { spawnArmorStands(viewer, player); spawnArmorStands(player, viewer); } } + public void init(Player player) { + ArmorStandManager asm = createArmorStandManager(player); + asm.initNameplateArmorStands(); + } + @Override public void loadToAllPlayers() { super.loadToAllPlayers(); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2cf3325..441570a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -11,6 +11,7 @@ softdepend: - TAB - Oraxen - TrChat + - MagicCosmetics commands: customnameplates: usage: /customnameplates