diff --git a/Holograms-v1_10_R1/pom.xml b/Holograms-v1_10_R1/pom.xml index 78ec87dd..2b656d0b 100644 --- a/Holograms-v1_10_R1/pom.xml +++ b/Holograms-v1_10_R1/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.10.2-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_11_R1/pom.xml b/Holograms-v1_11_R1/pom.xml index 7de0df14..0e73a53a 100644 --- a/Holograms-v1_11_R1/pom.xml +++ b/Holograms-v1_11_R1/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.11-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_12_R1/pom.xml b/Holograms-v1_12_R1/pom.xml index 44203271..f8a85389 100644 --- a/Holograms-v1_12_R1/pom.xml +++ b/Holograms-v1_12_R1/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.12-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_13_R1/pom.xml b/Holograms-v1_13_R1/pom.xml index 5356965f..2a775297 100644 --- a/Holograms-v1_13_R1/pom.xml +++ b/Holograms-v1_13_R1/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.13-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_13_R2/pom.xml b/Holograms-v1_13_R2/pom.xml index 95743d26..8d8e8423 100644 --- a/Holograms-v1_13_R2/pom.xml +++ b/Holograms-v1_13_R2/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.13.2-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_16_R3/pom.xml b/Holograms-v1_16_R3/pom.xml new file mode 100644 index 00000000..5060a636 --- /dev/null +++ b/Holograms-v1_16_R3/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.sainttx.holograms + holograms-parent + 2.13 + + + holograms-v1_16_R3 + + + UTF-8 + 1.8 + 1.8 + + + + + + org.spigotmc + spigot + 1.16.4-R0.1-SNAPSHOT + provided + + + + + com.sainttx.holograms + holograms-api + ${project.version} + provided + + + + \ No newline at end of file diff --git a/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/CraftItemHolder.java b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/CraftItemHolder.java new file mode 100644 index 00000000..48f55293 --- /dev/null +++ b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/CraftItemHolder.java @@ -0,0 +1,152 @@ +package com.sainttx.holograms.nms.v1_16_R3; + +import org.bukkit.EntityEffect; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_16_R3.CraftServer; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftItem; +import org.bukkit.entity.Entity; +import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; + +public class CraftItemHolder extends CraftItem { + + public CraftItemHolder(CraftServer server, EntityItemHolder entity) { + super(server, entity, entity); + } + + @Override + public void setItemStack(ItemStack stack) { + + } + + @Override + public void setPickupDelay(int delay) { + + } + + @Override + public void setTicksLived(int value) { + + } + + @Override + public void playEffect(EntityEffect type) { + + } + + @Override + public void setVelocity(Vector velocity) { + + } + + @Override + public void setRotation(float yaw, float pitch) { + + } + + @Override + public boolean teleport(Location location) { + return false; + } + + @Override + public boolean teleport(Location location, PlayerTeleportEvent.TeleportCause cause) { + return false; + } + + @Override + public boolean teleport(Entity destination) { + return false; + } + + @Override + public boolean teleport(Entity destination, PlayerTeleportEvent.TeleportCause cause) { + return false; + } + + @Override + public void setFireTicks(int ticks) { + + } + + @Override + public void remove() { + + } + + @Override + public void setPersistent(boolean persistent) { + + } + + @Override + public void setMomentum(Vector value) { + + } + + @Override + public boolean setPassenger(Entity passenger) { + return false; + } + + @Override + public boolean addPassenger(Entity passenger) { + return false; + } + + @Override + public boolean removePassenger(Entity passenger) { + return false; + } + + @Override + public boolean eject() { + return false; + } + + @Override + public void setFallDistance(float distance) { + + } + + @Override + public boolean leaveVehicle() { + return false; + } + + @Override + public void setCustomName(String name) { + + } + + @Override + public void setCustomNameVisible(boolean flag) { + + } + + @Override + public void setGlowing(boolean flag) { + + } + + @Override + public void setInvulnerable(boolean flag) { + + } + + @Override + public void setSilent(boolean flag) { + + } + + @Override + public void setGravity(boolean gravity) { + + } + + @Override + public void setPortalCooldown(int cooldown) { + + } +} diff --git a/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/CraftNameable.java b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/CraftNameable.java new file mode 100644 index 00000000..e3e2da6a --- /dev/null +++ b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/CraftNameable.java @@ -0,0 +1,331 @@ +package com.sainttx.holograms.nms.v1_16_R3; + +import org.bukkit.EntityEffect; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_16_R3.CraftServer; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.util.EulerAngle; +import org.bukkit.util.Vector; + +import java.util.Collection; + +public class CraftNameable extends CraftArmorStand { + + public CraftNameable(CraftServer server, EntityNameable entity) { + super(server, entity); + } + + @Override + public void setItemInHand(ItemStack item) { + + } + + @Override + public void setBoots(ItemStack item) { + + } + + @Override + public void setLeggings(ItemStack item) { + + } + + @Override + public void setChestplate(ItemStack item) { + + } + + @Override + public void setHelmet(ItemStack item) { + + } + + @Override + public void setBodyPose(EulerAngle pose) { + + } + + @Override + public void setLeftArmPose(EulerAngle pose) { + + } + + @Override + public void setRightArmPose(EulerAngle pose) { + + } + + @Override + public void setLeftLegPose(EulerAngle pose) { + + } + + @Override + public void setRightLegPose(EulerAngle pose) { + + } + + @Override + public void setHeadPose(EulerAngle pose) { + + } + + @Override + public void setBasePlate(boolean basePlate) { + + } + + @Override + public void setGravity(boolean gravity) { + + } + + @Override + public void setVisible(boolean visible) { + + } + + @Override + public void setArms(boolean arms) { + + } + + @Override + public void setSmall(boolean small) { + + } + + @Override + public void setMarker(boolean marker) { + + } + + @Override + public void setHealth(double health) { + + } + + @Override + public void setAbsorptionAmount(double amount) { + + } + + @Override + public void setMaxHealth(double amount) { + + } + + @Override + public void resetMaxHealth() { + + } + + @Override + public void setRemainingAir(int ticks) { + + } + + @Override + public void setMaximumAir(int ticks) { + + } + + @Override + public void damage(double amount) { + + } + + @Override + public void damage(double amount, Entity source) { + + } + + @Override + public void setMaximumNoDamageTicks(int ticks) { + + } + + @Override + public void setLastDamage(double damage) { + + } + + @Override + public void setNoDamageTicks(int ticks) { + + } + + @Override + public boolean addPotionEffect(PotionEffect effect) { + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect effect, boolean force) { + return false; + } + + @Override + public boolean addPotionEffects(Collection effects) { + return false; + } + + @Override + public void setRemoveWhenFarAway(boolean remove) { + + } + + @Override + public void setCanPickupItems(boolean pickup) { + + } + + @Override + public boolean teleport(Location location, PlayerTeleportEvent.TeleportCause cause) { + return false; + } + + @Override + public boolean setLeashHolder(Entity holder) { + return false; + } + + @Override + public void setGliding(boolean gliding) { + + } + + @Override + public void setSwimming(boolean swimming) { + + } + + @Override + public void setAI(boolean ai) { + + } + + @Override + public void setCollidable(boolean collidable) { + + } + + @Override + public void setVelocity(Vector velocity) { + + } + + @Override + public void setRotation(float yaw, float pitch) { + + } + + @Override + public boolean teleport(Location location) { + return false; + } + + @Override + public boolean teleport(Entity destination) { + return false; + } + + @Override + public boolean teleport(Entity destination, PlayerTeleportEvent.TeleportCause cause) { + return false; + } + + @Override + public void setFireTicks(int ticks) { + + } + + @Override + public void remove() { + + } + + @Override + public void setPersistent(boolean persistent) { + + } + + @Override + public void setMomentum(Vector value) { + + } + + @Override + public boolean setPassenger(Entity passenger) { + return false; + } + + @Override + public boolean addPassenger(Entity passenger) { + return false; + } + + @Override + public boolean removePassenger(Entity passenger) { + return false; + } + + @Override + public boolean eject() { + return false; + } + + @Override + public void setFallDistance(float distance) { + + } + + @Override + public void setTicksLived(int value) { + + } + + @Override + public void playEffect(EntityEffect type) { + + } + + @Override + public boolean leaveVehicle() { + return false; + } + + @Override + public void setCustomName(String name) { + + } + + @Override + public void setCustomNameVisible(boolean flag) { + + } + + @Override + public void setGlowing(boolean flag) { + + } + + @Override + public void setInvulnerable(boolean flag) { + + } + + @Override + public void setSilent(boolean flag) { + + } + + @Override + public void setPortalCooldown(int cooldown) { + + } +} \ No newline at end of file diff --git a/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/EntityItemHolder.java b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/EntityItemHolder.java new file mode 100644 index 00000000..4bc8c355 --- /dev/null +++ b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/EntityItemHolder.java @@ -0,0 +1,207 @@ +package com.sainttx.holograms.nms.v1_16_R3; + +import com.sainttx.holograms.api.entity.HologramEntity; +import com.sainttx.holograms.api.entity.ItemHolder; +import com.sainttx.holograms.api.line.HologramLine; +import net.minecraft.server.v1_16_R3.Blocks; +import net.minecraft.server.v1_16_R3.DamageSource; +import net.minecraft.server.v1_16_R3.Entity; +import net.minecraft.server.v1_16_R3.EntityHuman; +import net.minecraft.server.v1_16_R3.EntityItem; +import net.minecraft.server.v1_16_R3.EntityTypes; +import net.minecraft.server.v1_16_R3.ItemStack; +import net.minecraft.server.v1_16_R3.NBTTagCompound; +import net.minecraft.server.v1_16_R3.World; +import net.minecraft.server.v1_16_R3.WorldServer; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack; + +import javax.annotation.Nullable; + +public class EntityItemHolder extends EntityItem implements ItemHolder { + + private boolean lockTick; + private HologramLine line; + private org.bukkit.inventory.ItemStack item; + private CraftEntity bukkitEntity; + + public EntityItemHolder(World world, HologramLine line) { + super(EntityTypes.ITEM, world); + this.line = line; + this.noclip = true; + } + + public void setLockTick(boolean lockTick) { + this.lockTick = lockTick; + } + + @Override + public HologramLine getHologramLine() { + return line; + } + + @Override + public void setPosition(double x, double y, double z) { + super.setPosition(x, y, z); + } + + @Override + public void remove() { + this.dead = true; + if (isPassenger()) { + getVehicle().dead = true; + } + } + + @Override + public void setItem(org.bukkit.inventory.ItemStack item) { + ItemStack nms = CraftItemStack.asNMSCopy(item); + if (nms == null || nms == ItemStack.b) { + nms = new ItemStack(Blocks.BARRIER); + } + this.item = item; + super.setItemStack(nms); + } + + @Override + public org.bukkit.inventory.ItemStack getItem() { + return item; + } + + @Override + public HologramEntity getMount() { + return (HologramEntity) getVehicle(); + } + + @Override + public void setMount(HologramEntity entity) { + if (entity instanceof Entity) { + this.startRiding((Entity) entity); + } + } + + // Overriden NMS methods + + @Override + public void tick() { + this.s(); + this.p(); + this.ticksLived = 0; + if (!lockTick) { + super.tick(); + } + } + + @Override + public void postTick() { + if (!lockTick) { + super.postTick(); + } + } + + @Override + public void entityBaseTick() { + if (!lockTick) { + super.entityBaseTick(); + } + } + + @Override + public void loadData(NBTTagCompound nbttagcompound) { + + } + + @Override + public void saveData(NBTTagCompound nbttagcompound) { + + } + + @Override + public boolean a_(NBTTagCompound nbttagcompound) { + return false; + } + + @Override + public boolean d(NBTTagCompound nbttagcompound) { + return false; + } + + @Override + public NBTTagCompound save(NBTTagCompound nbttagcompound) { + return new NBTTagCompound(); + } + + @Override + public void load(NBTTagCompound nbttagcompound) { + + } + + @Override + public boolean isAlive() { + return false; + } + + @Override + public boolean isCollidable() { + return false; + } + + @Override + public boolean isInteractable() { + return false; + } + + @Override + public boolean isInvulnerable(DamageSource source) { + return true; + } + + @Override + public void die() { + + } + + @Override + public void killEntity() { + + } + + @Override + public void setPickupDelay(int i) { + super.setPickupDelay(Integer.MAX_VALUE); + } + +/* @Override TODO Cannot find this method. Maybe it was removed + protected void burn(float i) { + + }*/ + + @Override + public boolean damageEntity(DamageSource damagesource, float f) { + return false; + } + + @Override + public void pickup(EntityHuman entityhuman) { + + } + + @Nullable + @Override + public Entity b(WorldServer dimensionmanager) { + return null; + } + + @Override + public void setItemStack(ItemStack itemstack) { + + } + + @Override + public CraftEntity getBukkitEntity() { + if (this.bukkitEntity == null) { + this.bukkitEntity = new CraftItemHolder(this.world.getServer(), this); + } + return this.bukkitEntity; + } +} \ No newline at end of file diff --git a/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/EntityNameable.java b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/EntityNameable.java new file mode 100644 index 00000000..1a70988d --- /dev/null +++ b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/EntityNameable.java @@ -0,0 +1,198 @@ +package com.sainttx.holograms.nms.v1_16_R3; + +import com.sainttx.holograms.api.entity.Nameable; +import com.sainttx.holograms.api.line.HologramLine; +import net.minecraft.server.v1_16_R3.AxisAlignedBB; +import net.minecraft.server.v1_16_R3.DamageSource; +import net.minecraft.server.v1_16_R3.EntityArmorStand; +import net.minecraft.server.v1_16_R3.EntityHuman; +import net.minecraft.server.v1_16_R3.EntityTypes; +import net.minecraft.server.v1_16_R3.EnumHand; +import net.minecraft.server.v1_16_R3.EnumInteractionResult; +import net.minecraft.server.v1_16_R3.EnumItemSlot; +import net.minecraft.server.v1_16_R3.IChatBaseComponent; +import net.minecraft.server.v1_16_R3.ItemStack; +import net.minecraft.server.v1_16_R3.NBTTagCompound; +import net.minecraft.server.v1_16_R3.SoundEffect; +import net.minecraft.server.v1_16_R3.Vec3D; +import net.minecraft.server.v1_16_R3.World; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_16_R3.util.CraftChatMessage; + +import javax.annotation.Nullable; + +public class EntityNameable extends EntityArmorStand implements Nameable { + + private boolean lockTick; + private HologramLine parentPiece; + private CraftEntity bukkitEntity; + + public EntityNameable(World world, HologramLine parentPiece) { + super(EntityTypes.ARMOR_STAND, world); + super.collides = false; + setInvisible(true); + setSmall(true); + setArms(false); + setNoGravity(true); + setBasePlate(true); + setMarker(true); + this.parentPiece = parentPiece; + } + + public void setLockTick(boolean lock) { + lockTick = lock; + } + + @Override + public void setName(String text) { + super.setCustomName(CraftChatMessage.fromStringOrNull(text)); + super.setCustomNameVisible(!text.isEmpty()); + } + + @Override + public String getName() { + return CraftChatMessage.fromComponent(super.getCustomName()); + } + + @Override + public void setPosition(double x, double y, double z) { + super.setPosition(x, y, z); + } + + @Override + public HologramLine getHologramLine() { + return parentPiece; + } + + @Override + public void remove() { + this.dead = true; + } + + // Overriden NMS methods + + @Override + public void loadData(NBTTagCompound nbttagcompound) { + + } + + @Override + public void saveData(NBTTagCompound nbttagcompound) { + + } + + @Override + public boolean a_(NBTTagCompound nbttagcompound) { + return false; + } + + @Override + public boolean d(NBTTagCompound nbttagcompound) { + return false; + } + + @Override + public NBTTagCompound save(NBTTagCompound nbttagcompound) { + return new NBTTagCompound(); + } + + @Override + public void load(NBTTagCompound nbttagcompound) { + + } + + @Override + public boolean isInvulnerable(DamageSource source) { + return true; + } + + @Override + public boolean isCollidable() { + return false; + } + + @Override + public void setCustomName(@Nullable IChatBaseComponent ichatbasecomponent) { + + } + + @Override + public void setCustomNameVisible(boolean visible) { + + } + + @Override + public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, EnumHand enumhand) { + return EnumInteractionResult.FAIL; + } + + @Override + public boolean a_(int i, ItemStack item) { + return false; + } + + @Override + public void setSlot(EnumItemSlot enumitemslot, ItemStack itemstack) { + + } + + @Override + public void setInvisible(boolean flag) { + super.setInvisible(true); + } + + + @Override + public void killEntity() { + + } + + @Override + public boolean damageEntity(DamageSource damagesource, float f) { + return false; + } + + @Override + public void a(AxisAlignedBB boundingBox) { + + } + + @Override + public void tick() { + if (!lockTick) { + super.tick(); + } + } + + @Override + public void postTick() { + if (!lockTick) { + super.postTick(); + } + } + + @Override + public void entityBaseTick() { + if (!lockTick) { + super.entityBaseTick(); + } + } + + @Override + public void playSound(SoundEffect soundeffect, float f, float f1) { + + } + + @Override + public void die() { + + } + + @Override + public CraftEntity getBukkitEntity() { + if (this.bukkitEntity == null) { + this.bukkitEntity = new CraftNameable(this.world.getServer(), this); + } + return this.bukkitEntity; + } +} diff --git a/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/HologramEntityControllerImpl.java b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/HologramEntityControllerImpl.java new file mode 100644 index 00000000..a08d3ffb --- /dev/null +++ b/Holograms-v1_16_R3/src/main/java/com/sainttx/holograms/nms/v1_16_R3/HologramEntityControllerImpl.java @@ -0,0 +1,113 @@ +package com.sainttx.holograms.nms.v1_16_R3; + +import com.sainttx.holograms.api.HologramEntityController; +import com.sainttx.holograms.api.HologramPlugin; +import com.sainttx.holograms.api.MinecraftVersion; +import com.sainttx.holograms.api.entity.HologramEntity; +import com.sainttx.holograms.api.entity.ItemHolder; +import com.sainttx.holograms.api.line.HologramLine; +import net.minecraft.server.v1_16_R3.Entity; +import net.minecraft.server.v1_16_R3.WorldServer; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity; +import org.bukkit.inventory.ItemStack; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.logging.Level; + +public class HologramEntityControllerImpl implements HologramEntityController { + + private static final Method registerEntityMethod; + static { + try { + registerEntityMethod = WorldServer.class.getDeclaredMethod("registerEntity", Entity.class); + registerEntityMethod.setAccessible(true); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + private HologramPlugin plugin; + + public HologramEntityControllerImpl(HologramPlugin plugin) { + this.plugin = plugin; + } + + @Override + public MinecraftVersion getMinecraftVersion() { + return MinecraftVersion.V1_16_R1; + } + + @Override + public EntityNameable spawnNameable(HologramLine line, Location location) { + return spawnNameable(line, location, true); + } + + @SuppressWarnings("resource") + private EntityNameable spawnNameable(HologramLine line, Location location, boolean lock) { + WorldServer nmsWorld = ((CraftWorld) location.getWorld()).getHandle(); + EntityNameable armorStand = new EntityNameable(nmsWorld, line); + armorStand.setPosition(location.getX(), location.getY(), location.getZ()); + if (!addEntityToWorld(nmsWorld, armorStand)) { + plugin.getLogger().log(Level.WARNING, "Failed to spawn hologram entity in world " + location.getWorld().getName() + + " at x:" + location.getX() + " y:" + location.getY() + " z:" + location.getZ()); + } + if (lock) { + armorStand.setLockTick(true); + } + return armorStand; + } + + @Deprecated + @Override + public ItemHolder spawnItemHolder(HologramLine line, Location location) { + return spawnItemHolder(line, location, new ItemStack(Material.AIR)); + } + + @SuppressWarnings("resource") + @Override + public ItemHolder spawnItemHolder(HologramLine line, Location location, ItemStack itemstack) { + WorldServer nmsWorld = ((CraftWorld) location.getWorld()).getHandle(); + EntityItemHolder item = new EntityItemHolder(nmsWorld, line); + item.setPosition(location.getX(), location.getY() + line.getHeight(), location.getZ()); + item.setItem(itemstack); + if (!addEntityToWorld(nmsWorld, item)) { + plugin.getLogger().log(Level.WARNING, "Failed to spawn item entity in world " + location.getWorld().getName() + + " at x:" + location.getX() + " y:" + location.getY() + " z:" + location.getZ()); + } + EntityNameable armorStand = spawnNameable(line, location, false); + item.setMount(armorStand); + item.setLockTick(true); + armorStand.setLockTick(true); + return item; + } + + private static boolean addEntityToWorld(WorldServer nmsWorld, Entity nmsEntity) { + int x = (int) Math.floor(nmsEntity.locX() / 16.0D); + int z = (int) Math.floor(nmsEntity.locZ() / 16.0D); + + if (!nmsWorld.isChunkLoaded(x, z)) { + nmsEntity.dead = true; + return false; + } + + net.minecraft.server.v1_16_R3.Chunk chunk = nmsWorld.getChunkAt(x, z); + chunk.a(nmsEntity); + try { + registerEntityMethod.invoke(nmsWorld, nmsEntity); + } catch (IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + return false; + } + return true; + } + + @Override + public HologramEntity getHologramEntity(org.bukkit.entity.Entity bukkitEntity) { + Entity nmsEntity = ((CraftEntity) bukkitEntity).getHandle(); + return nmsEntity instanceof HologramEntity ? (HologramEntity) nmsEntity : null; + } +} diff --git a/Holograms-v1_8_R1/pom.xml b/Holograms-v1_8_R1/pom.xml index 74870a06..8290ae51 100644 --- a/Holograms-v1_8_R1/pom.xml +++ b/Holograms-v1_8_R1/pom.xml @@ -20,8 +20,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.8-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_8_R2/pom.xml b/Holograms-v1_8_R2/pom.xml index b9cdc4d5..6418832e 100644 --- a/Holograms-v1_8_R2/pom.xml +++ b/Holograms-v1_8_R2/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.8.3-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_8_R3/pom.xml b/Holograms-v1_8_R3/pom.xml index 934d978d..43076255 100644 --- a/Holograms-v1_8_R3/pom.xml +++ b/Holograms-v1_8_R3/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.8.8-R0.1-SNAPSHOT provided diff --git a/Holograms-v1_9_R1/pom.xml b/Holograms-v1_9_R1/pom.xml index eba30bac..772a8d1e 100644 --- a/Holograms-v1_9_R1/pom.xml +++ b/Holograms-v1_9_R1/pom.xml @@ -21,8 +21,8 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot 1.9-R0.1-SNAPSHOT provided diff --git a/Holograms/pom.xml b/Holograms/pom.xml index 16437ba7..5f134946 100644 --- a/Holograms/pom.xml +++ b/Holograms/pom.xml @@ -152,5 +152,10 @@ holograms-v1_16_R1 ${project.version} + + com.sainttx.holograms + holograms-v1_16_R3 + ${project.version} + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1a74de88..f76209ae 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ Holograms-v1_14_R1 Holograms-v1_15_R1 Holograms-v1_16_R1 + Holograms-v1_16_R3 Holograms \ No newline at end of file