From 4daa55d27e62f3a946f774d92601ae0024732b1d Mon Sep 17 00:00:00 2001 From: LeoDog896 Date: Fri, 19 Feb 2021 18:43:35 -0500 Subject: [PATCH 01/48] Add Position playsound methods --- .../net/minestom/server/entity/Player.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 05a4625c2..e508f7d66 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -860,6 +860,48 @@ public class Player extends LivingEntity implements CommandSender { playerConnection.sendPacket(soundEffectPacket); } + /** + * Plays a sound from the {@link Sound} enum. + * + * @param sound the sound to play + * @param soundCategory the sound category + * @param position the block position to use. + * @param volume the volume of the sound (1 is 100%) + * @param pitch the pitch of the sound, between 0.5 and 2.0 + */ + public void playSound(@NotNull Sound sound, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { + SoundEffectPacket soundEffectPacket = new SoundEffectPacket(); + soundEffectPacket.soundId = sound.getId(); + soundEffectPacket.soundCategory = soundCategory; + soundEffectPacket.x = position.getX(); + soundEffectPacket.y = position.getY(); + soundEffectPacket.z = position.getZ(); + soundEffectPacket.volume = volume; + soundEffectPacket.pitch = pitch; + playerConnection.sendPacket(soundEffectPacket); + } + + /** + * Plays a sound from an identifier (represents a custom sound in a resource pack). + * + * @param identifier the identifier of the sound to play + * @param soundCategory the sound category + * @param position the block position to use. + * @param volume the volume of the sound (1 is 100%) + * @param pitch the pitch of the sound, between 0.5 and 2.0 + */ + public void playSound(@NotNull String identifier, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { + NamedSoundEffectPacket namedSoundEffectPacket = new NamedSoundEffectPacket(); + namedSoundEffectPacket.soundName = identifier; + namedSoundEffectPacket.soundCategory = soundCategory; + namedSoundEffectPacket.x = position.getX(); + namedSoundEffectPacket.y = position.getY(); + namedSoundEffectPacket.z = position.getZ(); + namedSoundEffectPacket.volume = volume; + namedSoundEffectPacket.pitch = pitch; + playerConnection.sendPacket(namedSoundEffectPacket); + } + /** * Plays a sound from an identifier (represents a custom sound in a resource pack). * From a3f388a88ba7c72d2eacbcc08be930ea736c6f2a Mon Sep 17 00:00:00 2001 From: Kieran Wallbanks Date: Mon, 22 Feb 2021 16:36:40 +0000 Subject: [PATCH 02/48] Add events for player sneaking and sprinting changes --- .../player/PlayerStartSneakingEvent.java | 15 +++++++ .../player/PlayerStartSprintingEvent.java | 15 +++++++ .../event/player/PlayerStopSneakingEvent.java | 15 +++++++ .../player/PlayerStopSprintingEvent.java | 15 +++++++ .../server/listener/EntityActionListener.java | 40 +++++++++++++++++-- 5 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java create mode 100644 src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java create mode 100644 src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java create mode 100644 src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java new file mode 100644 index 000000000..198ca1093 --- /dev/null +++ b/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java @@ -0,0 +1,15 @@ +package net.minestom.server.event.player; + +import net.minestom.server.entity.Player; +import net.minestom.server.event.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +/** + * Called when a player starts sneaking. + */ +public class PlayerStartSneakingEvent extends PlayerEvent { + + public PlayerStartSneakingEvent(@NotNull Player player) { + super(player); + } +} diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java new file mode 100644 index 000000000..e517a80e3 --- /dev/null +++ b/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java @@ -0,0 +1,15 @@ +package net.minestom.server.event.player; + +import net.minestom.server.entity.Player; +import net.minestom.server.event.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +/** + * Called when a player starts sprinting. + */ +public class PlayerStartSprintingEvent extends PlayerEvent { + + public PlayerStartSprintingEvent(@NotNull Player player) { + super(player); + } +} diff --git a/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java new file mode 100644 index 000000000..9601bd7e6 --- /dev/null +++ b/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java @@ -0,0 +1,15 @@ +package net.minestom.server.event.player; + +import net.minestom.server.entity.Player; +import net.minestom.server.event.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +/** + * Called when a player stops sneaking. + */ +public class PlayerStopSneakingEvent extends PlayerEvent { + + public PlayerStopSneakingEvent(@NotNull Player player) { + super(player); + } +} diff --git a/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java new file mode 100644 index 000000000..cd15590e8 --- /dev/null +++ b/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java @@ -0,0 +1,15 @@ +package net.minestom.server.event.player; + +import net.minestom.server.entity.Player; +import net.minestom.server.event.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +/** + * Called when a player stops sprinting. + */ +public class PlayerStopSprintingEvent extends PlayerEvent { + + public PlayerStopSprintingEvent(@NotNull Player player) { + super(player); + } +} diff --git a/src/main/java/net/minestom/server/listener/EntityActionListener.java b/src/main/java/net/minestom/server/listener/EntityActionListener.java index c43cbb91d..e99cffc75 100644 --- a/src/main/java/net/minestom/server/listener/EntityActionListener.java +++ b/src/main/java/net/minestom/server/listener/EntityActionListener.java @@ -1,6 +1,10 @@ package net.minestom.server.listener; import net.minestom.server.entity.Player; +import net.minestom.server.event.player.PlayerStartSneakingEvent; +import net.minestom.server.event.player.PlayerStartSprintingEvent; +import net.minestom.server.event.player.PlayerStopSneakingEvent; +import net.minestom.server.event.player.PlayerStopSprintingEvent; import net.minestom.server.network.packet.client.play.ClientEntityActionPacket; public class EntityActionListener { @@ -9,18 +13,46 @@ public class EntityActionListener { ClientEntityActionPacket.Action action = packet.action; switch (action) { case START_SNEAKING: - player.setSneaking(true); + EntityActionListener.setSneaking(player, true); break; case STOP_SNEAKING: - player.setSneaking(false); + EntityActionListener.setSneaking(player, false); break; case START_SPRINTING: - player.setSprinting(true); + EntityActionListener.setSprinting(player, true); break; case STOP_SPRINTING: - player.setSprinting(false); + EntityActionListener.setSprinting(player, false); break; // TODO do remaining actions } } + + private static void setSneaking(Player player, boolean sneaking) { + boolean oldState = player.isSneaking(); + + player.setSneaking(sneaking); + + if (oldState != sneaking) { + if (sneaking) { + player.callEvent(PlayerStartSneakingEvent.class, new PlayerStartSneakingEvent(player)); + } else { + player.callEvent(PlayerStopSneakingEvent.class, new PlayerStopSneakingEvent(player)); + } + } + } + + private static void setSprinting(Player player, boolean sprinting) { + boolean oldState = player.isSprinting(); + + player.setSprinting(sprinting); + + if (oldState != sprinting) { + if (sprinting) { + player.callEvent(PlayerStartSprintingEvent.class, new PlayerStartSprintingEvent(player)); + } else { + player.callEvent(PlayerStopSprintingEvent.class, new PlayerStopSprintingEvent(player)); + } + } + } } From d2c5d87582e8f2a79123b7aad40ced5f93dc84ea Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 06:02:52 +0300 Subject: [PATCH 03/48] EntityType improvements --- .../minestom/server/entity/EntityType.java | 191 +++++++++++------- .../server/utils/LambdaMetafactoryUtils.java | 43 ++++ 2 files changed, 161 insertions(+), 73 deletions(-) create mode 100644 src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index a92bbdd83..cc229e0ed 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -1,7 +1,23 @@ package net.minestom.server.entity; +import net.minestom.server.entity.type.ambient.EntityBat; +import net.minestom.server.entity.type.animal.*; +import net.minestom.server.entity.type.decoration.EntityArmorStand; +import net.minestom.server.entity.type.monster.*; +import net.minestom.server.entity.type.other.EntityAreaEffectCloud; +import net.minestom.server.entity.type.other.EntityIronGolem; +import net.minestom.server.entity.type.other.EntitySnowman; +import net.minestom.server.entity.type.projectile.EntityArrow; +import net.minestom.server.entity.type.projectile.EntityPotion; +import net.minestom.server.entity.type.projectile.EntitySpectralArrow; +import net.minestom.server.entity.type.vehicle.EntityBoat; import net.minestom.server.registry.Registries; +import net.minestom.server.utils.LambdaMetafactoryUtils; import net.minestom.server.utils.NamespaceID; +import net.minestom.server.utils.Position; +import net.minestom.server.utils.validate.Check; + +import java.util.function.Function; /** * //============================== @@ -10,51 +26,51 @@ import net.minestom.server.utils.NamespaceID; */ @SuppressWarnings({"deprecation"}) public enum EntityType { - AREA_EFFECT_CLOUD("minecraft:area_effect_cloud"), + AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", EntityAreaEffectCloud.class), - ARMOR_STAND("minecraft:armor_stand"), + ARMOR_STAND("minecraft:armor_stand", EntityArmorStand.class), ARROW("minecraft:arrow"), - BAT("minecraft:bat"), + BAT("minecraft:bat", EntityBat.class), - BEE("minecraft:bee"), + BEE("minecraft:bee", EntityBee.class), - BLAZE("minecraft:blaze"), + BLAZE("minecraft:blaze", EntityBlaze.class), - BOAT("minecraft:boat"), + BOAT("minecraft:boat", EntityBoat.class), - CAT("minecraft:cat"), + CAT("minecraft:cat", EntityCat.class), - CAVE_SPIDER("minecraft:cave_spider"), + CAVE_SPIDER("minecraft:cave_spider", EntityCaveSpider.class), - CHICKEN("minecraft:chicken"), + CHICKEN("minecraft:chicken", EntityChicken.class), COD("minecraft:cod"), - COW("minecraft:cow"), + COW("minecraft:cow", EntityCow.class), - CREEPER("minecraft:creeper"), + CREEPER("minecraft:creeper", EntityCreeper.class), - DOLPHIN("minecraft:dolphin"), + DOLPHIN("minecraft:dolphin", EntityDolphin.class), - DONKEY("minecraft:donkey"), + DONKEY("minecraft:donkey", EntityDonkey.class), DRAGON_FIREBALL("minecraft:dragon_fireball"), - DROWNED("minecraft:drowned"), + DROWNED("minecraft:drowned", EntityDrowned.class), - ELDER_GUARDIAN("minecraft:elder_guardian"), + ELDER_GUARDIAN("minecraft:elder_guardian", EntityElderGuardian.class), END_CRYSTAL("minecraft:end_crystal"), ENDER_DRAGON("minecraft:ender_dragon"), - ENDERMAN("minecraft:enderman"), + ENDERMAN("minecraft:enderman", EntityEnderman.class), - ENDERMITE("minecraft:endermite"), + ENDERMITE("minecraft:endermite", EntityEndermite.class), - EVOKER("minecraft:evoker"), + EVOKER("minecraft:evoker", EntityEvoker.class), EVOKER_FANGS("minecraft:evoker_fangs"), @@ -66,23 +82,23 @@ public enum EntityType { FIREWORK_ROCKET("minecraft:firework_rocket"), - FOX("minecraft:fox"), + FOX("minecraft:fox", EntityFox.class), - GHAST("minecraft:ghast"), + GHAST("minecraft:ghast", EntityGhast.class), - GIANT("minecraft:giant"), + GIANT("minecraft:giant", EntityGiant.class), - GUARDIAN("minecraft:guardian"), + GUARDIAN("minecraft:guardian", EntityGuardian.class), - HOGLIN("minecraft:hoglin"), + HOGLIN("minecraft:hoglin", EntityHoglin.class), - HORSE("minecraft:horse"), + HORSE("minecraft:horse", EntityHorse.class), - HUSK("minecraft:husk"), + HUSK("minecraft:husk", EntityHusk.class), - ILLUSIONER("minecraft:illusioner"), + ILLUSIONER("minecraft:illusioner", EntityIllusioner.class), - IRON_GOLEM("minecraft:iron_golem"), + IRON_GOLEM("minecraft:iron_golem", EntityIronGolem.class), ITEM("minecraft:item"), @@ -94,11 +110,11 @@ public enum EntityType { LIGHTNING_BOLT("minecraft:lightning_bolt"), - LLAMA("minecraft:llama"), + LLAMA("minecraft:llama", EntityLlama.class), LLAMA_SPIT("minecraft:llama_spit"), - MAGMA_CUBE("minecraft:magma_cube"), + MAGMA_CUBE("minecraft:magma_cube", EntityMagmaCube.class), MINECART("minecraft:minecart"), @@ -114,69 +130,69 @@ public enum EntityType { TNT_MINECART("minecraft:tnt_minecart"), - MULE("minecraft:mule"), + MULE("minecraft:mule", EntityMule.class), - MOOSHROOM("minecraft:mooshroom"), + MOOSHROOM("minecraft:mooshroom", EntityMooshroom.class), - OCELOT("minecraft:ocelot"), + OCELOT("minecraft:ocelot", EntityOcelot.class), PAINTING("minecraft:painting"), - PANDA("minecraft:panda"), + PANDA("minecraft:panda", EntityPanda.class), - PARROT("minecraft:parrot"), + PARROT("minecraft:parrot", EntityParrot.class), - PHANTOM("minecraft:phantom"), + PHANTOM("minecraft:phantom", EntityPhantom.class), - PIG("minecraft:pig"), + PIG("minecraft:pig", EntityPig.class), - PIGLIN("minecraft:piglin"), + PIGLIN("minecraft:piglin", EntityPiglin.class), - PIGLIN_BRUTE("minecraft:piglin_brute"), + PIGLIN_BRUTE("minecraft:piglin_brute", EntityPiglinBrute.class), - PILLAGER("minecraft:pillager"), + PILLAGER("minecraft:pillager", EntityPillager.class), - POLAR_BEAR("minecraft:polar_bear"), + POLAR_BEAR("minecraft:polar_bear", EntityPolarBear.class), TNT("minecraft:tnt"), - PUFFERFISH("minecraft:pufferfish"), + PUFFERFISH("minecraft:pufferfish", EntityPufferFish.class), - RABBIT("minecraft:rabbit"), + RABBIT("minecraft:rabbit", EntityRabbit.class), - RAVAGER("minecraft:ravager"), + RAVAGER("minecraft:ravager", EntityRavager.class), - SALMON("minecraft:salmon"), + SALMON("minecraft:salmon", EntitySalmon.class), - SHEEP("minecraft:sheep"), + SHEEP("minecraft:sheep", EntitySheep.class), - SHULKER("minecraft:shulker"), + SHULKER("minecraft:shulker", EntityShulker.class), SHULKER_BULLET("minecraft:shulker_bullet"), - SILVERFISH("minecraft:silverfish"), + SILVERFISH("minecraft:silverfish", EntitySilverfish.class), - SKELETON("minecraft:skeleton"), + SKELETON("minecraft:skeleton", EntitySkeleton.class), - SKELETON_HORSE("minecraft:skeleton_horse"), + SKELETON_HORSE("minecraft:skeleton_horse", EntitySkeletonHorse.class), - SLIME("minecraft:slime"), + SLIME("minecraft:slime", EntitySlime.class), SMALL_FIREBALL("minecraft:small_fireball"), - SNOW_GOLEM("minecraft:snow_golem"), + SNOW_GOLEM("minecraft:snow_golem", EntitySnowman.class), SNOWBALL("minecraft:snowball"), - SPECTRAL_ARROW("minecraft:spectral_arrow"), + SPECTRAL_ARROW("minecraft:spectral_arrow", EntitySpectralArrow.class), - SPIDER("minecraft:spider"), + SPIDER("minecraft:spider", EntitySpider.class), - SQUID("minecraft:squid"), + SQUID("minecraft:squid", EntitySquid.class), - STRAY("minecraft:stray"), + STRAY("minecraft:stray", EntityStray.class), - STRIDER("minecraft:strider"), + STRIDER("minecraft:strider", EntityStrider.class), EGG("minecraft:egg"), @@ -184,53 +200,68 @@ public enum EntityType { EXPERIENCE_BOTTLE("minecraft:experience_bottle"), - POTION("minecraft:potion"), + POTION("minecraft:potion", EntityPotion.class), TRIDENT("minecraft:trident"), - TRADER_LLAMA("minecraft:trader_llama"), + TRADER_LLAMA("minecraft:trader_llama", EntityRaderLlama.class), - TROPICAL_FISH("minecraft:tropical_fish"), + TROPICAL_FISH("minecraft:tropical_fish", EntityTropicalFish.class), TURTLE("minecraft:turtle"), - VEX("minecraft:vex"), + VEX("minecraft:vex", EntityVex.class), - VILLAGER("minecraft:villager"), + VILLAGER("minecraft:villager", EntityVillager.class), - VINDICATOR("minecraft:vindicator"), + VINDICATOR("minecraft:vindicator", EntityVindicator.class), - WANDERING_TRADER("minecraft:wandering_trader"), + WANDERING_TRADER("minecraft:wandering_trader", EntityWanderingTrader.class), - WITCH("minecraft:witch"), + WITCH("minecraft:witch", EntityWitch.class), WITHER("minecraft:wither"), - WITHER_SKELETON("minecraft:wither_skeleton"), + WITHER_SKELETON("minecraft:wither_skeleton", EntityWitherSkeleton.class), WITHER_SKULL("minecraft:wither_skull"), - WOLF("minecraft:wolf"), + WOLF("minecraft:wolf", EntityWolf.class), - ZOGLIN("minecraft:zoglin"), + ZOGLIN("minecraft:zoglin", EntityZoglin.class), - ZOMBIE("minecraft:zombie"), + ZOMBIE("minecraft:zombie", EntityZombie.class), - ZOMBIE_HORSE("minecraft:zombie_horse"), + ZOMBIE_HORSE("minecraft:zombie_horse", EntityZombieHorse.class), - ZOMBIE_VILLAGER("minecraft:zombie_villager"), + ZOMBIE_VILLAGER("minecraft:zombie_villager", EntityZombieVillager.class), - ZOMBIFIED_PIGLIN("minecraft:zombified_piglin"), + ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", EntityZombifiedPiglin.class), PLAYER("minecraft:player"), FISHING_BOBBER("minecraft:fishing_bobber"); - private String namespaceID; + private final String namespaceID; + private Class defaultEntityClass; + private Function defaultGenerator; - EntityType(String namespaceID) { + EntityType(String namespaceID, Class defaultEntityClass) { this.namespaceID = namespaceID; Registries.entityTypes.put(NamespaceID.from(namespaceID), this); + + this.defaultEntityClass = defaultEntityClass; + if (defaultEntityClass != null) { + try { + this.defaultGenerator = LambdaMetafactoryUtils.getSingleArgumentConstructor(defaultEntityClass, Position.class); + } catch (Throwable t) { + // no position constructor + } + } + } + + EntityType(String namespaceID) { + this(namespaceID, null); } public int getId() { @@ -241,6 +272,20 @@ public enum EntityType { return namespaceID; } + public void setDefaultEntityClass(Class defaultEntityClass) { + this.defaultEntityClass = defaultEntityClass; + } + + public Class getDefaultEntityClass() { + Check.notNull(this.defaultEntityClass, "Default class for " + name() + " is not yet present"); + return this.defaultEntityClass; + } + + public Entity createFromPosition(Position position) { + Check.notNull(this.defaultGenerator, "Default generator for " + name() + " is not yet supported"); + return this.defaultGenerator.apply(position); + } + public static EntityType fromId(int id) { if (id >= 0 && id < values().length) { return values()[id]; diff --git a/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java b/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java new file mode 100644 index 000000000..93e6672a0 --- /dev/null +++ b/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java @@ -0,0 +1,43 @@ +package net.minestom.server.utils; + +import java.lang.invoke.LambdaMetafactory; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import java.util.function.Function; +import java.util.function.Supplier; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +@SuppressWarnings("unchecked") +public class LambdaMetafactoryUtils { + + private final static MethodHandles.Lookup LOOKUP = MethodHandles.lookup(); + + public static Supplier getEmptyConstructor(Class targetClass) + throws Throwable { + MethodHandle handle = LOOKUP.findConstructor(targetClass, MethodType.methodType(void.class)); + return (Supplier) LambdaMetafactory.metafactory( + LOOKUP, + "get", + MethodType.methodType(Supplier.class), + handle.type().generic(), + handle, + handle.type() + ).getTarget().invokeExact(); + } + + public static Function getSingleArgumentConstructor(Class targetClass, Class argumentClass) throws Throwable { + MethodHandle handle = LOOKUP.findConstructor(targetClass, MethodType.methodType(void.class, argumentClass)); + return (Function) LambdaMetafactory.metafactory( + LOOKUP, + "apply", + MethodType.methodType(Function.class), + handle.type().generic(), + handle, + handle.type() + ).getTarget().invokeExact(); + } + +} From 7a7c63afc250844d026c978e1a4a02f63c89dd9e Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 06:38:54 +0300 Subject: [PATCH 04/48] Horses --- .../type/animal/EntityAbstractHorse.java | 112 ++++++++++++++++++ .../type/animal/EntityChestedHorse.java | 31 +++++ .../entity/type/animal/EntityDonkey.java | 24 ++++ .../entity/type/animal/EntityHorse.java | 96 +++++++++++++++ .../entity/type/animal/EntityLlama.java | 55 ++++++++- .../server/entity/type/animal/EntityMule.java | 24 ++++ .../type/animal/EntitySkeletonHorse.java | 24 ++++ .../entity/type/animal/EntityZombieHorse.java | 23 ++++ 8 files changed, 384 insertions(+), 5 deletions(-) create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityMule.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java new file mode 100644 index 000000000..cbc7389c0 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java @@ -0,0 +1,112 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.Animal; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityAbstractHorse extends EntityCreature implements Animal { + + private final static byte TAMED_BIT = 0x02; + private final static byte SADDLED_BIT = 0x04; + private final static byte HAS_BRED_BIT = 0x08; + private final static byte EATING_BIT = 0x10; + private final static byte REARING_BIT = 0x20; + private final static byte MOUTH_OPEN_BIT = 0x40; + + EntityAbstractHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntityAbstractHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public boolean isTamed() { + return (getMask() & TAMED_BIT) != 0; + } + + public void setTamed(boolean value) { + modifyMask(TAMED_BIT, value); + } + + public boolean isSaddled() { + return (getMask() & SADDLED_BIT) != 0; + } + + public void setSaddled(boolean value) { + modifyMask(SADDLED_BIT, value); + } + + public boolean isHasBred() { + return (getMask() & HAS_BRED_BIT) != 0; + } + + public void setHasBred(boolean value) { + modifyMask(HAS_BRED_BIT, value); + } + + public boolean isEating() { + return (getMask() & EATING_BIT) != 0; + } + + public void setEating(boolean value) { + modifyMask(EATING_BIT, value); + } + + public boolean isRearing() { + return (getMask() & REARING_BIT) != 0; + } + + public void setRearing(boolean value) { + modifyMask(REARING_BIT, value); + } + + public boolean isMouthOpen() { + return (getMask() & MOUTH_OPEN_BIT) != 0; + } + + public void setMouthOpen(boolean value) { + modifyMask(MOUTH_OPEN_BIT, value); + } + + public UUID getOwner() { + return this.metadata.getIndex((byte) 17, null); + } + + public void setOwner(UUID value) { + this.metadata.setIndex((byte) 17, Metadata.OptUUID(value)); + } + + private byte getMask() { + return this.metadata.getIndex((byte) 16, (byte) 0); + } + + private void setMask(byte mask) { + this.metadata.setIndex((byte) 16, Metadata.Byte(mask)); + } + + private void modifyMask(byte bit, boolean value) { + byte mask = getMask(); + boolean isPresent = (mask & bit) == bit; + if (isPresent == value) { + return; + } + if (value) { + mask |= bit; + } else { + mask &= ~bit; + } + setMask(mask); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java new file mode 100644 index 000000000..ca2fe79e9 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java @@ -0,0 +1,31 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityChestedHorse extends EntityAbstractHorse { + + EntityChestedHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntityChestedHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public boolean hasChest() { + return this.metadata.getIndex((byte) 18, false); + } + + public void setChest(boolean value) { + this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java b/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java new file mode 100644 index 000000000..002782ba9 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityDonkey extends EntityChestedHorse { + + public EntityDonkey(@NotNull Position spawnPosition) { + super(EntityType.DONKEY, spawnPosition); + setBoundingBox(1.3965D, 1.5D, 1.3965D); + } + + public EntityDonkey(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.DONKEY, spawnPosition, instance); + setBoundingBox(1.3965D, 1.5D, 1.3965D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java new file mode 100644 index 000000000..212747017 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java @@ -0,0 +1,96 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityHorse extends EntityAbstractHorse { + + public EntityHorse(@NotNull Position spawnPosition) { + super(EntityType.HORSE, spawnPosition); + setBoundingBox(1.3965D, 1.6D, 1.3965D); + } + + public EntityHorse(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.HORSE, spawnPosition, instance); + setBoundingBox(1.3965D, 1.6D, 1.3965D); + } + + public Variant getVariant() { + return getVariantFromID(this.metadata.getIndex((byte) 18, 0)); + } + + public void setVariant(Variant variant) { + this.metadata.setIndex((byte) 18, Metadata.VarInt(getVariantID(variant.marking, variant.color))); + } + + public static int getVariantID(@NotNull Marking marking, @NotNull Color color) { + return (marking.ordinal() << 8) + color.ordinal(); + } + + public static Variant getVariantFromID(int variantID) { + return new Variant( + Marking.VALUES[variantID >> 8], + Color.VALUES[variantID & 0xFF] + ); + } + + public static class Variant { + + private Marking marking; + private Color color; + + public Variant(@NotNull Marking marking, @NotNull Color color) { + this.marking = marking; + this.color = color; + } + + @NotNull + public Marking getMarking() { + return this.marking; + } + + public void setMarking(@NotNull Marking marking) { + this.marking = marking; + } + + @NotNull + public Color getColor() { + return this.color; + } + + public void setColor(@NotNull Color color) { + this.color = color; + } + + } + + public enum Marking { + NONE, + WHITE, + WHITE_FIELD, + WHITE_DOTS, + BLACK_DOTS; + + private final static Marking[] VALUES = values(); + } + + public enum Color { + WHITE, + CREAMY, + CHESTNUT, + BROWN, + BLACK, + GRAY, + DARK_BROWN; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java b/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java index 9f3891d5d..552dc016b 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java @@ -1,13 +1,58 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.type.Animal; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class EntityLlama extends EntityCreature implements Animal { - public EntityLlama(Position spawnPosition) { +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityLlama extends EntityChestedHorse { + + public EntityLlama(@NotNull Position spawnPosition) { super(EntityType.LLAMA, spawnPosition); - setBoundingBox(0.45f, 0.9375f, 0.45f); + setBoundingBox(.9D, 1.87D, .9D); } + + public EntityLlama(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.LLAMA, spawnPosition, instance); + setBoundingBox(.9D, 1.87D, .9D); + } + + public int getStrength() { + return this.metadata.getIndex((byte) 19, 0); + } + + public void setStrength(int value) { + this.metadata.setIndex((byte) 19, Metadata.VarInt(value)); + } + + public int getCarpetColor() { + return this.metadata.getIndex((byte) 20, -1); + } + + public void setCarpetColor(int value) { + this.metadata.setIndex((byte) 20, Metadata.VarInt(value)); + } + + public Variant getVariant() { + return Variant.VALUES[this.metadata.getIndex((byte) 21, 0)]; + } + + public void setVariant(Variant value) { + this.metadata.setIndex((byte) 21, Metadata.VarInt(value.ordinal())); + } + + public enum Variant { + CREAMY, + WHITE, + BROWN, + GRAY; + + private final static Variant[] VALUES = values(); + } + } diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java b/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java new file mode 100644 index 000000000..5ec5257f6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityMule extends EntityChestedHorse { + + public EntityMule(@NotNull Position spawnPosition) { + super(EntityType.MULE, spawnPosition); + setBoundingBox(1.3965D, 1.6D, 1.3965D); + } + + public EntityMule(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.MULE, spawnPosition, instance); + setBoundingBox(1.3965D, 1.6D, 1.3965D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java new file mode 100644 index 000000000..7614c8f76 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntitySkeletonHorse extends EntityAbstractHorse { + + public EntitySkeletonHorse(@NotNull Position spawnPosition) { + super(EntityType.SKELETON_HORSE, spawnPosition); + setBoundingBox(1.3965D, 1.6D, 1.3965D); + } + + public EntitySkeletonHorse(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.SKELETON_HORSE, spawnPosition, instance); + setBoundingBox(1.3965D, 1.6D, 1.3965D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java new file mode 100644 index 000000000..6b413c8fa --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java @@ -0,0 +1,23 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityZombieHorse extends EntityAbstractHorse { + + public EntityZombieHorse(@NotNull Position spawnPosition) { + super(EntityType.ZOMBIE_HORSE, spawnPosition); + } + + public EntityZombieHorse(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.ZOMBIE_HORSE, spawnPosition, instance); + } + +} From 2a55ed654daa3fc2b7459924977058d69581a4ec Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 06:45:04 +0300 Subject: [PATCH 05/48] Zombies --- .../entity/type/monster/EntityDrowned.java | 16 +++++++ .../entity/type/monster/EntityHusk.java | 16 +++++++ .../entity/type/monster/EntityZombie.java | 9 +++- .../type/monster/EntityZombieVillager.java | 33 +++++++++++++++ .../type/monster/EntityZombifiedPiglin.java | 42 +++---------------- 5 files changed, 78 insertions(+), 38 deletions(-) create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java b/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java new file mode 100644 index 000000000..78369c80e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java @@ -0,0 +1,16 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityDrowned extends EntityZombie { + + public EntityDrowned(@NotNull Position spawnPosition) { + super(EntityType.DROWNED, spawnPosition); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java b/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java new file mode 100644 index 000000000..e91fa9af3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java @@ -0,0 +1,16 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityHusk extends EntityZombie { + + public EntityHusk(@NotNull Position spawnPosition) { + super(EntityType.HUSK, spawnPosition); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java index a45ac5265..142d41644 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java @@ -5,11 +5,16 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; public class EntityZombie extends EntityCreature implements Monster { - public EntityZombie(Position spawnPosition) { - super(EntityType.ZOMBIE, spawnPosition); + public EntityZombie(@NotNull Position spawnPosition) { + this(EntityType.ZOMBIE, spawnPosition); + } + + EntityZombie(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); setBoundingBox(0.6f, 1.95f, 0.6f); } diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java new file mode 100644 index 000000000..d11f4fbca --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java @@ -0,0 +1,33 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityZombieVillager extends EntityZombie { + + public EntityZombieVillager(@NotNull Position spawnPosition) { + super(EntityType.ZOMBIE_VILLAGER, spawnPosition); + } + + public boolean isConverting() { + return this.metadata.getIndex((byte) 18, false); + } + + public void setConverting(boolean value) { + this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); + } + + public int[] getVillagerData() { + return this.metadata.getIndex((byte) 19, new int[]{}); + } + + public void setVillagerData(int[] value) { + this.metadata.setIndex((byte) 19, Metadata.VillagerData(value[0], value[1], value[2])); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java index bf279fe22..4c8f1cb56 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java @@ -1,46 +1,16 @@ package net.minestom.server.entity.type.monster; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; -public class EntityZombifiedPiglin extends EntityCreature implements Monster { +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityZombifiedPiglin extends EntityZombie { - public EntityZombifiedPiglin(Position spawnPosition) { + public EntityZombifiedPiglin(@NotNull Position spawnPosition) { super(EntityType.ZOMBIFIED_PIGLIN, spawnPosition); - setBoundingBox(0.6f, 1.95f, 0.6f); } - /** - * Gets if the pig zombie is a baby. - * - * @return true if it is a baby, false otherwise - */ - public boolean isBaby() { - return metadata.getIndex((byte) 15, false); - } - - /** - * Sets the pig zombie a baby or adult. - * - * @param baby true to make it a baby, false otherwise - */ - public void setBaby(boolean baby) { - this.metadata.setIndex((byte) 15, Metadata.Boolean(baby)); - } - - public boolean isBecomingDrowned() { - return metadata.getIndex((byte) 17, false); - } - - public void setBecomingDrowned(boolean becomingDrowned) { - this.metadata.setIndex((byte) 17, Metadata.Boolean(becomingDrowned)); - } - - @Override - public double getEyeHeight() { - return isBaby() ? 0.93 : 1.74; - } } From ca3d36ac0c590ce7250e42fc2aed2c1557a3d867 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 07:11:54 +0300 Subject: [PATCH 06/48] Villagers and Ageable --- .../minestom/server/entity/EntityType.java | 2 + .../minestom/server/entity/type/Ageable.java | 12 ++ .../server/entity/type/AgeableCreature.java | 38 +++++ .../minestom/server/entity/type/Animal.java | 2 +- .../type/ambient/EntityAbstractVillager.java | 32 +++++ .../server/entity/type/ambient/EntityBat.java | 4 +- .../entity/type/ambient/EntityVillager.java | 131 ++++++++++++++++++ .../type/ambient/EntityWanderingTrader.java | 22 +++ .../type/animal/EntityAbstractHorse.java | 4 +- .../server/entity/type/animal/EntityBee.java | 6 +- .../entity/type/animal/EntityChicken.java | 4 +- .../server/entity/type/animal/EntityCow.java | 4 +- .../entity/type/animal/EntityDolphin.java | 6 +- .../server/entity/type/animal/EntityFox.java | 4 +- .../entity/type/animal/EntityMooshroom.java | 4 +- .../entity/type/animal/EntityOcelot.java | 4 +- .../entity/type/animal/EntityPanda.java | 4 +- .../server/entity/type/animal/EntityPig.java | 4 +- .../entity/type/animal/EntityPolarBear.java | 4 +- .../entity/type/animal/EntityRabbit.java | 4 +- .../type/monster/EntityZombieVillager.java | 17 ++- 21 files changed, 279 insertions(+), 33 deletions(-) create mode 100644 src/main/java/net/minestom/server/entity/type/Ageable.java create mode 100644 src/main/java/net/minestom/server/entity/type/AgeableCreature.java create mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java create mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java create mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index cc229e0ed..868816d6a 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -1,6 +1,8 @@ package net.minestom.server.entity; import net.minestom.server.entity.type.ambient.EntityBat; +import net.minestom.server.entity.type.ambient.EntityVillager; +import net.minestom.server.entity.type.ambient.EntityWanderingTrader; import net.minestom.server.entity.type.animal.*; import net.minestom.server.entity.type.decoration.EntityArmorStand; import net.minestom.server.entity.type.monster.*; diff --git a/src/main/java/net/minestom/server/entity/type/Ageable.java b/src/main/java/net/minestom/server/entity/type/Ageable.java new file mode 100644 index 000000000..4f5c2ca17 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/Ageable.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.type; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public interface Ageable { + + boolean isBaby(); + + void setBaby(boolean value); + +} diff --git a/src/main/java/net/minestom/server/entity/type/AgeableCreature.java b/src/main/java/net/minestom/server/entity/type/AgeableCreature.java new file mode 100644 index 000000000..f1f719832 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/AgeableCreature.java @@ -0,0 +1,38 @@ +package net.minestom.server.entity.type; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class AgeableCreature extends EntityCreature implements Ageable { + + protected AgeableCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + protected AgeableCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + @Override + public boolean isBaby() { + return this.metadata.getIndex((byte) 15, false); + } + + @Override + public void setBaby(boolean value) { + this.metadata.setIndex((byte) 15, Metadata.Boolean(value)); + } + + @Override + public double getEyeHeight() { + return isBaby() ? super.getEyeHeight() / 2 : super.getEyeHeight(); + } +} diff --git a/src/main/java/net/minestom/server/entity/type/Animal.java b/src/main/java/net/minestom/server/entity/type/Animal.java index 994abd637..db2df4236 100644 --- a/src/main/java/net/minestom/server/entity/type/Animal.java +++ b/src/main/java/net/minestom/server/entity/type/Animal.java @@ -1,4 +1,4 @@ package net.minestom.server.entity.type; -public interface Animal { +public interface Animal extends Ageable { } diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java new file mode 100644 index 000000000..87347b68e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java @@ -0,0 +1,32 @@ +package net.minestom.server.entity.type.ambient; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityAbstractVillager extends AgeableCreature { + + EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public int getHeadShakeTimer() { + return this.metadata.getIndex((byte) 16, 0); + } + + public void setHeadShakeTimer(int value) { + this.metadata.setIndex((byte) 16, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java index e039cb0bf..31e12e671 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java @@ -1,12 +1,12 @@ package net.minestom.server.entity.type.ambient; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityBat extends EntityCreature implements Animal { +public class EntityBat extends AgeableCreature implements Animal { public EntityBat(Position spawnPosition) { super(EntityType.BAT, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java new file mode 100644 index 000000000..e0374475b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java @@ -0,0 +1,131 @@ +package net.minestom.server.entity.type.ambient; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityVillager extends EntityAbstractVillager { + + public EntityVillager(@NotNull Position spawnPosition) { + this(EntityType.VILLAGER, spawnPosition); + } + + public EntityVillager(@NotNull Position spawnPosition, @Nullable Instance instance) { + this(EntityType.VILLAGER, spawnPosition, instance); + } + + EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public VillagerData getVillagerData() { + int[] data = this.metadata.getIndex((byte) 17, null); + if (data == null) { + return new VillagerData(Type.PLAINS, Profession.NONE, Level.NOVICE); + } + return new VillagerData(Type.VALUES[data[0]], Profession.VALUES[data[1]], Level.VALUES[data[2] - 1]); + } + + public void setVillagerData(VillagerData data) { + this.metadata.setIndex((byte) 17, Metadata.VillagerData( + data.type.ordinal(), + data.profession.ordinal(), + data.level.ordinal() + 1 + )); + } + + public static class VillagerData { + + private Type type; + private Profession profession; + private Level level; + + public VillagerData(@NotNull Type type, @NotNull Profession profession, @NotNull Level level) { + this.type = type; + this.profession = profession; + this.level = level; + } + + @NotNull + public Type getType() { + return this.type; + } + + public void setType(@NotNull Type type) { + this.type = type; + } + + @NotNull + public Profession getProfession() { + return this.profession; + } + + public void setProfession(@NotNull Profession profession) { + this.profession = profession; + } + + @NotNull + public Level getLevel() { + return level; + } + + public void setLevel(@NotNull Level level) { + this.level = level; + } + } + + public enum Type { + DESERT, + JUNGLE, + PLAINS, + SAVANNA, + SNOW, + SWAMP, + TAIGA; + + public final static Type[] VALUES = values(); + } + + public enum Profession { + NONE, + ARMORER, + BUTCHER, + CARTOGRAPHER, + CLERIC, + FARMER, + FISHERMAN, + FLETCHER, + LEATHERWORKER, + LIBRARIAN, + NITWIT, + UNEMPLOYED, + MASON, + SHEPHERD, + TOOLSMITH, + WEAPONSMITH; + + public final static Profession[] VALUES = values(); + } + + public enum Level { + NOVICE, + APPRENTICE, + JOURNEYMAN, + EXPERT, + MASTER; + + public final static Level[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java new file mode 100644 index 000000000..444031697 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java @@ -0,0 +1,22 @@ +package net.minestom.server.entity.type.ambient; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityWanderingTrader extends EntityAbstractVillager { + + public EntityWanderingTrader(@NotNull Position spawnPosition) { + super(EntityType.WANDERING_TRADER, spawnPosition); + } + + public EntityWanderingTrader(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.WANDERING_TRADER, spawnPosition, instance); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java index cbc7389c0..3fca2d40a 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java @@ -1,8 +1,8 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.instance.Instance; import net.minestom.server.utils.Position; @@ -14,7 +14,7 @@ import java.util.UUID; /** * Created by k.shandurenko on 23.02.2021 */ -public class EntityAbstractHorse extends EntityCreature implements Animal { +public class EntityAbstractHorse extends AgeableCreature implements Animal { private final static byte TAMED_BIT = 0x02; private final static byte SADDLED_BIT = 0x04; diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java b/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java index 6a8be079f..d1d0ea8b6 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java @@ -1,13 +1,13 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityBee extends EntityCreature implements Animal { +public class EntityBee extends AgeableCreature implements Animal { public EntityBee(Position spawnPosition) { super(EntityType.BEE, spawnPosition); - setBoundingBox(0.7f,0.6f,0.7f); + setBoundingBox(0.7f, 0.6f, 0.7f); } } diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java b/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java index 85186ff86..c9f762234 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java @@ -1,11 +1,11 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityChicken extends EntityCreature implements Animal { +public class EntityChicken extends AgeableCreature implements Animal { public EntityChicken(Position spawnPosition) { super(EntityType.CHICKEN, spawnPosition); setBoundingBox(0.4f, 0.7f, 0.4f); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java b/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java index 580f915e6..40e2e12dc 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java @@ -1,11 +1,11 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityCow extends EntityCreature implements Animal { +public class EntityCow extends AgeableCreature implements Animal { public EntityCow(Position spawnPosition) { super(EntityType.COW, spawnPosition); setBoundingBox(0.9f, 1.4f, 0.9f); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java b/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java index 419a7c5fd..97e81dd65 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java @@ -1,13 +1,13 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityDolphin extends EntityCreature implements Animal { +public class EntityDolphin extends AgeableCreature implements Animal { public EntityDolphin(Position spawnPosition) { super(EntityType.DOLPHIN, spawnPosition); - setBoundingBox(0.9f,0.6f,0.9f); + setBoundingBox(0.9f, 0.6f, 0.9f); } } diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java b/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java index 86323ef25..18b32beae 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java @@ -1,11 +1,11 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityFox extends EntityCreature implements Animal { +public class EntityFox extends AgeableCreature implements Animal { public EntityFox(Position spawnPosition) { super(EntityType.FOX, spawnPosition); setBoundingBox(0.6f, 0.7f, 0.6f); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java b/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java index 41c794b2f..b81a03532 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java @@ -1,13 +1,13 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; -public class EntityMooshroom extends EntityCreature implements Animal { +public class EntityMooshroom extends AgeableCreature implements Animal { public EntityMooshroom(Position spawnPosition) { super(EntityType.MOOSHROOM, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java b/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java index 3b69f5522..2d7a9aebb 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java @@ -1,11 +1,11 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityOcelot extends EntityCreature implements Animal { +public class EntityOcelot extends AgeableCreature implements Animal { public EntityOcelot(Position spawnPosition) { super(EntityType.OCELOT, spawnPosition); setBoundingBox(0.6f, 0.7f, 0.6f); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java index 62308a13b..0cc5e84cd 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java @@ -1,11 +1,11 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityPanda extends EntityCreature implements Animal { +public class EntityPanda extends AgeableCreature implements Animal { public EntityPanda(Position spawnPosition) { super(EntityType.PANDA, spawnPosition); setBoundingBox(1.3f, 1.25f, 1.3f); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java index 206746e1e..abbf47523 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java @@ -1,12 +1,12 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityPig extends EntityCreature implements Animal { +public class EntityPig extends AgeableCreature implements Animal { public EntityPig(Position spawnPosition) { super(EntityType.PIG, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java index 33f77b5c9..b0bb55dd0 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java @@ -1,12 +1,12 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityPolarBear extends EntityCreature implements Animal { +public class EntityPolarBear extends AgeableCreature implements Animal { public EntityPolarBear(Position spawnPosition) { super(EntityType.POLAR_BEAR, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java b/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java index d5ae7c314..a06b397da 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java @@ -1,12 +1,12 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; -public class EntityRabbit extends EntityCreature implements Animal { +public class EntityRabbit extends AgeableCreature implements Animal { public EntityRabbit(Position spawnPosition) { super(EntityType.RABBIT, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java index d11f4fbca..d6eb795a8 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java @@ -2,6 +2,7 @@ package net.minestom.server.entity.type.monster; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.ambient.EntityAbstractVillager; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; @@ -22,12 +23,20 @@ public class EntityZombieVillager extends EntityZombie { this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } - public int[] getVillagerData() { - return this.metadata.getIndex((byte) 19, new int[]{}); + public EntityAbstractVillager.VillagerData getVillagerData() { + int[] data = this.metadata.getIndex((byte) 17, null); + if (data == null) { + return new EntityAbstractVillager.VillagerData(EntityAbstractVillager.Type.PLAINS, EntityAbstractVillager.Profession.NONE, EntityAbstractVillager.Level.NOVICE); + } + return new EntityAbstractVillager.VillagerData(EntityAbstractVillager.Type.VALUES[data[0]], EntityAbstractVillager.Profession.VALUES[data[1]], EntityAbstractVillager.Level.VALUES[data[2] - 1]); } - public void setVillagerData(int[] value) { - this.metadata.setIndex((byte) 19, Metadata.VillagerData(value[0], value[1], value[2])); + public void setVillagerData(EntityAbstractVillager.VillagerData data) { + this.metadata.setIndex((byte) 17, Metadata.VillagerData( + data.getType().ordinal(), + data.getProfession().ordinal(), + data.getLevel().ordinal() + 1 + )); } } From 07be9d449b2290f54d54eed32aeee5e7b1256530 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 08:25:35 +0300 Subject: [PATCH 07/48] Much more entities --- .../minestom/server/entity/EntityType.java | 4 +- .../entity/type/TameableAnimalCreature.java | 74 +++++++++++++++++++ .../type/ambient/EntityTraderLlama.java | 25 +++++++ .../entity/type/ambient/EntityVillager.java | 2 + .../server/entity/type/animal/EntityCat.java | 67 +++++++++++++++-- .../entity/type/animal/EntityHoglin.java | 35 +++++++++ .../entity/type/animal/EntityParrot.java | 44 +++++++++++ .../entity/type/animal/EntitySheep.java | 66 +++++++++++++++++ .../entity/type/animal/EntityStrider.java | 51 +++++++++++++ .../server/entity/type/animal/EntityWolf.java | 50 +++++++++++++ .../entity/type/monster/EntityBasePiglin.java | 33 +++++++++ .../type/monster/EntityElderGuardian.java | 24 ++++++ .../entity/type/monster/EntityEnderman.java | 51 +++++++++++++ .../entity/type/monster/EntityEvoker.java | 24 ++++++ .../entity/type/monster/EntityGuardian.java | 17 ++++- .../entity/type/monster/EntityIllusioner.java | 24 ++++++ .../entity/type/monster/EntityMagmaCube.java | 16 ++++ .../entity/type/monster/EntityPiglin.java | 54 ++++++++++++++ .../type/monster/EntityPiglinBrute.java | 24 ++++++ .../entity/type/monster/EntityPillager.java | 24 ++++++ .../entity/type/monster/EntityRaider.java | 33 +++++++++ .../entity/type/monster/EntityRavager.java | 24 ++++++ .../entity/type/monster/EntitySkeleton.java | 34 +++++++++ .../entity/type/monster/EntitySlime.java | 9 ++- .../monster/EntitySpellcasterIllager.java | 42 +++++++++++ .../entity/type/monster/EntityStray.java | 24 ++++++ .../server/entity/type/monster/EntityVex.java | 59 +++++++++++++++ .../entity/type/monster/EntityVindicator.java | 24 ++++++ .../type/monster/EntityWitherSkeleton.java | 24 ++++++ .../entity/type/monster/EntityZoglin.java | 26 +++++++ .../type/monster/EntityZombieVillager.java | 9 ++- .../entity/type/other/EntityShulker.java | 59 +++++++++++++++ 32 files changed, 1063 insertions(+), 13 deletions(-) create mode 100644 src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java create mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java create mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityStray.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityVex.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java create mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java create mode 100644 src/main/java/net/minestom/server/entity/type/other/EntityShulker.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index 868816d6a..a24392848 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -1,6 +1,7 @@ package net.minestom.server.entity; import net.minestom.server.entity.type.ambient.EntityBat; +import net.minestom.server.entity.type.ambient.EntityTraderLlama; import net.minestom.server.entity.type.ambient.EntityVillager; import net.minestom.server.entity.type.ambient.EntityWanderingTrader; import net.minestom.server.entity.type.animal.*; @@ -8,6 +9,7 @@ import net.minestom.server.entity.type.decoration.EntityArmorStand; import net.minestom.server.entity.type.monster.*; import net.minestom.server.entity.type.other.EntityAreaEffectCloud; import net.minestom.server.entity.type.other.EntityIronGolem; +import net.minestom.server.entity.type.other.EntityShulker; import net.minestom.server.entity.type.other.EntitySnowman; import net.minestom.server.entity.type.projectile.EntityArrow; import net.minestom.server.entity.type.projectile.EntityPotion; @@ -206,7 +208,7 @@ public enum EntityType { TRIDENT("minecraft:trident"), - TRADER_LLAMA("minecraft:trader_llama", EntityRaderLlama.class), + TRADER_LLAMA("minecraft:trader_llama", EntityTraderLlama.class), TROPICAL_FISH("minecraft:tropical_fish", EntityTropicalFish.class), diff --git a/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java b/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java new file mode 100644 index 000000000..dc400d050 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java @@ -0,0 +1,74 @@ +package net.minestom.server.entity.type; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class TameableAnimalCreature extends AgeableCreature implements TameableAnimal { + + private final static byte SITTING_BIT = 0x1; + private final static byte TAMED_BIT = 0x4; + + protected TameableAnimalCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + protected TameableAnimalCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public boolean isSitting() { + return (getMask() & SITTING_BIT) != 0; + } + + public void setSitting(boolean value) { + modifyMask(SITTING_BIT, value); + } + + public boolean isTamed() { + return (getMask() & TAMED_BIT) != 0; + } + + public void setTamed(boolean value) { + modifyMask(TAMED_BIT, value); + } + + public UUID getOwner() { + return this.metadata.getIndex((byte) 17, null); + } + + public void setOwner(UUID value) { + this.metadata.setIndex((byte) 17, Metadata.OptUUID(value)); + } + + private byte getMask() { + return this.metadata.getIndex((byte) 16, (byte) 0); + } + + private void setMask(byte mask) { + this.metadata.setIndex((byte) 16, Metadata.Byte(mask)); + } + + private void modifyMask(byte bit, boolean value) { + byte mask = getMask(); + boolean isPresent = (mask & bit) == bit; + if (isPresent == value) { + return; + } + if (value) { + mask |= bit; + } else { + mask &= ~bit; + } + setMask(mask); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java new file mode 100644 index 000000000..58d94de14 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java @@ -0,0 +1,25 @@ +package net.minestom.server.entity.type.ambient; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityTraderLlama extends EntityCreature { + + public EntityTraderLlama(@NotNull Position spawnPosition) { + super(EntityType.TRADER_LLAMA, spawnPosition); + setBoundingBox(.9D, 1.87D, .9D); + } + + public EntityTraderLlama(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.TRADER_LLAMA, spawnPosition, instance); + setBoundingBox(.9D, 1.87D, .9D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java index e0374475b..ed644edcd 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java @@ -23,10 +23,12 @@ public class EntityVillager extends EntityAbstractVillager { EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { super(entityType, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); } EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { super(entityType, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); } public VillagerData getVillagerData() { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java b/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java index 4fd48e24e..c49b94e9f 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java @@ -1,13 +1,70 @@ package net.minestom.server.entity.type.animal; -import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.type.TameableAnimal; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.TameableAnimalCreature; +import net.minestom.server.instance.Instance; import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class EntityCat extends EntityCreature implements TameableAnimal { - public EntityCat(Position spawnPosition) { +public class EntityCat extends TameableAnimalCreature { + + public EntityCat(@NotNull Position spawnPosition) { super(EntityType.CAT, spawnPosition); - setBoundingBox(0.6f, 0.7f, 0.6f); + setBoundingBox(.6D, .7D, .6D); + } + + public EntityCat(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.CAT, spawnPosition, instance); + setBoundingBox(.6D, .7D, .6D); + } + + public Color getColor() { + return Color.VALUES[this.metadata.getIndex((byte) 18, 1)]; + } + + public void setColor(Color value) { + this.metadata.setIndex((byte) 18, Metadata.VarInt(value.ordinal())); + } + + public boolean isLying() { + return this.metadata.getIndex((byte) 19, false); + } + + public void setLying(boolean value) { + this.metadata.setIndex((byte) 19, Metadata.Boolean(value)); + } + + public boolean isRelaxed() { + return this.metadata.getIndex((byte) 20, false); + } + + public void setRelaxed(boolean value) { + this.metadata.setIndex((byte) 20, Metadata.Boolean(value)); + } + + public int getCollarColor() { + return this.metadata.getIndex((byte) 21, 14); + } + + public void setCollarColor(int value) { + this.metadata.setIndex((byte) 21, Metadata.VarInt(value)); + } + + public enum Color { + TABBY, + BLACK, + RED, + SIAMESE, + BRITISH_SHORTHAIR, + CALICO, + PERSIAN, + RAGDOLL, + WHITE, + JELLIE, + ALL_BLACK; + + private final static Color[] VALUES = values(); } } diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java b/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java new file mode 100644 index 000000000..1d175d7d6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java @@ -0,0 +1,35 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; +import net.minestom.server.entity.type.Animal; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityHoglin extends AgeableCreature implements Animal { + + public EntityHoglin(@NotNull Position spawnPosition) { + super(EntityType.HOGLIN, spawnPosition); + setBoundingBox(1.3965D, 1.4D, 1.3965D); + } + + public EntityHoglin(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.HOGLIN, spawnPosition, instance); + setBoundingBox(1.3965D, 1.4D, 1.3965D); + } + + public boolean isImmuneToZombification() { + return this.metadata.getIndex((byte) 16, false); + } + + public void setImmuneToZombification(boolean value) { + this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java b/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java new file mode 100644 index 000000000..9db9a1f8f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java @@ -0,0 +1,44 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.TameableAnimalCreature; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityParrot extends TameableAnimalCreature { + + public EntityParrot(@NotNull Position spawnPosition) { + super(EntityType.PARROT, spawnPosition); + setBoundingBox(.5D, .9D, .5D); + } + + public EntityParrot(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.PARROT, spawnPosition, instance); + setBoundingBox(.5D, .9D, .5D); + } + + public Color getColor() { + return Color.VALUES[this.metadata.getIndex((byte) 18, 0)]; + } + + public void setColor(Color value) { + this.metadata.setIndex((byte) 18, Metadata.VarInt(value.ordinal())); + } + + public enum Color { + RED_BLUE, + BLUE, + GREEN, + YELLOW_BLUE, + GREY; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java b/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java new file mode 100644 index 000000000..75c6e7949 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java @@ -0,0 +1,66 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; +import net.minestom.server.entity.type.Animal; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntitySheep extends AgeableCreature implements Animal { + + public EntitySheep(@NotNull Position spawnPosition) { + super(EntityType.SHEEP, spawnPosition); + setBoundingBox(.9D, 1.3D, .9D); + } + + public EntitySheep(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.SHEEP, spawnPosition, instance); + setBoundingBox(.9D, 1.3D, .9D); + } + + public int getColor() { + return getMask() & 0x0F; + } + + public void setColor(byte color) { + byte before = getMask(); + byte mask = before; + mask &= ~0x0F; + mask |= (color & 0x0F); + if (mask != before) { + setMask(mask); + } + } + + public boolean isSheared() { + return (getMask() & 0x10) != 0; + } + + public void setSheared(boolean value) { + byte mask = getMask(); + if (((mask & 0x10) != 0) == value) { + return; + } + if (value) { + mask |= 0x10; + } else { + mask &= ~0x10; + } + setMask(mask); + } + + private byte getMask() { + return this.metadata.getIndex((byte) 16, (byte) 0); + } + + private void setMask(byte value) { + this.metadata.setIndex((byte) 16, Metadata.Byte(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java b/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java new file mode 100644 index 000000000..fad7a9fbe --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java @@ -0,0 +1,51 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.AgeableCreature; +import net.minestom.server.entity.type.Animal; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityStrider extends AgeableCreature implements Animal { + + public EntityStrider(@NotNull Position spawnPosition) { + super(EntityType.STRIDER, spawnPosition); + setBoundingBox(.9D, 1.7D, .9D); + } + + public EntityStrider(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.STRIDER, spawnPosition, instance); + setBoundingBox(.9D, 1.7D, .9D); + } + + public int getTimeToBoost() { + return this.metadata.getIndex((byte) 16, 0); + } + + public void setTimeToBoost(int value) { + this.metadata.setIndex((byte) 16, Metadata.VarInt(value)); + } + + public boolean isShaking() { + return this.metadata.getIndex((byte) 17, false); + } + + public void setShaking(boolean value) { + this.metadata.setIndex((byte) 17, Metadata.Boolean(value)); + } + + public boolean isHasSaddle() { + return this.metadata.getIndex((byte) 18, false); + } + + public void setHasSaddle(boolean value) { + this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java b/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java new file mode 100644 index 000000000..c8910d090 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java @@ -0,0 +1,50 @@ +package net.minestom.server.entity.type.animal; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.TameableAnimalCreature; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityWolf extends TameableAnimalCreature { + + public EntityWolf(@NotNull Position spawnPosition) { + super(EntityType.WOLF, spawnPosition); + setBoundingBox(.6D, .85D, .6D); + } + + public EntityWolf(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.WOLF, spawnPosition, instance); + setBoundingBox(.6D, .85D, .6D); + } + + public boolean isBegging() { + return this.metadata.getIndex((byte) 18, false); + } + + public void setBegging(boolean value) { + this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); + } + + public int getCollarColor() { + return this.metadata.getIndex((byte) 19, 14); + } + + public void setCollarColor(int value) { + this.metadata.setIndex((byte) 19, Metadata.VarInt(value)); + } + + public int getAngerTime() { + return this.metadata.getIndex((byte) 20, 0); + } + + public void setAngerTime(int value) { + this.metadata.setIndex((byte) 20, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java new file mode 100644 index 000000000..f75d595a3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java @@ -0,0 +1,33 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityBasePiglin extends EntityCreature implements Monster { + + EntityBasePiglin(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntityBasePiglin(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public boolean isImmuneToZombification() { + return this.metadata.getIndex((byte) 16, false); + } + + public void setImmuneToZombification(boolean value) { + this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java b/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java new file mode 100644 index 000000000..cf72465f5 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityElderGuardian extends EntityGuardian { + + public EntityElderGuardian(@NotNull Position spawnPosition) { + super(EntityType.ELDER_GUARDIAN, spawnPosition); + setBoundingBox(1.9975D, 1.9975D, 1.9975D); + } + + public EntityElderGuardian(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.ELDER_GUARDIAN, spawnPosition, instance); + setBoundingBox(1.9975D, 1.9975D, 1.9975D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java new file mode 100644 index 000000000..5231fcedc --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java @@ -0,0 +1,51 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityEnderman extends EntityCreature implements Monster { + + public EntityEnderman(@NotNull Position spawnPosition) { + super(EntityType.ENDERMAN, spawnPosition); + setBoundingBox(.6D, 2.9D, .6D); + } + + public EntityEnderman(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.ENDERMAN, spawnPosition, instance); + setBoundingBox(.6D, 2.9D, .6D); + } + + public Integer getCarriedBlockID() { + return this.metadata.getIndex((byte) 15, null); + } + + public void setCarriedBlockID(@Nullable Integer value) { + this.metadata.setIndex((byte) 15, Metadata.OptBlockID(value)); + } + + public boolean isScreaming() { + return this.metadata.getIndex((byte) 16, false); + } + + public void setScreaming(boolean value) { + this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); + } + + public boolean isStaring() { + return this.metadata.getIndex((byte) 17, false); + } + + public void setStaring(boolean value) { + this.metadata.setIndex((byte) 17, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java new file mode 100644 index 000000000..2154a062e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityEvoker extends EntitySpellcasterIllager { + + public EntityEvoker(@NotNull Position spawnPosition) { + super(EntityType.EVOKER, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); + } + + public EntityEvoker(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.EVOKER, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java b/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java index c3936ea50..a8b5ccd4c 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java @@ -5,18 +5,33 @@ import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class EntityGuardian extends EntityCreature implements Monster { private Entity target; - public EntityGuardian(Position spawnPosition) { + public EntityGuardian(@NotNull Position spawnPosition) { super(EntityType.GUARDIAN, spawnPosition); setBoundingBox(0.85f, 0.85f, 0.85f); } + public EntityGuardian(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.GUARDIAN, spawnPosition, instance); + setBoundingBox(0.85f, 0.85f, 0.85f); + } + + EntityGuardian(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntityGuardian(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + public boolean isRetractingSpikes() { return metadata.getIndex((byte) 15, false); } diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java b/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java new file mode 100644 index 000000000..4906686ba --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityIllusioner extends EntitySpellcasterIllager { + + public EntityIllusioner(@NotNull Position spawnPosition) { + super(EntityType.ILLUSIONER, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); + } + + public EntityIllusioner(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.ILLUSIONER, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java b/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java new file mode 100644 index 000000000..0bcafb723 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java @@ -0,0 +1,16 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityMagmaCube extends EntitySlime { + + public EntityMagmaCube(@NotNull Position spawnPosition) { + super(EntityType.MAGMA_CUBE, spawnPosition); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java new file mode 100644 index 000000000..c695c5e99 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java @@ -0,0 +1,54 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityPiglin extends EntityBasePiglin { + + public EntityPiglin(@NotNull Position spawnPosition) { + super(EntityType.PIGLIN, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); + } + + public EntityPiglin(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.PIGLIN, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); + } + + public boolean isBaby() { + return this.metadata.getIndex((byte) 16, false); + } + + public void setBaby(boolean value) { + this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); + } + + public boolean isChargingCrossbow() { + return this.metadata.getIndex((byte) 17, false); + } + + public void setChargingCrossbow(boolean value) { + this.metadata.setIndex((byte) 17, Metadata.Boolean(value)); + } + + public boolean isDancing() { + return this.metadata.getIndex((byte) 18, false); + } + + public void setDancing(boolean value) { + this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); + } + + @Override + public double getEyeHeight() { + return isBaby() ? super.getEyeHeight() / 2 : super.getEyeHeight(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java new file mode 100644 index 000000000..c10d4325b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityPiglinBrute extends EntityBasePiglin { + + public EntityPiglinBrute(@NotNull Position spawnPosition) { + super(EntityType.PIGLIN_BRUTE, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); + } + + public EntityPiglinBrute(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.PIGLIN_BRUTE, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java new file mode 100644 index 000000000..375b256a7 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityPillager extends EntityRaider { + + public EntityPillager(@NotNull Position spawnPosition) { + super(EntityType.PILLAGER, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); + } + + public EntityPillager(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.PILLAGER, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java b/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java new file mode 100644 index 000000000..55cabdf1d --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java @@ -0,0 +1,33 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityRaider extends EntityCreature implements Monster { + + protected EntityRaider(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + protected EntityRaider(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public boolean isCelebrating() { + return this.metadata.getIndex((byte) 15, false); + } + + public void setCelebrating(boolean value) { + this.metadata.setIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java new file mode 100644 index 000000000..5212508cc --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityRavager extends EntityRaider { + + public EntityRavager(@NotNull Position spawnPosition) { + super(EntityType.RAVAGER, spawnPosition); + setBoundingBox(1.95D, 2.2D, 1.95D); + } + + public EntityRavager(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.RAVAGER, spawnPosition, instance); + setBoundingBox(1.95D, 2.2D, 1.95D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java new file mode 100644 index 000000000..79e20476a --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java @@ -0,0 +1,34 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntitySkeleton extends EntityCreature implements Monster { + + public EntitySkeleton(@NotNull Position spawnPosition) { + this(EntityType.SKELETON, spawnPosition); + setBoundingBox(.6D, 1.99D, .6D); + } + + public EntitySkeleton(@NotNull Position spawnPosition, @Nullable Instance instance) { + this(EntityType.SKELETON, spawnPosition, instance); + setBoundingBox(.6D, 1.99D, .6D); + } + + EntitySkeleton(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + EntitySkeleton(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java index ab2471bc3..192167f62 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java @@ -5,11 +5,16 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; public class EntitySlime extends EntityCreature implements Monster { - public EntitySlime(Position spawnPosition) { - super(EntityType.SLIME, spawnPosition); + public EntitySlime(@NotNull Position spawnPosition) { + this(EntityType.SLIME, spawnPosition); + } + + EntitySlime(@NotNull EntityType type, @NotNull Position spawnPosition) { + super(type, spawnPosition); setSize(1); } diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java new file mode 100644 index 000000000..4cfb421d3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java @@ -0,0 +1,42 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntitySpellcasterIllager extends EntityRaider { + + protected EntitySpellcasterIllager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + protected EntitySpellcasterIllager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public Spell getSpell() { + return Spell.VALUES[this.metadata.getIndex((byte) 16, (byte) 0)]; + } + + public void setSpell(Spell spell) { + this.metadata.setIndex((byte) 16, Metadata.Byte((byte) spell.ordinal())); + } + + public enum Spell { + NONE, + SUMMON_VEX, + ATTACK, + WOLOLO, + DISAPPEAR, + BLINDNESS; + + private final static Spell[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java b/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java new file mode 100644 index 000000000..10650ab9f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityStray extends EntitySkeleton { + + public EntityStray(@NotNull Position spawnPosition) { + super(EntityType.STRAY, spawnPosition); + setBoundingBox(.6D, 1.99D, .6D); + } + + public EntityStray(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.STRAY, spawnPosition, instance); + setBoundingBox(.6D, 1.99D, .6D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java b/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java new file mode 100644 index 000000000..a81e60b17 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java @@ -0,0 +1,59 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityVex extends EntityCreature implements Monster { + + private final static byte ATTACKING_BIT = 0x1; + + public EntityVex(@NotNull Position spawnPosition) { + super(EntityType.VEX, spawnPosition); + setBoundingBox(.4D, .8D, .4D); + } + + public EntityVex(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.VEX, spawnPosition, instance); + setBoundingBox(.4D, .8D, .4D); + } + + public boolean isAttacking() { + return (getMask() & ATTACKING_BIT) != 0; + } + + public void setAttacking(boolean value) { + modifyMask(ATTACKING_BIT, value); + } + + private byte getMask() { + return this.metadata.getIndex((byte) 15, (byte) 0); + } + + private void setMask(byte mask) { + this.metadata.setIndex((byte) 15, Metadata.Byte(mask)); + } + + private void modifyMask(byte bit, boolean value) { + byte mask = getMask(); + boolean isPresent = (mask & bit) == bit; + if (isPresent == value) { + return; + } + if (value) { + mask |= bit; + } else { + mask &= ~bit; + } + setMask(mask); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java b/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java new file mode 100644 index 000000000..77fecd0cb --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityVindicator extends EntityRaider { + + public EntityVindicator(@NotNull Position spawnPosition) { + super(EntityType.VINDICATOR, spawnPosition); + setBoundingBox(.6D, 1.95D, .6D); + } + + public EntityVindicator(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.VINDICATOR, spawnPosition, instance); + setBoundingBox(.6D, 1.95D, .6D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java b/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java new file mode 100644 index 000000000..736d2d0b2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityWitherSkeleton extends EntitySkeleton { + + public EntityWitherSkeleton(@NotNull Position spawnPosition) { + super(EntityType.WITHER_SKELETON, spawnPosition); + setBoundingBox(.7D, 2.4D, .7D); + } + + public EntityWitherSkeleton(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.WITHER_SKELETON, spawnPosition, instance); + setBoundingBox(.7D, 2.4D, .7D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java new file mode 100644 index 000000000..a3c344877 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java @@ -0,0 +1,26 @@ +package net.minestom.server.entity.type.monster; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.type.AgeableCreature; +import net.minestom.server.entity.type.Monster; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityZoglin extends AgeableCreature implements Monster { + + public EntityZoglin(@NotNull Position spawnPosition) { + super(EntityType.ZOGLIN, spawnPosition); + setBoundingBox(1.3965D, 1.4D, 1.3965D); + } + + public EntityZoglin(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.ZOGLIN, spawnPosition, instance); + setBoundingBox(1.3965D, 1.4D, 1.3965D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java index d6eb795a8..afcf62d4f 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java @@ -3,6 +3,7 @@ package net.minestom.server.entity.type.monster; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.ambient.EntityAbstractVillager; +import net.minestom.server.entity.type.ambient.EntityVillager; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; @@ -23,15 +24,15 @@ public class EntityZombieVillager extends EntityZombie { this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } - public EntityAbstractVillager.VillagerData getVillagerData() { + public EntityVillager.VillagerData getVillagerData() { int[] data = this.metadata.getIndex((byte) 17, null); if (data == null) { - return new EntityAbstractVillager.VillagerData(EntityAbstractVillager.Type.PLAINS, EntityAbstractVillager.Profession.NONE, EntityAbstractVillager.Level.NOVICE); + return new EntityVillager.VillagerData(EntityVillager.Type.PLAINS, EntityVillager.Profession.NONE, EntityVillager.Level.NOVICE); } - return new EntityAbstractVillager.VillagerData(EntityAbstractVillager.Type.VALUES[data[0]], EntityAbstractVillager.Profession.VALUES[data[1]], EntityAbstractVillager.Level.VALUES[data[2] - 1]); + return new EntityVillager.VillagerData(EntityVillager.Type.VALUES[data[0]], EntityVillager.Profession.VALUES[data[1]], EntityVillager.Level.VALUES[data[2] - 1]); } - public void setVillagerData(EntityAbstractVillager.VillagerData data) { + public void setVillagerData(EntityVillager.VillagerData data) { this.metadata.setIndex((byte) 17, Metadata.VillagerData( data.getType().ordinal(), data.getProfession().ordinal(), diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java b/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java new file mode 100644 index 000000000..2470dbd67 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java @@ -0,0 +1,59 @@ +package net.minestom.server.entity.type.other; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.Constructable; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.BlockPosition; +import net.minestom.server.utils.Direction; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityShulker extends EntityCreature implements Constructable { + + public EntityShulker(@NotNull Position spawnPosition) { + super(EntityType.SHULKER, spawnPosition); + } + + public EntityShulker(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.SHULKER, spawnPosition, instance); + } + + public Direction getAttachFace() { + return this.metadata.getIndex((byte) 15, Direction.DOWN); + } + + public void setAttachFace(Direction value) { + this.metadata.setIndex((byte) 15, Metadata.Direction(value)); + } + + public BlockPosition getAttachmentPosition() { + return this.metadata.getIndex((byte) 16, null); + } + + public void setAttachmentPosition(BlockPosition value) { + this.metadata.setIndex((byte) 16, Metadata.OptPosition(value)); + } + + public byte getShieldHeight() { + return this.metadata.getIndex((byte) 17, (byte) 0); + } + + public void setShieldHeight(byte value) { + this.metadata.setIndex((byte) 17, Metadata.Byte(value)); + } + + public byte getColor() { + return this.metadata.getIndex((byte) 18, (byte) 0); + } + + public void setColor(byte value) { + this.metadata.setIndex((byte) 18, Metadata.Byte(value)); + } + +} From cfc5f860e9e1ca04167d23aa3ecd03e7cef7570b Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 08:47:09 +0300 Subject: [PATCH 08/48] Fishes --- .../minestom/server/entity/EntityType.java | 3 +- .../entity/type/other/EntityShulker.java | 6 +- .../entity/type/water/EntityAbstractFish.java | 32 +++++ .../server/entity/type/water/EntityCod.java | 24 ++++ .../entity/type/water/EntityPufferFish.java | 56 ++++++++ .../entity/type/water/EntitySalmon.java | 24 ++++ .../server/entity/type/water/EntitySquid.java | 25 ++++ .../entity/type/water/EntityTropicalFish.java | 125 ++++++++++++++++++ 8 files changed, 292 insertions(+), 3 deletions(-) create mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java create mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityCod.java create mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java create mode 100644 src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java create mode 100644 src/main/java/net/minestom/server/entity/type/water/EntitySquid.java create mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index a24392848..d4fe880c6 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -15,6 +15,7 @@ import net.minestom.server.entity.type.projectile.EntityArrow; import net.minestom.server.entity.type.projectile.EntityPotion; import net.minestom.server.entity.type.projectile.EntitySpectralArrow; import net.minestom.server.entity.type.vehicle.EntityBoat; +import net.minestom.server.entity.type.water.*; import net.minestom.server.registry.Registries; import net.minestom.server.utils.LambdaMetafactoryUtils; import net.minestom.server.utils.NamespaceID; @@ -50,7 +51,7 @@ public enum EntityType { CHICKEN("minecraft:chicken", EntityChicken.class), - COD("minecraft:cod"), + COD("minecraft:cod", EntityCod.class), COW("minecraft:cow", EntityCow.class), diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java b/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java index 2470dbd67..3fd928cc6 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java @@ -12,16 +12,18 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * Created by k.shandurenko on 23.02.2021 + * TODO: update bounding box depending on state */ public class EntityShulker extends EntityCreature implements Constructable { public EntityShulker(@NotNull Position spawnPosition) { super(EntityType.SHULKER, spawnPosition); + setBoundingBox(1D, 1D, 1D); } public EntityShulker(@NotNull Position spawnPosition, @Nullable Instance instance) { super(EntityType.SHULKER, spawnPosition, instance); + setBoundingBox(1D, 1D, 1D); } public Direction getAttachFace() { @@ -49,7 +51,7 @@ public class EntityShulker extends EntityCreature implements Constructable { } public byte getColor() { - return this.metadata.getIndex((byte) 18, (byte) 0); + return this.metadata.getIndex((byte) 18, (byte) 10); } public void setColor(byte value) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java new file mode 100644 index 000000000..82f260df5 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java @@ -0,0 +1,32 @@ +package net.minestom.server.entity.type.water; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityAbstractFish extends EntityCreature { + + protected EntityAbstractFish(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + } + + protected EntityAbstractFish(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + super(entityType, spawnPosition, instance); + } + + public boolean isFromBucket() { + return this.metadata.getIndex((byte) 15, false); + } + + public void setFromBucket(boolean value) { + this.metadata.setIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityCod.java b/src/main/java/net/minestom/server/entity/type/water/EntityCod.java new file mode 100644 index 000000000..e9b9f7cb6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/water/EntityCod.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.water; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityCod extends EntityAbstractFish { + + public EntityCod(@NotNull Position spawnPosition) { + super(EntityType.COD, spawnPosition); + setBoundingBox(.5D, .3D, .5D); + } + + public EntityCod(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.COD, spawnPosition, instance); + setBoundingBox(.5D, .3D, .5D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java new file mode 100644 index 000000000..077bcc2f1 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java @@ -0,0 +1,56 @@ +package net.minestom.server.entity.type.water; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityPufferFish extends EntityAbstractFish { + + public EntityPufferFish(@NotNull Position spawnPosition) { + super(EntityType.PUFFERFISH, spawnPosition); + updateBoundingBox(State.UNPUFFED); + } + + public EntityPufferFish(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.PUFFERFISH, spawnPosition, instance); + updateBoundingBox(State.UNPUFFED); + } + + public State getState() { + return State.VALUES[this.metadata.getIndex((byte) 16, 0)]; + } + + public void setState(State state) { + this.metadata.setIndex((byte) 16, Metadata.VarInt(state.ordinal())); + updateBoundingBox(state); + } + + private void updateBoundingBox(State state) { + switch (state) { + case UNPUFFED: + setBoundingBox(.35D, .35D, .35D); + break; + case SEMI_PUFFED: + setBoundingBox(.5D, .5D, .5D); + break; + default: + setBoundingBox(.7D, .7D, .7D); + break; + } + } + + public enum State { + UNPUFFED, + SEMI_PUFFED, + FULLY_PUFFED; + + private final static State[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java b/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java new file mode 100644 index 000000000..c498e6c21 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.type.water; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntitySalmon extends EntityAbstractFish { + + public EntitySalmon(@NotNull Position spawnPosition) { + super(EntityType.SALMON, spawnPosition); + setBoundingBox(.7D, .4D, .7D); + } + + public EntitySalmon(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.SALMON, spawnPosition, instance); + setBoundingBox(.7D, .4D, .7D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java b/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java new file mode 100644 index 000000000..6f8b445fc --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java @@ -0,0 +1,25 @@ +package net.minestom.server.entity.type.water; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntitySquid extends EntityCreature { + + public EntitySquid(@NotNull Position spawnPosition) { + super(EntityType.SQUID, spawnPosition); + setBoundingBox(.8D, .8D, .8D); + } + + public EntitySquid(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.SQUID, spawnPosition, instance); + setBoundingBox(.8D, .8D, .8D); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java new file mode 100644 index 000000000..6c1415f67 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java @@ -0,0 +1,125 @@ +package net.minestom.server.entity.type.water; + +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Metadata; +import net.minestom.server.instance.Instance; +import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +public class EntityTropicalFish extends EntityAbstractFish { + + public EntityTropicalFish(@NotNull Position spawnPosition) { + super(EntityType.TROPICAL_FISH, spawnPosition); + setBoundingBox(.5D, .4D, .5D); + } + + public EntityTropicalFish(@NotNull Position spawnPosition, @Nullable Instance instance) { + super(EntityType.TROPICAL_FISH, spawnPosition, instance); + setBoundingBox(.5D, .4D, .5D); + } + + public Variant getVariant() { + return getVariantFromID(this.metadata.getIndex((byte) 16, 0)); + } + + public void setVariant(Variant variant) { + this.metadata.setIndex((byte) 16, Metadata.VarInt(getVariantID(variant))); + } + + public static int getVariantID(Variant variant) { + int id = 0; + id |= variant.patternColor; + id <<= 8; + id |= variant.bodyColor; + id <<= 8; + id |= variant.pattern.ordinal(); + id <<= 8; + id |= variant.type.ordinal(); + return id; + } + + public static Variant getVariantFromID(int variantID) { + Type type = Type.VALUES[variantID & 0xFF]; + variantID >>= 8; + Pattern pattern = Pattern.VALUES[variantID & 0xFF]; + variantID >>= 8; + byte bodyColor = (byte) (variantID & 0xFF); + variantID >>= 8; + byte patternColor = (byte) (variantID & 0xFF); + return new Variant(type, pattern, bodyColor, patternColor); + } + + public static class Variant { + + private Type type; + private Pattern pattern; + private byte bodyColor; + private byte patternColor; + + public Variant(@NotNull Type type, @NotNull Pattern pattern, byte bodyColor, byte patternColor) { + this.type = type; + this.pattern = pattern; + this.bodyColor = bodyColor; + this.patternColor = patternColor; + } + + @NotNull + public Type getType() { + return this.type; + } + + public void setType(@NotNull Type type) { + this.type = type; + } + + @NotNull + public Pattern getPattern() { + return this.pattern; + } + + public void setPattern(@NotNull Pattern pattern) { + this.pattern = pattern; + } + + public byte getBodyColor() { + return this.bodyColor; + } + + public void setBodyColor(byte bodyColor) { + this.bodyColor = bodyColor; + } + + public byte getPatternColor() { + return this.patternColor; + } + + public void setPatternColor(byte patternColor) { + this.patternColor = patternColor; + } + } + + public enum Type { + SMALL, + LARGE, + INVISIBLE; + + private final static Type[] VALUES = values(); + } + + public enum Pattern { + KOB, // FLOPPER for LARGE fish + SUNSTREAK, // STRIPEY for LARGE fish + SNOOPER, // GLITTER for LARGE fish + DASHER, // BLOCKFISH for LARGE fish + BRINELY, // BETTY for LARGE fish + SPOTTY, // CLAYFISH for LARGE fish + NONE; + + private final static Pattern[] VALUES = values(); + } + +} From b409eadffa57db456d8b9d1f8f31b9ba17a21b1a Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 09:06:19 +0300 Subject: [PATCH 09/48] ArgumentEnum and /horse command for demo scene --- .../builder/arguments/ArgumentEnum.java | 64 ++++++++++++++++ .../builder/arguments/ArgumentType.java | 5 ++ src/test/java/demo/Main.java | 1 + src/test/java/demo/commands/HorseCommand.java | 73 +++++++++++++++++++ 4 files changed, 143 insertions(+) create mode 100644 src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java create mode 100644 src/test/java/demo/commands/HorseCommand.java diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java new file mode 100644 index 000000000..03676e898 --- /dev/null +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java @@ -0,0 +1,64 @@ +package net.minestom.server.command.builder.arguments; + +import net.minestom.server.command.builder.NodeMaker; +import net.minestom.server.command.builder.exception.ArgumentSyntaxException; +import net.minestom.server.network.packet.server.play.DeclareCommandsPacket; +import org.jetbrains.annotations.NotNull; + +import java.util.Locale; +import java.util.function.Consumer; + +/** + * Created by k.shandurenko on 23.02.2021 + */ +@SuppressWarnings("rawtypes") +public class ArgumentEnum extends Argument { + + public final static int NOT_ENUM_VALUE_ERROR = 1; + + private final Class enumClass; + private final E[] values; + + public ArgumentEnum(@NotNull String id, Class enumClass) { + super(id); + this.enumClass = enumClass; + this.values = enumClass.getEnumConstants(); + } + + @NotNull + @Override + public E parse(@NotNull String input) throws ArgumentSyntaxException { + for (E value : this.values) { + if (value.name().equalsIgnoreCase(input)) { + return value; + } + } + throw new ArgumentSyntaxException("Not a " + this.enumClass.getSimpleName() + " value", input, NOT_ENUM_VALUE_ERROR); + } + + @Override + public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) { + // Add the single word properties + parser + final Consumer wordConsumer = node -> { + node.parser = "brigadier:string"; + node.properties = packetWriter -> { + packetWriter.writeVarInt(0); // Single word + }; + }; + + // Create a primitive array for mapping + DeclareCommandsPacket.Node[] nodes = new DeclareCommandsPacket.Node[this.values.length]; + + // Create a node for each restrictions as literal + for (int i = 0; i < nodes.length; i++) { + DeclareCommandsPacket.Node argumentNode = new DeclareCommandsPacket.Node(); + + argumentNode.flags = DeclareCommandsPacket.getFlag(DeclareCommandsPacket.NodeType.LITERAL, + executable, false, false); + argumentNode.name = this.values[i].name().toLowerCase(Locale.ROOT); + wordConsumer.accept(argumentNode); + nodes[i] = argumentNode; + } + nodeMaker.addNodes(nodes); + } +} diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java index 5edab32de..5f40d2b79 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java @@ -79,6 +79,11 @@ public class ArgumentType { return new ArgumentCommand(id); } + @SuppressWarnings("rawtypes") + public static ArgumentEnum Enum(@NotNull String id, @NotNull Class enumClass) { + return new ArgumentEnum<>(id, enumClass); + } + // Minecraft specific arguments public static ArgumentColor Color(@NotNull String id) { diff --git a/src/test/java/demo/Main.java b/src/test/java/demo/Main.java index 438b4e278..c49111ed3 100644 --- a/src/test/java/demo/Main.java +++ b/src/test/java/demo/Main.java @@ -43,6 +43,7 @@ public class Main { commandManager.register(new TitleCommand()); commandManager.register(new BookCommand()); commandManager.register(new ShootCommand()); + commandManager.register(new HorseCommand()); commandManager.setUnknownCommandCallback((sender, command) -> sender.sendMessage("unknown command")); diff --git a/src/test/java/demo/commands/HorseCommand.java b/src/test/java/demo/commands/HorseCommand.java new file mode 100644 index 000000000..4491649ac --- /dev/null +++ b/src/test/java/demo/commands/HorseCommand.java @@ -0,0 +1,73 @@ +package demo.commands; + +import net.minestom.server.command.CommandSender; +import net.minestom.server.command.builder.Arguments; +import net.minestom.server.command.builder.Command; +import net.minestom.server.command.builder.arguments.ArgumentType; +import net.minestom.server.command.builder.exception.ArgumentSyntaxException; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.Player; +import net.minestom.server.entity.type.animal.EntityHorse; + +import java.util.Locale; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class HorseCommand extends Command { + + public HorseCommand() { + super("horse"); + setCondition(this::condition); + setDefaultExecutor(this::defaultExecutor); + var babyArg = ArgumentType.Boolean("baby"); + var markingArg = ArgumentType.Enum("marking", EntityHorse.Marking.class); + var colorArg = ArgumentType.Enum("color", EntityHorse.Color.class); + setArgumentCallback(this::onBabyError, babyArg); + setArgumentCallback(this::onMarkingError, markingArg); + setArgumentCallback(this::onColorError, colorArg); + addSyntax(this::onHorseCommand, babyArg, markingArg, colorArg); + } + + private boolean condition(CommandSender sender, String commandString) { + if (!sender.isPlayer()) { + sender.sendMessage("The command is only available for player"); + return false; + } + return true; + } + + private void defaultExecutor(CommandSender sender, Arguments args) { + sender.sendMessage("Correct usage: horse [baby] [marking] [color]"); + } + + private void onBabyError(CommandSender sender, ArgumentSyntaxException exception) { + sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'true' or 'false'"); + } + + private void onMarkingError(CommandSender sender, ArgumentSyntaxException exception) { + String values = Stream.of(EntityHorse.Marking.values()) + .map(value -> "'" + value.name().toLowerCase(Locale.ROOT) + "'") + .collect(Collectors.joining(", ")); + sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + "."); + } + + private void onColorError(CommandSender sender, ArgumentSyntaxException exception) { + String values = Stream.of(EntityHorse.Color.values()) + .map(value -> "'" + value.name().toLowerCase(Locale.ROOT) + "'") + .collect(Collectors.joining(", ")); + sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + "."); + } + + private void onHorseCommand(CommandSender sender, Arguments args) { + var player = (Player) sender; + + boolean baby = args.get("baby"); + EntityHorse.Marking marking = args.get("marking"); + EntityHorse.Color color = args.get("color"); + var horse = (EntityHorse) EntityType.HORSE.createFromPosition(player.getPosition()); + horse.setBaby(baby); + horse.setVariant(new EntityHorse.Variant(marking, color)); + horse.setInstance(player.getInstance()); + } + +} From 6eda8f97db816951b125f1a1b9065e9d5a27a05d Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 09:14:38 +0300 Subject: [PATCH 10/48] Removed @author javadocs --- .../server/command/builder/arguments/ArgumentEnum.java | 3 --- src/main/java/net/minestom/server/entity/type/Ageable.java | 3 --- .../java/net/minestom/server/entity/type/AgeableCreature.java | 3 --- .../minestom/server/entity/type/TameableAnimalCreature.java | 3 --- .../server/entity/type/ambient/EntityAbstractVillager.java | 3 --- .../minestom/server/entity/type/ambient/EntityTraderLlama.java | 3 --- .../minestom/server/entity/type/ambient/EntityVillager.java | 3 --- .../server/entity/type/ambient/EntityWanderingTrader.java | 3 --- .../server/entity/type/animal/EntityAbstractHorse.java | 3 --- .../minestom/server/entity/type/animal/EntityChestedHorse.java | 3 --- .../net/minestom/server/entity/type/animal/EntityDonkey.java | 3 --- .../net/minestom/server/entity/type/animal/EntityHoglin.java | 3 --- .../net/minestom/server/entity/type/animal/EntityHorse.java | 3 --- .../net/minestom/server/entity/type/animal/EntityLlama.java | 3 --- .../net/minestom/server/entity/type/animal/EntityMule.java | 3 --- .../net/minestom/server/entity/type/animal/EntityParrot.java | 3 --- .../net/minestom/server/entity/type/animal/EntitySheep.java | 3 --- .../server/entity/type/animal/EntitySkeletonHorse.java | 3 --- .../net/minestom/server/entity/type/animal/EntityStrider.java | 3 --- .../net/minestom/server/entity/type/animal/EntityWolf.java | 3 --- .../minestom/server/entity/type/animal/EntityZombieHorse.java | 3 --- .../minestom/server/entity/type/monster/EntityBasePiglin.java | 3 --- .../net/minestom/server/entity/type/monster/EntityDrowned.java | 3 --- .../server/entity/type/monster/EntityElderGuardian.java | 3 --- .../minestom/server/entity/type/monster/EntityEnderman.java | 3 --- .../net/minestom/server/entity/type/monster/EntityEvoker.java | 3 --- .../net/minestom/server/entity/type/monster/EntityHusk.java | 3 --- .../minestom/server/entity/type/monster/EntityIllusioner.java | 3 --- .../minestom/server/entity/type/monster/EntityMagmaCube.java | 3 --- .../net/minestom/server/entity/type/monster/EntityPiglin.java | 3 --- .../minestom/server/entity/type/monster/EntityPiglinBrute.java | 3 --- .../minestom/server/entity/type/monster/EntityPillager.java | 3 --- .../net/minestom/server/entity/type/monster/EntityRaider.java | 3 --- .../net/minestom/server/entity/type/monster/EntityRavager.java | 3 --- .../minestom/server/entity/type/monster/EntitySkeleton.java | 3 --- .../server/entity/type/monster/EntitySpellcasterIllager.java | 3 --- .../net/minestom/server/entity/type/monster/EntityStray.java | 3 --- .../net/minestom/server/entity/type/monster/EntityVex.java | 3 --- .../minestom/server/entity/type/monster/EntityVindicator.java | 3 --- .../server/entity/type/monster/EntityWitherSkeleton.java | 3 --- .../net/minestom/server/entity/type/monster/EntityZoglin.java | 3 --- .../server/entity/type/monster/EntityZombieVillager.java | 3 --- .../server/entity/type/monster/EntityZombifiedPiglin.java | 3 --- .../minestom/server/entity/type/water/EntityAbstractFish.java | 3 --- .../java/net/minestom/server/entity/type/water/EntityCod.java | 3 --- .../minestom/server/entity/type/water/EntityPufferFish.java | 3 --- .../net/minestom/server/entity/type/water/EntitySalmon.java | 3 --- .../net/minestom/server/entity/type/water/EntitySquid.java | 3 --- .../minestom/server/entity/type/water/EntityTropicalFish.java | 3 --- .../java/net/minestom/server/utils/LambdaMetafactoryUtils.java | 3 --- 50 files changed, 150 deletions(-) diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java index 03676e898..0550abd6d 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java @@ -8,9 +8,6 @@ import org.jetbrains.annotations.NotNull; import java.util.Locale; import java.util.function.Consumer; -/** - * Created by k.shandurenko on 23.02.2021 - */ @SuppressWarnings("rawtypes") public class ArgumentEnum extends Argument { diff --git a/src/main/java/net/minestom/server/entity/type/Ageable.java b/src/main/java/net/minestom/server/entity/type/Ageable.java index 4f5c2ca17..a402447aa 100644 --- a/src/main/java/net/minestom/server/entity/type/Ageable.java +++ b/src/main/java/net/minestom/server/entity/type/Ageable.java @@ -1,8 +1,5 @@ package net.minestom.server.entity.type; -/** - * Created by k.shandurenko on 23.02.2021 - */ public interface Ageable { boolean isBaby(); diff --git a/src/main/java/net/minestom/server/entity/type/AgeableCreature.java b/src/main/java/net/minestom/server/entity/type/AgeableCreature.java index f1f719832..ace7a0078 100644 --- a/src/main/java/net/minestom/server/entity/type/AgeableCreature.java +++ b/src/main/java/net/minestom/server/entity/type/AgeableCreature.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class AgeableCreature extends EntityCreature implements Ageable { protected AgeableCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java b/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java index dc400d050..186d55c80 100644 --- a/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java +++ b/src/main/java/net/minestom/server/entity/type/TameableAnimalCreature.java @@ -9,9 +9,6 @@ import org.jetbrains.annotations.Nullable; import java.util.UUID; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class TameableAnimalCreature extends AgeableCreature implements TameableAnimal { private final static byte SITTING_BIT = 0x1; diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java index 87347b68e..13f4bd043 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityAbstractVillager extends AgeableCreature { EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java index 58d94de14..a7e28221d 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityTraderLlama extends EntityCreature { public EntityTraderLlama(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java index ed644edcd..026ea61de 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityVillager extends EntityAbstractVillager { public EntityVillager(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java index 444031697..85df05972 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityWanderingTrader extends EntityAbstractVillager { public EntityWanderingTrader(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java index 3fca2d40a..149212515 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java @@ -11,9 +11,6 @@ import org.jetbrains.annotations.Nullable; import java.util.UUID; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityAbstractHorse extends AgeableCreature implements Animal { private final static byte TAMED_BIT = 0x02; diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java index ca2fe79e9..15385a79f 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityChestedHorse extends EntityAbstractHorse { EntityChestedHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java b/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java index 002782ba9..9a522126d 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityDonkey extends EntityChestedHorse { public EntityDonkey(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java b/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java index 1d175d7d6..4a061385b 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityHoglin extends AgeableCreature implements Animal { public EntityHoglin(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java index 212747017..2c0bff8e7 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityHorse extends EntityAbstractHorse { public EntityHorse(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java b/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java index 552dc016b..0f8de5901 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityLlama extends EntityChestedHorse { public EntityLlama(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java b/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java index 5ec5257f6..0dfe21cd5 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityMule extends EntityChestedHorse { public EntityMule(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java b/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java index 9db9a1f8f..5fd71c3c8 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityParrot extends TameableAnimalCreature { public EntityParrot(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java b/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java index 75c6e7949..8bf98c0a9 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntitySheep extends AgeableCreature implements Animal { public EntitySheep(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java index 7614c8f76..566c1dcd5 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntitySkeletonHorse extends EntityAbstractHorse { public EntitySkeletonHorse(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java b/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java index fad7a9fbe..551bbdf54 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityStrider extends AgeableCreature implements Animal { public EntityStrider(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java b/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java index c8910d090..41ba0248b 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityWolf extends TameableAnimalCreature { public EntityWolf(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java index 6b413c8fa..68060c348 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityZombieHorse extends EntityAbstractHorse { public EntityZombieHorse(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java index f75d595a3..9a445a11d 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityBasePiglin extends EntityCreature implements Monster { EntityBasePiglin(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java b/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java index 78369c80e..f771fa9bf 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java @@ -4,9 +4,6 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityDrowned extends EntityZombie { public EntityDrowned(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java b/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java index cf72465f5..ad5e92b8e 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityElderGuardian extends EntityGuardian { public EntityElderGuardian(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java index 5231fcedc..00818207e 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityEnderman extends EntityCreature implements Monster { public EntityEnderman(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java index 2154a062e..b3d46f0a6 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityEvoker extends EntitySpellcasterIllager { public EntityEvoker(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java b/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java index e91fa9af3..248fd012c 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java @@ -4,9 +4,6 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityHusk extends EntityZombie { public EntityHusk(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java b/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java index 4906686ba..4bd1b8448 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityIllusioner extends EntitySpellcasterIllager { public EntityIllusioner(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java b/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java index 0bcafb723..fd3075322 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java @@ -4,9 +4,6 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityMagmaCube extends EntitySlime { public EntityMagmaCube(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java index c695c5e99..607004818 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityPiglin extends EntityBasePiglin { public EntityPiglin(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java index c10d4325b..ecbde206e 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityPiglinBrute extends EntityBasePiglin { public EntityPiglinBrute(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java index 375b256a7..541459283 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityPillager extends EntityRaider { public EntityPillager(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java b/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java index 55cabdf1d..92f1fa6e2 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityRaider extends EntityCreature implements Monster { protected EntityRaider(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java index 5212508cc..daacc9639 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityRavager extends EntityRaider { public EntityRavager(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java index 79e20476a..325e6cb7a 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntitySkeleton extends EntityCreature implements Monster { public EntitySkeleton(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java index 4cfb421d3..654d4171c 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntitySpellcasterIllager extends EntityRaider { protected EntitySpellcasterIllager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java b/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java index 10650ab9f..f34b5321f 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityStray extends EntitySkeleton { public EntityStray(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java b/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java index a81e60b17..d87dd956e 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java @@ -9,9 +9,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityVex extends EntityCreature implements Monster { private final static byte ATTACKING_BIT = 0x1; diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java b/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java index 77fecd0cb..ee3a4ed81 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityVindicator extends EntityRaider { public EntityVindicator(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java b/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java index 736d2d0b2..eba35d856 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityWitherSkeleton extends EntitySkeleton { public EntityWitherSkeleton(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java index a3c344877..09efaaa58 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityZoglin extends AgeableCreature implements Monster { public EntityZoglin(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java index afcf62d4f..ae43d783c 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java @@ -7,9 +7,6 @@ import net.minestom.server.entity.type.ambient.EntityVillager; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityZombieVillager extends EntityZombie { public EntityZombieVillager(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java index 4c8f1cb56..7a954a9ee 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java @@ -4,9 +4,6 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityZombifiedPiglin extends EntityZombie { public EntityZombifiedPiglin(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java index 82f260df5..b1bf08556 100644 --- a/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java +++ b/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java @@ -8,9 +8,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityAbstractFish extends EntityCreature { protected EntityAbstractFish(@NotNull EntityType entityType, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityCod.java b/src/main/java/net/minestom/server/entity/type/water/EntityCod.java index e9b9f7cb6..c0f6c9cc5 100644 --- a/src/main/java/net/minestom/server/entity/type/water/EntityCod.java +++ b/src/main/java/net/minestom/server/entity/type/water/EntityCod.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityCod extends EntityAbstractFish { public EntityCod(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java index 077bcc2f1..d9f9045b1 100644 --- a/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java +++ b/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityPufferFish extends EntityAbstractFish { public EntityPufferFish(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java b/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java index c498e6c21..dfe609020 100644 --- a/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java +++ b/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java @@ -6,9 +6,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntitySalmon extends EntityAbstractFish { public EntitySalmon(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java b/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java index 6f8b445fc..9628538fc 100644 --- a/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java +++ b/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntitySquid extends EntityCreature { public EntitySquid(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java index 6c1415f67..f03613aba 100644 --- a/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java +++ b/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java @@ -7,9 +7,6 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * Created by k.shandurenko on 23.02.2021 - */ public class EntityTropicalFish extends EntityAbstractFish { public EntityTropicalFish(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java b/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java index 93e6672a0..e6a1d396b 100644 --- a/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java +++ b/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java @@ -7,9 +7,6 @@ import java.lang.invoke.MethodType; import java.util.function.Function; import java.util.function.Supplier; -/** - * Created by k.shandurenko on 23.02.2021 - */ @SuppressWarnings("unchecked") public class LambdaMetafactoryUtils { From 0915858df35758700c34cbc55672e54012855ddf Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 15:11:10 +0300 Subject: [PATCH 11/48] Meta wrappers for all the entities --- .../minestom/server/entity/EntityType.java | 9 +- .../{Particle.java => ParticleType.java} | 8 +- .../minestom/server/registry/Registries.java | 29 ++- .../net/minestom/codegen/AllGenerators.java | 4 +- .../minestom/codegen/RegistriesGenerator.java | 4 +- ...or.java => ParticleTypeEnumGenerator.java} | 12 +- .../net/minestom/server/MinecraftServer.java | 4 +- .../server/command/builder/Arguments.java | 6 +- .../minecraft/registry/ArgumentParticle.java | 10 +- .../net/minestom/server/entity/Entity.java | 4 + .../net/minestom/server/entity/Metadata.java | 10 ++ .../entity/metadata/AgeableMobMeta.java | 31 ++++ .../server/entity/metadata/EntityMeta.java | 168 ++++++++++++++++++ .../entity/metadata/LivingEntityMeta.java | 96 ++++++++++ .../server/entity/metadata/MobMeta.java | 42 +++++ .../entity/metadata/PathfinderMobMeta.java | 12 ++ .../server/entity/metadata/PlayerMeta.java | 124 +++++++++++++ .../metadata/ambient/AmbientCreatureMeta.java | 13 ++ .../entity/metadata/ambient/BatMeta.java | 24 +++ .../metadata/animal/AbstractHorseMeta.java | 80 +++++++++ .../entity/metadata/animal/AnimalMeta.java | 13 ++ .../entity/metadata/animal/BeeMeta.java | 51 ++++++ .../metadata/animal/ChestedHorseMeta.java | 21 +++ .../entity/metadata/animal/ChickenMeta.java | 12 ++ .../entity/metadata/animal/CowMeta.java | 12 ++ .../entity/metadata/animal/DonkeyMeta.java | 12 ++ .../entity/metadata/animal/FoxMeta.java | 116 ++++++++++++ .../entity/metadata/animal/HoglinMeta.java | 21 +++ .../entity/metadata/animal/HorseMeta.java | 84 +++++++++ .../entity/metadata/animal/LlamaMeta.java | 47 +++++ .../entity/metadata/animal/MooshroomMeta.java | 29 +++ .../entity/metadata/animal/MuleMeta.java | 12 ++ .../entity/metadata/animal/OcelotMeta.java | 21 +++ .../entity/metadata/animal/PandaMeta.java | 106 +++++++++++ .../entity/metadata/animal/PigMeta.java | 29 +++ .../entity/metadata/animal/PolarBearMeta.java | 21 +++ .../entity/metadata/animal/RabbitMeta.java | 39 ++++ .../entity/metadata/animal/SheepMeta.java | 39 ++++ .../metadata/animal/SkeletonHorseMeta.java | 12 ++ .../entity/metadata/animal/StriderMeta.java | 37 ++++ .../entity/metadata/animal/TurtleMeta.java | 64 +++++++ .../metadata/animal/ZombieHorseMeta.java | 12 ++ .../metadata/animal/tameable/CatMeta.java | 62 +++++++ .../metadata/animal/tameable/ParrotMeta.java | 32 ++++ .../animal/tameable/TameableAnimalMeta.java | 46 +++++ .../metadata/animal/tameable/WolfMeta.java | 37 ++++ .../metadata/arrow/AbstractArrowMeta.java | 43 +++++ .../entity/metadata/arrow/ArrowMeta.java | 22 +++ .../metadata/arrow/SpectralArrowMeta.java | 12 ++ .../metadata/arrow/ThrownTridentMeta.java | 29 +++ .../entity/metadata/flying/FlyingMeta.java | 13 ++ .../entity/metadata/flying/GhastMeta.java | 21 +++ .../entity/metadata/flying/PhantomMeta.java | 21 +++ .../metadata/golem/AbstractGolemMeta.java | 13 ++ .../entity/metadata/golem/IronGolemMeta.java | 24 +++ .../entity/metadata/golem/ShulkerMeta.java | 47 +++++ .../entity/metadata/golem/SnowGolemMeta.java | 21 +++ .../AbstractMinecartContainerMeta.java | 12 ++ .../minecart/AbstractMinecartMeta.java | 55 ++++++ .../metadata/minecart/MinecartChestMeta.java | 12 ++ .../minecart/MinecartCommandBlockMeta.java | 33 ++++ .../minecart/MinecartFurnaceMeta.java | 21 +++ .../metadata/minecart/MinecartHopperMeta.java | 12 ++ .../metadata/minecart/MinecartMeta.java | 12 ++ .../metadata/minecart/MinecartTntMeta.java | 12 ++ .../metadata/monster/BasePiglinMeta.java | 21 +++ .../entity/metadata/monster/BlazeMeta.java | 24 +++ .../entity/metadata/monster/CreeperMeta.java | 44 +++++ .../metadata/monster/ElderGuardianMeta.java | 12 ++ .../entity/metadata/monster/EndermanMeta.java | 38 ++++ .../metadata/monster/EndermineMeta.java | 12 ++ .../entity/metadata/monster/GiantMeta.java | 12 ++ .../entity/metadata/monster/GuardianMeta.java | 32 ++++ .../entity/metadata/monster/MonsterMeta.java | 13 ++ .../metadata/monster/PiglinBruteMeta.java | 12 ++ .../entity/metadata/monster/PiglinMeta.java | 47 +++++ .../metadata/monster/SilverfishMeta.java | 12 ++ .../entity/metadata/monster/SpiderMeta.java | 24 +++ .../entity/metadata/monster/VexMeta.java | 24 +++ .../entity/metadata/monster/WitherMeta.java | 56 ++++++ .../entity/metadata/monster/ZoglinMeta.java | 31 ++++ .../monster/raider/AbstractIllagerMeta.java | 12 ++ .../metadata/monster/raider/EvokerMeta.java | 12 ++ .../monster/raider/IllusionerMeta.java | 12 ++ .../metadata/monster/raider/PillagerMeta.java | 12 ++ .../metadata/monster/raider/RaiderMeta.java | 22 +++ .../metadata/monster/raider/RavagerMeta.java | 12 ++ .../raider/SpellcasterIllagerMeta.java | 34 ++++ .../monster/raider/VindicatorMeta.java | 12 ++ .../metadata/monster/raider/WitchMeta.java | 21 +++ .../skeleton/AbstractSkeletonMeta.java | 13 ++ .../monster/skeleton/SkeletonMeta.java | 12 ++ .../metadata/monster/skeleton/StrayMeta.java | 12 ++ .../monster/skeleton/WitherSkeletonMeta.java | 12 ++ .../metadata/monster/zombie/DrownedMeta.java | 12 ++ .../metadata/monster/zombie/HuskMeta.java | 12 ++ .../metadata/monster/zombie/ZombieMeta.java | 40 +++++ .../monster/zombie/ZombieVillagerMeta.java | 39 ++++ .../monster/zombie/ZombifiedPiglinMeta.java | 12 ++ .../metadata/object/EyeOfEnderMeta.java | 13 ++ .../entity/metadata/object/FireballMeta.java | 13 ++ .../metadata/object/ItemEntityMeta.java | 13 ++ .../metadata/object/ObjectEntityMeta.java | 28 +++ .../metadata/object/SmallFireballMeta.java | 13 ++ .../entity/metadata/object/SnowballMeta.java | 13 ++ .../entity/metadata/object/ThrownEggMeta.java | 13 ++ .../metadata/object/ThrownEnderPearlMeta.java | 13 ++ .../object/ThrownExperienceBottleMeta.java | 13 ++ .../metadata/object/ThrownPotionMeta.java | 13 ++ .../metadata/other/AreaEffectCloudMeta.java | 48 +++++ .../entity/metadata/other/ArmorStandMeta.java | 109 ++++++++++++ .../entity/metadata/other/BoatMeta.java | 82 +++++++++ .../metadata/other/DragonFireballMeta.java | 13 ++ .../entity/metadata/other/EndCrystalMeta.java | 33 ++++ .../metadata/other/EnderDragonMeta.java | 39 ++++ .../metadata/other/EvokerFangsMeta.java | 13 ++ .../metadata/other/FallingBlockMeta.java | 23 +++ .../metadata/other/FireworkRocketMeta.java | 46 +++++ .../metadata/other/FishingHookMeta.java | 36 ++++ .../entity/metadata/other/ItemFrameMeta.java | 32 ++++ .../entity/metadata/other/LlamaSpitMeta.java | 13 ++ .../entity/metadata/other/MagmaCubeMeta.java | 14 ++ .../entity/metadata/other/PrimedTntMeta.java | 22 +++ .../entity/metadata/other/SlimeMeta.java | 24 +++ .../metadata/other/WitherSkullMeta.java | 22 +++ .../villager/AbstractVillagerMeta.java | 21 +++ .../metadata/villager/VillagerMeta.java | 113 ++++++++++++ .../villager/WanderingTraderMeta.java | 12 ++ .../entity/metadata/water/DolphinMeta.java | 39 ++++ .../entity/metadata/water/SquidMeta.java | 12 ++ .../metadata/water/WaterAnimalMeta.java | 13 ++ .../metadata/water/fish/AbstractFishMeta.java | 21 +++ .../entity/metadata/water/fish/CodMeta.java | 12 ++ .../metadata/water/fish/PufferFishMeta.java | 44 +++++ .../metadata/water/fish/SalmonMeta.java | 12 ++ .../metadata/water/fish/TropicalFishMeta.java | 114 ++++++++++++ .../type/other/EntityAreaEffectCloud.java | 14 +- .../minestom/server/particle/Particle.java | 36 ++++ .../server/particle/ParticleCreator.java | 8 +- 139 files changed, 3973 insertions(+), 51 deletions(-) rename src/autogenerated/java/net/minestom/server/particle/{Particle.java => ParticleType.java} (95%) rename src/generators/java/net/minestom/codegen/particles/{ParticleEnumGenerator.java => ParticleTypeEnumGenerator.java} (82%) create mode 100644 src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/EntityMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/MobMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/MinecartChestMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/MinecartCommandBlockMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/MinecartFurnaceMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/MinecartHopperMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/MinecartTntMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/fish/PufferFishMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java create mode 100644 src/main/java/net/minestom/server/particle/Particle.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index d4fe880c6..3eae2a6ce 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -11,7 +11,6 @@ import net.minestom.server.entity.type.other.EntityAreaEffectCloud; import net.minestom.server.entity.type.other.EntityIronGolem; import net.minestom.server.entity.type.other.EntityShulker; import net.minestom.server.entity.type.other.EntitySnowman; -import net.minestom.server.entity.type.projectile.EntityArrow; import net.minestom.server.entity.type.projectile.EntityPotion; import net.minestom.server.entity.type.projectile.EntitySpectralArrow; import net.minestom.server.entity.type.vehicle.EntityBoat; @@ -291,6 +290,14 @@ public enum EntityType { return this.defaultGenerator.apply(position); } + public double getDefaultWidth() { + return 0D; + } + + public double getDefaultHeight() { + return 0D; + } + public static EntityType fromId(int id) { if (id >= 0 && id < values().length) { return values()[id]; diff --git a/src/autogenerated/java/net/minestom/server/particle/Particle.java b/src/autogenerated/java/net/minestom/server/particle/ParticleType.java similarity index 95% rename from src/autogenerated/java/net/minestom/server/particle/Particle.java rename to src/autogenerated/java/net/minestom/server/particle/ParticleType.java index 4e5e15805..0cce18962 100644 --- a/src/autogenerated/java/net/minestom/server/particle/Particle.java +++ b/src/autogenerated/java/net/minestom/server/particle/ParticleType.java @@ -9,7 +9,7 @@ import net.minestom.server.utils.NamespaceID; * //============================== */ @SuppressWarnings({"deprecation"}) -public enum Particle { +public enum ParticleType { AMBIENT_ENTITY_EFFECT("minecraft:ambient_entity_effect"), ANGRY_VILLAGER("minecraft:angry_villager"), @@ -156,9 +156,9 @@ public enum Particle { private String namespaceID; - Particle(String namespaceID) { + ParticleType(String namespaceID) { this.namespaceID = namespaceID; - Registries.particles.put(NamespaceID.from(namespaceID), this); + Registries.particleTypes.put(NamespaceID.from(namespaceID), this); } public int getId() { @@ -169,7 +169,7 @@ public enum Particle { return namespaceID; } - public static Particle fromId(int id) { + public static ParticleType fromId(int id) { if (id >= 0 && id < values().length) { return values()[id]; } diff --git a/src/autogenerated/java/net/minestom/server/registry/Registries.java b/src/autogenerated/java/net/minestom/server/registry/Registries.java index 3b6be532c..34b965150 100644 --- a/src/autogenerated/java/net/minestom/server/registry/Registries.java +++ b/src/autogenerated/java/net/minestom/server/registry/Registries.java @@ -1,12 +1,13 @@ // AUTOGENERATED by net.minestom.codegen.RegistriesGenerator package net.minestom.server.registry; +import java.util.HashMap; import net.minestom.server.entity.EntityType; import net.minestom.server.fluids.Fluid; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.Material; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionType; import net.minestom.server.sound.Sound; @@ -15,8 +16,6 @@ import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.HashMap; - /** * AUTOGENERATED */ @@ -49,7 +48,7 @@ public final class Registries { * Should only be used for internal code, please use the get* methods. */ @Deprecated - public static final HashMap particles = new HashMap<>(); + public static final HashMap particleTypes = new HashMap<>(); /** * Should only be used for internal code, please use the get* methods. @@ -130,35 +129,35 @@ public final class Registries { } /** - * Returns the corresponding EntityType matching the given id. Returns null if none match. + * Returns the corresponding EntityType matching the given id. Returns 'PIG' if none match. */ - @Nullable + @NotNull public static EntityType getEntityType(String id) { return getEntityType(NamespaceID.from(id)); } /** - * Returns the corresponding EntityType matching the given id. Returns null if none match. + * Returns the corresponding EntityType matching the given id. Returns 'PIG' if none match. */ - @Nullable + @NotNull public static EntityType getEntityType(NamespaceID id) { - return entityTypes.get(id); + return entityTypes.getOrDefault(id, EntityType.PIG); } /** - * Returns the corresponding Particle matching the given id. Returns null if none match. + * Returns the corresponding ParticleType matching the given id. Returns null if none match. */ @Nullable - public static Particle getParticle(String id) { - return getParticle(NamespaceID.from(id)); + public static ParticleType getParticleType(String id) { + return getParticleType(NamespaceID.from(id)); } /** - * Returns the corresponding Particle matching the given id. Returns null if none match. + * Returns the corresponding ParticleType matching the given id. Returns null if none match. */ @Nullable - public static Particle getParticle(NamespaceID id) { - return particles.get(id); + public static ParticleType getParticleType(NamespaceID id) { + return particleTypes.get(id); } /** diff --git a/src/generators/java/net/minestom/codegen/AllGenerators.java b/src/generators/java/net/minestom/codegen/AllGenerators.java index d63856e81..47b92ea6a 100644 --- a/src/generators/java/net/minestom/codegen/AllGenerators.java +++ b/src/generators/java/net/minestom/codegen/AllGenerators.java @@ -5,7 +5,7 @@ import net.minestom.codegen.enchantment.EnchantmentEnumGenerator; import net.minestom.codegen.entitytypes.EntityTypeEnumGenerator; import net.minestom.codegen.fluids.FluidEnumGenerator; import net.minestom.codegen.items.ItemEnumGenerator; -import net.minestom.codegen.particles.ParticleEnumGenerator; +import net.minestom.codegen.particles.ParticleTypeEnumGenerator; import net.minestom.codegen.potions.PotionEffectEnumGenerator; import net.minestom.codegen.potions.PotionEnumGenerator; import net.minestom.codegen.sounds.SoundEnumGenerator; @@ -23,7 +23,7 @@ public class AllGenerators { EnchantmentEnumGenerator.main(args); EntityTypeEnumGenerator.main(args); SoundEnumGenerator.main(args); - ParticleEnumGenerator.main(args); + ParticleTypeEnumGenerator.main(args); StatsEnumGenerator.main(args); FluidEnumGenerator.main(args); RegistriesGenerator.main(args); diff --git a/src/generators/java/net/minestom/codegen/RegistriesGenerator.java b/src/generators/java/net/minestom/codegen/RegistriesGenerator.java index 30bd8aeb5..db9a5cefc 100644 --- a/src/generators/java/net/minestom/codegen/RegistriesGenerator.java +++ b/src/generators/java/net/minestom/codegen/RegistriesGenerator.java @@ -6,7 +6,7 @@ import net.minestom.server.fluids.Fluid; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.Material; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionType; import net.minestom.server.registry.ResourceGatherer; @@ -40,7 +40,7 @@ public class RegistriesGenerator implements CodeGenerator { new ImmutablePair<>(Material.class.getCanonicalName(), "AIR"), new ImmutablePair<>(Enchantment.class.getCanonicalName(), null), new ImmutablePair<>(EntityType.class.getCanonicalName(), "PIG"), - new ImmutablePair<>(Particle.class.getCanonicalName(), null), + new ImmutablePair<>(ParticleType.class.getCanonicalName(), null), new ImmutablePair<>(PotionType.class.getCanonicalName(), null), new ImmutablePair<>(PotionEffect.class.getCanonicalName(), null), new ImmutablePair<>(Sound.class.getCanonicalName(), null), diff --git a/src/generators/java/net/minestom/codegen/particles/ParticleEnumGenerator.java b/src/generators/java/net/minestom/codegen/particles/ParticleTypeEnumGenerator.java similarity index 82% rename from src/generators/java/net/minestom/codegen/particles/ParticleEnumGenerator.java rename to src/generators/java/net/minestom/codegen/particles/ParticleTypeEnumGenerator.java index 2bc6789bf..f146d1315 100644 --- a/src/generators/java/net/minestom/codegen/particles/ParticleEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/particles/ParticleTypeEnumGenerator.java @@ -1,17 +1,17 @@ package net.minestom.codegen.particles; import net.minestom.codegen.BasicEnumGenerator; -import net.minestom.codegen.stats.StatsEnumGenerator; import net.minestom.server.registry.ResourceGatherer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; +import java.util.Arrays; -public class ParticleEnumGenerator extends BasicEnumGenerator { +public class ParticleTypeEnumGenerator extends BasicEnumGenerator { - private static final Logger LOGGER = LoggerFactory.getLogger(ParticleEnumGenerator.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ParticleTypeEnumGenerator.class); public static void main(String[] args) throws IOException { String targetVersion; @@ -38,10 +38,10 @@ public class ParticleEnumGenerator extends BasicEnumGenerator { targetFolder.mkdirs(); } - new ParticleEnumGenerator(targetFolder); + new ParticleTypeEnumGenerator(targetFolder); } - private ParticleEnumGenerator(File targetFolder) throws IOException { + private ParticleTypeEnumGenerator(File targetFolder) throws IOException { super(targetFolder); } @@ -57,7 +57,7 @@ public class ParticleEnumGenerator extends BasicEnumGenerator { @Override public String getClassName() { - return "Particle"; + return "ParticleType"; } @Override diff --git a/src/main/java/net/minestom/server/MinecraftServer.java b/src/main/java/net/minestom/server/MinecraftServer.java index 2dff72bf5..8c45beccb 100644 --- a/src/main/java/net/minestom/server/MinecraftServer.java +++ b/src/main/java/net/minestom/server/MinecraftServer.java @@ -30,7 +30,7 @@ import net.minestom.server.network.netty.NettyServer; import net.minestom.server.network.packet.server.play.PluginMessagePacket; import net.minestom.server.network.packet.server.play.ServerDifficultyPacket; import net.minestom.server.network.packet.server.play.UpdateViewDistancePacket; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; import net.minestom.server.ping.ResponseDataConsumer; import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionType; @@ -159,7 +159,7 @@ public final class MinecraftServer { Enchantment.values(); EntityType.values(); Sound.values(); - Particle.values(); + ParticleType.values(); StatisticType.values(); Fluid.values(); diff --git a/src/main/java/net/minestom/server/command/builder/Arguments.java b/src/main/java/net/minestom/server/command/builder/Arguments.java index f34ecdac5..a5ca0475c 100644 --- a/src/main/java/net/minestom/server/command/builder/Arguments.java +++ b/src/main/java/net/minestom/server/command/builder/Arguments.java @@ -6,7 +6,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.ItemStack; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; import net.minestom.server.potion.PotionEffect; import net.minestom.server.utils.entity.EntityFinder; import net.minestom.server.utils.location.RelativeBlockPosition; @@ -156,8 +156,8 @@ public final class Arguments { */ @Deprecated @NotNull - public Particle getParticle(@NotNull String id) { - return (Particle) getObject(id); + public ParticleType getParticle(@NotNull String id) { + return (ParticleType) getObject(id); } /** diff --git a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java index 91c7e42ff..775042733 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java @@ -2,22 +2,22 @@ package net.minestom.server.command.builder.arguments.minecraft.registry; import net.minestom.server.command.builder.NodeMaker; import net.minestom.server.network.packet.server.play.DeclareCommandsPacket; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; import net.minestom.server.registry.Registries; import org.jetbrains.annotations.NotNull; /** - * Represents an argument giving a {@link Particle}. + * Represents an argument giving a {@link ParticleType}. */ -public class ArgumentParticle extends ArgumentRegistry { +public class ArgumentParticle extends ArgumentRegistry { public ArgumentParticle(String id) { super(id); } @Override - public Particle getRegistry(@NotNull String value) { - return Registries.getParticle(value); + public ParticleType getRegistry(@NotNull String value) { + return Registries.getParticleType(value); } @Override diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 0f64fba0c..1c6f97baa 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -158,6 +158,10 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P this(entityType, new Position()); } + public Metadata getMetadata() { + return this.metadata; + } + /** * Schedules a task to be run during the next entity tick. * It ensures that the task will be executed in the same thread as the entity (depending of the {@link ThreadProvider}). diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index e6f97cec9..57b6d0858 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -3,6 +3,7 @@ package net.minestom.server.entity; import net.minestom.server.chat.JsonMessage; import net.minestom.server.item.ItemStack; import net.minestom.server.network.packet.server.play.EntityMetaDataPacket; +import net.minestom.server.particle.Particle; import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.Direction; import net.minestom.server.utils.Vector; @@ -131,6 +132,15 @@ public class Metadata { return new Value<>(TYPE_POSE, value, writer -> writer.writeVarInt(value.ordinal())); } + public static Value Particle(@NotNull Particle value) { + return new Value<>(TYPE_PARTICLE, value, writer -> { + writer.writeVarInt(value.getType().getId()); + if (value.getDataWriter() != null) { + value.getDataWriter().accept(writer); + } + }); + } + public static final byte TYPE_BYTE = 0; public static final byte TYPE_VARINT = 1; public static final byte TYPE_FLOAT = 2; diff --git a/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java b/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java new file mode 100644 index 000000000..91bfc2a20 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java @@ -0,0 +1,31 @@ +package net.minestom.server.entity.metadata; + +import net.minestom.server.collision.BoundingBox; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class AgeableMobMeta extends PathfinderMobMeta { + + protected AgeableMobMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isBaby() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setBaby(boolean value) { + if (isBaby() == value) { + return; + } + BoundingBox bb = this.entity.getBoundingBox(); + if (value) { + setBoundingBox(bb.getWidth() / 2, bb.getHeight() / 2); + } else { + setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); + } + getMetadata().getIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java new file mode 100644 index 000000000..6429091f9 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java @@ -0,0 +1,168 @@ +package net.minestom.server.entity.metadata; + +import net.minestom.server.chat.JsonMessage; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class EntityMeta { + + private final static byte MASK_INDEX = 0; + + private final static byte ON_FIRE_BIT = 0x01; + private final static byte CROUNCHING_BIT = 0x02; + private final static byte SPRINTING_BIT = 0x08; + private final static byte SWIMMING_BIT = 0x10; + private final static byte INVISIBLE_BIT = 0x20; + private final static byte HAS_GLOWING_EFFECT_BIT = 0x40; + private final static byte FLYING_WITH_ELYTRA_BIT = (byte) 0x80; + + protected final Entity entity; + + protected EntityMeta(@NotNull Entity entity) { + this.entity = entity; + } + + public boolean isOnFire() { + return getMaskBit(MASK_INDEX, ON_FIRE_BIT); + } + + public void setOnFire(boolean value) { + setMaskBit(MASK_INDEX, ON_FIRE_BIT, value); + } + + public boolean isCrounching() { + return getMaskBit(MASK_INDEX, CROUNCHING_BIT); + } + + public void setCrounching(boolean value) { + setMaskBit(MASK_INDEX, CROUNCHING_BIT, value); + } + + public boolean isSprinting() { + return getMaskBit(MASK_INDEX, SPRINTING_BIT); + } + + public void setSprinting(boolean value) { + setMaskBit(MASK_INDEX, SPRINTING_BIT, value); + } + + public boolean isSwimming() { + return getMaskBit(MASK_INDEX, SWIMMING_BIT); + } + + public void setSwimming(boolean value) { + setMaskBit(MASK_INDEX, SWIMMING_BIT, value); + } + + public boolean isInvisible() { + return getMaskBit(MASK_INDEX, INVISIBLE_BIT); + } + + public void setInvisible(boolean value) { + setMaskBit(MASK_INDEX, INVISIBLE_BIT, value); + } + + public boolean isHasGlowingEffect() { + return getMaskBit(MASK_INDEX, HAS_GLOWING_EFFECT_BIT); + } + + public void setHasGlowingEffect(boolean value) { + setMaskBit(MASK_INDEX, HAS_GLOWING_EFFECT_BIT, value); + } + + public boolean isFlyingWithElytra() { + return getMaskBit(MASK_INDEX, FLYING_WITH_ELYTRA_BIT); + } + + public void setFlyingWithElytra(boolean value) { + setMaskBit(MASK_INDEX, FLYING_WITH_ELYTRA_BIT, value); + } + + public int getAirTicks() { + return getMetadata().getIndex((byte) 1, 300); + } + + public void setAirTicks(int value) { + getMetadata().setIndex((byte) 1, Metadata.VarInt(value)); + } + + public JsonMessage getCustomName() { + return getMetadata().getIndex((byte) 2, null); + } + + public void setCustomName(JsonMessage value) { + getMetadata().setIndex((byte) 2, Metadata.OptChat(value)); + } + + public boolean isCustomNameVisible() { + return getMetadata().getIndex((byte) 3, false); + } + + public void setCustomNameVisible(boolean value) { + getMetadata().setIndex((byte) 3, Metadata.Boolean(value)); + } + + public boolean isSilent() { + return getMetadata().getIndex((byte) 4, false); + } + + public void setSilent(boolean value) { + getMetadata().setIndex((byte) 4, Metadata.Boolean(value)); + } + + public boolean isHasNoGravity() { + return getMetadata().getIndex((byte) 5, false); + } + + public void setHasNoGravity(boolean value) { + getMetadata().setIndex((byte) 5, Metadata.Boolean(value)); + } + + public Entity.Pose getPose() { + return getMetadata().getIndex((byte) 6, Entity.Pose.STANDING); + } + + public void setPose(Entity.Pose value) { + getMetadata().setIndex((byte) 6, Metadata.Pose(value)); + } + + protected Metadata getMetadata() { + return this.entity.getMetadata(); + } + + protected byte getMask(byte index) { + return getMetadata().getIndex(index, (byte) 0); + } + + protected void setMask(byte index, byte mask) { + getMetadata().setIndex(index, Metadata.Byte(mask)); + } + + protected boolean getMaskBit(byte index, byte bit) { + return (getMask(index) & bit) == bit; + } + + protected void setMaskBit(byte index, byte bit, boolean value) { + byte mask = getMask(index); + boolean currentValue = (mask & bit) == bit; + if (currentValue == value) { + return; + } + if (value) { + mask |= bit; + } else { + mask &= ~bit; + } + setMask(index, mask); + } + + protected void setBoundingBox(double x, double y, double z) { + this.entity.setBoundingBox(x, y, z); + } + + protected void setBoundingBox(double width, double height) { + setBoundingBox(width, height, width); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java new file mode 100644 index 000000000..8b79a2a73 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java @@ -0,0 +1,96 @@ +package net.minestom.server.entity.metadata; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.Player; +import net.minestom.server.utils.BlockPosition; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class LivingEntityMeta extends EntityMeta { + + private final static byte MASK_INDEX = 7; + + private final static byte IS_HAND_ACTIVE_BIT = 0x01; + private final static byte ACTIVE_HAND_BIT = 0x02; + private final static byte IS_IN_SPIN_ATTACK_BIT = 0x04; + + protected LivingEntityMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isHandActive() { + return getMaskBit(MASK_INDEX, IS_HAND_ACTIVE_BIT); + } + + public void setHandActive(boolean value) { + setMaskBit(MASK_INDEX, IS_HAND_ACTIVE_BIT, value); + } + + @NotNull + public Player.Hand getActiveHand() { + return getMaskBit(MASK_INDEX, ACTIVE_HAND_BIT) ? Player.Hand.OFF : Player.Hand.MAIN; + } + + public void setActiveHand(@NotNull Player.Hand hand) { + setMaskBit(MASK_INDEX, ACTIVE_HAND_BIT, hand == Player.Hand.OFF); + } + + public boolean isInRiptideSpinAttack() { + return getMaskBit(MASK_INDEX, IS_IN_SPIN_ATTACK_BIT); + } + + public void setInRiptideSpinAttack(boolean value) { + setMaskBit(MASK_INDEX, IS_IN_SPIN_ATTACK_BIT, value); + } + + public float getHealth() { + return getMetadata().getIndex((byte) 8, 1F); + } + + public void setHealth(float value) { + getMetadata().setIndex((byte) 8, Metadata.Float(value)); + } + + public int getPotionEffectColor() { + return getMetadata().getIndex((byte) 9, 0); + } + + public void setPotionEffectColor(int value) { + getMetadata().setIndex((byte) 9, Metadata.VarInt(value)); + } + + public boolean isPotionEffectAmbient() { + return getMetadata().getIndex((byte) 10, false); + } + + public void setPotionEffectAmbient(boolean value) { + getMetadata().setIndex((byte) 10, Metadata.Boolean(value)); + } + + public int getNumberOfArrows() { + return getMetadata().getIndex((byte) 11, 0); + } + + public void setNumberOfArrows(int value) { + getMetadata().getIndex((byte) 11, Metadata.VarInt(value)); + } + + public int getHealthAddedByAbsorption() { + return getMetadata().getIndex((byte) 12, 0); + } + + public void setHealthAddedByAbsorption(int value) { + getMetadata().getIndex((byte) 12, Metadata.VarInt(value)); + } + + @Nullable + public BlockPosition getBedInWhichSleepingPosition() { + return getMetadata().getIndex((byte) 13, null); + } + + public void setBedInWhichSleepingPosition(@Nullable BlockPosition value) { + getMetadata().setIndex((byte) 13, Metadata.OptPosition(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/MobMeta.java b/src/main/java/net/minestom/server/entity/metadata/MobMeta.java new file mode 100644 index 000000000..7e4e96fe6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/MobMeta.java @@ -0,0 +1,42 @@ +package net.minestom.server.entity.metadata; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class MobMeta extends LivingEntityMeta { + + private final static byte MASK_INDEX = 14; + + private final static byte NO_AI_BIT = 0x01; + private final static byte IS_LEFT_HANDED_BIT = 0x02; + private final static byte IS_AGGRESSIVE_BIT = 0x04; + + protected MobMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isNoAi() { + return getMaskBit(MASK_INDEX, NO_AI_BIT); + } + + public void setNoAi(boolean value) { + setMaskBit(MASK_INDEX, NO_AI_BIT, value); + } + + public boolean isLeftHanded() { + return getMaskBit(MASK_INDEX, IS_LEFT_HANDED_BIT); + } + + public void setLeftHanded(boolean value) { + setMaskBit(MASK_INDEX, IS_LEFT_HANDED_BIT, value); + } + + public boolean isAggressive() { + return getMaskBit(MASK_INDEX, IS_AGGRESSIVE_BIT); + } + + public void setAggressive(boolean value) { + setMaskBit(MASK_INDEX, IS_AGGRESSIVE_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java b/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java new file mode 100644 index 000000000..ae736cd1c --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class PathfinderMobMeta extends MobMeta { + + protected PathfinderMobMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java b/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java new file mode 100644 index 000000000..60791ac6e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java @@ -0,0 +1,124 @@ +package net.minestom.server.entity.metadata; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jglrxavpok.hephaistos.nbt.NBT; + +public class PlayerMeta extends LivingEntityMeta { + + private final static byte MASK_INDEX = 16; + + private final static byte CAPE_BIT = 0x01; + private final static byte JACKET_BIT = 0x02; + private final static byte LEFT_SLEEVE_BIT = 0x04; + private final static byte RIGHT_SLEEVE_BIT = 0x08; + private final static byte LEFT_LEG_BIT = 0x10; + private final static byte RIGHT_LEG_BIT = 0x20; + private final static byte HAT_BIT = 0x40; + + public PlayerMeta(@NotNull Entity entity) { + super(entity); + } + + public float getAdditionalHearts() { + return getMetadata().getIndex((byte) 14, 0F); + } + + public void setAdditionalHearts(float value) { + getMetadata().setIndex((byte) 14, Metadata.Float(value)); + } + + public int getScore() { + return getMetadata().getIndex((byte) 15, 0); + } + + public void setScore(int value) { + getMetadata().setIndex((byte) 15, Metadata.VarInt(value)); + } + + public boolean isCapeEnabled() { + return getMaskBit(MASK_INDEX, CAPE_BIT); + } + + public void setCapeEnabled(boolean value) { + setMaskBit(MASK_INDEX, CAPE_BIT, value); + } + + public boolean isJacketEnabled() { + return getMaskBit(MASK_INDEX, JACKET_BIT); + } + + public void setJacketEnabled(boolean value) { + setMaskBit(MASK_INDEX, JACKET_BIT, value); + } + + public boolean isLeftSleeveEnabled() { + return getMaskBit(MASK_INDEX, LEFT_SLEEVE_BIT); + } + + public void setLeftSleeveEnabled(boolean value) { + setMaskBit(MASK_INDEX, LEFT_SLEEVE_BIT, value); + } + + public boolean isRightSleeveEnabled() { + return getMaskBit(MASK_INDEX, RIGHT_SLEEVE_BIT); + } + + public void setRightSleeveEnabled(boolean value) { + setMaskBit(MASK_INDEX, RIGHT_SLEEVE_BIT, value); + } + + public boolean isLeftLegEnabled() { + return getMaskBit(MASK_INDEX, LEFT_LEG_BIT); + } + + public void setLeftLegEnabled(boolean value) { + setMaskBit(MASK_INDEX, LEFT_LEG_BIT, value); + } + + public boolean isRightLegEnabled() { + return getMaskBit(MASK_INDEX, RIGHT_LEG_BIT); + } + + public void setRightLegEnabled(boolean value) { + setMaskBit(MASK_INDEX, RIGHT_LEG_BIT, value); + } + + public boolean isHatEnabled() { + return getMaskBit(MASK_INDEX, HAT_BIT); + } + + public void setHatEnabled(boolean value) { + setMaskBit(MASK_INDEX, HAT_BIT, value); + } + + public boolean isRightMainHand() { + return getMetadata().getIndex((byte) 17, (byte) 1) == (byte) 1; + } + + public void setRightMainHand(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Byte(value ? (byte) 1 : (byte) 0)); + } + + @Nullable + public NBT getLeftShoulderEntityData() { + return getMetadata().getIndex((byte) 18, null); + } + + public void setLeftShoulderEntityData(@Nullable NBT value) { + getMetadata().setIndex((byte) 18, Metadata.NBT(value)); + } + + @Nullable + public NBT getRightShoulderEntityData() { + return getMetadata().getIndex((byte) 19, null); + } + + public void setRightShoulderEntityData(@Nullable NBT value) { + getMetadata().setIndex((byte) 19, Metadata.NBT(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java b/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java new file mode 100644 index 000000000..1b12fb960 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.ambient; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.MobMeta; +import org.jetbrains.annotations.NotNull; + +public class AmbientCreatureMeta extends MobMeta { + + protected AmbientCreatureMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java b/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java new file mode 100644 index 000000000..e10cdab39 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.metadata.ambient; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class BatMeta extends AmbientCreatureMeta { + + private final static byte MASK_INDEX = 15; + + private final static byte IS_HANGING_BIT = 0x01; + + public BatMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isHanging() { + return getMaskBit(MASK_INDEX, IS_HANGING_BIT); + } + + public void setHanging(boolean value) { + setMaskBit(MASK_INDEX, IS_HANGING_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java new file mode 100644 index 000000000..c4d0f03ec --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java @@ -0,0 +1,80 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public class AbstractHorseMeta extends AnimalMeta { + + private final static byte MASK_INDEX = 16; + + private final static byte TAMED_BIT = 0x02; + private final static byte SADDLED_BIT = 0x04; + private final static byte HAS_BRED_BIT = 0x08; + private final static byte EATING_BIT = 0x10; + private final static byte REARING_BIT = 0x20; + private final static byte MOUTH_OPEN_BIT = 0x40; + + protected AbstractHorseMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isTamed() { + return getMaskBit(MASK_INDEX, TAMED_BIT); + } + + public void setTamed(boolean value) { + setMaskBit(MASK_INDEX, TAMED_BIT, value); + } + + public boolean isSaddled() { + return getMaskBit(MASK_INDEX, SADDLED_BIT); + } + + public void setSaddled(boolean value) { + setMaskBit(MASK_INDEX, SADDLED_BIT, value); + } + + public boolean isHasBred() { + return getMaskBit(MASK_INDEX, HAS_BRED_BIT); + } + + public void setHasBred(boolean value) { + setMaskBit(MASK_INDEX, HAS_BRED_BIT, value); + } + + public boolean isEating() { + return getMaskBit(MASK_INDEX, EATING_BIT); + } + + public void setEating(boolean value) { + setMaskBit(MASK_INDEX, EATING_BIT, value); + } + + public boolean isRearing() { + return getMaskBit(MASK_INDEX, REARING_BIT); + } + + public void setRearing(boolean value) { + setMaskBit(MASK_INDEX, REARING_BIT, value); + } + + public boolean isMouthOpen() { + return getMaskBit(MASK_INDEX, MOUTH_OPEN_BIT); + } + + public void setMouthOpen(boolean value) { + setMaskBit(MASK_INDEX, MOUTH_OPEN_BIT, value); + } + + public UUID getOwner() { + return getMetadata().getIndex((byte) 17, null); + } + + public void setOwner(UUID value) { + getMetadata().setIndex((byte) 17, Metadata.OptUUID(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java new file mode 100644 index 000000000..bc02993f8 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.AgeableMobMeta; +import org.jetbrains.annotations.NotNull; + +public class AnimalMeta extends AgeableMobMeta { + + protected AnimalMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java new file mode 100644 index 000000000..3b8d75200 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java @@ -0,0 +1,51 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class BeeMeta extends AnimalMeta { + + private final static byte MASK_INDEX = 16; + + private final static byte ANGRY_BIT = 0x02; + private final static byte HAS_STUNG_BIT = 0x04; + private final static byte HAS_NECTAR_BIT = 0x08; + + public BeeMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isAngry() { + return getMaskBit(MASK_INDEX, ANGRY_BIT); + } + + public void setAngry(boolean value) { + setMaskBit(MASK_INDEX, ANGRY_BIT, value); + } + + public boolean isHasStung() { + return getMaskBit(MASK_INDEX, HAS_STUNG_BIT); + } + + public void setHasStung(boolean value) { + setMaskBit(MASK_INDEX, HAS_STUNG_BIT, value); + } + + public boolean isHasNectar() { + return getMaskBit(MASK_INDEX, HAS_NECTAR_BIT); + } + + public void setHasNectar(boolean value) { + setMaskBit(MASK_INDEX, HAS_NECTAR_BIT, value); + } + + public int getAngerTicks() { + return getMetadata().getIndex((byte) 17, 0); + } + + public void setAngerTicks(int value) { + getMetadata().setIndex((byte) 17, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java new file mode 100644 index 000000000..282d5d274 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class ChestedHorseMeta extends AbstractHorseMeta { + + protected ChestedHorseMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isHasChest() { + return getMetadata().getIndex((byte) 18, false); + } + + public void setHasChest(boolean value) { + getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java new file mode 100644 index 000000000..35779ba05 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class ChickenMeta extends AnimalMeta { + + public ChickenMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java new file mode 100644 index 000000000..eaa984393 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class CowMeta extends AnimalMeta { + + public CowMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java new file mode 100644 index 000000000..b7294ce0e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class DonkeyMeta extends ChestedHorseMeta { + + public DonkeyMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java new file mode 100644 index 000000000..553d5972b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java @@ -0,0 +1,116 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.UUID; + +public class FoxMeta extends AnimalMeta { + + private final static byte MASK_INDEX = 17; + + private final static byte SITTING_BIT = 0x01; + private final static byte CROUCHING_BIT = 0x04; + private final static byte INTERESTED_BIT = 0x08; + private final static byte POUNCING_BIT = 0x10; + private final static byte SLEEPING_BIT = 0x20; + private final static byte FACEPLANTED_BIT = 0x40; + private final static byte DEFENDING_BIT = (byte) 0x80; + + public FoxMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Type getType() { + return Type.VALUES[getMetadata().getIndex((byte) 16, 0)]; + } + + public void setType(@NotNull Type type) { + getMetadata().setIndex((byte) 16, Metadata.VarInt(type.ordinal())); + } + + public boolean isSitting() { + return getMaskBit(MASK_INDEX, SITTING_BIT); + } + + public void setSitting(boolean value) { + setMaskBit(MASK_INDEX, SITTING_BIT, value); + } + + public boolean isCrounching() { + return getMaskBit(MASK_INDEX, CROUCHING_BIT); + } + + public void setCrounching(boolean value) { + setMaskBit(MASK_INDEX, CROUCHING_BIT, value); + } + + public boolean isInterested() { + return getMaskBit(MASK_INDEX, INTERESTED_BIT); + } + + public void setInterested(boolean value) { + setMaskBit(MASK_INDEX, INTERESTED_BIT, value); + } + + public boolean isPouncing() { + return getMaskBit(MASK_INDEX, POUNCING_BIT); + } + + public void setPouncing(boolean value) { + setMaskBit(MASK_INDEX, POUNCING_BIT, value); + } + + public boolean isSleeping() { + return getMaskBit(MASK_INDEX, SLEEPING_BIT); + } + + public void setSleeping(boolean value) { + setMaskBit(MASK_INDEX, SLEEPING_BIT, value); + } + + public boolean isFaceplanted() { + return getMaskBit(MASK_INDEX, FACEPLANTED_BIT); + } + + public void setFaceplanted(boolean value) { + setMaskBit(MASK_INDEX, FACEPLANTED_BIT, value); + } + + public boolean isDefending() { + return getMaskBit(MASK_INDEX, DEFENDING_BIT); + } + + public void setDefending(boolean value) { + setMaskBit(MASK_INDEX, DEFENDING_BIT, value); + } + + @Nullable + public UUID getFirstUUID() { + return getMetadata().getIndex((byte) 18, null); + } + + public void setFirstUUID(@Nullable UUID value) { + getMetadata().setIndex((byte) 18, Metadata.OptUUID(value)); + } + + @Nullable + public UUID getSecondUUID() { + return getMetadata().getIndex((byte) 19, null); + } + + public void setSecondUUID(@Nullable UUID value) { + getMetadata().setIndex((byte) 19, Metadata.OptUUID(value)); + } + + public enum Type { + RED, + SNOW; + + private final static Type[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java new file mode 100644 index 000000000..62879979a --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class HoglinMeta extends AnimalMeta { + + public HoglinMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isImmuneToZombification() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setImmuneToZombification(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java new file mode 100644 index 000000000..14247509b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java @@ -0,0 +1,84 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class HorseMeta extends AbstractHorseMeta { + + public HorseMeta(@NotNull Entity entity) { + super(entity); + } + + public Variant getVariant() { + return getVariantFromID(getMetadata().getIndex((byte) 18, 0)); + } + + public void setVariant(Variant variant) { + getMetadata().setIndex((byte) 18, Metadata.VarInt(getVariantID(variant.marking, variant.color))); + } + + public static int getVariantID(@NotNull Marking marking, @NotNull Color color) { + return (marking.ordinal() << 8) + color.ordinal(); + } + + public static Variant getVariantFromID(int variantID) { + return new Variant( + Marking.VALUES[variantID >> 8], + Color.VALUES[variantID & 0xFF] + ); + } + + public static class Variant { + + private Marking marking; + private Color color; + + public Variant(@NotNull Marking marking, @NotNull Color color) { + this.marking = marking; + this.color = color; + } + + @NotNull + public Marking getMarking() { + return this.marking; + } + + public void setMarking(@NotNull Marking marking) { + this.marking = marking; + } + + @NotNull + public Color getColor() { + return this.color; + } + + public void setColor(@NotNull Color color) { + this.color = color; + } + + } + + public enum Marking { + NONE, + WHITE, + WHITE_FIELD, + WHITE_DOTS, + BLACK_DOTS; + + private final static Marking[] VALUES = values(); + } + + public enum Color { + WHITE, + CREAMY, + CHESTNUT, + BROWN, + BLACK, + GRAY, + DARK_BROWN; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java new file mode 100644 index 000000000..124f0fedc --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java @@ -0,0 +1,47 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.animal.EntityLlama; +import org.jetbrains.annotations.NotNull; + +public class LlamaMeta extends ChestedHorseMeta { + + public LlamaMeta(@NotNull Entity entity) { + super(entity); + } + + public int getStrength() { + return getMetadata().getIndex((byte) 19, 0); + } + + public void setStrength(int value) { + getMetadata().setIndex((byte) 19, Metadata.VarInt(value)); + } + + public int getCarpetColor() { + return getMetadata().getIndex((byte) 20, -1); + } + + public void setCarpetColor(int value) { + getMetadata().setIndex((byte) 20, Metadata.VarInt(value)); + } + + public Variant getVariant() { + return Variant.VALUES[getMetadata().getIndex((byte) 21, 0)]; + } + + public void setVariant(EntityLlama.Variant value) { + getMetadata().setIndex((byte) 21, Metadata.VarInt(value.ordinal())); + } + + public enum Variant { + CREAMY, + WHITE, + BROWN, + GRAY; + + private final static Variant[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java new file mode 100644 index 000000000..60cff39ef --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java @@ -0,0 +1,29 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +import java.util.Locale; + +public class MooshroomMeta extends CowMeta { + + public MooshroomMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Variant getVariant() { + return Variant.valueOf(getMetadata().getIndex((byte) 16, "red").toUpperCase(Locale.ROOT)); + } + + public void setVariant(@NotNull Variant value) { + getMetadata().setIndex((byte) 16, Metadata.String(value.name().toLowerCase(Locale.ROOT))); + } + + public enum Variant { + RED, + BROWN; + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java new file mode 100644 index 000000000..025adf145 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class MuleMeta extends ChestedHorseMeta { + + public MuleMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java new file mode 100644 index 000000000..5fb002a04 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class OcelotMeta extends AnimalMeta { + + public OcelotMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isTrusting() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setTrusting(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java new file mode 100644 index 000000000..f8635c364 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java @@ -0,0 +1,106 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class PandaMeta extends AnimalMeta { + + private final static byte MASK_INDEX = 21; + + private final static byte SNEEZING_BIT = 0x02; + private final static byte ROLLING_BIT = 0x04; + private final static byte SITTING_BIT = 0x08; + private final static byte ON_BACK_BIT = 0x10; + + public PandaMeta(@NotNull Entity entity) { + super(entity); + } + + public int getBreedTimer() { + return getMetadata().getIndex((byte) 16, 0); + } + + public void setBreedTimer(int value) { + getMetadata().setIndex((byte) 16, Metadata.VarInt(value)); + } + + public int getSneezeTimer() { + return getMetadata().getIndex((byte) 17, 0); + } + + public void setSneezeTimer(int value) { + getMetadata().setIndex((byte) 17, Metadata.VarInt(value)); + } + + public int getEatTimer() { + return getMetadata().getIndex((byte) 18, 0); + } + + public void setEatTimer(int value) { + getMetadata().setIndex((byte) 18, Metadata.VarInt(value)); + } + + @NotNull + public Gene getMainGene() { + return Gene.VALUES[getMetadata().getIndex((byte) 19, (byte) 0)]; + } + + public void setMainGene(@NotNull Gene value) { + getMetadata().setIndex((byte) 19, Metadata.Byte((byte) value.ordinal())); + } + + @NotNull + public Gene getHiddenGene() { + return Gene.VALUES[getMetadata().getIndex((byte) 20, (byte) 0)]; + } + + public void setHiddenGene(@NotNull Gene value) { + getMetadata().setIndex((byte) 20, Metadata.Byte((byte) value.ordinal())); + } + + public boolean isSneezing() { + return getMaskBit(MASK_INDEX, SNEEZING_BIT); + } + + public void setSneezing(boolean value) { + setMaskBit(MASK_INDEX, SNEEZING_BIT, value); + } + + public boolean isRolling() { + return getMaskBit(MASK_INDEX, ROLLING_BIT); + } + + public void setRolling(boolean value) { + setMaskBit(MASK_INDEX, ROLLING_BIT, value); + } + + public boolean isSitting() { + return getMaskBit(MASK_INDEX, SITTING_BIT); + } + + public void setSitting(boolean value) { + setMaskBit(MASK_INDEX, SITTING_BIT, value); + } + + public boolean isOnBack() { + return getMaskBit(MASK_INDEX, ON_BACK_BIT); + } + + public void setOnBack(boolean value) { + setMaskBit(MASK_INDEX, ON_BACK_BIT, value); + } + + public enum Gene { + NORMAL, + AGGRESSIVE, + LAZY, + WORRIED, + PLAYFUL, + WEAK, + BROWN; + + private final static Gene[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java new file mode 100644 index 000000000..76a542590 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java @@ -0,0 +1,29 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class PigMeta extends AnimalMeta { + + public PigMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isHasSaddle() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setHasSaddle(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + + public int getTimeToBoost() { + return getMetadata().getIndex((byte) 17, 0); + } + + public void setTimeToBoost(int value) { + getMetadata().getIndex((byte) 17, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java new file mode 100644 index 000000000..283b28c7f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class PolarBearMeta extends AnimalMeta { + + public PolarBearMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isStandingUp() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setStandingUp(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java new file mode 100644 index 000000000..366b13a25 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java @@ -0,0 +1,39 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class RabbitMeta extends AnimalMeta { + + public RabbitMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Type getType() { + int id = getMetadata().getIndex((byte) 16, 0); + if (id == 99) { + return Type.KILLER_BUNNY; + } + return Type.VALUES[id]; + } + + public void setType(@NotNull Type value) { + int id = value == Type.KILLER_BUNNY ? 99 : value.ordinal(); + getMetadata().setIndex((byte) 16, Metadata.VarInt(id)); + } + + public enum Type { + BROWN, + WHITE, + BLACK, + BLACK_AND_WHITE, + GOLD, + SALT_AND_PEPPER, + KILLER_BUNNY; + + private final static Type[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java new file mode 100644 index 000000000..20046c84b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java @@ -0,0 +1,39 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SheepMeta extends AnimalMeta { + + private final static byte MASK_INDEX = 16; + + private final static byte COLOR_BITS = 0x0F; + private final static byte SHEARED_BIT = 0x10; + + public SheepMeta(@NotNull Entity entity) { + super(entity); + } + + public int getColor() { + return getMask(MASK_INDEX) & COLOR_BITS; + } + + public void setColor(byte color) { + byte before = getMask(MASK_INDEX); + byte mask = before; + mask &= ~COLOR_BITS; + mask |= (color & COLOR_BITS); + if (mask != before) { + setMask(MASK_INDEX, mask); + } + } + + public boolean isSheared() { + return getMaskBit(MASK_INDEX, SHEARED_BIT); + } + + public void setSheared(boolean value) { + setMaskBit(MASK_INDEX, SHEARED_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java new file mode 100644 index 000000000..309e297d7 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SkeletonHorseMeta extends AbstractHorseMeta { + + public SkeletonHorseMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java new file mode 100644 index 000000000..c448076f2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java @@ -0,0 +1,37 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class StriderMeta extends AnimalMeta { + + public StriderMeta(@NotNull Entity entity) { + super(entity); + } + + public int getTimeToBoost() { + return getMetadata().getIndex((byte) 16, 0); + } + + public void setTimeToBoost(int value) { + getMetadata().setIndex((byte) 16, Metadata.VarInt(value)); + } + + public boolean isShaking() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setShaking(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + + public boolean isHasSaddle() { + return getMetadata().getIndex((byte) 18, false); + } + + public void setHasSaddle(boolean value) { + getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java new file mode 100644 index 000000000..652e84ba5 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java @@ -0,0 +1,64 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.utils.BlockPosition; +import org.jetbrains.annotations.NotNull; + +public class TurtleMeta extends AnimalMeta { + + public TurtleMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public BlockPosition getHomePosition() { + return getMetadata().getIndex((byte) 16, new BlockPosition(0, 0, 0)); + } + + public void setBlockPosition(@NotNull BlockPosition value) { + getMetadata().setIndex((byte) 16, Metadata.Position(value)); + } + + public boolean isHasEgg() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setHasEgg(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + + public boolean isLayingEgg() { + return getMetadata().getIndex((byte) 18, false); + } + + public void setLayingEgg(boolean value) { + getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + } + + @NotNull + public BlockPosition getTravelPosition() { + return getMetadata().getIndex((byte) 19, new BlockPosition(0, 0, 0)); + } + + public void setTravelPosition(@NotNull BlockPosition value) { + getMetadata().setIndex((byte) 19, Metadata.Position(value)); + } + + public boolean isGoingHome() { + return getMetadata().getIndex((byte) 20, false); + } + + public void setGoingHome(boolean value) { + getMetadata().setIndex((byte) 20, Metadata.Boolean(value)); + } + + public boolean isTravelling() { + return getMetadata().getIndex((byte) 21, false); + } + + public void setTravelling(boolean value) { + getMetadata().setIndex((byte) 21, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java new file mode 100644 index 000000000..be373b9d9 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.animal; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class ZombieHorseMeta extends AbstractHorseMeta { + + public ZombieHorseMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java new file mode 100644 index 000000000..9bcb815a9 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java @@ -0,0 +1,62 @@ +package net.minestom.server.entity.metadata.animal.tameable; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class CatMeta extends TameableAnimalMeta { + + public CatMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Color getColor() { + return Color.VALUES[getMetadata().getIndex((byte) 18, 1)]; + } + + public void setColor(@NotNull Color value) { + getMetadata().setIndex((byte) 18, Metadata.VarInt(value.ordinal())); + } + + public boolean isLying() { + return getMetadata().getIndex((byte) 19, false); + } + + public void setLying(boolean value) { + getMetadata().setIndex((byte) 19, Metadata.Boolean(value)); + } + + public boolean isRelaxed() { + return getMetadata().getIndex((byte) 20, false); + } + + public void setRelaxed(boolean value) { + getMetadata().setIndex((byte) 20, Metadata.Boolean(value)); + } + + public int getCollarColor() { + return getMetadata().getIndex((byte) 21, 14); + } + + public void setCollarColor(int value) { + getMetadata().setIndex((byte) 21, Metadata.VarInt(value)); + } + + public enum Color { + TABBY, + BLACK, + RED, + SIAMESE, + BRITISH_SHORTHAIR, + CALICO, + PERSIAN, + RAGDOLL, + WHITE, + JELLIE, + ALL_BLACK; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java new file mode 100644 index 000000000..5915a6c9c --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java @@ -0,0 +1,32 @@ +package net.minestom.server.entity.metadata.animal.tameable; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class ParrotMeta extends TameableAnimalMeta { + + public ParrotMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Color getColor() { + return Color.VALUES[getMetadata().getIndex((byte) 18, 0)]; + } + + public void setColor(@NotNull Color value) { + getMetadata().setIndex((byte) 18, Metadata.VarInt(value.ordinal())); + } + + public enum Color { + RED_BLUE, + BLUE, + GREEN, + YELLOW_BLUE, + GREY; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java new file mode 100644 index 000000000..b52702f58 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java @@ -0,0 +1,46 @@ +package net.minestom.server.entity.metadata.animal.tameable; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.animal.AnimalMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public class TameableAnimalMeta extends AnimalMeta { + + private final static byte MASK_INDEX = 16; + + private final static byte SITTING_BIT = 0x01; + private final static byte TAMED_BIT = 0x04; + + protected TameableAnimalMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isSitting() { + return getMaskBit(MASK_INDEX, SITTING_BIT); + } + + public void setSitting(boolean value) { + setMaskBit(MASK_INDEX, SITTING_BIT, value); + } + + public boolean isTamed() { + return getMaskBit(MASK_INDEX, TAMED_BIT); + } + + public void setTamed(boolean value) { + setMaskBit(MASK_INDEX, TAMED_BIT, value); + } + + @NotNull + public UUID getOwner() { + return getMetadata().getIndex((byte) 17, null); + } + + public void setOwner(@NotNull UUID value) { + getMetadata().setIndex((byte) 17, Metadata.OptUUID(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java new file mode 100644 index 000000000..bbb3f20b4 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java @@ -0,0 +1,37 @@ +package net.minestom.server.entity.metadata.animal.tameable; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class WolfMeta extends TameableAnimalMeta { + + public WolfMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isBegging() { + return getMetadata().getIndex((byte) 18, false); + } + + public void setBegging(boolean value) { + getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + } + + public int getCollarColor() { + return getMetadata().getIndex((byte) 19, 14); + } + + public void setCollarColor(int value) { + getMetadata().setIndex((byte) 19, Metadata.VarInt(value)); + } + + public int getAngerTime() { + return getMetadata().getIndex((byte) 20, 0); + } + + public void setAngerTime(int value) { + getMetadata().setIndex((byte) 20, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java new file mode 100644 index 000000000..4e6173d00 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java @@ -0,0 +1,43 @@ +package net.minestom.server.entity.metadata.arrow; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class AbstractArrowMeta extends EntityMeta { + + private final static byte MASK_INDEX = 7; + + private final static byte CRITICAL_BIT = 0x01; + private final static byte NO_CLIP_BIT = 0x01; + + protected AbstractArrowMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isCritical() { + return getMaskBit(MASK_INDEX, CRITICAL_BIT); + } + + public void setCritical(boolean value) { + setMaskBit(MASK_INDEX, CRITICAL_BIT, value); + } + + public boolean isNoClip() { + return getMaskBit(MASK_INDEX, NO_CLIP_BIT); + } + + public void setNoClip(boolean value) { + setMaskBit(MASK_INDEX, NO_CLIP_BIT, value); + } + + public byte getPiercingLevel() { + return getMetadata().getIndex((byte) 8, (byte) 0); + } + + public void setPiercingLevel(byte value) { + getMetadata().setIndex((byte) 8, Metadata.Byte(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java new file mode 100644 index 000000000..bb4a30343 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java @@ -0,0 +1,22 @@ +package net.minestom.server.entity.metadata.arrow; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class ArrowMeta extends EntityMeta { + + public ArrowMeta(@NotNull Entity entity) { + super(entity); + } + + public int getColor() { + return getMetadata().getIndex((byte) 9, -1); + } + + public void setColor(int value) { + getMetadata().setIndex((byte) 9, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java new file mode 100644 index 000000000..8b0768cf3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.arrow; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SpectralArrowMeta extends AbstractArrowMeta { + + public SpectralArrowMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java new file mode 100644 index 000000000..e21a364d2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java @@ -0,0 +1,29 @@ +package net.minestom.server.entity.metadata.arrow; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class ThrownTridentMeta extends AbstractArrowMeta { + + public ThrownTridentMeta(@NotNull Entity entity) { + super(entity); + } + + public int getLoyaltyLevel() { + return getMetadata().getIndex((byte) 9, 0); + } + + public void setLoyaltyLevel(int value) { + getMetadata().setIndex((byte) 9, Metadata.VarInt(value)); + } + + public boolean isHasEnchantmentGlint() { + return getMetadata().getIndex((byte) 10, false); + } + + public void setHasEnchantmentGlint(boolean value) { + getMetadata().setIndex((byte) 10, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java b/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java new file mode 100644 index 000000000..86259d12b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.flying; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.MobMeta; +import org.jetbrains.annotations.NotNull; + +public class FlyingMeta extends MobMeta { + + protected FlyingMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java b/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java new file mode 100644 index 000000000..a7084b6d1 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.flying; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class GhastMeta extends FlyingMeta { + + public GhastMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isAttacking() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setAttacking(boolean value) { + getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java b/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java new file mode 100644 index 000000000..41d6c89f3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.flying; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class PhantomMeta extends FlyingMeta { + + public PhantomMeta(@NotNull Entity entity) { + super(entity); + } + + public int getSize() { + return getMetadata().getIndex((byte) 15, 0); + } + + public void setSize(int value) { + getMetadata().setIndex((byte) 15, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java new file mode 100644 index 000000000..b56f3f4bb --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.golem; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.PathfinderMobMeta; +import org.jetbrains.annotations.NotNull; + +public class AbstractGolemMeta extends PathfinderMobMeta { + + protected AbstractGolemMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java new file mode 100644 index 000000000..ae6777a72 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.metadata.golem; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class IronGolemMeta extends AbstractGolemMeta { + + private final static byte MASK_INDEX = 15; + + private final static byte PLAYER_CREATED_BIT = 0x01; + + public IronGolemMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isPlayerCreated() { + return getMaskBit(MASK_INDEX, PLAYER_CREATED_BIT); + } + + public void setPlayerCreated(boolean value) { + setMaskBit(MASK_INDEX, PLAYER_CREATED_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java new file mode 100644 index 000000000..450672929 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java @@ -0,0 +1,47 @@ +package net.minestom.server.entity.metadata.golem; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.utils.BlockPosition; +import net.minestom.server.utils.Direction; +import org.jetbrains.annotations.NotNull; + +public class ShulkerMeta extends AbstractGolemMeta { + + public ShulkerMeta(@NotNull Entity entity) { + super(entity); + } + + public Direction getAttachFace() { + return getMetadata().getIndex((byte) 15, Direction.DOWN); + } + + public void setAttachFace(Direction value) { + getMetadata().setIndex((byte) 15, Metadata.Direction(value)); + } + + public BlockPosition getAttachmentPosition() { + return getMetadata().getIndex((byte) 16, null); + } + + public void setAttachmentPosition(BlockPosition value) { + getMetadata().setIndex((byte) 16, Metadata.OptPosition(value)); + } + + public byte getShieldHeight() { + return getMetadata().getIndex((byte) 17, (byte) 0); + } + + public void setShieldHeight(byte value) { + getMetadata().setIndex((byte) 17, Metadata.Byte(value)); + } + + public byte getColor() { + return getMetadata().getIndex((byte) 18, (byte) 10); + } + + public void setColor(byte value) { + getMetadata().setIndex((byte) 18, Metadata.Byte(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java new file mode 100644 index 000000000..ecbfef53a --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.golem; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class SnowGolemMeta extends AbstractGolemMeta { + + public SnowGolemMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isHasPumpkinHat() { + return getMetadata().getIndex((byte) 15, (byte) 0x10) == (byte) 0x10; + } + + public void setHasPumpkinHat(boolean value) { + getMetadata().setIndex((byte) 15, Metadata.Byte(value ? (byte) 0x10 : (byte) 0x00)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java new file mode 100644 index 000000000..6f143a622 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class AbstractMinecartContainerMeta extends AbstractMinecartMeta { + + protected AbstractMinecartContainerMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java new file mode 100644 index 000000000..a17b8c3f0 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java @@ -0,0 +1,55 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class AbstractMinecartMeta extends EntityMeta { + + protected AbstractMinecartMeta(@NotNull Entity entity) { + super(entity); + } + + public int getShakingPower() { + return getMetadata().getIndex((byte) 7, 0); + } + + public void setShakingPower(int value) { + getMetadata().setIndex((byte) 7, Metadata.VarInt(value)); + } + + public int getShakingDirection() { + return getMetadata().getIndex((byte) 8, 1); + } + + public void setShakingDirection(int value) { + getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + } + + public float getShakingMultiplier() { + return getMetadata().getIndex((byte) 9, 0F); + } + + public void setShakingMultiplier(float value) { + getMetadata().setIndex((byte) 9, Metadata.Float(value)); + } + + public int getCustomBlockIdAndDamage() { + return getMetadata().getIndex((byte) 10, 0); + } + + public void setCustomBlockIdAndDamage(int value) { + getMetadata().setIndex((byte) 10, Metadata.VarInt(value)); + } + + // in 16th of a block + public int getCustomBlockYPosition() { + return getMetadata().getIndex((byte) 11, 6); + } + + public void setCustomBlockYPosition(int value) { + getMetadata().setIndex((byte) 11, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartChestMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartChestMeta.java new file mode 100644 index 000000000..6994a4376 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartChestMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class MinecartChestMeta extends AbstractMinecartContainerMeta { + + public MinecartChestMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartCommandBlockMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartCommandBlockMeta.java new file mode 100644 index 000000000..57311c2c2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartCommandBlockMeta.java @@ -0,0 +1,33 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.chat.ColoredText; +import net.minestom.server.chat.JsonMessage; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class MinecartCommandBlockMeta extends AbstractMinecartMeta { + + public MinecartCommandBlockMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public String getCommand() { + return getMetadata().getIndex((byte) 13, ""); + } + + public void setCommand(@NotNull String value) { + getMetadata().setIndex((byte) 13, Metadata.String(value)); + } + + @NotNull + public JsonMessage getLastOutput() { + return getMetadata().getIndex((byte) 14, ColoredText.of("")); + } + + public void setLastOutput(@NotNull JsonMessage value) { + getMetadata().setIndex((byte) 14, Metadata.Chat(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartFurnaceMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartFurnaceMeta.java new file mode 100644 index 000000000..286dbeb62 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartFurnaceMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class MinecartFurnaceMeta extends AbstractMinecartMeta { + + public MinecartFurnaceMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isHasFuel() { + return getMetadata().getIndex((byte) 13, false); + } + + public void setHasFuel(boolean value) { + getMetadata().setIndex((byte) 13, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartHopperMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartHopperMeta.java new file mode 100644 index 000000000..ca6405ece --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartHopperMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class MinecartHopperMeta extends AbstractMinecartContainerMeta { + + public MinecartHopperMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java new file mode 100644 index 000000000..5aeb35be2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class MinecartMeta extends AbstractMinecartMeta { + + public MinecartMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartTntMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartTntMeta.java new file mode 100644 index 000000000..b260d13a7 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartTntMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.minecart; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class MinecartTntMeta extends AbstractMinecartMeta { + + public MinecartTntMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java new file mode 100644 index 000000000..4f392cc2f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class BasePiglinMeta extends MonsterMeta { + + protected BasePiglinMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isImmuneToZombification() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setImmuneToZombification(boolean value) { + getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java new file mode 100644 index 000000000..d626640eb --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class BlazeMeta extends MonsterMeta { + + private final static byte MASK_INDEX = 15; + + private final static byte ON_FIRE_BIT = 0x01; + + public BlazeMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isOnFire() { + return getMaskBit(MASK_INDEX, ON_FIRE_BIT); + } + + public void setOnFire(boolean value) { + setMaskBit(MASK_INDEX, ON_FIRE_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java new file mode 100644 index 000000000..c615f0010 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java @@ -0,0 +1,44 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class CreeperMeta extends MonsterMeta { + + public CreeperMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public State getState() { + int id = getMetadata().getIndex((byte) 15, -1); + return id == -1 ? State.IDLE : State.FUSE; + } + + public void setState(@NotNull State value) { + getMetadata().setIndex((byte) 15, Metadata.VarInt(value == State.IDLE ? -1 : 1)); + } + + public boolean isCharged() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setCharged(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + + public boolean isIgnited() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setIgnited(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + + public enum State { + IDLE, + FUSE + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java new file mode 100644 index 000000000..de7be5c13 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class ElderGuardianMeta extends GuardianMeta { + + public ElderGuardianMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java new file mode 100644 index 000000000..161b197c5 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java @@ -0,0 +1,38 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class EndermanMeta extends MonsterMeta { + + public EndermanMeta(@NotNull Entity entity) { + super(entity); + } + + public Integer getCarriedBlockID() { + return getMetadata().getIndex((byte) 15, null); + } + + public void setCarriedBlockID(@Nullable Integer value) { + getMetadata().setIndex((byte) 15, Metadata.OptBlockID(value)); + } + + public boolean isScreaming() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setScreaming(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + + public boolean isStaring() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setStaring(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java new file mode 100644 index 000000000..796d0f9b2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class EndermineMeta extends MonsterMeta { + + public EndermineMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java new file mode 100644 index 000000000..2987ddfc2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class GiantMeta extends MonsterMeta { + + public GiantMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java new file mode 100644 index 000000000..16bcfb73d --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java @@ -0,0 +1,32 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class GuardianMeta extends MonsterMeta { + + private Entity target; + + public GuardianMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isRetractingSpikes() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setRetractingSpikes(boolean retractingSpikes) { + getMetadata().setIndex((byte) 15, Metadata.Boolean(retractingSpikes)); + } + + public Entity getTarget() { + return this.target; + } + + public void setTarget(@NotNull Entity target) { + this.target = target; + getMetadata().setIndex((byte) 16, Metadata.VarInt(target.getEntityId())); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java new file mode 100644 index 000000000..54a3d539e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.PathfinderMobMeta; +import org.jetbrains.annotations.NotNull; + +public class MonsterMeta extends PathfinderMobMeta { + + protected MonsterMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java new file mode 100644 index 000000000..5f43cede3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class PiglinBruteMeta extends BasePiglinMeta { + + public PiglinBruteMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java new file mode 100644 index 000000000..ae56a49b0 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java @@ -0,0 +1,47 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.collision.BoundingBox; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class PiglinMeta extends BasePiglinMeta { + + public PiglinMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isBaby() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setBaby(boolean value) { + if (isBaby() == value) { + return; + } + BoundingBox bb = this.entity.getBoundingBox(); + if (value) { + setBoundingBox(bb.getWidth() / 2, bb.getHeight() / 2); + } else { + setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); + } + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + + public boolean isChargingCrossbow() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setChargingCrossbow(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + + public boolean isDancing() { + return getMetadata().getIndex((byte) 18, false); + } + + public void setDancing(boolean value) { + getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java new file mode 100644 index 000000000..34d33633d --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SilverfishMeta extends MonsterMeta { + + public SilverfishMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java new file mode 100644 index 000000000..6c4ef423d --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SpiderMeta extends MonsterMeta { + + private final static byte MASK_INDEX = 15; + + private final static byte CLIMBING_BIT = 0x01; + + public SpiderMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isClimbing() { + return getMaskBit(MASK_INDEX, CLIMBING_BIT); + } + + public void setClimbing(boolean value) { + setMaskBit(MASK_INDEX, CLIMBING_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java new file mode 100644 index 000000000..85d7d12ed --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class VexMeta extends MonsterMeta { + + private final static byte MASK_INDEX = 15; + + private final static byte ATTACKING_BIT = 0x01; + + public VexMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isAttacking() { + return getMaskBit(MASK_INDEX, ATTACKING_BIT); + } + + public void setAttacking(boolean value) { + setMaskBit(MASK_INDEX, ATTACKING_BIT, value); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java new file mode 100644 index 000000000..82c5c4be5 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java @@ -0,0 +1,56 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class WitherMeta extends MonsterMeta { + + private Entity centerHead; + private Entity leftHead; + private Entity rightHead; + + public WitherMeta(@NotNull Entity entity) { + super(entity); + } + + @Nullable + public Entity getCenterHead() { + return this.centerHead; + } + + public void setCenterHead(@Nullable Entity value) { + this.centerHead = value; + getMetadata().setIndex((byte) 15, Metadata.VarInt(value == null ? 0 : value.getEntityId())); + } + + @Nullable + public Entity getLeftHead() { + return this.leftHead; + } + + public void setLeftHead(@Nullable Entity value) { + this.leftHead = value; + getMetadata().setIndex((byte) 16, Metadata.VarInt(value == null ? 0 : value.getEntityId())); + } + + @Nullable + public Entity getRightHead() { + return this.rightHead; + } + + public void setRightHead(@Nullable Entity value) { + this.rightHead = value; + getMetadata().setIndex((byte) 17, Metadata.VarInt(value == null ? 0 : value.getEntityId())); + } + + public int getInvulnerableTime() { + return getMetadata().getIndex((byte) 18, 0); + } + + public void setInvulnerableTime(int value) { + getMetadata().setIndex((byte) 18, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java new file mode 100644 index 000000000..19582f838 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java @@ -0,0 +1,31 @@ +package net.minestom.server.entity.metadata.monster; + +import net.minestom.server.collision.BoundingBox; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class ZoglinMeta extends MonsterMeta { + + public ZoglinMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isBaby() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setBaby(boolean value) { + if (isBaby() == value) { + return; + } + BoundingBox bb = this.entity.getBoundingBox(); + if (value) { + setBoundingBox(bb.getWidth() / 2, bb.getHeight() / 2); + } else { + setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); + } + getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java new file mode 100644 index 000000000..0fc9afbab --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class AbstractIllagerMeta extends RaiderMeta { + + protected AbstractIllagerMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java new file mode 100644 index 000000000..d78c5600c --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class EvokerMeta extends SpellcasterIllagerMeta { + + public EvokerMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java new file mode 100644 index 000000000..acb8a95e6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class IllusionerMeta extends SpellcasterIllagerMeta { + + public IllusionerMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java new file mode 100644 index 000000000..1b895834b --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class PillagerMeta extends AbstractIllagerMeta { + + public PillagerMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java new file mode 100644 index 000000000..7d9bb30d3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java @@ -0,0 +1,22 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.monster.MonsterMeta; +import org.jetbrains.annotations.NotNull; + +public class RaiderMeta extends MonsterMeta { + + protected RaiderMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isCelebrating() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setCelebrating(boolean value) { + getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java new file mode 100644 index 000000000..73f7c1ca8 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class RavagerMeta extends RaiderMeta { + + public RavagerMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java new file mode 100644 index 000000000..623e3eecb --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java @@ -0,0 +1,34 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.monster.EntitySpellcasterIllager; +import org.jetbrains.annotations.NotNull; + +public class SpellcasterIllagerMeta extends AbstractIllagerMeta { + + protected SpellcasterIllagerMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Spell getSpell() { + return Spell.VALUES[getMetadata().getIndex((byte) 16, (byte) 0)]; + } + + public void setSpell(@NotNull Spell spell) { + getMetadata().setIndex((byte) 16, Metadata.Byte((byte) spell.ordinal())); + } + + public enum Spell { + NONE, + SUMMON_VEX, + ATTACK, + WOLOLO, + DISAPPEAR, + BLINDNESS; + + private final static Spell[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java new file mode 100644 index 000000000..cc26e51e9 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class VindicatorMeta extends AbstractIllagerMeta { + + public VindicatorMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java new file mode 100644 index 000000000..0a162d717 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.monster.raider; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class WitchMeta extends RaiderMeta { + + public WitchMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isDrinkingPotion() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setDrinkingPotion(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java new file mode 100644 index 000000000..c4f63abb6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.monster.skeleton; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.monster.MonsterMeta; +import org.jetbrains.annotations.NotNull; + +public class AbstractSkeletonMeta extends MonsterMeta { + + protected AbstractSkeletonMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java new file mode 100644 index 000000000..75999418e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.skeleton; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SkeletonMeta extends AbstractSkeletonMeta { + + public SkeletonMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java new file mode 100644 index 000000000..2f9685896 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.skeleton; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class StrayMeta extends AbstractSkeletonMeta { + + public StrayMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java new file mode 100644 index 000000000..f764d3947 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.skeleton; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class WitherSkeletonMeta extends AbstractSkeletonMeta { + + public WitherSkeletonMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java new file mode 100644 index 000000000..c1acdac45 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.zombie; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class DrownedMeta extends ZombieMeta { + + public DrownedMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java new file mode 100644 index 000000000..de3e98b91 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.zombie; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class HuskMeta extends ZombieMeta { + + public HuskMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java new file mode 100644 index 000000000..aa80f9144 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java @@ -0,0 +1,40 @@ +package net.minestom.server.entity.metadata.monster.zombie; + +import net.minestom.server.collision.BoundingBox; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.monster.MonsterMeta; +import org.jetbrains.annotations.NotNull; + +public class ZombieMeta extends MonsterMeta { + + public ZombieMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isBaby() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setBaby(boolean value) { + if (isBaby() == value) { + return; + } + BoundingBox bb = this.entity.getBoundingBox(); + if (value) { + setBoundingBox(bb.getWidth() / 2, bb.getHeight() / 2); + } else { + setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); + } + getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + } + + public boolean isBecomingDrowned() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setBecomingDrowned(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java new file mode 100644 index 000000000..ac9deb50c --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java @@ -0,0 +1,39 @@ +package net.minestom.server.entity.metadata.monster.zombie; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.villager.VillagerMeta; +import net.minestom.server.entity.type.ambient.EntityVillager; +import org.jetbrains.annotations.NotNull; + +public class ZombieVillagerMeta extends ZombieMeta { + + public ZombieVillagerMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isConverting() { + return getMetadata().getIndex((byte) 18, false); + } + + public void setConverting(boolean value) { + getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + } + + public VillagerMeta.VillagerData getVillagerData() { + int[] data = getMetadata().getIndex((byte) 17, null); + if (data == null) { + return new VillagerMeta.VillagerData(VillagerMeta.Type.PLAINS, VillagerMeta.Profession.NONE, VillagerMeta.Level.NOVICE); + } + return new VillagerMeta.VillagerData(VillagerMeta.Type.VALUES[data[0]], VillagerMeta.Profession.VALUES[data[1]], VillagerMeta.Level.VALUES[data[2] - 1]); + } + + public void setVillagerData(EntityVillager.VillagerData data) { + getMetadata().setIndex((byte) 17, Metadata.VillagerData( + data.getType().ordinal(), + data.getProfession().ordinal(), + data.getLevel().ordinal() + 1 + )); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java new file mode 100644 index 000000000..b408f56b7 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.monster.zombie; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class ZombifiedPiglinMeta extends ZombieMeta { + + public ZombifiedPiglinMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java new file mode 100644 index 000000000..b1b222b41 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class EyeOfEnderMeta extends ObjectEntityMeta { + + public EyeOfEnderMeta(@NotNull Entity entity) { + super(entity, Material.ENDER_EYE); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java new file mode 100644 index 000000000..297ceea18 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class FireballMeta extends ObjectEntityMeta { + + public FireballMeta(@NotNull Entity entity) { + super(entity, Material.AIR); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java new file mode 100644 index 000000000..e3e659e2f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ItemEntityMeta extends ObjectEntityMeta { + + public ItemEntityMeta(@NotNull Entity entity) { + super(entity, Material.AIR); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java new file mode 100644 index 000000000..3423349e3 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java @@ -0,0 +1,28 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.item.ItemStack; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ObjectEntityMeta extends EntityMeta { + + private final ItemStack defaultItem; + + protected ObjectEntityMeta(@NotNull Entity entity, @NotNull Material defaultItemMaterial) { + super(entity); + this.defaultItem = new ItemStack(defaultItemMaterial, (byte) 1); + } + + @NotNull + public ItemStack getItem() { + return getMetadata().getIndex((byte) 7, this.defaultItem); + } + + public void setItem(@NotNull ItemStack item) { + getMetadata().setIndex((byte) 7, Metadata.Slot(item)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java new file mode 100644 index 000000000..442911e6d --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class SmallFireballMeta extends ObjectEntityMeta { + + public SmallFireballMeta(@NotNull Entity entity) { + super(entity, Material.FIRE_CHARGE); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java new file mode 100644 index 000000000..de6d3c7a1 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class SnowballMeta extends ObjectEntityMeta { + + public SnowballMeta(@NotNull Entity entity) { + super(entity, Material.SNOWBALL); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java new file mode 100644 index 000000000..cb8b5065f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ThrownEggMeta extends ObjectEntityMeta { + + public ThrownEggMeta(@NotNull Entity entity) { + super(entity, Material.EGG); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java new file mode 100644 index 000000000..6e202bf4e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ThrownEnderPearlMeta extends ObjectEntityMeta { + + public ThrownEnderPearlMeta(@NotNull Entity entity) { + super(entity, Material.ENDER_PEARL); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java new file mode 100644 index 000000000..4be269dea --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ThrownExperienceBottleMeta extends ObjectEntityMeta { + + public ThrownExperienceBottleMeta(@NotNull Entity entity) { + super(entity, Material.EXPERIENCE_BOTTLE); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java new file mode 100644 index 000000000..455c3a588 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.object; + +import net.minestom.server.entity.Entity; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ThrownPotionMeta extends ObjectEntityMeta { + + public ThrownPotionMeta(@NotNull Entity entity) { + super(entity, Material.AIR); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java new file mode 100644 index 000000000..fd802c977 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java @@ -0,0 +1,48 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; +import org.jetbrains.annotations.NotNull; + +public class AreaEffectCloudMeta extends EntityMeta { + + public AreaEffectCloudMeta(@NotNull Entity entity) { + super(entity); + } + + public float getRadius() { + return getMetadata().getIndex((byte) 7, .5F); + } + + public void setRadius(float value) { + getMetadata().setIndex((byte) 7, Metadata.Float(value)); + } + + public int getColor() { + return getMetadata().getIndex((byte) 8, 0); + } + + public void setColor(int value) { + getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + } + + public boolean isSinglePoint() { + return getMetadata().getIndex((byte) 9, false); + } + + public void setSinglePoint(boolean value) { + getMetadata().setIndex((byte) 9, Metadata.Boolean(value)); + } + + public Particle getParticle() { + return getMetadata().getIndex((byte) 10, new Particle(ParticleType.EFFECT, null)); + } + + public void setParticle(Particle value) { + getMetadata().setIndex((byte) 11, Metadata.Particle(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java new file mode 100644 index 000000000..a4a7a208f --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java @@ -0,0 +1,109 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.LivingEntityMeta; +import net.minestom.server.utils.Rotation; +import net.minestom.server.utils.Vector; +import org.jetbrains.annotations.NotNull; + +public class ArmorStandMeta extends LivingEntityMeta { + + private final static byte MASK_INDEX = 14; + + private final static byte IS_SMALL_BIT = 0x01; + private final static byte HAS_ARMS_BIT = 0x04; + private final static byte HAS_NO_BASE_PLATE_BIT = 0x08; + private final static byte IS_MARKER_BIT = 0x10; + + public ArmorStandMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isSmall() { + return getMaskBit(MASK_INDEX, IS_SMALL_BIT); + } + + public void setSmall(boolean value) { + setMaskBit(MASK_INDEX, IS_SMALL_BIT, value); + } + + public boolean isHasArms() { + return getMaskBit(MASK_INDEX, HAS_ARMS_BIT); + } + + public void setHasArms(boolean value) { + setMaskBit(MASK_INDEX, HAS_ARMS_BIT, value); + } + + public boolean isHasNoBasePlate() { + return getMaskBit(MASK_INDEX, HAS_NO_BASE_PLATE_BIT); + } + + public void setHasNoBasePlate(boolean value) { + setMaskBit(MASK_INDEX, HAS_NO_BASE_PLATE_BIT, value); + } + + public boolean isMarker() { + return getMaskBit(MASK_INDEX, IS_MARKER_BIT); + } + + public void setMarker(boolean value) { + setMaskBit(MASK_INDEX, IS_MARKER_BIT, value); + } + + @NotNull + public Vector getHeadRotation() { + return getMetadata().getIndex((byte) 15, new Vector(0D, 0D, 0D)); + } + + public void setHeadRotation(@NotNull Vector value) { + getMetadata().setIndex((byte) 15, Metadata.Rotation(value)); + } + + @NotNull + public Vector getBodyRotation() { + return getMetadata().getIndex((byte) 16, new Vector(0D, 0D, 0D)); + } + + public void setBodyRotation(@NotNull Vector value) { + getMetadata().setIndex((byte) 16, Metadata.Rotation(value)); + } + + @NotNull + public Vector getLeftArmRotation() { + return getMetadata().getIndex((byte) 17, new Vector(-10D, 0D, -10D)); + } + + public void setLeftArmRotation(@NotNull Vector value) { + getMetadata().setIndex((byte) 17, Metadata.Rotation(value)); + } + + @NotNull + public Vector getRightArmRotation() { + return getMetadata().getIndex((byte) 18, new Vector(-15D, 0D, 10D)); + } + + public void setRightArmRotation(@NotNull Vector value) { + getMetadata().setIndex((byte) 18, Metadata.Rotation(value)); + } + + @NotNull + public Vector getLeftLegRotation() { + return getMetadata().getIndex((byte) 19, new Vector(-1D, 0D, -1D)); + } + + public void setLeftLegRotation(@NotNull Vector value) { + getMetadata().setIndex((byte) 19, Metadata.Rotation(value)); + } + + @NotNull + public Vector getRightLegRotation() { + return getMetadata().getIndex((byte) 20, new Vector(1D, 0D, 1D)); + } + + public void setRightLegRotation(@NotNull Vector value) { + getMetadata().setIndex((byte) 20, Metadata.Rotation(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java new file mode 100644 index 000000000..924d1bfc1 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java @@ -0,0 +1,82 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class BoatMeta extends EntityMeta { + + public BoatMeta(@NotNull Entity entity) { + super(entity); + } + + public int getTimeSinceLastHit() { + return getMetadata().getIndex((byte) 7, 0); + } + + public void setTimeSinceLastHit(int value) { + getMetadata().setIndex((byte) 7, Metadata.VarInt(value)); + } + + public int getForwardDirection() { + return getMetadata().getIndex((byte) 8, 1); + } + + public void setForwardDirection(int value) { + getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + } + + public float getDamageTaken() { + return getMetadata().getIndex((byte) 9, 0); + } + + public void setDamageTaken(float value) { + getMetadata().setIndex((byte) 9, Metadata.Float(value)); + } + + @NotNull + public Type getType() { + return Type.VALUES[getMetadata().getIndex((byte) 10, 0)]; + } + + public void setType(@NotNull Type value) { + getMetadata().setIndex((byte) 10, Metadata.VarInt(value.ordinal())); + } + + public boolean isLeftPaddleTurning() { + return getMetadata().getIndex((byte) 11, false); + } + + public void setLeftPaddleTurning(boolean value) { + getMetadata().setIndex((byte) 11, Metadata.Boolean(value)); + } + + public boolean isRightPaddleTurning() { + return getMetadata().getIndex((byte) 12, false); + } + + public void setRightPaddleTurning(boolean value) { + getMetadata().setIndex((byte) 12, Metadata.Boolean(value)); + } + + public int getSplashTimer() { + return getMetadata().getIndex((byte) 13, 0); + } + + public void setSplashTimer(int value) { + getMetadata().setIndex((byte) 13, Metadata.VarInt(value)); + } + + public enum Type { + OAK, + SPRUCE, + BIRCH, + JUNGLE, + ACACIA, + DARK_OAK; + + private final static Type[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java new file mode 100644 index 000000000..175b13d2e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class DragonFireballMeta extends EntityMeta { + + public DragonFireballMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java new file mode 100644 index 000000000..93087d741 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java @@ -0,0 +1,33 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.utils.BlockPosition; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class EndCrystalMeta extends EntityMeta { + + public EndCrystalMeta(@NotNull Entity entity) { + super(entity); + } + + @Nullable + public BlockPosition getBeamTarget() { + return getMetadata().getIndex((byte) 7, null); + } + + public void setBeamTarget(@Nullable BlockPosition value) { + getMetadata().setIndex((byte) 7, Metadata.OptPosition(value)); + } + + public boolean isShowingBottom() { + return getMetadata().getIndex((byte) 8, true); + } + + public void setShowingBottom(boolean value) { + getMetadata().setIndex((byte) 8, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java new file mode 100644 index 000000000..b0953b369 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java @@ -0,0 +1,39 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.MobMeta; +import org.jetbrains.annotations.NotNull; + +public class EnderDragonMeta extends MobMeta { + + public EnderDragonMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public Phase getPhase() { + return Phase.VALUES[getMetadata().getIndex((byte) 15, 0)]; + } + + public void setPhase(@NotNull Phase value) { + getMetadata().getIndex((byte) 15, Metadata.VarInt(value.ordinal())); + } + + public enum Phase { + CIRCLING, + STRAFING, + FLYING_TO_THE_PORTAL, + LANDING_ON_THE_PORTAL, + TAKING_OFF_FROM_THE_PORTAL, + BREATH_ATTACK, + LOOKING_FOR_BREATH_ATTACK_PLAYER, + ROAR, + CHARGING_PLAYER, + FLYING_TO_THE_PORTAL_TO_DIE, + HOVERING_WITHOUT_AI; + + private final static Phase[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java new file mode 100644 index 000000000..b935ee738 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class EvokerFangsMeta extends EntityMeta { + + public EvokerFangsMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java new file mode 100644 index 000000000..f2b47504e --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java @@ -0,0 +1,23 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.utils.BlockPosition; +import org.jetbrains.annotations.NotNull; + +public class FallingBlockMeta extends EntityMeta { + + public FallingBlockMeta(@NotNull Entity entity) { + super(entity); + } + + public BlockPosition getSpawnPosition() { + return getMetadata().getIndex((byte) 7, new BlockPosition(0, 0, 0)); + } + + public void setSpawnPosition(BlockPosition value) { + getMetadata().setIndex((byte) 7, Metadata.Position(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java new file mode 100644 index 000000000..a9d54f319 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java @@ -0,0 +1,46 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.item.ItemStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class FireworkRocketMeta extends EntityMeta { + + private Entity shooter; + + public FireworkRocketMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public ItemStack getFireworkInfo() { + return getMetadata().getIndex((byte) 7, ItemStack.getAirItem()); + } + + public void setFireworkInfo(@NotNull ItemStack value) { + getMetadata().setIndex((byte) 7, Metadata.Slot(value)); + } + + @Nullable + public Entity getShooter() { + return this.shooter; + } + + public void setShooter(@Nullable Entity value) { + this.shooter = value; + Integer entityID = value == null ? null : value.getEntityId(); + getMetadata().setIndex((byte) 8, Metadata.OptVarInt(entityID)); + } + + public boolean isShotAtAngle() { + return getMetadata().getIndex((byte) 9, false); + } + + public void setShotAtAngle(boolean value) { + getMetadata().setIndex((byte) 9, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java new file mode 100644 index 000000000..f201af109 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java @@ -0,0 +1,36 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class FishingHookMeta extends EntityMeta { + + private Entity hooked; + + public FishingHookMeta(@NotNull Entity entity) { + super(entity); + } + + @Nullable + public Entity getHookedEntity() { + return this.hooked; + } + + public void setHookedEntity(@Nullable Entity value) { + this.hooked = value; + int entityID = value == null ? 0 : value.getEntityId() + 1; + getMetadata().setIndex((byte) 7, Metadata.VarInt(entityID)); + } + + public boolean isCatchable() { + return getMetadata().getIndex((byte) 8, false); + } + + public void setCatchable(boolean value) { + getMetadata().setIndex((byte) 8, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java new file mode 100644 index 000000000..7fc068643 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java @@ -0,0 +1,32 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.item.ItemStack; +import org.jetbrains.annotations.NotNull; + +public class ItemFrameMeta extends EntityMeta { + + public ItemFrameMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public ItemStack getItem() { + return getMetadata().getIndex((byte) 7, ItemStack.getAirItem()); + } + + public void setItem(@NotNull ItemStack value) { + getMetadata().setIndex((byte) 7, Metadata.Slot(value)); + } + + public int getRotation() { + return getMetadata().getIndex((byte) 8, 0); + } + + public void setRotation(int value) { + getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java new file mode 100644 index 000000000..8b37140ab --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class LlamaSpitMeta extends EntityMeta { + + public LlamaSpitMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java new file mode 100644 index 000000000..f22c1d1fe --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java @@ -0,0 +1,14 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.MobMeta; +import org.jetbrains.annotations.NotNull; + +public class MagmaCubeMeta extends SlimeMeta { + + public MagmaCubeMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java new file mode 100644 index 000000000..f644ea002 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java @@ -0,0 +1,22 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class PrimedTntMeta extends EntityMeta { + + public PrimedTntMeta(@NotNull Entity entity) { + super(entity); + } + + public int getFuseTime() { + return getMetadata().getIndex((byte) 7, 80); + } + + public void setFuseTime(int value) { + getMetadata().setIndex((byte) 7, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java new file mode 100644 index 000000000..6a57e1fd5 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java @@ -0,0 +1,24 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.MobMeta; +import org.jetbrains.annotations.NotNull; + +public class SlimeMeta extends MobMeta { + + public SlimeMeta(@NotNull Entity entity) { + super(entity); + } + + public int getSize() { + return getMetadata().getIndex((byte) 15, 0); + } + + public void setSize(int value) { + float boxSize = 0.51000005f * value; + setBoundingBox(boxSize, boxSize); + getMetadata().setIndex((byte) 15, Metadata.VarInt(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java new file mode 100644 index 000000000..7ae673990 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java @@ -0,0 +1,22 @@ +package net.minestom.server.entity.metadata.other; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.EntityMeta; +import org.jetbrains.annotations.NotNull; + +public class WitherSkullMeta extends EntityMeta { + + public WitherSkullMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isInvulnerable() { + return getMetadata().getIndex((byte) 7, false); + } + + public void setInvulnerable(boolean value) { + getMetadata().setIndex((byte) 7, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java new file mode 100644 index 000000000..9cd4d91b2 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.villager; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.AgeableMobMeta; +import org.jetbrains.annotations.NotNull; + +public class AbstractVillagerMeta extends AgeableMobMeta { + + protected AbstractVillagerMeta(@NotNull Entity entity) { + super(entity); + } + + public int getHeadShakeTimer() { + return getMetadata().getIndex((byte) 16, 0); + } + + public void setHeadShakeTimer(int value) { + getMetadata().setIndex((byte) 16, Metadata.VarInt(value)); + } +} diff --git a/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java new file mode 100644 index 000000000..75afe2cca --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java @@ -0,0 +1,113 @@ +package net.minestom.server.entity.metadata.villager; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class VillagerMeta extends AbstractVillagerMeta { + + public VillagerMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public VillagerData getVillagerData() { + int[] data = getMetadata().getIndex((byte) 17, null); + if (data == null) { + return new VillagerData(Type.PLAINS, Profession.NONE, Level.NOVICE); + } + return new VillagerData(Type.VALUES[data[0]], Profession.VALUES[data[1]], Level.VALUES[data[2] - 1]); + } + + public void setVillagerData(@NotNull VillagerData data) { + getMetadata().setIndex((byte) 17, Metadata.VillagerData( + data.type.ordinal(), + data.profession.ordinal(), + data.level.ordinal() + 1 + )); + } + + public static class VillagerData { + + private Type type; + private Profession profession; + private Level level; + + public VillagerData(@NotNull Type type, @NotNull Profession profession, @NotNull Level level) { + this.type = type; + this.profession = profession; + this.level = level; + } + + @NotNull + public Type getType() { + return this.type; + } + + public void setType(@NotNull Type type) { + this.type = type; + } + + @NotNull + public Profession getProfession() { + return this.profession; + } + + public void setProfession(@NotNull Profession profession) { + this.profession = profession; + } + + @NotNull + public Level getLevel() { + return level; + } + + public void setLevel(@NotNull Level level) { + this.level = level; + } + } + + public enum Type { + DESERT, + JUNGLE, + PLAINS, + SAVANNA, + SNOW, + SWAMP, + TAIGA; + + public final static Type[] VALUES = values(); + } + + public enum Profession { + NONE, + ARMORER, + BUTCHER, + CARTOGRAPHER, + CLERIC, + FARMER, + FISHERMAN, + FLETCHER, + LEATHERWORKER, + LIBRARIAN, + NITWIT, + UNEMPLOYED, + MASON, + SHEPHERD, + TOOLSMITH, + WEAPONSMITH; + + public final static Profession[] VALUES = values(); + } + + public enum Level { + NOVICE, + APPRENTICE, + JOURNEYMAN, + EXPERT, + MASTER; + + public final static Level[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java b/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java new file mode 100644 index 000000000..6467bd643 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.villager; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class WanderingTraderMeta extends VillagerMeta { + + public WanderingTraderMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java new file mode 100644 index 000000000..4e1ddc7a7 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java @@ -0,0 +1,39 @@ +package net.minestom.server.entity.metadata.water; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.utils.BlockPosition; +import org.jetbrains.annotations.NotNull; + +public class DolphinMeta extends WaterAnimalMeta { + + public DolphinMeta(@NotNull Entity entity) { + super(entity); + } + + @NotNull + public BlockPosition getTreasurePosition() { + return getMetadata().getIndex((byte) 15, new BlockPosition(0, 0, 0)); + } + + public void setTreasurePosition(@NotNull BlockPosition value) { + getMetadata().setIndex((byte) 15, Metadata.Position(value)); + } + + public boolean isCanFindTreasure() { + return getMetadata().getIndex((byte) 16, false); + } + + public void setCanFindTreasure(boolean value) { + getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + } + + public boolean isHasFish() { + return getMetadata().getIndex((byte) 17, false); + } + + public void setHasFish(boolean value) { + getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java new file mode 100644 index 000000000..f564f77d6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.water; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SquidMeta extends WaterAnimalMeta { + + public SquidMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java new file mode 100644 index 000000000..905b00b84 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java @@ -0,0 +1,13 @@ +package net.minestom.server.entity.metadata.water; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.PathfinderMobMeta; +import org.jetbrains.annotations.NotNull; + +public class WaterAnimalMeta extends PathfinderMobMeta { + + protected WaterAnimalMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java new file mode 100644 index 000000000..41c9b901c --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java @@ -0,0 +1,21 @@ +package net.minestom.server.entity.metadata.water.fish; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.water.WaterAnimalMeta; +import org.jetbrains.annotations.NotNull; + +public class AbstractFishMeta extends WaterAnimalMeta { + + protected AbstractFishMeta(@NotNull Entity entity) { + super(entity); + } + + public boolean isFromBucket() { + return getMetadata().getIndex((byte) 15, false); + } + + public void setFromBucket(boolean value) { + getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + } +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java new file mode 100644 index 000000000..0226dbb85 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.water.fish; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class CodMeta extends AbstractFishMeta { + + public CodMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferFishMeta.java new file mode 100644 index 000000000..9d436ac12 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferFishMeta.java @@ -0,0 +1,44 @@ +package net.minestom.server.entity.metadata.water.fish; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import org.jetbrains.annotations.NotNull; + +public class PufferFishMeta extends AbstractFishMeta { + + public PufferFishMeta(@NotNull Entity entity) { + super(entity); + } + + public State getState() { + return State.VALUES[getMetadata().getIndex((byte) 16, 0)]; + } + + public void setState(State state) { + getMetadata().setIndex((byte) 16, Metadata.VarInt(state.ordinal())); + updateBoundingBox(state); + } + + private void updateBoundingBox(State state) { + switch (state) { + case UNPUFFED: + setBoundingBox(.35D, .35D); + break; + case SEMI_PUFFED: + setBoundingBox(.5D, .5D); + break; + default: + setBoundingBox(.7D, .7D); + break; + } + } + + public enum State { + UNPUFFED, + SEMI_PUFFED, + FULLY_PUFFED; + + private final static State[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java new file mode 100644 index 000000000..7c329b196 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java @@ -0,0 +1,12 @@ +package net.minestom.server.entity.metadata.water.fish; + +import net.minestom.server.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SalmonMeta extends AbstractFishMeta { + + public SalmonMeta(@NotNull Entity entity) { + super(entity); + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java new file mode 100644 index 000000000..d218e57d6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java @@ -0,0 +1,114 @@ +package net.minestom.server.entity.metadata.water.fish; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.type.water.EntityTropicalFish; +import org.jetbrains.annotations.NotNull; + +public class TropicalFishMeta extends AbstractFishMeta { + + public TropicalFishMeta(@NotNull Entity entity) { + super(entity); + } + + public Variant getVariant() { + return getVariantFromID(getMetadata().getIndex((byte) 16, 0)); + } + + public void setVariant(Variant variant) { + getMetadata().setIndex((byte) 16, Metadata.VarInt(getVariantID(variant))); + } + + public static int getVariantID(Variant variant) { + int id = 0; + id |= variant.patternColor; + id <<= 8; + id |= variant.bodyColor; + id <<= 8; + id |= variant.pattern.ordinal(); + id <<= 8; + id |= variant.type.ordinal(); + return id; + } + + public static Variant getVariantFromID(int variantID) { + Type type = Type.VALUES[variantID & 0xFF]; + variantID >>= 8; + Pattern pattern = Pattern.VALUES[variantID & 0xFF]; + variantID >>= 8; + byte bodyColor = (byte) (variantID & 0xFF); + variantID >>= 8; + byte patternColor = (byte) (variantID & 0xFF); + return new Variant(type, pattern, bodyColor, patternColor); + } + + public static class Variant { + + private Type type; + private Pattern pattern; + private byte bodyColor; + private byte patternColor; + + public Variant(@NotNull Type type, @NotNull Pattern pattern, byte bodyColor, byte patternColor) { + this.type = type; + this.pattern = pattern; + this.bodyColor = bodyColor; + this.patternColor = patternColor; + } + + @NotNull + public Type getType() { + return this.type; + } + + public void setType(@NotNull Type type) { + this.type = type; + } + + @NotNull + public Pattern getPattern() { + return this.pattern; + } + + public void setPattern(@NotNull Pattern pattern) { + this.pattern = pattern; + } + + public byte getBodyColor() { + return this.bodyColor; + } + + public void setBodyColor(byte bodyColor) { + this.bodyColor = bodyColor; + } + + public byte getPatternColor() { + return this.patternColor; + } + + public void setPatternColor(byte patternColor) { + this.patternColor = patternColor; + } + } + + public enum Type { + SMALL, + LARGE, + INVISIBLE; + + private final static Type[] VALUES = values(); + } + + public enum Pattern { + KOB, // FLOPPER for LARGE fish + SUNSTREAK, // STRIPEY for LARGE fish + SNOOPER, // GLITTER for LARGE fish + DASHER, // BLOCKFISH for LARGE fish + BRINELY, // BETTY for LARGE fish + SPOTTY, // CLAYFISH for LARGE fish + NONE; + + private final static Pattern[] VALUES = values(); + } + +} diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java index 43a89af82..c8503f040 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java @@ -2,7 +2,7 @@ package net.minestom.server.entity.type.other; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.ObjectEntity; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleType; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; @@ -14,14 +14,14 @@ public class EntityAreaEffectCloud extends ObjectEntity { private float radius; private int color; private boolean ignoreRadius; - private Particle particle; + private ParticleType particleType; public EntityAreaEffectCloud(Position spawnPosition) { super(EntityType.AREA_EFFECT_CLOUD, spawnPosition); setRadius(0.5f); setColor(0); setIgnoreRadius(false); - setParticle(Particle.EFFECT); + setParticle(ParticleType.EFFECT); setParticleDataConsumer(packetWriter -> { }); } @@ -94,12 +94,12 @@ public class EntityAreaEffectCloud extends ObjectEntity { //sendMetadataIndex(9); } - public Particle getParticle() { - return particle; + public ParticleType getParticle() { + return particleType; } - public void setParticle(Particle particle) { - this.particle = particle; + public void setParticle(ParticleType particleType) { + this.particleType = particleType; //sendMetadataIndex(10); } diff --git a/src/main/java/net/minestom/server/particle/Particle.java b/src/main/java/net/minestom/server/particle/Particle.java new file mode 100644 index 000000000..89ef42f99 --- /dev/null +++ b/src/main/java/net/minestom/server/particle/Particle.java @@ -0,0 +1,36 @@ +package net.minestom.server.particle; + +import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; + +public class Particle { + + private ParticleType type; + private Consumer dataWriter; + + public Particle(@NotNull ParticleType type, @Nullable Consumer dataWriter) { + this.type = type; + this.dataWriter = dataWriter; + } + + @NotNull + public ParticleType getType() { + return this.type; + } + + public void setType(@NotNull ParticleType type) { + this.type = type; + } + + @Nullable + public Consumer getDataWriter() { + return this.dataWriter; + } + + public void setDataWriter(@Nullable Consumer dataWriter) { + this.dataWriter = dataWriter; + } +} diff --git a/src/main/java/net/minestom/server/particle/ParticleCreator.java b/src/main/java/net/minestom/server/particle/ParticleCreator.java index 06866189b..8c1011ad8 100644 --- a/src/main/java/net/minestom/server/particle/ParticleCreator.java +++ b/src/main/java/net/minestom/server/particle/ParticleCreator.java @@ -10,12 +10,12 @@ import java.util.function.Consumer; */ public class ParticleCreator { - public static ParticlePacket createParticlePacket(Particle particle, boolean distance, + public static ParticlePacket createParticlePacket(ParticleType particleType, boolean distance, double x, double y, double z, float offsetX, float offsetY, float offsetZ, float particleData, int count, Consumer dataWriter) { ParticlePacket particlePacket = new ParticlePacket(); - particlePacket.particleId = particle.getId(); + particlePacket.particleId = particleType.getId(); particlePacket.longDistance = distance; particlePacket.x = x; @@ -33,11 +33,11 @@ public class ParticleCreator { return particlePacket; } - public static ParticlePacket createParticlePacket(Particle particle, + public static ParticlePacket createParticlePacket(ParticleType particleType, double x, double y, double z, float offsetX, float offsetY, float offsetZ, int count) { - return createParticlePacket(particle, false, + return createParticlePacket(particleType, false, x, y, z, offsetX, offsetY, offsetZ, 0, count, null); From bc591b0a7e2e094829fbc3057b656304f7828dff Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 15:38:14 +0300 Subject: [PATCH 12/48] New generator for EntityType (including width and height) --- .../minestom/server/entity/EntityType.java | 293 ++++++++---------- .../codegen/entitytypes/BurgerEntity.java | 8 + .../entitytypes/EntityTypeContainer.java | 40 +++ .../entitytypes/EntityTypeEnumGenerator.java | 129 +++++++- 4 files changed, 289 insertions(+), 181 deletions(-) create mode 100644 src/generators/java/net/minestom/codegen/entitytypes/BurgerEntity.java create mode 100644 src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index 3eae2a6ce..e580f7bc0 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -1,27 +1,8 @@ package net.minestom.server.entity; -import net.minestom.server.entity.type.ambient.EntityBat; -import net.minestom.server.entity.type.ambient.EntityTraderLlama; -import net.minestom.server.entity.type.ambient.EntityVillager; -import net.minestom.server.entity.type.ambient.EntityWanderingTrader; -import net.minestom.server.entity.type.animal.*; -import net.minestom.server.entity.type.decoration.EntityArmorStand; -import net.minestom.server.entity.type.monster.*; -import net.minestom.server.entity.type.other.EntityAreaEffectCloud; -import net.minestom.server.entity.type.other.EntityIronGolem; -import net.minestom.server.entity.type.other.EntityShulker; -import net.minestom.server.entity.type.other.EntitySnowman; -import net.minestom.server.entity.type.projectile.EntityPotion; -import net.minestom.server.entity.type.projectile.EntitySpectralArrow; -import net.minestom.server.entity.type.vehicle.EntityBoat; -import net.minestom.server.entity.type.water.*; import net.minestom.server.registry.Registries; -import net.minestom.server.utils.LambdaMetafactoryUtils; import net.minestom.server.utils.NamespaceID; -import net.minestom.server.utils.Position; -import net.minestom.server.utils.validate.Check; - -import java.util.function.Function; +import org.jetbrains.annotations.NotNull; /** * //============================== @@ -30,276 +11,254 @@ import java.util.function.Function; */ @SuppressWarnings({"deprecation"}) public enum EntityType { - AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", EntityAreaEffectCloud.class), + AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", 6.0, 0.5), - ARMOR_STAND("minecraft:armor_stand", EntityArmorStand.class), + ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975), - ARROW("minecraft:arrow"), + ARROW("minecraft:arrow", 0.5, 0.5), - BAT("minecraft:bat", EntityBat.class), + BAT("minecraft:bat", 0.5, 0.9), - BEE("minecraft:bee", EntityBee.class), + BEE("minecraft:bee", 0.7, 0.6), - BLAZE("minecraft:blaze", EntityBlaze.class), + BLAZE("minecraft:blaze", 0.6, 1.8), - BOAT("minecraft:boat", EntityBoat.class), + BOAT("minecraft:boat", 1.375, 0.5625), - CAT("minecraft:cat", EntityCat.class), + CAT("minecraft:cat", 0.6, 0.7), - CAVE_SPIDER("minecraft:cave_spider", EntityCaveSpider.class), + CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5), - CHICKEN("minecraft:chicken", EntityChicken.class), + CHICKEN("minecraft:chicken", 0.4, 0.7), - COD("minecraft:cod", EntityCod.class), + COD("minecraft:cod", 0.5, 0.3), - COW("minecraft:cow", EntityCow.class), + COW("minecraft:cow", 0.9, 1.4), - CREEPER("minecraft:creeper", EntityCreeper.class), + CREEPER("minecraft:creeper", 0.6, 1.7), - DOLPHIN("minecraft:dolphin", EntityDolphin.class), + DOLPHIN("minecraft:dolphin", 0.9, 0.6), - DONKEY("minecraft:donkey", EntityDonkey.class), + DONKEY("minecraft:donkey", 1.39648, 1.5), - DRAGON_FIREBALL("minecraft:dragon_fireball"), + DRAGON_FIREBALL("minecraft:dragon_fireball", 1.0, 1.0), - DROWNED("minecraft:drowned", EntityDrowned.class), + DROWNED("minecraft:drowned", 0.6, 1.95), - ELDER_GUARDIAN("minecraft:elder_guardian", EntityElderGuardian.class), + ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975), - END_CRYSTAL("minecraft:end_crystal"), + END_CRYSTAL("minecraft:end_crystal", 2.0, 2.0), - ENDER_DRAGON("minecraft:ender_dragon"), + ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0), - ENDERMAN("minecraft:enderman", EntityEnderman.class), + ENDERMAN("minecraft:enderman", 0.6, 2.9), - ENDERMITE("minecraft:endermite", EntityEndermite.class), + ENDERMITE("minecraft:endermite", 0.4, 0.3), - EVOKER("minecraft:evoker", EntityEvoker.class), + EVOKER("minecraft:evoker", 0.6, 1.95), - EVOKER_FANGS("minecraft:evoker_fangs"), + EVOKER_FANGS("minecraft:evoker_fangs", 0.5, 0.8), - EXPERIENCE_ORB("minecraft:experience_orb"), + EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5), - EYE_OF_ENDER("minecraft:eye_of_ender"), + EYE_OF_ENDER("minecraft:eye_of_ender", 0.25, 0.25), - FALLING_BLOCK("minecraft:falling_block"), + FALLING_BLOCK("minecraft:falling_block", 0.98, 0.98), - FIREWORK_ROCKET("minecraft:firework_rocket"), + FIREWORK_ROCKET("minecraft:firework_rocket", 0.25, 0.25), - FOX("minecraft:fox", EntityFox.class), + FOX("minecraft:fox", 0.6, 0.7), - GHAST("minecraft:ghast", EntityGhast.class), + GHAST("minecraft:ghast", 4.0, 4.0), - GIANT("minecraft:giant", EntityGiant.class), + GIANT("minecraft:giant", 3.6, 12.0), - GUARDIAN("minecraft:guardian", EntityGuardian.class), + GUARDIAN("minecraft:guardian", 0.85, 0.85), - HOGLIN("minecraft:hoglin", EntityHoglin.class), + HOGLIN("minecraft:hoglin", 1.39648, 1.4), - HORSE("minecraft:horse", EntityHorse.class), + HORSE("minecraft:horse", 1.39648, 1.6), - HUSK("minecraft:husk", EntityHusk.class), + HUSK("minecraft:husk", 0.6, 1.95), - ILLUSIONER("minecraft:illusioner", EntityIllusioner.class), + ILLUSIONER("minecraft:illusioner", 0.6, 1.95), - IRON_GOLEM("minecraft:iron_golem", EntityIronGolem.class), + IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7), - ITEM("minecraft:item"), + ITEM("minecraft:item", 0.25, 0.25), - ITEM_FRAME("minecraft:item_frame"), + ITEM_FRAME("minecraft:item_frame", 0.5, 0.5), - FIREBALL("minecraft:fireball"), + FIREBALL("minecraft:fireball", 1.0, 1.0), - LEASH_KNOT("minecraft:leash_knot"), + LEASH_KNOT("minecraft:leash_knot", 0.5, 0.5), - LIGHTNING_BOLT("minecraft:lightning_bolt"), + LIGHTNING_BOLT("minecraft:lightning_bolt", 0.0, 0.0), - LLAMA("minecraft:llama", EntityLlama.class), + LLAMA("minecraft:llama", 0.9, 1.87), - LLAMA_SPIT("minecraft:llama_spit"), + LLAMA_SPIT("minecraft:llama_spit", 0.25, 0.25), - MAGMA_CUBE("minecraft:magma_cube", EntityMagmaCube.class), + MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04), - MINECART("minecraft:minecart"), + MINECART("minecraft:minecart", 0.98, 0.7), - CHEST_MINECART("minecraft:chest_minecart"), + CHEST_MINECART("minecraft:chest_minecart", 0.98, 0.7), - COMMAND_BLOCK_MINECART("minecraft:command_block_minecart"), + COMMAND_BLOCK_MINECART("minecraft:command_block_minecart", 0.98, 0.7), - FURNACE_MINECART("minecraft:furnace_minecart"), + FURNACE_MINECART("minecraft:furnace_minecart", 0.98, 0.7), - HOPPER_MINECART("minecraft:hopper_minecart"), + HOPPER_MINECART("minecraft:hopper_minecart", 0.98, 0.7), - SPAWNER_MINECART("minecraft:spawner_minecart"), + SPAWNER_MINECART("minecraft:spawner_minecart", 0.98, 0.7), - TNT_MINECART("minecraft:tnt_minecart"), + TNT_MINECART("minecraft:tnt_minecart", 0.98, 0.7), - MULE("minecraft:mule", EntityMule.class), + MULE("minecraft:mule", 1.39648, 1.6), - MOOSHROOM("minecraft:mooshroom", EntityMooshroom.class), + MOOSHROOM("minecraft:mooshroom", 0.9, 1.4), - OCELOT("minecraft:ocelot", EntityOcelot.class), + OCELOT("minecraft:ocelot", 0.6, 0.7), - PAINTING("minecraft:painting"), + PAINTING("minecraft:painting", 0.5, 0.5), - PANDA("minecraft:panda", EntityPanda.class), + PANDA("minecraft:panda", 1.3, 1.25), - PARROT("minecraft:parrot", EntityParrot.class), + PARROT("minecraft:parrot", 0.5, 0.9), - PHANTOM("minecraft:phantom", EntityPhantom.class), + PHANTOM("minecraft:phantom", 0.9, 0.5), - PIG("minecraft:pig", EntityPig.class), + PIG("minecraft:pig", 0.9, 0.9), - PIGLIN("minecraft:piglin", EntityPiglin.class), + PIGLIN("minecraft:piglin", 0.6, 1.95), - PIGLIN_BRUTE("minecraft:piglin_brute", EntityPiglinBrute.class), + PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95), - PILLAGER("minecraft:pillager", EntityPillager.class), + PILLAGER("minecraft:pillager", 0.6, 1.95), - POLAR_BEAR("minecraft:polar_bear", EntityPolarBear.class), + POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4), - TNT("minecraft:tnt"), + TNT("minecraft:tnt", 0.98, 0.98), - PUFFERFISH("minecraft:pufferfish", EntityPufferFish.class), + PUFFERFISH("minecraft:pufferfish", 0.7, 0.7), - RABBIT("minecraft:rabbit", EntityRabbit.class), + RABBIT("minecraft:rabbit", 0.4, 0.5), - RAVAGER("minecraft:ravager", EntityRavager.class), + RAVAGER("minecraft:ravager", 1.95, 2.2), - SALMON("minecraft:salmon", EntitySalmon.class), + SALMON("minecraft:salmon", 0.7, 0.4), - SHEEP("minecraft:sheep", EntitySheep.class), + SHEEP("minecraft:sheep", 0.9, 1.3), - SHULKER("minecraft:shulker", EntityShulker.class), + SHULKER("minecraft:shulker", 1.0, 1.0), - SHULKER_BULLET("minecraft:shulker_bullet"), + SHULKER_BULLET("minecraft:shulker_bullet", 0.3125, 0.3125), - SILVERFISH("minecraft:silverfish", EntitySilverfish.class), + SILVERFISH("minecraft:silverfish", 0.4, 0.3), - SKELETON("minecraft:skeleton", EntitySkeleton.class), + SKELETON("minecraft:skeleton", 0.6, 1.99), - SKELETON_HORSE("minecraft:skeleton_horse", EntitySkeletonHorse.class), + SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6), - SLIME("minecraft:slime", EntitySlime.class), + SLIME("minecraft:slime", 2.04, 2.04), - SMALL_FIREBALL("minecraft:small_fireball"), + SMALL_FIREBALL("minecraft:small_fireball", 0.3125, 0.3125), - SNOW_GOLEM("minecraft:snow_golem", EntitySnowman.class), + SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9), - SNOWBALL("minecraft:snowball"), + SNOWBALL("minecraft:snowball", 0.25, 0.25), - SPECTRAL_ARROW("minecraft:spectral_arrow", EntitySpectralArrow.class), + SPECTRAL_ARROW("minecraft:spectral_arrow", 0.5, 0.5), - SPIDER("minecraft:spider", EntitySpider.class), + SPIDER("minecraft:spider", 1.4, 0.9), - SQUID("minecraft:squid", EntitySquid.class), + SQUID("minecraft:squid", 0.8, 0.8), - STRAY("minecraft:stray", EntityStray.class), + STRAY("minecraft:stray", 0.6, 1.99), - STRIDER("minecraft:strider", EntityStrider.class), + STRIDER("minecraft:strider", 0.9, 1.7), - EGG("minecraft:egg"), + EGG("minecraft:egg", 0.25, 0.25), - ENDER_PEARL("minecraft:ender_pearl"), + ENDER_PEARL("minecraft:ender_pearl", 0.25, 0.25), - EXPERIENCE_BOTTLE("minecraft:experience_bottle"), + EXPERIENCE_BOTTLE("minecraft:experience_bottle", 0.25, 0.25), - POTION("minecraft:potion", EntityPotion.class), + POTION("minecraft:potion", 0.25, 0.25), - TRIDENT("minecraft:trident"), + TRIDENT("minecraft:trident", 0.5, 0.5), - TRADER_LLAMA("minecraft:trader_llama", EntityTraderLlama.class), + TRADER_LLAMA("minecraft:trader_llama", 0.9, 1.87), - TROPICAL_FISH("minecraft:tropical_fish", EntityTropicalFish.class), + TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4), - TURTLE("minecraft:turtle"), + TURTLE("minecraft:turtle", 1.2, 0.4), - VEX("minecraft:vex", EntityVex.class), + VEX("minecraft:vex", 0.4, 0.8), - VILLAGER("minecraft:villager", EntityVillager.class), + VILLAGER("minecraft:villager", 0.6, 1.95), - VINDICATOR("minecraft:vindicator", EntityVindicator.class), + VINDICATOR("minecraft:vindicator", 0.6, 1.95), - WANDERING_TRADER("minecraft:wandering_trader", EntityWanderingTrader.class), + WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95), - WITCH("minecraft:witch", EntityWitch.class), + WITCH("minecraft:witch", 0.6, 1.95), - WITHER("minecraft:wither"), + WITHER("minecraft:wither", 0.9, 3.5), - WITHER_SKELETON("minecraft:wither_skeleton", EntityWitherSkeleton.class), + WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4), - WITHER_SKULL("minecraft:wither_skull"), + WITHER_SKULL("minecraft:wither_skull", 0.3125, 0.3125), - WOLF("minecraft:wolf", EntityWolf.class), + WOLF("minecraft:wolf", 0.6, 0.85), - ZOGLIN("minecraft:zoglin", EntityZoglin.class), + ZOGLIN("minecraft:zoglin", 1.39648, 1.4), - ZOMBIE("minecraft:zombie", EntityZombie.class), + ZOMBIE("minecraft:zombie", 0.6, 1.95), - ZOMBIE_HORSE("minecraft:zombie_horse", EntityZombieHorse.class), + ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6), - ZOMBIE_VILLAGER("minecraft:zombie_villager", EntityZombieVillager.class), + ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95), - ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", EntityZombifiedPiglin.class), + ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95), - PLAYER("minecraft:player"), + PLAYER("minecraft:player", 0.6, 1.8), - FISHING_BOBBER("minecraft:fishing_bobber"); + FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25); - private final String namespaceID; - private Class defaultEntityClass; - private Function defaultGenerator; + @NotNull + private String namespaceID; - EntityType(String namespaceID, Class defaultEntityClass) { + private double width; + + private double height; + + EntityType(@NotNull String namespaceID, double width, double height) { this.namespaceID = namespaceID; + this.width = width; + this.height = height; Registries.entityTypes.put(NamespaceID.from(namespaceID), this); - - this.defaultEntityClass = defaultEntityClass; - if (defaultEntityClass != null) { - try { - this.defaultGenerator = LambdaMetafactoryUtils.getSingleArgumentConstructor(defaultEntityClass, Position.class); - } catch (Throwable t) { - // no position constructor - } - } } - EntityType(String namespaceID) { - this(namespaceID, null); - } - - public int getId() { - return ordinal(); + public short getId() { + return (short)ordinal(); } public String getNamespaceID() { return namespaceID; } - public void setDefaultEntityClass(Class defaultEntityClass) { - this.defaultEntityClass = defaultEntityClass; + public double getWidth() { + return this.width; } - public Class getDefaultEntityClass() { - Check.notNull(this.defaultEntityClass, "Default class for " + name() + " is not yet present"); - return this.defaultEntityClass; + public double getHeight() { + return this.height; } - public Entity createFromPosition(Position position) { - Check.notNull(this.defaultGenerator, "Default generator for " + name() + " is not yet supported"); - return this.defaultGenerator.apply(position); - } - - public double getDefaultWidth() { - return 0D; - } - - public double getDefaultHeight() { - return 0D; - } - - public static EntityType fromId(int id) { - if (id >= 0 && id < values().length) { + public static EntityType fromId(short id) { + if(id >= 0 && id < values().length) { return values()[id]; } return PIG; diff --git a/src/generators/java/net/minestom/codegen/entitytypes/BurgerEntity.java b/src/generators/java/net/minestom/codegen/entitytypes/BurgerEntity.java new file mode 100644 index 000000000..2d0279d78 --- /dev/null +++ b/src/generators/java/net/minestom/codegen/entitytypes/BurgerEntity.java @@ -0,0 +1,8 @@ +package net.minestom.codegen.entitytypes; + +public class BurgerEntity { + int id; + String name; + double width; + double height; +} diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java new file mode 100644 index 000000000..2a94e6f2c --- /dev/null +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java @@ -0,0 +1,40 @@ +package net.minestom.codegen.entitytypes; + +import net.minestom.server.utils.NamespaceID; +import org.jetbrains.annotations.NotNull; + +public class EntityTypeContainer implements Comparable { + + private int id; + private NamespaceID name; + private double width; + private double height; + + public EntityTypeContainer(int id, NamespaceID name, double width, double height) { + this.id = id; + this.name = name; + this.width = width; + this.height = height; + } + + public int getId() { + return id; + } + + public NamespaceID getName() { + return name; + } + + public double getWidth() { + return width; + } + + public double getHeight() { + return height; + } + + @Override + public int compareTo(@NotNull EntityTypeContainer o) { + return Integer.compare(id, o.id); + } +} diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java index f9cdc6e05..563920824 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java @@ -1,21 +1,35 @@ package net.minestom.codegen.entitytypes; -import net.minestom.codegen.BasicEnumGenerator; -import net.minestom.codegen.stats.StatsEnumGenerator; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.squareup.javapoet.*; +import net.minestom.codegen.EnumGenerator; +import net.minestom.codegen.MinestomEnumGenerator; +import net.minestom.server.registry.Registries; import net.minestom.server.registry.ResourceGatherer; +import net.minestom.server.utils.NamespaceID; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.IOException; +import java.io.*; +import java.net.URL; +import java.util.*; -public class EntityTypeEnumGenerator extends BasicEnumGenerator { +/** + * Generates an EntityType enum containing all data about entity types + */ +public class EntityTypeEnumGenerator extends MinestomEnumGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(EntityTypeEnumGenerator.class); + private final String targetVersion; + private final File targetFolder; + public static void main(String[] args) throws IOException { String targetVersion; - if(args.length < 1) { + if (args.length < 1) { System.err.println("Usage: [target folder]"); return; } @@ -29,25 +43,44 @@ public class EntityTypeEnumGenerator extends BasicEnumGenerator { } String targetPart = DEFAULT_TARGET_PATH; - if(args.length >= 2) { + if (args.length >= 2) { targetPart = args[1]; } File targetFolder = new File(targetPart); - if(!targetFolder.exists()) { + if (!targetFolder.exists()) { targetFolder.mkdirs(); } - new EntityTypeEnumGenerator(targetFolder); + new EntityTypeEnumGenerator(targetVersion, targetFolder); } - private EntityTypeEnumGenerator(File targetFolder) throws IOException { - super(targetFolder); + private EntityTypeEnumGenerator(String targetVersion, File targetFolder) throws IOException { + this.targetVersion = targetVersion; + this.targetFolder = targetFolder; + generateTo(targetFolder); } - @Override - protected String getCategoryID() { - return "minecraft:entity_type"; + /** + * Extract entity information from Burger (submodule of Minestom) + * + * @param gson + * @param url + * @return + * @throws IOException + */ + private List parseEntitiesFromBurger(Gson gson, String url) throws IOException { + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new URL(url).openStream()))) { + LOGGER.debug("\tConnection established, reading file"); + JsonObject dictionary = gson.fromJson(bufferedReader, JsonArray.class).get(0).getAsJsonObject(); + JsonObject entitiesMap = dictionary.getAsJsonObject("entities").getAsJsonObject("entity"); + List entities = new LinkedList<>(); + for (var entry : entitiesMap.entrySet()) { + BurgerEntity entity = gson.fromJson(entry.getValue(), BurgerEntity.class); + entities.add(entity); + } + return entities; + } } @Override @@ -60,6 +93,74 @@ public class EntityTypeEnumGenerator extends BasicEnumGenerator { return "EntityType"; } + @Override + protected Collection compile() throws IOException { + Gson gson = new Gson(); + LOGGER.debug("Loading PrismarineJS entity types data"); + List burgerEntities = parseEntitiesFromBurger(gson, BURGER_URL_BASE_URL + targetVersion + ".json"); + + TreeSet types = new TreeSet<>(EntityTypeContainer::compareTo); + for (var burgerEntity : burgerEntities) { + types.add(new EntityTypeContainer( + burgerEntity.id, + NamespaceID.from("minecraft:" + burgerEntity.name), + burgerEntity.width, + burgerEntity.height + )); + } + return types; + } + + @Override + protected void prepare(EnumGenerator generator) { + ClassName className = ClassName.get(getPackageName(), getClassName()); + generator.addClassAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "{$S}", "deprecation").build()); + generator.setParams(ParameterSpec.builder(String.class, "namespaceID").addAnnotation(NotNull.class).build(), ParameterSpec.builder(TypeName.DOUBLE, "width").build(), + ParameterSpec.builder(TypeName.DOUBLE, "height").build()); + generator.appendToConstructor(code -> { + code.addStatement("$T.$N.put($T.from(namespaceID), this)", Registries.class, "entityTypes", NamespaceID.class); + }); + + generator.addMethod("getId", new ParameterSpec[0], TypeName.SHORT, code -> { + code.addStatement("return (short)ordinal()"); + }); + generator.addMethod("getNamespaceID", new ParameterSpec[0], ClassName.get(String.class), code -> { + code.addStatement("return namespaceID"); + }); + generator.addMethod("getWidth", new ParameterSpec[0], TypeName.DOUBLE, code -> { + code.addStatement("return this.width"); + }); + generator.addMethod("getHeight", new ParameterSpec[0], TypeName.DOUBLE, code -> { + code.addStatement("return this.height"); + }); + + generator.addStaticMethod("fromId", new ParameterSpec[]{ParameterSpec.builder(TypeName.SHORT, "id").build()}, className, code -> { + code.beginControlFlow("if(id >= 0 && id < values().length)") + .addStatement("return values()[id]") + .endControlFlow() + .addStatement("return PIG"); + }); + } + + @Override + protected void writeSingle(EnumGenerator generator, EntityTypeContainer type) { + String instanceName = type.getName().getPath().toUpperCase(); + generator.addInstance(instanceName, + "\"" + type.getName().toString() + "\"", + type.getWidth(), + type.getHeight() + ); + } + + @Override + protected List postGeneration(Collection types) { + return Collections.emptyList(); + } + + @Override + protected void postWrite(EnumGenerator generator) { + } + @Override public Logger getLogger() { return LOGGER; From f7fc7240f6b02f8087fd1822e5b340d873612fe7 Mon Sep 17 00:00:00 2001 From: LeoDog896 Date: Tue, 23 Feb 2021 07:53:10 -0500 Subject: [PATCH 13/48] Reduce boilerplate in convience methods --- .../net/minestom/server/entity/Player.java | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index e508f7d66..d8182a8b2 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -870,15 +870,7 @@ public class Player extends LivingEntity implements CommandSender { * @param pitch the pitch of the sound, between 0.5 and 2.0 */ public void playSound(@NotNull Sound sound, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { - SoundEffectPacket soundEffectPacket = new SoundEffectPacket(); - soundEffectPacket.soundId = sound.getId(); - soundEffectPacket.soundCategory = soundCategory; - soundEffectPacket.x = position.getX(); - soundEffectPacket.y = position.getY(); - soundEffectPacket.z = position.getZ(); - soundEffectPacket.volume = volume; - soundEffectPacket.pitch = pitch; - playerConnection.sendPacket(soundEffectPacket); + playSound(sound, soundCategory, position.getX(), position.getY(), position.getZ(), volume, pitch); } /** @@ -891,15 +883,7 @@ public class Player extends LivingEntity implements CommandSender { * @param pitch the pitch of the sound, between 0.5 and 2.0 */ public void playSound(@NotNull String identifier, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { - NamedSoundEffectPacket namedSoundEffectPacket = new NamedSoundEffectPacket(); - namedSoundEffectPacket.soundName = identifier; - namedSoundEffectPacket.soundCategory = soundCategory; - namedSoundEffectPacket.x = position.getX(); - namedSoundEffectPacket.y = position.getY(); - namedSoundEffectPacket.z = position.getZ(); - namedSoundEffectPacket.volume = volume; - namedSoundEffectPacket.pitch = pitch; - playerConnection.sendPacket(namedSoundEffectPacket); + playSound(identifier, soundCategory, position.getX(), position.getY(), position.getZ(), volume, pitch); } /** From 237466c90e27e8f4873e483f4552ee19d51ab333 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 16:10:14 +0300 Subject: [PATCH 14/48] Removed new entity classes and marked previously existing ones as deprecated --- .../server/entity/EntityCreature.java | 2 +- .../entity/metadata/animal/LlamaMeta.java | 3 +- ...{EndermineMeta.java => EndermiteMeta.java} | 4 +- .../raider/SpellcasterIllagerMeta.java | 1 - .../monster/zombie/ZombieVillagerMeta.java | 3 +- .../metadata/water/fish/TropicalFishMeta.java | 1 - .../type/ambient/EntityAbstractVillager.java | 29 ---- .../server/entity/type/ambient/EntityBat.java | 33 ----- .../type/ambient/EntityTraderLlama.java | 22 --- .../entity/type/ambient/EntityVillager.java | 130 ------------------ .../type/ambient/EntityWanderingTrader.java | 19 --- .../type/animal/EntityAbstractHorse.java | 109 --------------- .../server/entity/type/animal/EntityBee.java | 4 + .../server/entity/type/animal/EntityCat.java | 4 + .../type/animal/EntityChestedHorse.java | 28 ---- .../entity/type/animal/EntityChicken.java | 4 + .../server/entity/type/animal/EntityCow.java | 4 + .../entity/type/animal/EntityDolphin.java | 4 + .../entity/type/animal/EntityDonkey.java | 21 --- .../server/entity/type/animal/EntityFox.java | 4 + .../entity/type/animal/EntityHoglin.java | 32 ----- .../entity/type/animal/EntityHorse.java | 93 ------------- .../entity/type/animal/EntityLlama.java | 40 +----- .../entity/type/animal/EntityMooshroom.java | 4 + .../server/entity/type/animal/EntityMule.java | 21 --- .../entity/type/animal/EntityOcelot.java | 4 + .../entity/type/animal/EntityPanda.java | 4 + .../entity/type/animal/EntityParrot.java | 41 ------ .../server/entity/type/animal/EntityPig.java | 4 + .../entity/type/animal/EntityPolarBear.java | 4 + .../entity/type/animal/EntityRabbit.java | 4 + .../entity/type/animal/EntitySheep.java | 63 --------- .../type/animal/EntitySkeletonHorse.java | 21 --- .../entity/type/animal/EntityStrider.java | 48 ------- .../server/entity/type/animal/EntityWolf.java | 47 ------- .../entity/type/animal/EntityZombieHorse.java | 20 --- .../type/decoration/EntityArmorStand.java | 4 + .../type/decoration/EntityItemFrame.java | 4 + .../entity/type/monster/EntityBasePiglin.java | 30 ---- .../entity/type/monster/EntityBlaze.java | 4 + .../entity/type/monster/EntityCaveSpider.java | 4 + .../entity/type/monster/EntityCreeper.java | 4 + .../entity/type/monster/EntityDrowned.java | 13 -- .../type/monster/EntityElderGuardian.java | 21 --- .../entity/type/monster/EntityEnderman.java | 48 ------- .../entity/type/monster/EntityEndermite.java | 5 + .../entity/type/monster/EntityEvoker.java | 21 --- .../entity/type/monster/EntityGhast.java | 4 + .../entity/type/monster/EntityGiant.java | 4 + .../entity/type/monster/EntityGuardian.java | 4 + .../entity/type/monster/EntityHusk.java | 13 -- .../entity/type/monster/EntityIllusioner.java | 21 --- .../entity/type/monster/EntityMagmaCube.java | 13 -- .../entity/type/monster/EntityPhantom.java | 4 + .../entity/type/monster/EntityPiglin.java | 51 ------- .../type/monster/EntityPiglinBrute.java | 21 --- .../entity/type/monster/EntityPillager.java | 21 --- .../entity/type/monster/EntityRaider.java | 30 ---- .../entity/type/monster/EntityRavager.java | 21 --- .../entity/type/monster/EntitySilverfish.java | 4 + .../entity/type/monster/EntitySkeleton.java | 31 ----- .../entity/type/monster/EntitySlime.java | 4 + .../monster/EntitySpellcasterIllager.java | 39 ------ .../entity/type/monster/EntitySpider.java | 4 + .../entity/type/monster/EntityStray.java | 21 --- .../server/entity/type/monster/EntityVex.java | 56 -------- .../entity/type/monster/EntityVindicator.java | 21 --- .../entity/type/monster/EntityWitch.java | 4 + .../type/monster/EntityWitherSkeleton.java | 21 --- .../entity/type/monster/EntityZoglin.java | 23 ---- .../entity/type/monster/EntityZombie.java | 4 + .../type/monster/EntityZombieVillager.java | 40 ------ .../type/monster/EntityZombifiedPiglin.java | 4 + .../type/other/EntityAreaEffectCloud.java | 4 + .../entity/type/other/EntityEndCrystal.java | 4 + .../entity/type/other/EntityIronGolem.java | 4 + .../entity/type/other/EntityShulker.java | 61 -------- .../entity/type/other/EntitySnowman.java | 4 + .../type/projectile/EntityAbstractArrow.java | 49 ------- .../entity/type/projectile/EntityArrow.java | 9 -- .../type/projectile/EntityEyeOfEnder.java | 4 + .../entity/type/projectile/EntityPotion.java | 4 + .../entity/type/vehicle/EntityBoat.java | 4 + .../entity/type/water/EntityAbstractFish.java | 29 ---- .../server/entity/type/water/EntityCod.java | 21 --- .../entity/type/water/EntityPufferFish.java | 53 ------- .../entity/type/water/EntitySalmon.java | 21 --- .../server/entity/type/water/EntitySquid.java | 22 --- .../entity/type/water/EntityTropicalFish.java | 122 ---------------- src/test/java/demo/commands/HorseCommand.java | 22 +-- src/test/java/demo/commands/ShootCommand.java | 4 +- 91 files changed, 167 insertions(+), 1794 deletions(-) rename src/main/java/net/minestom/server/entity/metadata/monster/{EndermineMeta.java => EndermiteMeta.java} (63%) delete mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java delete mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java delete mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java delete mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java delete mode 100644 src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityMule.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java delete mode 100644 src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityStray.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityVex.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java delete mode 100644 src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java delete mode 100644 src/main/java/net/minestom/server/entity/type/other/EntityShulker.java delete mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java delete mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityCod.java delete mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java delete mode 100644 src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java delete mode 100644 src/main/java/net/minestom/server/entity/type/water/EntitySquid.java delete mode 100644 src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index ee1de261d..b445709a8 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -24,7 +24,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -public abstract class EntityCreature extends LivingEntity implements NavigableEntity, EntityAI { +public class EntityCreature extends LivingEntity implements NavigableEntity, EntityAI { private int removalAnimationDelay = 1000; diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java index 124f0fedc..606166990 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java @@ -2,7 +2,6 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.animal.EntityLlama; import org.jetbrains.annotations.NotNull; public class LlamaMeta extends ChestedHorseMeta { @@ -31,7 +30,7 @@ public class LlamaMeta extends ChestedHorseMeta { return Variant.VALUES[getMetadata().getIndex((byte) 21, 0)]; } - public void setVariant(EntityLlama.Variant value) { + public void setVariant(Variant value) { getMetadata().setIndex((byte) 21, Metadata.VarInt(value.ordinal())); } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java similarity index 63% rename from src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java rename to src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java index 796d0f9b2..9669664ac 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/EndermineMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java @@ -3,9 +3,9 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; import org.jetbrains.annotations.NotNull; -public class EndermineMeta extends MonsterMeta { +public class EndermiteMeta extends MonsterMeta { - public EndermineMeta(@NotNull Entity entity) { + public EndermiteMeta(@NotNull Entity entity) { super(entity); } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java index 623e3eecb..e2dd97377 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java @@ -2,7 +2,6 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.monster.EntitySpellcasterIllager; import org.jetbrains.annotations.NotNull; public class SpellcasterIllagerMeta extends AbstractIllagerMeta { diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java index ac9deb50c..963eb0d89 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java @@ -3,7 +3,6 @@ package net.minestom.server.entity.metadata.monster.zombie; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.villager.VillagerMeta; -import net.minestom.server.entity.type.ambient.EntityVillager; import org.jetbrains.annotations.NotNull; public class ZombieVillagerMeta extends ZombieMeta { @@ -28,7 +27,7 @@ public class ZombieVillagerMeta extends ZombieMeta { return new VillagerMeta.VillagerData(VillagerMeta.Type.VALUES[data[0]], VillagerMeta.Profession.VALUES[data[1]], VillagerMeta.Level.VALUES[data[2] - 1]); } - public void setVillagerData(EntityVillager.VillagerData data) { + public void setVillagerData(VillagerMeta.VillagerData data) { getMetadata().setIndex((byte) 17, Metadata.VillagerData( data.getType().ordinal(), data.getProfession().ordinal(), diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java index d218e57d6..cdbdb6aec 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java @@ -2,7 +2,6 @@ package net.minestom.server.entity.metadata.water.fish; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.water.EntityTropicalFish; import org.jetbrains.annotations.NotNull; public class TropicalFishMeta extends AbstractFishMeta { diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java deleted file mode 100644 index 13f4bd043..000000000 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityAbstractVillager.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.minestom.server.entity.type.ambient; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityAbstractVillager extends AgeableCreature { - - EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public int getHeadShakeTimer() { - return this.metadata.getIndex((byte) 16, 0); - } - - public void setHeadShakeTimer(int value) { - this.metadata.setIndex((byte) 16, Metadata.VarInt(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java deleted file mode 100644 index 31e12e671..000000000 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.minestom.server.entity.type.ambient; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.entity.type.Animal; -import net.minestom.server.utils.Position; - -public class EntityBat extends AgeableCreature implements Animal { - - public EntityBat(Position spawnPosition) { - super(EntityType.BAT, spawnPosition); - setBoundingBox(0.5f, 0.9f, 0.5f); - } - - /** - * Gets if the bat is hanging. - * - * @return true if the bat is hanging, false otherwise - */ - public boolean isHanging() { - return metadata.getIndex((byte) 15, 0) == 1; - } - - /** - * Makes the bat hanging or cancel. - * - * @param hanging true to make the bat hanging, false otherwise - */ - public void setHanging(boolean hanging) { - this.metadata.setIndex((byte) 15, Metadata.Byte((byte) (hanging ? 1 : 0))); - } -} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java deleted file mode 100644 index a7e28221d..000000000 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityTraderLlama.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minestom.server.entity.type.ambient; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityTraderLlama extends EntityCreature { - - public EntityTraderLlama(@NotNull Position spawnPosition) { - super(EntityType.TRADER_LLAMA, spawnPosition); - setBoundingBox(.9D, 1.87D, .9D); - } - - public EntityTraderLlama(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.TRADER_LLAMA, spawnPosition, instance); - setBoundingBox(.9D, 1.87D, .9D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java deleted file mode 100644 index 026ea61de..000000000 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityVillager.java +++ /dev/null @@ -1,130 +0,0 @@ -package net.minestom.server.entity.type.ambient; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityVillager extends EntityAbstractVillager { - - public EntityVillager(@NotNull Position spawnPosition) { - this(EntityType.VILLAGER, spawnPosition); - } - - public EntityVillager(@NotNull Position spawnPosition, @Nullable Instance instance) { - this(EntityType.VILLAGER, spawnPosition, instance); - } - - EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - - public VillagerData getVillagerData() { - int[] data = this.metadata.getIndex((byte) 17, null); - if (data == null) { - return new VillagerData(Type.PLAINS, Profession.NONE, Level.NOVICE); - } - return new VillagerData(Type.VALUES[data[0]], Profession.VALUES[data[1]], Level.VALUES[data[2] - 1]); - } - - public void setVillagerData(VillagerData data) { - this.metadata.setIndex((byte) 17, Metadata.VillagerData( - data.type.ordinal(), - data.profession.ordinal(), - data.level.ordinal() + 1 - )); - } - - public static class VillagerData { - - private Type type; - private Profession profession; - private Level level; - - public VillagerData(@NotNull Type type, @NotNull Profession profession, @NotNull Level level) { - this.type = type; - this.profession = profession; - this.level = level; - } - - @NotNull - public Type getType() { - return this.type; - } - - public void setType(@NotNull Type type) { - this.type = type; - } - - @NotNull - public Profession getProfession() { - return this.profession; - } - - public void setProfession(@NotNull Profession profession) { - this.profession = profession; - } - - @NotNull - public Level getLevel() { - return level; - } - - public void setLevel(@NotNull Level level) { - this.level = level; - } - } - - public enum Type { - DESERT, - JUNGLE, - PLAINS, - SAVANNA, - SNOW, - SWAMP, - TAIGA; - - public final static Type[] VALUES = values(); - } - - public enum Profession { - NONE, - ARMORER, - BUTCHER, - CARTOGRAPHER, - CLERIC, - FARMER, - FISHERMAN, - FLETCHER, - LEATHERWORKER, - LIBRARIAN, - NITWIT, - UNEMPLOYED, - MASON, - SHEPHERD, - TOOLSMITH, - WEAPONSMITH; - - public final static Profession[] VALUES = values(); - } - - public enum Level { - NOVICE, - APPRENTICE, - JOURNEYMAN, - EXPERT, - MASTER; - - public final static Level[] VALUES = values(); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java deleted file mode 100644 index 85df05972..000000000 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityWanderingTrader.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minestom.server.entity.type.ambient; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityWanderingTrader extends EntityAbstractVillager { - - public EntityWanderingTrader(@NotNull Position spawnPosition) { - super(EntityType.WANDERING_TRADER, spawnPosition); - } - - public EntityWanderingTrader(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.WANDERING_TRADER, spawnPosition, instance); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java deleted file mode 100644 index 149212515..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityAbstractHorse.java +++ /dev/null @@ -1,109 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.entity.type.Animal; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.UUID; - -public class EntityAbstractHorse extends AgeableCreature implements Animal { - - private final static byte TAMED_BIT = 0x02; - private final static byte SADDLED_BIT = 0x04; - private final static byte HAS_BRED_BIT = 0x08; - private final static byte EATING_BIT = 0x10; - private final static byte REARING_BIT = 0x20; - private final static byte MOUTH_OPEN_BIT = 0x40; - - EntityAbstractHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - EntityAbstractHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public boolean isTamed() { - return (getMask() & TAMED_BIT) != 0; - } - - public void setTamed(boolean value) { - modifyMask(TAMED_BIT, value); - } - - public boolean isSaddled() { - return (getMask() & SADDLED_BIT) != 0; - } - - public void setSaddled(boolean value) { - modifyMask(SADDLED_BIT, value); - } - - public boolean isHasBred() { - return (getMask() & HAS_BRED_BIT) != 0; - } - - public void setHasBred(boolean value) { - modifyMask(HAS_BRED_BIT, value); - } - - public boolean isEating() { - return (getMask() & EATING_BIT) != 0; - } - - public void setEating(boolean value) { - modifyMask(EATING_BIT, value); - } - - public boolean isRearing() { - return (getMask() & REARING_BIT) != 0; - } - - public void setRearing(boolean value) { - modifyMask(REARING_BIT, value); - } - - public boolean isMouthOpen() { - return (getMask() & MOUTH_OPEN_BIT) != 0; - } - - public void setMouthOpen(boolean value) { - modifyMask(MOUTH_OPEN_BIT, value); - } - - public UUID getOwner() { - return this.metadata.getIndex((byte) 17, null); - } - - public void setOwner(UUID value) { - this.metadata.setIndex((byte) 17, Metadata.OptUUID(value)); - } - - private byte getMask() { - return this.metadata.getIndex((byte) 16, (byte) 0); - } - - private void setMask(byte mask) { - this.metadata.setIndex((byte) 16, Metadata.Byte(mask)); - } - - private void modifyMask(byte bit, boolean value) { - byte mask = getMask(); - boolean isPresent = (mask & bit) == bit; - if (isPresent == value) { - return; - } - if (value) { - mask |= bit; - } else { - mask &= ~bit; - } - setMask(mask); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java b/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java index d1d0ea8b6..4128ab86a 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityBee.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.BeeMeta} instead. + */ +@Deprecated public class EntityBee extends AgeableCreature implements Animal { public EntityBee(Position spawnPosition) { super(EntityType.BEE, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java b/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java index c49b94e9f..a22079b0a 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityCat.java @@ -8,6 +8,10 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.tameable.CatMeta} instead. + */ +@Deprecated public class EntityCat extends TameableAnimalCreature { public EntityCat(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java deleted file mode 100644 index 15385a79f..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityChestedHorse.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityChestedHorse extends EntityAbstractHorse { - - EntityChestedHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - EntityChestedHorse(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public boolean hasChest() { - return this.metadata.getIndex((byte) 18, false); - } - - public void setChest(boolean value) { - this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java b/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java index c9f762234..e7306d8a1 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityChicken.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.ChickenMeta} instead. + */ +@Deprecated public class EntityChicken extends AgeableCreature implements Animal { public EntityChicken(Position spawnPosition) { super(EntityType.CHICKEN, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java b/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java index 40e2e12dc..228a9614a 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityCow.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.CowMeta} instead. + */ +@Deprecated public class EntityCow extends AgeableCreature implements Animal { public EntityCow(Position spawnPosition) { super(EntityType.COW, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java b/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java index 97e81dd65..56a51db92 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityDolphin.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.water.DolphinMeta} instead. + */ +@Deprecated public class EntityDolphin extends AgeableCreature implements Animal { public EntityDolphin(Position spawnPosition) { super(EntityType.DOLPHIN, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java b/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java deleted file mode 100644 index 9a522126d..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityDonkey.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityDonkey extends EntityChestedHorse { - - public EntityDonkey(@NotNull Position spawnPosition) { - super(EntityType.DONKEY, spawnPosition); - setBoundingBox(1.3965D, 1.5D, 1.3965D); - } - - public EntityDonkey(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.DONKEY, spawnPosition, instance); - setBoundingBox(1.3965D, 1.5D, 1.3965D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java b/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java index 18b32beae..8b79e65a6 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityFox.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.FoxMeta} instead. + */ +@Deprecated public class EntityFox extends AgeableCreature implements Animal { public EntityFox(Position spawnPosition) { super(EntityType.FOX, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java b/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java deleted file mode 100644 index 4a061385b..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityHoglin.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.entity.type.Animal; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityHoglin extends AgeableCreature implements Animal { - - public EntityHoglin(@NotNull Position spawnPosition) { - super(EntityType.HOGLIN, spawnPosition); - setBoundingBox(1.3965D, 1.4D, 1.3965D); - } - - public EntityHoglin(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.HOGLIN, spawnPosition, instance); - setBoundingBox(1.3965D, 1.4D, 1.3965D); - } - - public boolean isImmuneToZombification() { - return this.metadata.getIndex((byte) 16, false); - } - - public void setImmuneToZombification(boolean value) { - this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java deleted file mode 100644 index 2c0bff8e7..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityHorse.java +++ /dev/null @@ -1,93 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityHorse extends EntityAbstractHorse { - - public EntityHorse(@NotNull Position spawnPosition) { - super(EntityType.HORSE, spawnPosition); - setBoundingBox(1.3965D, 1.6D, 1.3965D); - } - - public EntityHorse(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.HORSE, spawnPosition, instance); - setBoundingBox(1.3965D, 1.6D, 1.3965D); - } - - public Variant getVariant() { - return getVariantFromID(this.metadata.getIndex((byte) 18, 0)); - } - - public void setVariant(Variant variant) { - this.metadata.setIndex((byte) 18, Metadata.VarInt(getVariantID(variant.marking, variant.color))); - } - - public static int getVariantID(@NotNull Marking marking, @NotNull Color color) { - return (marking.ordinal() << 8) + color.ordinal(); - } - - public static Variant getVariantFromID(int variantID) { - return new Variant( - Marking.VALUES[variantID >> 8], - Color.VALUES[variantID & 0xFF] - ); - } - - public static class Variant { - - private Marking marking; - private Color color; - - public Variant(@NotNull Marking marking, @NotNull Color color) { - this.marking = marking; - this.color = color; - } - - @NotNull - public Marking getMarking() { - return this.marking; - } - - public void setMarking(@NotNull Marking marking) { - this.marking = marking; - } - - @NotNull - public Color getColor() { - return this.color; - } - - public void setColor(@NotNull Color color) { - this.color = color; - } - - } - - public enum Marking { - NONE, - WHITE, - WHITE_FIELD, - WHITE_DOTS, - BLACK_DOTS; - - private final static Marking[] VALUES = values(); - } - - public enum Color { - WHITE, - CREAMY, - CHESTNUT, - BROWN, - BLACK, - GRAY, - DARK_BROWN; - - private final static Color[] VALUES = values(); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java b/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java index 0f8de5901..be1c1b66b 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityLlama.java @@ -1,5 +1,6 @@ package net.minestom.server.entity.type.animal; +import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.instance.Instance; @@ -7,7 +8,11 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class EntityLlama extends EntityChestedHorse { +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.LlamaMeta} instead. + */ +@Deprecated +public class EntityLlama extends EntityCreature { public EntityLlama(@NotNull Position spawnPosition) { super(EntityType.LLAMA, spawnPosition); @@ -19,37 +24,4 @@ public class EntityLlama extends EntityChestedHorse { setBoundingBox(.9D, 1.87D, .9D); } - public int getStrength() { - return this.metadata.getIndex((byte) 19, 0); - } - - public void setStrength(int value) { - this.metadata.setIndex((byte) 19, Metadata.VarInt(value)); - } - - public int getCarpetColor() { - return this.metadata.getIndex((byte) 20, -1); - } - - public void setCarpetColor(int value) { - this.metadata.setIndex((byte) 20, Metadata.VarInt(value)); - } - - public Variant getVariant() { - return Variant.VALUES[this.metadata.getIndex((byte) 21, 0)]; - } - - public void setVariant(Variant value) { - this.metadata.setIndex((byte) 21, Metadata.VarInt(value.ordinal())); - } - - public enum Variant { - CREAMY, - WHITE, - BROWN, - GRAY; - - private final static Variant[] VALUES = values(); - } - } diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java b/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java index b81a03532..368947ae1 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java @@ -7,6 +7,10 @@ import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.MooshroomMeta} instead. + */ +@Deprecated public class EntityMooshroom extends AgeableCreature implements Animal { public EntityMooshroom(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java b/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java deleted file mode 100644 index 0dfe21cd5..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityMule.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityMule extends EntityChestedHorse { - - public EntityMule(@NotNull Position spawnPosition) { - super(EntityType.MULE, spawnPosition); - setBoundingBox(1.3965D, 1.6D, 1.3965D); - } - - public EntityMule(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.MULE, spawnPosition, instance); - setBoundingBox(1.3965D, 1.6D, 1.3965D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java b/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java index 2d7a9aebb..0d08f19bf 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityOcelot.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.OcelotMeta} instead. + */ +@Deprecated public class EntityOcelot extends AgeableCreature implements Animal { public EntityOcelot(Position spawnPosition) { super(EntityType.OCELOT, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java index 0cc5e84cd..11709f376 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPanda.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.PandaMeta} instead. + */ +@Deprecated public class EntityPanda extends AgeableCreature implements Animal { public EntityPanda(Position spawnPosition) { super(EntityType.PANDA, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java b/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java deleted file mode 100644 index 5fd71c3c8..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityParrot.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.TameableAnimalCreature; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityParrot extends TameableAnimalCreature { - - public EntityParrot(@NotNull Position spawnPosition) { - super(EntityType.PARROT, spawnPosition); - setBoundingBox(.5D, .9D, .5D); - } - - public EntityParrot(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.PARROT, spawnPosition, instance); - setBoundingBox(.5D, .9D, .5D); - } - - public Color getColor() { - return Color.VALUES[this.metadata.getIndex((byte) 18, 0)]; - } - - public void setColor(Color value) { - this.metadata.setIndex((byte) 18, Metadata.VarInt(value.ordinal())); - } - - public enum Color { - RED_BLUE, - BLUE, - GREEN, - YELLOW_BLUE, - GREY; - - private final static Color[] VALUES = values(); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java index abbf47523..59acb3728 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.PigMeta} instead. + */ +@Deprecated public class EntityPig extends AgeableCreature implements Animal { public EntityPig(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java index b0bb55dd0..ebb0ab8f2 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.PolarBearMeta} instead. + */ +@Deprecated public class EntityPolarBear extends AgeableCreature implements Animal { public EntityPolarBear(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java b/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java index a06b397da..841d4e6a4 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.type.AgeableCreature; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.animal.RabbitMeta} instead. + */ +@Deprecated public class EntityRabbit extends AgeableCreature implements Animal { public EntityRabbit(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java b/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java deleted file mode 100644 index 8bf98c0a9..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntitySheep.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.entity.type.Animal; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntitySheep extends AgeableCreature implements Animal { - - public EntitySheep(@NotNull Position spawnPosition) { - super(EntityType.SHEEP, spawnPosition); - setBoundingBox(.9D, 1.3D, .9D); - } - - public EntitySheep(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.SHEEP, spawnPosition, instance); - setBoundingBox(.9D, 1.3D, .9D); - } - - public int getColor() { - return getMask() & 0x0F; - } - - public void setColor(byte color) { - byte before = getMask(); - byte mask = before; - mask &= ~0x0F; - mask |= (color & 0x0F); - if (mask != before) { - setMask(mask); - } - } - - public boolean isSheared() { - return (getMask() & 0x10) != 0; - } - - public void setSheared(boolean value) { - byte mask = getMask(); - if (((mask & 0x10) != 0) == value) { - return; - } - if (value) { - mask |= 0x10; - } else { - mask &= ~0x10; - } - setMask(mask); - } - - private byte getMask() { - return this.metadata.getIndex((byte) 16, (byte) 0); - } - - private void setMask(byte value) { - this.metadata.setIndex((byte) 16, Metadata.Byte(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java deleted file mode 100644 index 566c1dcd5..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntitySkeletonHorse.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntitySkeletonHorse extends EntityAbstractHorse { - - public EntitySkeletonHorse(@NotNull Position spawnPosition) { - super(EntityType.SKELETON_HORSE, spawnPosition); - setBoundingBox(1.3965D, 1.6D, 1.3965D); - } - - public EntitySkeletonHorse(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.SKELETON_HORSE, spawnPosition, instance); - setBoundingBox(1.3965D, 1.6D, 1.3965D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java b/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java deleted file mode 100644 index 551bbdf54..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityStrider.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.entity.type.Animal; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityStrider extends AgeableCreature implements Animal { - - public EntityStrider(@NotNull Position spawnPosition) { - super(EntityType.STRIDER, spawnPosition); - setBoundingBox(.9D, 1.7D, .9D); - } - - public EntityStrider(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.STRIDER, spawnPosition, instance); - setBoundingBox(.9D, 1.7D, .9D); - } - - public int getTimeToBoost() { - return this.metadata.getIndex((byte) 16, 0); - } - - public void setTimeToBoost(int value) { - this.metadata.setIndex((byte) 16, Metadata.VarInt(value)); - } - - public boolean isShaking() { - return this.metadata.getIndex((byte) 17, false); - } - - public void setShaking(boolean value) { - this.metadata.setIndex((byte) 17, Metadata.Boolean(value)); - } - - public boolean isHasSaddle() { - return this.metadata.getIndex((byte) 18, false); - } - - public void setHasSaddle(boolean value) { - this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java b/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java deleted file mode 100644 index 41ba0248b..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityWolf.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.TameableAnimalCreature; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityWolf extends TameableAnimalCreature { - - public EntityWolf(@NotNull Position spawnPosition) { - super(EntityType.WOLF, spawnPosition); - setBoundingBox(.6D, .85D, .6D); - } - - public EntityWolf(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.WOLF, spawnPosition, instance); - setBoundingBox(.6D, .85D, .6D); - } - - public boolean isBegging() { - return this.metadata.getIndex((byte) 18, false); - } - - public void setBegging(boolean value) { - this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); - } - - public int getCollarColor() { - return this.metadata.getIndex((byte) 19, 14); - } - - public void setCollarColor(int value) { - this.metadata.setIndex((byte) 19, Metadata.VarInt(value)); - } - - public int getAngerTime() { - return this.metadata.getIndex((byte) 20, 0); - } - - public void setAngerTime(int value) { - this.metadata.setIndex((byte) 20, Metadata.VarInt(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java b/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java deleted file mode 100644 index 68060c348..000000000 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityZombieHorse.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minestom.server.entity.type.animal; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityZombieHorse extends EntityAbstractHorse { - - public EntityZombieHorse(@NotNull Position spawnPosition) { - super(EntityType.ZOMBIE_HORSE, spawnPosition); - } - - public EntityZombieHorse(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.ZOMBIE_HORSE, spawnPosition, instance); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java b/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java index e8b473ad5..e245ccd57 100644 --- a/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java +++ b/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java @@ -13,6 +13,10 @@ import net.minestom.server.utils.Vector; import net.minestom.server.utils.binary.BitmaskUtil; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.other.ArmorStandMeta} instead. + */ +@Deprecated public class EntityArmorStand extends ObjectEntity implements EquipmentHandler { // Equipments diff --git a/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java b/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java index 242e09358..7683a76ce 100644 --- a/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java +++ b/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java @@ -10,6 +10,10 @@ import org.jetbrains.annotations.NotNull; // FIXME: https://wiki.vg/Object_Data#Item_Frame_.28id_71.29 // "You have to set both Orientation and Yaw/Pitch accordingly, otherwise it will not work." +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.other.ItemFrameMeta} instead. + */ +@Deprecated public class EntityItemFrame extends ObjectEntity { private final ItemFrameOrientation orientation; diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java deleted file mode 100644 index 9a445a11d..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityBasePiglin.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.Monster; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityBasePiglin extends EntityCreature implements Monster { - - EntityBasePiglin(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - EntityBasePiglin(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public boolean isImmuneToZombification() { - return this.metadata.getIndex((byte) 16, false); - } - - public void setImmuneToZombification(boolean value) { - this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java b/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java index 5b572a8bb..c3620c5d4 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.BlazeMeta} instead. + */ +@Deprecated public class EntityBlaze extends EntityCreature implements Monster { public EntityBlaze(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityCaveSpider.java b/src/main/java/net/minestom/server/entity/type/monster/EntityCaveSpider.java index b607f23c9..2ab612f89 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityCaveSpider.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityCaveSpider.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.SpiderMeta} instead. + */ +@Deprecated public class EntityCaveSpider extends EntityCreature implements Monster { public EntityCaveSpider(Position spawnPosition) { super(EntityType.CAVE_SPIDER, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java b/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java index 8ec9ea27a..4ac1bb2df 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java @@ -7,6 +7,10 @@ import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.CreeperMeta} instead. + */ +@Deprecated public class EntityCreeper extends EntityCreature implements Monster { public EntityCreeper(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java b/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java deleted file mode 100644 index f771fa9bf..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityDrowned.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; - -public class EntityDrowned extends EntityZombie { - - public EntityDrowned(@NotNull Position spawnPosition) { - super(EntityType.DROWNED, spawnPosition); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java b/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java deleted file mode 100644 index ad5e92b8e..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityElderGuardian.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityElderGuardian extends EntityGuardian { - - public EntityElderGuardian(@NotNull Position spawnPosition) { - super(EntityType.ELDER_GUARDIAN, spawnPosition); - setBoundingBox(1.9975D, 1.9975D, 1.9975D); - } - - public EntityElderGuardian(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.ELDER_GUARDIAN, spawnPosition, instance); - setBoundingBox(1.9975D, 1.9975D, 1.9975D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java deleted file mode 100644 index 00818207e..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityEnderman.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.Monster; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityEnderman extends EntityCreature implements Monster { - - public EntityEnderman(@NotNull Position spawnPosition) { - super(EntityType.ENDERMAN, spawnPosition); - setBoundingBox(.6D, 2.9D, .6D); - } - - public EntityEnderman(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.ENDERMAN, spawnPosition, instance); - setBoundingBox(.6D, 2.9D, .6D); - } - - public Integer getCarriedBlockID() { - return this.metadata.getIndex((byte) 15, null); - } - - public void setCarriedBlockID(@Nullable Integer value) { - this.metadata.setIndex((byte) 15, Metadata.OptBlockID(value)); - } - - public boolean isScreaming() { - return this.metadata.getIndex((byte) 16, false); - } - - public void setScreaming(boolean value) { - this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); - } - - public boolean isStaring() { - return this.metadata.getIndex((byte) 17, false); - } - - public void setStaring(boolean value) { - this.metadata.setIndex((byte) 17, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEndermite.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEndermite.java index b951d4abc..85cc67445 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityEndermite.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityEndermite.java @@ -2,9 +2,14 @@ package net.minestom.server.entity.type.monster; import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.metadata.monster.EndermiteMeta; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link EndermiteMeta} instead. + */ +@Deprecated public class EntityEndermite extends EntityCreature implements Monster { public EntityEndermite(Position spawnPosition) { super(EntityType.ENDERMITE, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java b/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java deleted file mode 100644 index b3d46f0a6..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityEvoker.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityEvoker extends EntitySpellcasterIllager { - - public EntityEvoker(@NotNull Position spawnPosition) { - super(EntityType.EVOKER, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - public EntityEvoker(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.EVOKER, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java b/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java index 09852cec3..2e318f404 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.flying.GhastMeta} instead. + */ +@Deprecated public class EntityGhast extends EntityCreature implements Monster { public EntityGhast(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityGiant.java b/src/main/java/net/minestom/server/entity/type/monster/EntityGiant.java index dc8be9a06..8fc470d3c 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityGiant.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityGiant.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.GiantMeta} instead. + */ +@Deprecated public class EntityGiant extends EntityCreature implements Monster { public EntityGiant(Position spawnPosition) { super(EntityType.GIANT, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java b/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java index a8b5ccd4c..23b34a76a 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java @@ -10,6 +10,10 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.GuardianMeta} instead. + */ +@Deprecated public class EntityGuardian extends EntityCreature implements Monster { private Entity target; diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java b/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java deleted file mode 100644 index 248fd012c..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityHusk.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; - -public class EntityHusk extends EntityZombie { - - public EntityHusk(@NotNull Position spawnPosition) { - super(EntityType.HUSK, spawnPosition); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java b/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java deleted file mode 100644 index 4bd1b8448..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityIllusioner.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityIllusioner extends EntitySpellcasterIllager { - - public EntityIllusioner(@NotNull Position spawnPosition) { - super(EntityType.ILLUSIONER, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - public EntityIllusioner(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.ILLUSIONER, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java b/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java deleted file mode 100644 index fd3075322..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityMagmaCube.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; - -public class EntityMagmaCube extends EntitySlime { - - public EntityMagmaCube(@NotNull Position spawnPosition) { - super(EntityType.MAGMA_CUBE, spawnPosition); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java index 423dc92ed..94f5f469c 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.flying.PhantomMeta} instead. + */ +@Deprecated public class EntityPhantom extends EntityCreature implements Monster { public EntityPhantom(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java deleted file mode 100644 index 607004818..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglin.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityPiglin extends EntityBasePiglin { - - public EntityPiglin(@NotNull Position spawnPosition) { - super(EntityType.PIGLIN, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - public EntityPiglin(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.PIGLIN, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - - public boolean isBaby() { - return this.metadata.getIndex((byte) 16, false); - } - - public void setBaby(boolean value) { - this.metadata.setIndex((byte) 16, Metadata.Boolean(value)); - } - - public boolean isChargingCrossbow() { - return this.metadata.getIndex((byte) 17, false); - } - - public void setChargingCrossbow(boolean value) { - this.metadata.setIndex((byte) 17, Metadata.Boolean(value)); - } - - public boolean isDancing() { - return this.metadata.getIndex((byte) 18, false); - } - - public void setDancing(boolean value) { - this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); - } - - @Override - public double getEyeHeight() { - return isBaby() ? super.getEyeHeight() / 2 : super.getEyeHeight(); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java deleted file mode 100644 index ecbde206e..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPiglinBrute.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityPiglinBrute extends EntityBasePiglin { - - public EntityPiglinBrute(@NotNull Position spawnPosition) { - super(EntityType.PIGLIN_BRUTE, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - public EntityPiglinBrute(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.PIGLIN_BRUTE, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java deleted file mode 100644 index 541459283..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPillager.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityPillager extends EntityRaider { - - public EntityPillager(@NotNull Position spawnPosition) { - super(EntityType.PILLAGER, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - public EntityPillager(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.PILLAGER, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java b/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java deleted file mode 100644 index 92f1fa6e2..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityRaider.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.Monster; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityRaider extends EntityCreature implements Monster { - - protected EntityRaider(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - protected EntityRaider(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public boolean isCelebrating() { - return this.metadata.getIndex((byte) 15, false); - } - - public void setCelebrating(boolean value) { - this.metadata.setIndex((byte) 15, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java deleted file mode 100644 index daacc9639..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityRavager.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityRavager extends EntityRaider { - - public EntityRavager(@NotNull Position spawnPosition) { - super(EntityType.RAVAGER, spawnPosition); - setBoundingBox(1.95D, 2.2D, 1.95D); - } - - public EntityRavager(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.RAVAGER, spawnPosition, instance); - setBoundingBox(1.95D, 2.2D, 1.95D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySilverfish.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySilverfish.java index b9bd87c37..f7f0df93e 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySilverfish.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySilverfish.java @@ -5,6 +5,10 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.SilverfishMeta} instead. + */ +@Deprecated public class EntitySilverfish extends EntityCreature implements Monster { public EntitySilverfish(Position spawnPosition) { super(EntityType.SILVERFISH, spawnPosition); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java deleted file mode 100644 index 325e6cb7a..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySkeleton.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.type.Monster; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntitySkeleton extends EntityCreature implements Monster { - - public EntitySkeleton(@NotNull Position spawnPosition) { - this(EntityType.SKELETON, spawnPosition); - setBoundingBox(.6D, 1.99D, .6D); - } - - public EntitySkeleton(@NotNull Position spawnPosition, @Nullable Instance instance) { - this(EntityType.SKELETON, spawnPosition, instance); - setBoundingBox(.6D, 1.99D, .6D); - } - - EntitySkeleton(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - EntitySkeleton(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java index 192167f62..3da2b83bc 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java @@ -7,6 +7,10 @@ import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.other.SlimeMeta} instead. + */ +@Deprecated public class EntitySlime extends EntityCreature implements Monster { public EntitySlime(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java deleted file mode 100644 index 654d4171c..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySpellcasterIllager.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntitySpellcasterIllager extends EntityRaider { - - protected EntitySpellcasterIllager(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - protected EntitySpellcasterIllager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public Spell getSpell() { - return Spell.VALUES[this.metadata.getIndex((byte) 16, (byte) 0)]; - } - - public void setSpell(Spell spell) { - this.metadata.setIndex((byte) 16, Metadata.Byte((byte) spell.ordinal())); - } - - public enum Spell { - NONE, - SUMMON_VEX, - ATTACK, - WOLOLO, - DISAPPEAR, - BLINDNESS; - - private final static Spell[] VALUES = values(); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java index 3a656f912..2cb346470 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.SpiderMeta} instead. + */ +@Deprecated public class EntitySpider extends EntityCreature implements Monster { public EntitySpider(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java b/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java deleted file mode 100644 index f34b5321f..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityStray.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityStray extends EntitySkeleton { - - public EntityStray(@NotNull Position spawnPosition) { - super(EntityType.STRAY, spawnPosition); - setBoundingBox(.6D, 1.99D, .6D); - } - - public EntityStray(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.STRAY, spawnPosition, instance); - setBoundingBox(.6D, 1.99D, .6D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java b/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java deleted file mode 100644 index d87dd956e..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityVex.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.Monster; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityVex extends EntityCreature implements Monster { - - private final static byte ATTACKING_BIT = 0x1; - - public EntityVex(@NotNull Position spawnPosition) { - super(EntityType.VEX, spawnPosition); - setBoundingBox(.4D, .8D, .4D); - } - - public EntityVex(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.VEX, spawnPosition, instance); - setBoundingBox(.4D, .8D, .4D); - } - - public boolean isAttacking() { - return (getMask() & ATTACKING_BIT) != 0; - } - - public void setAttacking(boolean value) { - modifyMask(ATTACKING_BIT, value); - } - - private byte getMask() { - return this.metadata.getIndex((byte) 15, (byte) 0); - } - - private void setMask(byte mask) { - this.metadata.setIndex((byte) 15, Metadata.Byte(mask)); - } - - private void modifyMask(byte bit, boolean value) { - byte mask = getMask(); - boolean isPresent = (mask & bit) == bit; - if (isPresent == value) { - return; - } - if (value) { - mask |= bit; - } else { - mask &= ~bit; - } - setMask(mask); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java b/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java deleted file mode 100644 index ee3a4ed81..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityVindicator.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityVindicator extends EntityRaider { - - public EntityVindicator(@NotNull Position spawnPosition) { - super(EntityType.VINDICATOR, spawnPosition); - setBoundingBox(.6D, 1.95D, .6D); - } - - public EntityVindicator(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.VINDICATOR, spawnPosition, instance); - setBoundingBox(.6D, 1.95D, .6D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java b/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java index 68f9c5743..cc72c6b93 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.raider.WitchMeta} instead. + */ +@Deprecated public class EntityWitch extends EntityCreature implements Monster { public EntityWitch(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java b/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java deleted file mode 100644 index eba35d856..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityWitherSkeleton.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityWitherSkeleton extends EntitySkeleton { - - public EntityWitherSkeleton(@NotNull Position spawnPosition) { - super(EntityType.WITHER_SKELETON, spawnPosition); - setBoundingBox(.7D, 2.4D, .7D); - } - - public EntityWitherSkeleton(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.WITHER_SKELETON, spawnPosition, instance); - setBoundingBox(.7D, 2.4D, .7D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java deleted file mode 100644 index 09efaaa58..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZoglin.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.type.AgeableCreature; -import net.minestom.server.entity.type.Monster; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityZoglin extends AgeableCreature implements Monster { - - public EntityZoglin(@NotNull Position spawnPosition) { - super(EntityType.ZOGLIN, spawnPosition); - setBoundingBox(1.3965D, 1.4D, 1.3965D); - } - - public EntityZoglin(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.ZOGLIN, spawnPosition, instance); - setBoundingBox(1.3965D, 1.4D, 1.3965D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java index 142d41644..598475d31 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java @@ -7,6 +7,10 @@ import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.zombie.ZombieMeta} instead. + */ +@Deprecated public class EntityZombie extends EntityCreature implements Monster { public EntityZombie(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java deleted file mode 100644 index ae43d783c..000000000 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombieVillager.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.minestom.server.entity.type.monster; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.ambient.EntityAbstractVillager; -import net.minestom.server.entity.type.ambient.EntityVillager; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; - -public class EntityZombieVillager extends EntityZombie { - - public EntityZombieVillager(@NotNull Position spawnPosition) { - super(EntityType.ZOMBIE_VILLAGER, spawnPosition); - } - - public boolean isConverting() { - return this.metadata.getIndex((byte) 18, false); - } - - public void setConverting(boolean value) { - this.metadata.setIndex((byte) 18, Metadata.Boolean(value)); - } - - public EntityVillager.VillagerData getVillagerData() { - int[] data = this.metadata.getIndex((byte) 17, null); - if (data == null) { - return new EntityVillager.VillagerData(EntityVillager.Type.PLAINS, EntityVillager.Profession.NONE, EntityVillager.Level.NOVICE); - } - return new EntityVillager.VillagerData(EntityVillager.Type.VALUES[data[0]], EntityVillager.Profession.VALUES[data[1]], EntityVillager.Level.VALUES[data[2] - 1]); - } - - public void setVillagerData(EntityVillager.VillagerData data) { - this.metadata.setIndex((byte) 17, Metadata.VillagerData( - data.getType().ordinal(), - data.getProfession().ordinal(), - data.getLevel().ordinal() + 1 - )); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java index 7a954a9ee..a3ce5cdd4 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java @@ -4,6 +4,10 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.monster.zombie.ZombifiedPiglinMeta} instead. + */ +@Deprecated public class EntityZombifiedPiglin extends EntityZombie { public EntityZombifiedPiglin(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java index c8503f040..afb6cdfc0 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java @@ -8,6 +8,10 @@ import net.minestom.server.utils.binary.BinaryWriter; import java.util.function.Consumer; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.other.AreaEffectCloudMeta} instead. + */ +@Deprecated public class EntityAreaEffectCloud extends ObjectEntity { public Consumer particleDataConsumer; diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityEndCrystal.java b/src/main/java/net/minestom/server/entity/type/other/EntityEndCrystal.java index 109b039fe..e1a205a66 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityEndCrystal.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityEndCrystal.java @@ -8,6 +8,10 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.other.EndCrystalMeta} instead. + */ +@Deprecated public class EntityEndCrystal extends ObjectEntity { public EntityEndCrystal(@NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java b/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java index a0731d8ee..97b5582be 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Constructable; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.golem.IronGolemMeta} instead. + */ +@Deprecated public class EntityIronGolem extends EntityCreature implements Constructable { public EntityIronGolem(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java b/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java deleted file mode 100644 index 3fd928cc6..000000000 --- a/src/main/java/net/minestom/server/entity/type/other/EntityShulker.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.minestom.server.entity.type.other; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.type.Constructable; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.BlockPosition; -import net.minestom.server.utils.Direction; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * TODO: update bounding box depending on state - */ -public class EntityShulker extends EntityCreature implements Constructable { - - public EntityShulker(@NotNull Position spawnPosition) { - super(EntityType.SHULKER, spawnPosition); - setBoundingBox(1D, 1D, 1D); - } - - public EntityShulker(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.SHULKER, spawnPosition, instance); - setBoundingBox(1D, 1D, 1D); - } - - public Direction getAttachFace() { - return this.metadata.getIndex((byte) 15, Direction.DOWN); - } - - public void setAttachFace(Direction value) { - this.metadata.setIndex((byte) 15, Metadata.Direction(value)); - } - - public BlockPosition getAttachmentPosition() { - return this.metadata.getIndex((byte) 16, null); - } - - public void setAttachmentPosition(BlockPosition value) { - this.metadata.setIndex((byte) 16, Metadata.OptPosition(value)); - } - - public byte getShieldHeight() { - return this.metadata.getIndex((byte) 17, (byte) 0); - } - - public void setShieldHeight(byte value) { - this.metadata.setIndex((byte) 17, Metadata.Byte(value)); - } - - public byte getColor() { - return this.metadata.getIndex((byte) 18, (byte) 10); - } - - public void setColor(byte value) { - this.metadata.setIndex((byte) 18, Metadata.Byte(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java b/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java index f69fb4ce1..5726ce421 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java @@ -6,6 +6,10 @@ import net.minestom.server.entity.Metadata; import net.minestom.server.entity.type.Constructable; import net.minestom.server.utils.Position; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.golem.SnowGolemMeta} instead. + */ +@Deprecated public class EntitySnowman extends EntityCreature implements Constructable { public EntitySnowman(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java index d910afff6..32af51d08 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java @@ -20,9 +20,6 @@ import java.util.stream.Collectors; public class EntityAbstractArrow extends AbstractProjectile { - private final static byte CRITICAL_BIT = 0x01; - private final static byte NO_CLIP_BIT = 0x02; - EntityAbstractArrow(@Nullable Entity shooter, @NotNull EntityType entityType, @NotNull Position spawnPosition) { super(shooter, entityType, spawnPosition); super.hasPhysics = false; @@ -122,52 +119,6 @@ public class EntityAbstractArrow extends AbstractProjectile { return false; } - public void setCritical(boolean value) { - modifyMask(CRITICAL_BIT, value); - } - - public boolean isCritical() { - return (getMask() & CRITICAL_BIT) != 0; - } - - public void setNoClip(boolean value) { - modifyMask(NO_CLIP_BIT, value); - } - - public boolean isNoClip() { - return (getMask() & NO_CLIP_BIT) != 0; - } - - public void setPiercingLevel(byte value) { - this.metadata.setIndex((byte) 8, Metadata.Byte(value)); - } - - public byte getPiercingLevel() { - return this.metadata.getIndex((byte) 8, (byte) 0); - } - - private byte getMask() { - return this.metadata.getIndex((byte) 7, (byte) 0); - } - - private void setMask(byte mask) { - this.metadata.setIndex((byte) 7, Metadata.Byte(mask)); - } - - private void modifyMask(byte bit, boolean value) { - byte mask = getMask(); - boolean isPresent = (mask & bit) == bit; - if (isPresent == value) { - return; - } - if (value) { - mask |= bit; - } else { - mask &= ~bit; - } - setMask(mask); - } - @Override public int getObjectData() { Entity shooter = getShooter(); diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java index 39bc7ef1c..a82d7ca0d 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java @@ -11,15 +11,6 @@ public class EntityArrow extends EntityAbstractArrow { public EntityArrow(@Nullable Entity shooter, @NotNull Position spawnPosition) { super(shooter, EntityType.ARROW, spawnPosition); - - } - - public void setColor(int value) { - this.metadata.setIndex((byte) 9, Metadata.VarInt(value)); - } - - public int getColor() { - return this.metadata.getIndex((byte) 9, -1); } } diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java index 3abdbe66e..0aa0f6cf1 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java @@ -11,6 +11,10 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.object.EyeOfEnderMeta} instead. + */ +@Deprecated public class EntityEyeOfEnder extends AbstractProjectile { public EntityEyeOfEnder(@Nullable Entity shooter, @NotNull Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java index c3f216cea..9448e1499 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java @@ -10,6 +10,10 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.object.ThrownPotionMeta} instead. + */ +@Deprecated public class EntityPotion extends AbstractProjectile { public EntityPotion(@Nullable Entity shooter, @NotNull Position spawnPosition, @NotNull ItemStack potion) { diff --git a/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java b/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java index 177936714..5590a0f96 100644 --- a/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java +++ b/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java @@ -7,6 +7,10 @@ import net.minestom.server.entity.type.Vehicle; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.other.BoatMeta} instead. + */ +@Deprecated public class EntityBoat extends ObjectEntity implements Vehicle { public EntityBoat(Position spawnPosition) { diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java deleted file mode 100644 index b1bf08556..000000000 --- a/src/main/java/net/minestom/server/entity/type/water/EntityAbstractFish.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.minestom.server.entity.type.water; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityAbstractFish extends EntityCreature { - - protected EntityAbstractFish(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - } - - protected EntityAbstractFish(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { - super(entityType, spawnPosition, instance); - } - - public boolean isFromBucket() { - return this.metadata.getIndex((byte) 15, false); - } - - public void setFromBucket(boolean value) { - this.metadata.setIndex((byte) 15, Metadata.Boolean(value)); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityCod.java b/src/main/java/net/minestom/server/entity/type/water/EntityCod.java deleted file mode 100644 index c0f6c9cc5..000000000 --- a/src/main/java/net/minestom/server/entity/type/water/EntityCod.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.water; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityCod extends EntityAbstractFish { - - public EntityCod(@NotNull Position spawnPosition) { - super(EntityType.COD, spawnPosition); - setBoundingBox(.5D, .3D, .5D); - } - - public EntityCod(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.COD, spawnPosition, instance); - setBoundingBox(.5D, .3D, .5D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java deleted file mode 100644 index d9f9045b1..000000000 --- a/src/main/java/net/minestom/server/entity/type/water/EntityPufferFish.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.minestom.server.entity.type.water; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityPufferFish extends EntityAbstractFish { - - public EntityPufferFish(@NotNull Position spawnPosition) { - super(EntityType.PUFFERFISH, spawnPosition); - updateBoundingBox(State.UNPUFFED); - } - - public EntityPufferFish(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.PUFFERFISH, spawnPosition, instance); - updateBoundingBox(State.UNPUFFED); - } - - public State getState() { - return State.VALUES[this.metadata.getIndex((byte) 16, 0)]; - } - - public void setState(State state) { - this.metadata.setIndex((byte) 16, Metadata.VarInt(state.ordinal())); - updateBoundingBox(state); - } - - private void updateBoundingBox(State state) { - switch (state) { - case UNPUFFED: - setBoundingBox(.35D, .35D, .35D); - break; - case SEMI_PUFFED: - setBoundingBox(.5D, .5D, .5D); - break; - default: - setBoundingBox(.7D, .7D, .7D); - break; - } - } - - public enum State { - UNPUFFED, - SEMI_PUFFED, - FULLY_PUFFED; - - private final static State[] VALUES = values(); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java b/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java deleted file mode 100644 index dfe609020..000000000 --- a/src/main/java/net/minestom/server/entity/type/water/EntitySalmon.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minestom.server.entity.type.water; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntitySalmon extends EntityAbstractFish { - - public EntitySalmon(@NotNull Position spawnPosition) { - super(EntityType.SALMON, spawnPosition); - setBoundingBox(.7D, .4D, .7D); - } - - public EntitySalmon(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.SALMON, spawnPosition, instance); - setBoundingBox(.7D, .4D, .7D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java b/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java deleted file mode 100644 index 9628538fc..000000000 --- a/src/main/java/net/minestom/server/entity/type/water/EntitySquid.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minestom.server.entity.type.water; - -import net.minestom.server.entity.EntityCreature; -import net.minestom.server.entity.EntityType; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntitySquid extends EntityCreature { - - public EntitySquid(@NotNull Position spawnPosition) { - super(EntityType.SQUID, spawnPosition); - setBoundingBox(.8D, .8D, .8D); - } - - public EntitySquid(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.SQUID, spawnPosition, instance); - setBoundingBox(.8D, .8D, .8D); - } - -} diff --git a/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java b/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java deleted file mode 100644 index f03613aba..000000000 --- a/src/main/java/net/minestom/server/entity/type/water/EntityTropicalFish.java +++ /dev/null @@ -1,122 +0,0 @@ -package net.minestom.server.entity.type.water; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Metadata; -import net.minestom.server.instance.Instance; -import net.minestom.server.utils.Position; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class EntityTropicalFish extends EntityAbstractFish { - - public EntityTropicalFish(@NotNull Position spawnPosition) { - super(EntityType.TROPICAL_FISH, spawnPosition); - setBoundingBox(.5D, .4D, .5D); - } - - public EntityTropicalFish(@NotNull Position spawnPosition, @Nullable Instance instance) { - super(EntityType.TROPICAL_FISH, spawnPosition, instance); - setBoundingBox(.5D, .4D, .5D); - } - - public Variant getVariant() { - return getVariantFromID(this.metadata.getIndex((byte) 16, 0)); - } - - public void setVariant(Variant variant) { - this.metadata.setIndex((byte) 16, Metadata.VarInt(getVariantID(variant))); - } - - public static int getVariantID(Variant variant) { - int id = 0; - id |= variant.patternColor; - id <<= 8; - id |= variant.bodyColor; - id <<= 8; - id |= variant.pattern.ordinal(); - id <<= 8; - id |= variant.type.ordinal(); - return id; - } - - public static Variant getVariantFromID(int variantID) { - Type type = Type.VALUES[variantID & 0xFF]; - variantID >>= 8; - Pattern pattern = Pattern.VALUES[variantID & 0xFF]; - variantID >>= 8; - byte bodyColor = (byte) (variantID & 0xFF); - variantID >>= 8; - byte patternColor = (byte) (variantID & 0xFF); - return new Variant(type, pattern, bodyColor, patternColor); - } - - public static class Variant { - - private Type type; - private Pattern pattern; - private byte bodyColor; - private byte patternColor; - - public Variant(@NotNull Type type, @NotNull Pattern pattern, byte bodyColor, byte patternColor) { - this.type = type; - this.pattern = pattern; - this.bodyColor = bodyColor; - this.patternColor = patternColor; - } - - @NotNull - public Type getType() { - return this.type; - } - - public void setType(@NotNull Type type) { - this.type = type; - } - - @NotNull - public Pattern getPattern() { - return this.pattern; - } - - public void setPattern(@NotNull Pattern pattern) { - this.pattern = pattern; - } - - public byte getBodyColor() { - return this.bodyColor; - } - - public void setBodyColor(byte bodyColor) { - this.bodyColor = bodyColor; - } - - public byte getPatternColor() { - return this.patternColor; - } - - public void setPatternColor(byte patternColor) { - this.patternColor = patternColor; - } - } - - public enum Type { - SMALL, - LARGE, - INVISIBLE; - - private final static Type[] VALUES = values(); - } - - public enum Pattern { - KOB, // FLOPPER for LARGE fish - SUNSTREAK, // STRIPEY for LARGE fish - SNOOPER, // GLITTER for LARGE fish - DASHER, // BLOCKFISH for LARGE fish - BRINELY, // BETTY for LARGE fish - SPOTTY, // CLAYFISH for LARGE fish - NONE; - - private final static Pattern[] VALUES = values(); - } - -} diff --git a/src/test/java/demo/commands/HorseCommand.java b/src/test/java/demo/commands/HorseCommand.java index 4491649ac..7745caba2 100644 --- a/src/test/java/demo/commands/HorseCommand.java +++ b/src/test/java/demo/commands/HorseCommand.java @@ -5,9 +5,10 @@ import net.minestom.server.command.builder.Arguments; import net.minestom.server.command.builder.Command; import net.minestom.server.command.builder.arguments.ArgumentType; import net.minestom.server.command.builder.exception.ArgumentSyntaxException; +import net.minestom.server.entity.EntityCreature; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Player; -import net.minestom.server.entity.type.animal.EntityHorse; +import net.minestom.server.entity.metadata.animal.HorseMeta; import java.util.Locale; import java.util.stream.Collectors; @@ -20,8 +21,8 @@ public class HorseCommand extends Command { setCondition(this::condition); setDefaultExecutor(this::defaultExecutor); var babyArg = ArgumentType.Boolean("baby"); - var markingArg = ArgumentType.Enum("marking", EntityHorse.Marking.class); - var colorArg = ArgumentType.Enum("color", EntityHorse.Color.class); + var markingArg = ArgumentType.Enum("marking", HorseMeta.Marking.class); + var colorArg = ArgumentType.Enum("color", HorseMeta.Color.class); setArgumentCallback(this::onBabyError, babyArg); setArgumentCallback(this::onMarkingError, markingArg); setArgumentCallback(this::onColorError, colorArg); @@ -45,14 +46,14 @@ public class HorseCommand extends Command { } private void onMarkingError(CommandSender sender, ArgumentSyntaxException exception) { - String values = Stream.of(EntityHorse.Marking.values()) + String values = Stream.of(HorseMeta.Marking.values()) .map(value -> "'" + value.name().toLowerCase(Locale.ROOT) + "'") .collect(Collectors.joining(", ")); sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + "."); } private void onColorError(CommandSender sender, ArgumentSyntaxException exception) { - String values = Stream.of(EntityHorse.Color.values()) + String values = Stream.of(HorseMeta.Color.values()) .map(value -> "'" + value.name().toLowerCase(Locale.ROOT) + "'") .collect(Collectors.joining(", ")); sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + "."); @@ -62,11 +63,12 @@ public class HorseCommand extends Command { var player = (Player) sender; boolean baby = args.get("baby"); - EntityHorse.Marking marking = args.get("marking"); - EntityHorse.Color color = args.get("color"); - var horse = (EntityHorse) EntityType.HORSE.createFromPosition(player.getPosition()); - horse.setBaby(baby); - horse.setVariant(new EntityHorse.Variant(marking, color)); + HorseMeta.Marking marking = args.get("marking"); + HorseMeta.Color color = args.get("color"); + var horse = new EntityCreature(EntityType.HORSE, player.getPosition()); + var meta = new HorseMeta(horse); + meta.setBaby(baby); + meta.setVariant(new HorseMeta.Variant(marking, color)); horse.setInstance(player.getInstance()); } diff --git a/src/test/java/demo/commands/ShootCommand.java b/src/test/java/demo/commands/ShootCommand.java index 8520399ce..8b242ba19 100644 --- a/src/test/java/demo/commands/ShootCommand.java +++ b/src/test/java/demo/commands/ShootCommand.java @@ -7,6 +7,7 @@ import net.minestom.server.command.builder.arguments.ArgumentType; import net.minestom.server.command.builder.exception.ArgumentSyntaxException; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Player; +import net.minestom.server.entity.metadata.arrow.ArrowMeta; import net.minestom.server.entity.type.Projectile; import net.minestom.server.entity.type.projectile.EntityArrow; import net.minestom.server.entity.type.projectile.EntitySpectralArrow; @@ -54,7 +55,8 @@ public class ShootCommand extends Command { break; case "colored": projectile = new EntityArrow(player, pos); - ((EntityArrow) projectile).setColor(ThreadLocalRandom.current().nextInt()); + var meta = new ArrowMeta((Entity) projectile); + meta.setColor(ThreadLocalRandom.current().nextInt()); break; default: return; From 2843da6b2638c5bd03bbfb39da12967fa87c663e Mon Sep 17 00:00:00 2001 From: themode Date: Tue, 23 Feb 2021 15:11:21 +0100 Subject: [PATCH 15/48] Small comment cleanup --- .../net/minestom/server/entity/Player.java | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 8ec7d5d87..7dd3f7949 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -863,29 +863,12 @@ public class Player extends LivingEntity implements CommandSender { /** * Plays a sound from the {@link Sound} enum. * - * @param sound the sound to play - * @param soundCategory the sound category - * @param position the block position to use. - * @param volume the volume of the sound (1 is 100%) - * @param pitch the pitch of the sound, between 0.5 and 2.0 + * @see #playSound(Sound, SoundCategory, int, int, int, float, float) */ public void playSound(@NotNull Sound sound, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { playSound(sound, soundCategory, position.getX(), position.getY(), position.getZ(), volume, pitch); } - /** - * Plays a sound from an identifier (represents a custom sound in a resource pack). - * - * @param identifier the identifier of the sound to play - * @param soundCategory the sound category - * @param position the block position to use. - * @param volume the volume of the sound (1 is 100%) - * @param pitch the pitch of the sound, between 0.5 and 2.0 - */ - public void playSound(@NotNull String identifier, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { - playSound(identifier, soundCategory, position.getX(), position.getY(), position.getZ(), volume, pitch); - } - /** * Plays a sound from an identifier (represents a custom sound in a resource pack). * @@ -909,6 +892,15 @@ public class Player extends LivingEntity implements CommandSender { playerConnection.sendPacket(namedSoundEffectPacket); } + /** + * Plays a sound from an identifier (represents a custom sound in a resource pack). + * + * @see #playSound(String, SoundCategory, int, int, int, float, float) + */ + public void playSound(@NotNull String identifier, @NotNull SoundCategory soundCategory, BlockPosition position, float volume, float pitch) { + playSound(identifier, soundCategory, position.getX(), position.getY(), position.getZ(), volume, pitch); + } + /** * Plays a sound directly to the player (constant volume). * From eb274ce95e6090f958585e77fabb86fd4fa4331b Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 18:07:57 +0300 Subject: [PATCH 16/48] Added default meta constructor to EntityTypes --- .../minestom/server/entity/EntityType.java | 337 ++++++++++++------ .../minestom/codegen/ConstructorLambda.java | 16 + .../net/minestom/codegen/EnumGenerator.java | 18 +- .../entitytypes/EntityTypeContainer.java | 91 +++++ .../entitytypes/EntityTypeEnumGenerator.java | 35 +- .../entity/metadata/BaseEntityMeta.java | 166 +++++++++ .../server/entity/metadata/EntityMeta.java | 154 -------- .../entity/metadata/LivingEntityMeta.java | 2 +- .../metadata/arrow/AbstractArrowMeta.java | 4 +- .../entity/metadata/arrow/ArrowMeta.java | 4 +- .../minecart/AbstractMinecartMeta.java | 4 +- ...tChestMeta.java => ChestMinecartMeta.java} | 4 +- ...eta.java => CommandBlockMinecartMeta.java} | 4 +- ...naceMeta.java => FurnaceMinecartMeta.java} | 4 +- ...opperMeta.java => HopperMinecartMeta.java} | 4 +- .../minecart/SpawnerMinecartMeta.java | 12 + ...ecartTntMeta.java => TntMinecartMeta.java} | 4 +- .../metadata/monster/CaveSpiderMeta.java | 12 + .../metadata/object/ObjectEntityMeta.java | 4 +- .../metadata/other/AreaEffectCloudMeta.java | 4 +- .../entity/metadata/other/BoatMeta.java | 4 +- .../metadata/other/DragonFireballMeta.java | 4 +- .../entity/metadata/other/EndCrystalMeta.java | 4 +- .../metadata/other/EvokerFangsMeta.java | 4 +- .../metadata/other/ExperienceOrbMeta.java | 13 + .../metadata/other/FallingBlockMeta.java | 4 +- .../metadata/other/FireworkRocketMeta.java | 4 +- .../metadata/other/FishingHookMeta.java | 4 +- .../entity/metadata/other/ItemFrameMeta.java | 4 +- .../entity/metadata/other/LeashKnotMeta.java | 13 + .../metadata/other/LightningBoltMeta.java | 13 + .../entity/metadata/other/LlamaSpitMeta.java | 4 +- .../entity/metadata/other/PaintingMeta.java | 13 + .../entity/metadata/other/PrimedTntMeta.java | 4 +- .../metadata/other/ShulkerBulletMeta.java | 13 + .../metadata/other/TraderLlamaMeta.java | 13 + .../metadata/other/WitherSkullMeta.java | 4 +- ...ufferFishMeta.java => PufferfishMeta.java} | 4 +- 38 files changed, 690 insertions(+), 319 deletions(-) create mode 100644 src/generators/java/net/minestom/codegen/ConstructorLambda.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java rename src/main/java/net/minestom/server/entity/metadata/minecart/{MinecartChestMeta.java => ChestMinecartMeta.java} (60%) rename src/main/java/net/minestom/server/entity/metadata/minecart/{MinecartCommandBlockMeta.java => CommandBlockMinecartMeta.java} (86%) rename src/main/java/net/minestom/server/entity/metadata/minecart/{MinecartFurnaceMeta.java => FurnaceMinecartMeta.java} (78%) rename src/main/java/net/minestom/server/entity/metadata/minecart/{MinecartHopperMeta.java => HopperMinecartMeta.java} (60%) create mode 100644 src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java rename src/main/java/net/minestom/server/entity/metadata/minecart/{MinecartTntMeta.java => TntMinecartMeta.java} (60%) create mode 100644 src/main/java/net/minestom/server/entity/metadata/monster/CaveSpiderMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/LeashKnotMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/LightningBoltMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java rename src/main/java/net/minestom/server/entity/metadata/water/fish/{PufferFishMeta.java => PufferfishMeta.java} (90%) diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index e580f7bc0..03cd31805 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -1,5 +1,115 @@ package net.minestom.server.entity; +import java.util.function.Function; +import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.PlayerMeta; +import net.minestom.server.entity.metadata.ambient.BatMeta; +import net.minestom.server.entity.metadata.animal.BeeMeta; +import net.minestom.server.entity.metadata.animal.ChickenMeta; +import net.minestom.server.entity.metadata.animal.CowMeta; +import net.minestom.server.entity.metadata.animal.DonkeyMeta; +import net.minestom.server.entity.metadata.animal.FoxMeta; +import net.minestom.server.entity.metadata.animal.HoglinMeta; +import net.minestom.server.entity.metadata.animal.HorseMeta; +import net.minestom.server.entity.metadata.animal.LlamaMeta; +import net.minestom.server.entity.metadata.animal.MooshroomMeta; +import net.minestom.server.entity.metadata.animal.MuleMeta; +import net.minestom.server.entity.metadata.animal.OcelotMeta; +import net.minestom.server.entity.metadata.animal.PandaMeta; +import net.minestom.server.entity.metadata.animal.PigMeta; +import net.minestom.server.entity.metadata.animal.PolarBearMeta; +import net.minestom.server.entity.metadata.animal.RabbitMeta; +import net.minestom.server.entity.metadata.animal.SheepMeta; +import net.minestom.server.entity.metadata.animal.SkeletonHorseMeta; +import net.minestom.server.entity.metadata.animal.StriderMeta; +import net.minestom.server.entity.metadata.animal.TurtleMeta; +import net.minestom.server.entity.metadata.animal.ZombieHorseMeta; +import net.minestom.server.entity.metadata.animal.tameable.CatMeta; +import net.minestom.server.entity.metadata.animal.tameable.ParrotMeta; +import net.minestom.server.entity.metadata.animal.tameable.WolfMeta; +import net.minestom.server.entity.metadata.arrow.ArrowMeta; +import net.minestom.server.entity.metadata.arrow.SpectralArrowMeta; +import net.minestom.server.entity.metadata.arrow.ThrownTridentMeta; +import net.minestom.server.entity.metadata.flying.GhastMeta; +import net.minestom.server.entity.metadata.flying.PhantomMeta; +import net.minestom.server.entity.metadata.golem.IronGolemMeta; +import net.minestom.server.entity.metadata.golem.ShulkerMeta; +import net.minestom.server.entity.metadata.golem.SnowGolemMeta; +import net.minestom.server.entity.metadata.minecart.ChestMinecartMeta; +import net.minestom.server.entity.metadata.minecart.CommandBlockMinecartMeta; +import net.minestom.server.entity.metadata.minecart.FurnaceMinecartMeta; +import net.minestom.server.entity.metadata.minecart.HopperMinecartMeta; +import net.minestom.server.entity.metadata.minecart.MinecartMeta; +import net.minestom.server.entity.metadata.minecart.SpawnerMinecartMeta; +import net.minestom.server.entity.metadata.minecart.TntMinecartMeta; +import net.minestom.server.entity.metadata.monster.BlazeMeta; +import net.minestom.server.entity.metadata.monster.CaveSpiderMeta; +import net.minestom.server.entity.metadata.monster.CreeperMeta; +import net.minestom.server.entity.metadata.monster.ElderGuardianMeta; +import net.minestom.server.entity.metadata.monster.EndermanMeta; +import net.minestom.server.entity.metadata.monster.EndermiteMeta; +import net.minestom.server.entity.metadata.monster.GiantMeta; +import net.minestom.server.entity.metadata.monster.GuardianMeta; +import net.minestom.server.entity.metadata.monster.PiglinBruteMeta; +import net.minestom.server.entity.metadata.monster.PiglinMeta; +import net.minestom.server.entity.metadata.monster.SilverfishMeta; +import net.minestom.server.entity.metadata.monster.SpiderMeta; +import net.minestom.server.entity.metadata.monster.VexMeta; +import net.minestom.server.entity.metadata.monster.WitherMeta; +import net.minestom.server.entity.metadata.monster.ZoglinMeta; +import net.minestom.server.entity.metadata.monster.raider.EvokerMeta; +import net.minestom.server.entity.metadata.monster.raider.IllusionerMeta; +import net.minestom.server.entity.metadata.monster.raider.PillagerMeta; +import net.minestom.server.entity.metadata.monster.raider.RavagerMeta; +import net.minestom.server.entity.metadata.monster.raider.VindicatorMeta; +import net.minestom.server.entity.metadata.monster.raider.WitchMeta; +import net.minestom.server.entity.metadata.monster.skeleton.SkeletonMeta; +import net.minestom.server.entity.metadata.monster.skeleton.StrayMeta; +import net.minestom.server.entity.metadata.monster.skeleton.WitherSkeletonMeta; +import net.minestom.server.entity.metadata.monster.zombie.DrownedMeta; +import net.minestom.server.entity.metadata.monster.zombie.HuskMeta; +import net.minestom.server.entity.metadata.monster.zombie.ZombieMeta; +import net.minestom.server.entity.metadata.monster.zombie.ZombieVillagerMeta; +import net.minestom.server.entity.metadata.monster.zombie.ZombifiedPiglinMeta; +import net.minestom.server.entity.metadata.object.EyeOfEnderMeta; +import net.minestom.server.entity.metadata.object.FireballMeta; +import net.minestom.server.entity.metadata.object.ItemEntityMeta; +import net.minestom.server.entity.metadata.object.SmallFireballMeta; +import net.minestom.server.entity.metadata.object.SnowballMeta; +import net.minestom.server.entity.metadata.object.ThrownEggMeta; +import net.minestom.server.entity.metadata.object.ThrownEnderPearlMeta; +import net.minestom.server.entity.metadata.object.ThrownExperienceBottleMeta; +import net.minestom.server.entity.metadata.object.ThrownPotionMeta; +import net.minestom.server.entity.metadata.other.AreaEffectCloudMeta; +import net.minestom.server.entity.metadata.other.ArmorStandMeta; +import net.minestom.server.entity.metadata.other.BoatMeta; +import net.minestom.server.entity.metadata.other.DragonFireballMeta; +import net.minestom.server.entity.metadata.other.EndCrystalMeta; +import net.minestom.server.entity.metadata.other.EnderDragonMeta; +import net.minestom.server.entity.metadata.other.EvokerFangsMeta; +import net.minestom.server.entity.metadata.other.ExperienceOrbMeta; +import net.minestom.server.entity.metadata.other.FallingBlockMeta; +import net.minestom.server.entity.metadata.other.FireworkRocketMeta; +import net.minestom.server.entity.metadata.other.FishingHookMeta; +import net.minestom.server.entity.metadata.other.ItemFrameMeta; +import net.minestom.server.entity.metadata.other.LeashKnotMeta; +import net.minestom.server.entity.metadata.other.LightningBoltMeta; +import net.minestom.server.entity.metadata.other.LlamaSpitMeta; +import net.minestom.server.entity.metadata.other.MagmaCubeMeta; +import net.minestom.server.entity.metadata.other.PaintingMeta; +import net.minestom.server.entity.metadata.other.PrimedTntMeta; +import net.minestom.server.entity.metadata.other.ShulkerBulletMeta; +import net.minestom.server.entity.metadata.other.SlimeMeta; +import net.minestom.server.entity.metadata.other.TraderLlamaMeta; +import net.minestom.server.entity.metadata.other.WitherSkullMeta; +import net.minestom.server.entity.metadata.villager.VillagerMeta; +import net.minestom.server.entity.metadata.villager.WanderingTraderMeta; +import net.minestom.server.entity.metadata.water.DolphinMeta; +import net.minestom.server.entity.metadata.water.SquidMeta; +import net.minestom.server.entity.metadata.water.fish.CodMeta; +import net.minestom.server.entity.metadata.water.fish.PufferfishMeta; +import net.minestom.server.entity.metadata.water.fish.SalmonMeta; +import net.minestom.server.entity.metadata.water.fish.TropicalFishMeta; import net.minestom.server.registry.Registries; import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; @@ -11,221 +121,221 @@ import org.jetbrains.annotations.NotNull; */ @SuppressWarnings({"deprecation"}) public enum EntityType { - AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", 6.0, 0.5), + AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", 6.0, 0.5, AreaEffectCloudMeta::new), - ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975), + ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975, ArmorStandMeta::new), - ARROW("minecraft:arrow", 0.5, 0.5), + ARROW("minecraft:arrow", 0.5, 0.5, ArrowMeta::new), - BAT("minecraft:bat", 0.5, 0.9), + BAT("minecraft:bat", 0.5, 0.9, BatMeta::new), - BEE("minecraft:bee", 0.7, 0.6), + BEE("minecraft:bee", 0.7, 0.6, BeeMeta::new), - BLAZE("minecraft:blaze", 0.6, 1.8), + BLAZE("minecraft:blaze", 0.6, 1.8, BlazeMeta::new), - BOAT("minecraft:boat", 1.375, 0.5625), + BOAT("minecraft:boat", 1.375, 0.5625, BoatMeta::new), - CAT("minecraft:cat", 0.6, 0.7), + CAT("minecraft:cat", 0.6, 0.7, CatMeta::new), - CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5), + CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5, CaveSpiderMeta::new), - CHICKEN("minecraft:chicken", 0.4, 0.7), + CHICKEN("minecraft:chicken", 0.4, 0.7, ChickenMeta::new), - COD("minecraft:cod", 0.5, 0.3), + COD("minecraft:cod", 0.5, 0.3, CodMeta::new), - COW("minecraft:cow", 0.9, 1.4), + COW("minecraft:cow", 0.9, 1.4, CowMeta::new), - CREEPER("minecraft:creeper", 0.6, 1.7), + CREEPER("minecraft:creeper", 0.6, 1.7, CreeperMeta::new), - DOLPHIN("minecraft:dolphin", 0.9, 0.6), + DOLPHIN("minecraft:dolphin", 0.9, 0.6, DolphinMeta::new), - DONKEY("minecraft:donkey", 1.39648, 1.5), + DONKEY("minecraft:donkey", 1.39648, 1.5, DonkeyMeta::new), - DRAGON_FIREBALL("minecraft:dragon_fireball", 1.0, 1.0), + DRAGON_FIREBALL("minecraft:dragon_fireball", 1.0, 1.0, DragonFireballMeta::new), - DROWNED("minecraft:drowned", 0.6, 1.95), + DROWNED("minecraft:drowned", 0.6, 1.95, DrownedMeta::new), - ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975), + ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975, ElderGuardianMeta::new), - END_CRYSTAL("minecraft:end_crystal", 2.0, 2.0), + END_CRYSTAL("minecraft:end_crystal", 2.0, 2.0, EndCrystalMeta::new), - ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0), + ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0, EnderDragonMeta::new), - ENDERMAN("minecraft:enderman", 0.6, 2.9), + ENDERMAN("minecraft:enderman", 0.6, 2.9, EndermanMeta::new), - ENDERMITE("minecraft:endermite", 0.4, 0.3), + ENDERMITE("minecraft:endermite", 0.4, 0.3, EndermiteMeta::new), - EVOKER("minecraft:evoker", 0.6, 1.95), + EVOKER("minecraft:evoker", 0.6, 1.95, EvokerMeta::new), - EVOKER_FANGS("minecraft:evoker_fangs", 0.5, 0.8), + EVOKER_FANGS("minecraft:evoker_fangs", 0.5, 0.8, EvokerFangsMeta::new), - EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5), + EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5, ExperienceOrbMeta::new), - EYE_OF_ENDER("minecraft:eye_of_ender", 0.25, 0.25), + EYE_OF_ENDER("minecraft:eye_of_ender", 0.25, 0.25, EyeOfEnderMeta::new), - FALLING_BLOCK("minecraft:falling_block", 0.98, 0.98), + FALLING_BLOCK("minecraft:falling_block", 0.98, 0.98, FallingBlockMeta::new), - FIREWORK_ROCKET("minecraft:firework_rocket", 0.25, 0.25), + FIREWORK_ROCKET("minecraft:firework_rocket", 0.25, 0.25, FireworkRocketMeta::new), - FOX("minecraft:fox", 0.6, 0.7), + FOX("minecraft:fox", 0.6, 0.7, FoxMeta::new), - GHAST("minecraft:ghast", 4.0, 4.0), + GHAST("minecraft:ghast", 4.0, 4.0, GhastMeta::new), - GIANT("minecraft:giant", 3.6, 12.0), + GIANT("minecraft:giant", 3.6, 12.0, GiantMeta::new), - GUARDIAN("minecraft:guardian", 0.85, 0.85), + GUARDIAN("minecraft:guardian", 0.85, 0.85, GuardianMeta::new), - HOGLIN("minecraft:hoglin", 1.39648, 1.4), + HOGLIN("minecraft:hoglin", 1.39648, 1.4, HoglinMeta::new), - HORSE("minecraft:horse", 1.39648, 1.6), + HORSE("minecraft:horse", 1.39648, 1.6, HorseMeta::new), - HUSK("minecraft:husk", 0.6, 1.95), + HUSK("minecraft:husk", 0.6, 1.95, HuskMeta::new), - ILLUSIONER("minecraft:illusioner", 0.6, 1.95), + ILLUSIONER("minecraft:illusioner", 0.6, 1.95, IllusionerMeta::new), - IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7), + IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7, IronGolemMeta::new), - ITEM("minecraft:item", 0.25, 0.25), + ITEM("minecraft:item", 0.25, 0.25, ItemEntityMeta::new), - ITEM_FRAME("minecraft:item_frame", 0.5, 0.5), + ITEM_FRAME("minecraft:item_frame", 0.5, 0.5, ItemFrameMeta::new), - FIREBALL("minecraft:fireball", 1.0, 1.0), + FIREBALL("minecraft:fireball", 1.0, 1.0, FireballMeta::new), - LEASH_KNOT("minecraft:leash_knot", 0.5, 0.5), + LEASH_KNOT("minecraft:leash_knot", 0.5, 0.5, LeashKnotMeta::new), - LIGHTNING_BOLT("minecraft:lightning_bolt", 0.0, 0.0), + LIGHTNING_BOLT("minecraft:lightning_bolt", 0.0, 0.0, LightningBoltMeta::new), - LLAMA("minecraft:llama", 0.9, 1.87), + LLAMA("minecraft:llama", 0.9, 1.87, LlamaMeta::new), - LLAMA_SPIT("minecraft:llama_spit", 0.25, 0.25), + LLAMA_SPIT("minecraft:llama_spit", 0.25, 0.25, LlamaSpitMeta::new), - MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04), + MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04, MagmaCubeMeta::new), - MINECART("minecraft:minecart", 0.98, 0.7), + MINECART("minecraft:minecart", 0.98, 0.7, MinecartMeta::new), - CHEST_MINECART("minecraft:chest_minecart", 0.98, 0.7), + CHEST_MINECART("minecraft:chest_minecart", 0.98, 0.7, ChestMinecartMeta::new), - COMMAND_BLOCK_MINECART("minecraft:command_block_minecart", 0.98, 0.7), + COMMAND_BLOCK_MINECART("minecraft:command_block_minecart", 0.98, 0.7, CommandBlockMinecartMeta::new), - FURNACE_MINECART("minecraft:furnace_minecart", 0.98, 0.7), + FURNACE_MINECART("minecraft:furnace_minecart", 0.98, 0.7, FurnaceMinecartMeta::new), - HOPPER_MINECART("minecraft:hopper_minecart", 0.98, 0.7), + HOPPER_MINECART("minecraft:hopper_minecart", 0.98, 0.7, HopperMinecartMeta::new), - SPAWNER_MINECART("minecraft:spawner_minecart", 0.98, 0.7), + SPAWNER_MINECART("minecraft:spawner_minecart", 0.98, 0.7, SpawnerMinecartMeta::new), - TNT_MINECART("minecraft:tnt_minecart", 0.98, 0.7), + TNT_MINECART("minecraft:tnt_minecart", 0.98, 0.7, TntMinecartMeta::new), - MULE("minecraft:mule", 1.39648, 1.6), + MULE("minecraft:mule", 1.39648, 1.6, MuleMeta::new), - MOOSHROOM("minecraft:mooshroom", 0.9, 1.4), + MOOSHROOM("minecraft:mooshroom", 0.9, 1.4, MooshroomMeta::new), - OCELOT("minecraft:ocelot", 0.6, 0.7), + OCELOT("minecraft:ocelot", 0.6, 0.7, OcelotMeta::new), - PAINTING("minecraft:painting", 0.5, 0.5), + PAINTING("minecraft:painting", 0.5, 0.5, PaintingMeta::new), - PANDA("minecraft:panda", 1.3, 1.25), + PANDA("minecraft:panda", 1.3, 1.25, PandaMeta::new), - PARROT("minecraft:parrot", 0.5, 0.9), + PARROT("minecraft:parrot", 0.5, 0.9, ParrotMeta::new), - PHANTOM("minecraft:phantom", 0.9, 0.5), + PHANTOM("minecraft:phantom", 0.9, 0.5, PhantomMeta::new), - PIG("minecraft:pig", 0.9, 0.9), + PIG("minecraft:pig", 0.9, 0.9, PigMeta::new), - PIGLIN("minecraft:piglin", 0.6, 1.95), + PIGLIN("minecraft:piglin", 0.6, 1.95, PiglinMeta::new), - PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95), + PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95, PiglinBruteMeta::new), - PILLAGER("minecraft:pillager", 0.6, 1.95), + PILLAGER("minecraft:pillager", 0.6, 1.95, PillagerMeta::new), - POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4), + POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4, PolarBearMeta::new), - TNT("minecraft:tnt", 0.98, 0.98), + TNT("minecraft:tnt", 0.98, 0.98, PrimedTntMeta::new), - PUFFERFISH("minecraft:pufferfish", 0.7, 0.7), + PUFFERFISH("minecraft:pufferfish", 0.7, 0.7, PufferfishMeta::new), - RABBIT("minecraft:rabbit", 0.4, 0.5), + RABBIT("minecraft:rabbit", 0.4, 0.5, RabbitMeta::new), - RAVAGER("minecraft:ravager", 1.95, 2.2), + RAVAGER("minecraft:ravager", 1.95, 2.2, RavagerMeta::new), - SALMON("minecraft:salmon", 0.7, 0.4), + SALMON("minecraft:salmon", 0.7, 0.4, SalmonMeta::new), - SHEEP("minecraft:sheep", 0.9, 1.3), + SHEEP("minecraft:sheep", 0.9, 1.3, SheepMeta::new), - SHULKER("minecraft:shulker", 1.0, 1.0), + SHULKER("minecraft:shulker", 1.0, 1.0, ShulkerMeta::new), - SHULKER_BULLET("minecraft:shulker_bullet", 0.3125, 0.3125), + SHULKER_BULLET("minecraft:shulker_bullet", 0.3125, 0.3125, ShulkerBulletMeta::new), - SILVERFISH("minecraft:silverfish", 0.4, 0.3), + SILVERFISH("minecraft:silverfish", 0.4, 0.3, SilverfishMeta::new), - SKELETON("minecraft:skeleton", 0.6, 1.99), + SKELETON("minecraft:skeleton", 0.6, 1.99, SkeletonMeta::new), - SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6), + SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6, SkeletonHorseMeta::new), - SLIME("minecraft:slime", 2.04, 2.04), + SLIME("minecraft:slime", 2.04, 2.04, SlimeMeta::new), - SMALL_FIREBALL("minecraft:small_fireball", 0.3125, 0.3125), + SMALL_FIREBALL("minecraft:small_fireball", 0.3125, 0.3125, SmallFireballMeta::new), - SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9), + SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9, SnowGolemMeta::new), - SNOWBALL("minecraft:snowball", 0.25, 0.25), + SNOWBALL("minecraft:snowball", 0.25, 0.25, SnowballMeta::new), - SPECTRAL_ARROW("minecraft:spectral_arrow", 0.5, 0.5), + SPECTRAL_ARROW("minecraft:spectral_arrow", 0.5, 0.5, SpectralArrowMeta::new), - SPIDER("minecraft:spider", 1.4, 0.9), + SPIDER("minecraft:spider", 1.4, 0.9, SpiderMeta::new), - SQUID("minecraft:squid", 0.8, 0.8), + SQUID("minecraft:squid", 0.8, 0.8, SquidMeta::new), - STRAY("minecraft:stray", 0.6, 1.99), + STRAY("minecraft:stray", 0.6, 1.99, StrayMeta::new), - STRIDER("minecraft:strider", 0.9, 1.7), + STRIDER("minecraft:strider", 0.9, 1.7, StriderMeta::new), - EGG("minecraft:egg", 0.25, 0.25), + EGG("minecraft:egg", 0.25, 0.25, ThrownEggMeta::new), - ENDER_PEARL("minecraft:ender_pearl", 0.25, 0.25), + ENDER_PEARL("minecraft:ender_pearl", 0.25, 0.25, ThrownEnderPearlMeta::new), - EXPERIENCE_BOTTLE("minecraft:experience_bottle", 0.25, 0.25), + EXPERIENCE_BOTTLE("minecraft:experience_bottle", 0.25, 0.25, ThrownExperienceBottleMeta::new), - POTION("minecraft:potion", 0.25, 0.25), + POTION("minecraft:potion", 0.25, 0.25, ThrownPotionMeta::new), - TRIDENT("minecraft:trident", 0.5, 0.5), + TRIDENT("minecraft:trident", 0.5, 0.5, ThrownTridentMeta::new), - TRADER_LLAMA("minecraft:trader_llama", 0.9, 1.87), + TRADER_LLAMA("minecraft:trader_llama", 0.9, 1.87, TraderLlamaMeta::new), - TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4), + TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4, TropicalFishMeta::new), - TURTLE("minecraft:turtle", 1.2, 0.4), + TURTLE("minecraft:turtle", 1.2, 0.4, TurtleMeta::new), - VEX("minecraft:vex", 0.4, 0.8), + VEX("minecraft:vex", 0.4, 0.8, VexMeta::new), - VILLAGER("minecraft:villager", 0.6, 1.95), + VILLAGER("minecraft:villager", 0.6, 1.95, VillagerMeta::new), - VINDICATOR("minecraft:vindicator", 0.6, 1.95), + VINDICATOR("minecraft:vindicator", 0.6, 1.95, VindicatorMeta::new), - WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95), + WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95, WanderingTraderMeta::new), - WITCH("minecraft:witch", 0.6, 1.95), + WITCH("minecraft:witch", 0.6, 1.95, WitchMeta::new), - WITHER("minecraft:wither", 0.9, 3.5), + WITHER("minecraft:wither", 0.9, 3.5, WitherMeta::new), - WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4), + WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4, WitherSkeletonMeta::new), - WITHER_SKULL("minecraft:wither_skull", 0.3125, 0.3125), + WITHER_SKULL("minecraft:wither_skull", 0.3125, 0.3125, WitherSkullMeta::new), - WOLF("minecraft:wolf", 0.6, 0.85), + WOLF("minecraft:wolf", 0.6, 0.85, WolfMeta::new), - ZOGLIN("minecraft:zoglin", 1.39648, 1.4), + ZOGLIN("minecraft:zoglin", 1.39648, 1.4, ZoglinMeta::new), - ZOMBIE("minecraft:zombie", 0.6, 1.95), + ZOMBIE("minecraft:zombie", 0.6, 1.95, ZombieMeta::new), - ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6), + ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6, ZombieHorseMeta::new), - ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95), + ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95, ZombieVillagerMeta::new), - ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95), + ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95, ZombifiedPiglinMeta::new), - PLAYER("minecraft:player", 0.6, 1.8), + PLAYER("minecraft:player", 0.6, 1.8, PlayerMeta::new), - FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25); + FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25, FishingHookMeta::new); @NotNull private String namespaceID; @@ -234,10 +344,15 @@ public enum EntityType { private double height; - EntityType(@NotNull String namespaceID, double width, double height) { + @NotNull + private Function metaConstructor; + + EntityType(@NotNull String namespaceID, double width, double height, + @NotNull Function metaConstructor) { this.namespaceID = namespaceID; this.width = width; this.height = height; + this.metaConstructor = metaConstructor; Registries.entityTypes.put(NamespaceID.from(namespaceID), this); } @@ -257,6 +372,10 @@ public enum EntityType { return this.height; } + public Function getMetaConstructor() { + return this.metaConstructor; + } + public static EntityType fromId(short id) { if(id >= 0 && id < values().length) { return values()[id]; diff --git a/src/generators/java/net/minestom/codegen/ConstructorLambda.java b/src/generators/java/net/minestom/codegen/ConstructorLambda.java new file mode 100644 index 000000000..b1b77c112 --- /dev/null +++ b/src/generators/java/net/minestom/codegen/ConstructorLambda.java @@ -0,0 +1,16 @@ +package net.minestom.codegen; + +import com.squareup.javapoet.ClassName; + +public class ConstructorLambda { + + private final ClassName className; + + public ConstructorLambda(ClassName className) { + this.className = className; + } + + public ClassName getClassName() { + return className; + } +} diff --git a/src/generators/java/net/minestom/codegen/EnumGenerator.java b/src/generators/java/net/minestom/codegen/EnumGenerator.java index 628093700..a16ae4621 100644 --- a/src/generators/java/net/minestom/codegen/EnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/EnumGenerator.java @@ -58,17 +58,22 @@ public class EnumGenerator implements CodeGenerator { TypeSpec.Builder enumClass = TypeSpec.enumBuilder(ClassName.get(enumPackage, enumName)).addModifiers(Modifier.PUBLIC); enumClass.addJavadoc(COMMENT); - for(AnnotationSpec annotation : annotations) { + for (AnnotationSpec annotation : annotations) { enumClass.addAnnotation(annotation); } - for(Instance instance : instances) { + for (Instance instance : instances) { StringBuilder format = new StringBuilder(); for (int i = 0; i < instance.parameters.length; i++) { if (i != 0) { format.append(", "); } - format.append("$L"); + if (instance.parameters[i] instanceof ConstructorLambda) { + instance.parameters[i] = ((ConstructorLambda) instance.parameters[i]).getClassName(); + format.append("$T::new"); + } else { + format.append("$L"); + } } // generate instances @@ -76,7 +81,7 @@ public class EnumGenerator implements CodeGenerator { enumClass.addEnumConstant(instance.name, arguments); } - if(staticBlock != null) { + if (staticBlock != null) { enumClass.addStaticBlock(staticBlock); } @@ -121,10 +126,10 @@ public class EnumGenerator implements CodeGenerator { } methodBuilder.addModifiers(Modifier.PUBLIC); methodBuilder.returns(m.returnType); - if(m.vararg) { + if (m.vararg) { methodBuilder.varargs(true); } - for(ParameterSpec parameter : m.signature) { + for (ParameterSpec parameter : m.signature) { methodBuilder.addParameter(parameter); } @@ -134,7 +139,6 @@ public class EnumGenerator implements CodeGenerator { enumClass.addMethod(methodBuilder.build()); } - JavaFile file = JavaFile.builder(enumPackage, enumClass.build()) .skipJavaLangImports(true) .indent(" ") diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java index 2a94e6f2c..168cca625 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java @@ -1,20 +1,53 @@ package net.minestom.codegen.entitytypes; +import com.google.common.base.CaseFormat; import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + public class EntityTypeContainer implements Comparable { private int id; private NamespaceID name; private double width; private double height; + private Class metaClass; public EntityTypeContainer(int id, NamespaceID name, double width, double height) { this.id = id; this.name = name; this.width = width; this.height = height; + String metaClassName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name.getPath()); + // special cases + switch (metaClassName) { + case "Item": + metaClassName = "ItemEntity"; + break; + case "Tnt": + metaClassName = "PrimedTnt"; + break; + case "FishingBobber": + metaClassName = "FishingHook"; + break; + case "Egg": + case "EnderPearl": + case "ExperienceBottle": + case "Potion": + case "Trident": + metaClassName = "Thrown" + metaClassName; + break; + default: + break; + } + metaClassName += "Meta"; + this.metaClass = findClassIn("net.minestom.server.entity.metadata", metaClassName); } public int getId() { @@ -33,8 +66,66 @@ public class EntityTypeContainer implements Comparable { return height; } + public Class getMetaClass() { + return metaClass; + } + @Override public int compareTo(@NotNull EntityTypeContainer o) { return Integer.compare(id, o.id); } + + private static Class findClassIn(String pkg, String className) { + try { + return getClasses(pkg).stream() + .filter(clazz -> clazz.getSimpleName().equals(className)) + .findAny() + .orElseThrow(); + } catch (Throwable t) { + throw new IllegalStateException("Could not find class " + className + " in " + pkg, t); + } + } + + private static List> getClasses(String packageName) + throws ClassNotFoundException, IOException { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + assert classLoader != null; + String path = packageName.replace('.', '/'); + Enumeration resources = classLoader.getResources(path); + List dirs = new ArrayList<>(); + while (resources.hasMoreElements()) { + URL resource = resources.nextElement(); + dirs.add(new File(resource.getFile())); + } + List> classes = new ArrayList<>(); + for (File directory : dirs) { + classes.addAll(findClasses(directory, packageName)); + } + return classes; + } + + /** + * Recursive method used to find all classes in a given directory and subdirs. + * + * @param directory The base directory + * @param packageName The package name for classes found inside the base directory + * @return The classes + * @throws ClassNotFoundException + */ + private static List> findClasses(File directory, String packageName) throws ClassNotFoundException { + List> classes = new ArrayList<>(); + if (!directory.exists()) { + return classes; + } + File[] files = directory.listFiles(); + for (File file : files) { + if (file.isDirectory()) { + assert !file.getName().contains("."); + classes.addAll(findClasses(file, packageName + "." + file.getName())); + } else if (file.getName().endsWith(".class")) { + classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6))); + } + } + return classes; + } } diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java index 563920824..781d685f4 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java @@ -4,8 +4,11 @@ import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.squareup.javapoet.*; +import net.minestom.codegen.ConstructorLambda; import net.minestom.codegen.EnumGenerator; import net.minestom.codegen.MinestomEnumGenerator; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.registry.Registries; import net.minestom.server.registry.ResourceGatherer; import net.minestom.server.utils.NamespaceID; @@ -13,9 +16,13 @@ import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; import java.net.URL; import java.util.*; +import java.util.function.Function; /** * Generates an EntityType enum containing all data about entity types @@ -101,6 +108,9 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator types = new TreeSet<>(EntityTypeContainer::compareTo); for (var burgerEntity : burgerEntities) { + if (burgerEntity.name.contains("~")) { + continue; + } types.add(new EntityTypeContainer( burgerEntity.id, NamespaceID.from("minecraft:" + burgerEntity.name), @@ -115,8 +125,16 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator { code.addStatement("$T.$N.put($T.from(namespaceID), this)", Registries.class, "entityTypes", NamespaceID.class); }); @@ -133,6 +151,14 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator { code.addStatement("return this.height"); }); + generator.addMethod("getMetaConstructor", new ParameterSpec[0], + ParameterizedTypeName.get( + ClassName.get(Function.class), + WildcardTypeName.subtypeOf(ClassName.get(Entity.class)), + WildcardTypeName.subtypeOf(ClassName.get(EntityMeta.class)) + ), + code -> code.addStatement("return this.metaConstructor") + ); generator.addStaticMethod("fromId", new ParameterSpec[]{ParameterSpec.builder(TypeName.SHORT, "id").build()}, className, code -> { code.beginControlFlow("if(id >= 0 && id < values().length)") @@ -148,7 +174,8 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator Date: Tue, 23 Feb 2021 18:37:00 +0300 Subject: [PATCH 17/48] A bit more changes to EntityMeta --- .../minestom/server/entity/EntityType.java | 8 ++--- .../entitytypes/EntityTypeEnumGenerator.java | 16 +++++---- .../net/minestom/server/entity/Entity.java | 19 +++++++--- .../entity/metadata/AgeableMobMeta.java | 8 ++--- .../entity/metadata/BaseEntityMeta.java | 36 +++++++++---------- .../server/entity/metadata/EntityMeta.java | 5 ++- .../entity/metadata/LivingEntityMeta.java | 28 +++++++-------- .../server/entity/metadata/MobMeta.java | 5 +-- .../entity/metadata/PathfinderMobMeta.java | 5 +-- .../server/entity/metadata/PlayerMeta.java | 25 +++++++------ .../metadata/ambient/AmbientCreatureMeta.java | 5 +-- .../entity/metadata/ambient/BatMeta.java | 5 +-- .../metadata/animal/AbstractHorseMeta.java | 8 ++--- .../entity/metadata/animal/AnimalMeta.java | 5 +-- .../entity/metadata/animal/BeeMeta.java | 8 ++--- .../metadata/animal/ChestedHorseMeta.java | 8 ++--- .../entity/metadata/animal/ChickenMeta.java | 5 +-- .../entity/metadata/animal/CowMeta.java | 5 +-- .../entity/metadata/animal/DonkeyMeta.java | 5 +-- .../entity/metadata/animal/FoxMeta.java | 16 ++++----- .../entity/metadata/animal/HoglinMeta.java | 8 ++--- .../entity/metadata/animal/HorseMeta.java | 8 ++--- .../entity/metadata/animal/LlamaMeta.java | 16 ++++----- .../entity/metadata/animal/MooshroomMeta.java | 8 ++--- .../entity/metadata/animal/MuleMeta.java | 5 +-- .../entity/metadata/animal/OcelotMeta.java | 8 ++--- .../entity/metadata/animal/PandaMeta.java | 24 ++++++------- .../entity/metadata/animal/PigMeta.java | 12 +++---- .../entity/metadata/animal/PolarBearMeta.java | 8 ++--- .../entity/metadata/animal/RabbitMeta.java | 8 ++--- .../entity/metadata/animal/SheepMeta.java | 5 +-- .../metadata/animal/SkeletonHorseMeta.java | 5 +-- .../entity/metadata/animal/StriderMeta.java | 16 ++++----- .../entity/metadata/animal/TurtleMeta.java | 28 +++++++-------- .../metadata/animal/ZombieHorseMeta.java | 5 +-- .../metadata/animal/tameable/CatMeta.java | 20 +++++------ .../metadata/animal/tameable/ParrotMeta.java | 8 ++--- .../animal/tameable/TameableAnimalMeta.java | 8 ++--- .../metadata/animal/tameable/WolfMeta.java | 16 ++++----- .../metadata/arrow/AbstractArrowMeta.java | 8 ++--- .../entity/metadata/arrow/ArrowMeta.java | 8 ++--- .../metadata/arrow/SpectralArrowMeta.java | 5 +-- .../metadata/arrow/ThrownTridentMeta.java | 12 +++---- .../entity/metadata/flying/FlyingMeta.java | 5 +-- .../entity/metadata/flying/GhastMeta.java | 8 ++--- .../entity/metadata/flying/PhantomMeta.java | 8 ++--- .../metadata/golem/AbstractGolemMeta.java | 5 +-- .../entity/metadata/golem/IronGolemMeta.java | 5 +-- .../entity/metadata/golem/ShulkerMeta.java | 20 +++++------ .../entity/metadata/golem/SnowGolemMeta.java | 8 ++--- .../AbstractMinecartContainerMeta.java | 5 +-- .../minecart/AbstractMinecartMeta.java | 24 ++++++------- .../metadata/minecart/ChestMinecartMeta.java | 5 +-- .../minecart/CommandBlockMinecartMeta.java | 12 +++---- .../minecart/FurnaceMinecartMeta.java | 8 ++--- .../metadata/minecart/HopperMinecartMeta.java | 5 +-- .../metadata/minecart/MinecartMeta.java | 5 +-- .../minecart/SpawnerMinecartMeta.java | 5 +-- .../metadata/minecart/TntMinecartMeta.java | 5 +-- .../metadata/monster/BasePiglinMeta.java | 8 ++--- .../entity/metadata/monster/BlazeMeta.java | 5 +-- .../metadata/monster/CaveSpiderMeta.java | 5 +-- .../entity/metadata/monster/CreeperMeta.java | 16 ++++----- .../metadata/monster/ElderGuardianMeta.java | 5 +-- .../entity/metadata/monster/EndermanMeta.java | 16 ++++----- .../metadata/monster/EndermiteMeta.java | 5 +-- .../entity/metadata/monster/GiantMeta.java | 5 +-- .../entity/metadata/monster/GuardianMeta.java | 10 +++--- .../entity/metadata/monster/MonsterMeta.java | 5 +-- .../metadata/monster/PiglinBruteMeta.java | 5 +-- .../entity/metadata/monster/PiglinMeta.java | 16 ++++----- .../metadata/monster/SilverfishMeta.java | 5 +-- .../entity/metadata/monster/SpiderMeta.java | 5 +-- .../entity/metadata/monster/VexMeta.java | 5 +-- .../entity/metadata/monster/WitherMeta.java | 14 ++++---- .../entity/metadata/monster/ZoglinMeta.java | 8 ++--- .../monster/raider/AbstractIllagerMeta.java | 5 +-- .../metadata/monster/raider/EvokerMeta.java | 5 +-- .../monster/raider/IllusionerMeta.java | 5 +-- .../metadata/monster/raider/PillagerMeta.java | 5 +-- .../metadata/monster/raider/RaiderMeta.java | 8 ++--- .../metadata/monster/raider/RavagerMeta.java | 5 +-- .../raider/SpellcasterIllagerMeta.java | 8 ++--- .../monster/raider/VindicatorMeta.java | 5 +-- .../metadata/monster/raider/WitchMeta.java | 8 ++--- .../skeleton/AbstractSkeletonMeta.java | 5 +-- .../monster/skeleton/SkeletonMeta.java | 5 +-- .../metadata/monster/skeleton/StrayMeta.java | 5 +-- .../monster/skeleton/WitherSkeletonMeta.java | 5 +-- .../metadata/monster/zombie/DrownedMeta.java | 5 +-- .../metadata/monster/zombie/HuskMeta.java | 5 +-- .../metadata/monster/zombie/ZombieMeta.java | 12 +++---- .../monster/zombie/ZombieVillagerMeta.java | 12 +++---- .../monster/zombie/ZombifiedPiglinMeta.java | 5 +-- .../metadata/object/EyeOfEnderMeta.java | 5 +-- .../entity/metadata/object/FireballMeta.java | 5 +-- .../metadata/object/ItemEntityMeta.java | 5 +-- .../metadata/object/ObjectEntityMeta.java | 8 ++--- .../metadata/object/SmallFireballMeta.java | 5 +-- .../entity/metadata/object/SnowballMeta.java | 5 +-- .../entity/metadata/object/ThrownEggMeta.java | 5 +-- .../metadata/object/ThrownEnderPearlMeta.java | 5 +-- .../object/ThrownExperienceBottleMeta.java | 5 +-- .../metadata/object/ThrownPotionMeta.java | 5 +-- .../metadata/other/AreaEffectCloudMeta.java | 20 +++++------ .../entity/metadata/other/ArmorStandMeta.java | 29 ++++++++------- .../entity/metadata/other/BoatMeta.java | 32 ++++++++--------- .../metadata/other/DragonFireballMeta.java | 5 +-- .../entity/metadata/other/EndCrystalMeta.java | 12 +++---- .../metadata/other/EnderDragonMeta.java | 8 ++--- .../metadata/other/EvokerFangsMeta.java | 5 +-- .../metadata/other/ExperienceOrbMeta.java | 5 +-- .../metadata/other/FallingBlockMeta.java | 8 ++--- .../metadata/other/FireworkRocketMeta.java | 14 ++++---- .../metadata/other/FishingHookMeta.java | 10 +++--- .../entity/metadata/other/ItemFrameMeta.java | 12 +++---- .../entity/metadata/other/LeashKnotMeta.java | 5 +-- .../metadata/other/LightningBoltMeta.java | 5 +-- .../entity/metadata/other/LlamaSpitMeta.java | 5 +-- .../entity/metadata/other/MagmaCubeMeta.java | 5 ++- .../entity/metadata/other/PaintingMeta.java | 5 +-- .../entity/metadata/other/PrimedTntMeta.java | 8 ++--- .../metadata/other/ShulkerBulletMeta.java | 5 +-- .../entity/metadata/other/SlimeMeta.java | 8 ++--- .../metadata/other/TraderLlamaMeta.java | 5 +-- .../metadata/other/WitherSkullMeta.java | 8 ++--- .../villager/AbstractVillagerMeta.java | 8 ++--- .../metadata/villager/VillagerMeta.java | 8 ++--- .../villager/WanderingTraderMeta.java | 5 +-- .../entity/metadata/water/DolphinMeta.java | 16 ++++----- .../entity/metadata/water/SquidMeta.java | 5 +-- .../metadata/water/WaterAnimalMeta.java | 5 +-- .../metadata/water/fish/AbstractFishMeta.java | 8 ++--- .../entity/metadata/water/fish/CodMeta.java | 5 +-- .../metadata/water/fish/PufferfishMeta.java | 8 ++--- .../metadata/water/fish/SalmonMeta.java | 5 +-- .../metadata/water/fish/TropicalFishMeta.java | 8 ++--- src/test/java/demo/commands/HorseCommand.java | 2 +- src/test/java/demo/commands/ShootCommand.java | 2 +- 139 files changed, 647 insertions(+), 568 deletions(-) diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index 03cd31805..89176087d 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -1,6 +1,6 @@ package net.minestom.server.entity; -import java.util.function.Function; +import java.util.function.BiFunction; import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.entity.metadata.PlayerMeta; import net.minestom.server.entity.metadata.ambient.BatMeta; @@ -345,10 +345,10 @@ public enum EntityType { private double height; @NotNull - private Function metaConstructor; + private BiFunction metaConstructor; EntityType(@NotNull String namespaceID, double width, double height, - @NotNull Function metaConstructor) { + @NotNull BiFunction metaConstructor) { this.namespaceID = namespaceID; this.width = width; this.height = height; @@ -372,7 +372,7 @@ public enum EntityType { return this.height; } - public Function getMetaConstructor() { + public BiFunction getMetaConstructor() { return this.metaConstructor; } diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java index 781d685f4..4104663dc 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java @@ -8,6 +8,7 @@ import net.minestom.codegen.ConstructorLambda; import net.minestom.codegen.EnumGenerator; import net.minestom.codegen.MinestomEnumGenerator; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.registry.Registries; import net.minestom.server.registry.ResourceGatherer; @@ -22,6 +23,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.*; +import java.util.function.BiFunction; import java.util.function.Function; /** @@ -130,9 +132,10 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator { @@ -153,9 +156,10 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator code.addStatement("return this.metaConstructor") ); diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 1c6f97baa..40c974dfa 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -8,6 +8,7 @@ import net.minestom.server.collision.BoundingBox; import net.minestom.server.collision.CollisionUtils; import net.minestom.server.data.Data; import net.minestom.server.data.DataContainer; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.event.Event; import net.minestom.server.event.EventCallback; import net.minestom.server.event.entity.*; @@ -123,6 +124,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P private final Map, Collection> eventCallbacks = new ConcurrentHashMap<>(); protected Metadata metadata = new Metadata(this); + protected EntityMeta entityMeta; private final List effects = new CopyOnWriteArrayList<>(); @@ -142,6 +144,8 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P this.lastY = spawnPosition.getY(); this.lastZ = spawnPosition.getZ(); + this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); + setBoundingBox(0, 0, 0); setAutoViewable(true); @@ -158,10 +162,6 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P this(entityType, new Position()); } - public Metadata getMetadata() { - return this.metadata; - } - /** * Schedules a task to be run during the next entity tick. * It ensures that the task will be executed in the same thread as the entity (depending of the {@link ThreadProvider}). @@ -224,6 +224,17 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P return onGround || EntityUtils.isOnGround(this) /* backup for levitating entities */; } + /** + * Gets metadata of this entity. + * You may want to cast it to specific implementation. + * + * @return metadata of this entity. + */ + @NotNull + public EntityMeta getEntityMeta() { + return this.entityMeta; + } + /** * Teleports the entity only if the chunk at {@code position} is loaded or if * {@link Instance#hasEnabledAutoChunkLoad()} returns true. diff --git a/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java b/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java index 91bfc2a20..6a51c1c61 100644 --- a/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/AgeableMobMeta.java @@ -7,12 +7,12 @@ import org.jetbrains.annotations.NotNull; public class AgeableMobMeta extends PathfinderMobMeta { - protected AgeableMobMeta(@NotNull Entity entity) { - super(entity); + protected AgeableMobMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isBaby() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setBaby(boolean value) { @@ -25,7 +25,7 @@ public class AgeableMobMeta extends PathfinderMobMeta { } else { setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); } - getMetadata().getIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java index f377278dc..0f8466de6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java @@ -17,8 +17,8 @@ public class BaseEntityMeta extends EntityMeta { private final static byte HAS_GLOWING_EFFECT_BIT = 0x40; private final static byte FLYING_WITH_ELYTRA_BIT = (byte) 0x80; - protected BaseEntityMeta(@NotNull Entity entity) { - super(entity); + protected BaseEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isOnFire() { @@ -78,63 +78,59 @@ public class BaseEntityMeta extends EntityMeta { } public int getAirTicks() { - return getMetadata().getIndex((byte) 1, 300); + return super.metadata.getIndex((byte) 1, 300); } public void setAirTicks(int value) { - getMetadata().setIndex((byte) 1, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 1, Metadata.VarInt(value)); } public JsonMessage getCustomName() { - return getMetadata().getIndex((byte) 2, null); + return super.metadata.getIndex((byte) 2, null); } public void setCustomName(JsonMessage value) { - getMetadata().setIndex((byte) 2, Metadata.OptChat(value)); + super.metadata.setIndex((byte) 2, Metadata.OptChat(value)); } public boolean isCustomNameVisible() { - return getMetadata().getIndex((byte) 3, false); + return super.metadata.getIndex((byte) 3, false); } public void setCustomNameVisible(boolean value) { - getMetadata().setIndex((byte) 3, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 3, Metadata.Boolean(value)); } public boolean isSilent() { - return getMetadata().getIndex((byte) 4, false); + return super.metadata.getIndex((byte) 4, false); } public void setSilent(boolean value) { - getMetadata().setIndex((byte) 4, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 4, Metadata.Boolean(value)); } public boolean isHasNoGravity() { - return getMetadata().getIndex((byte) 5, false); + return super.metadata.getIndex((byte) 5, false); } public void setHasNoGravity(boolean value) { - getMetadata().setIndex((byte) 5, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 5, Metadata.Boolean(value)); } public Entity.Pose getPose() { - return getMetadata().getIndex((byte) 6, Entity.Pose.STANDING); + return super.metadata.getIndex((byte) 6, Entity.Pose.STANDING); } public void setPose(Entity.Pose value) { - getMetadata().setIndex((byte) 6, Metadata.Pose(value)); - } - - protected Metadata getMetadata() { - return this.entity.getMetadata(); + super.metadata.setIndex((byte) 6, Metadata.Pose(value)); } protected byte getMask(byte index) { - return getMetadata().getIndex(index, (byte) 0); + return super.metadata.getIndex(index, (byte) 0); } protected void setMask(byte index, byte mask) { - getMetadata().setIndex(index, Metadata.Byte(mask)); + super.metadata.setIndex(index, Metadata.Byte(mask)); } protected boolean getMaskBit(byte index, byte bit) { diff --git a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java index 0a3a06874..51373b967 100644 --- a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java @@ -1,14 +1,17 @@ package net.minestom.server.entity.metadata; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class EntityMeta { protected final Entity entity; + protected final Metadata metadata; - protected EntityMeta(@NotNull Entity entity) { + protected EntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { this.entity = entity; + this.metadata = metadata; } } diff --git a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java index dd9c863e2..6f4befe32 100644 --- a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java @@ -15,8 +15,8 @@ public class LivingEntityMeta extends BaseEntityMeta { private final static byte ACTIVE_HAND_BIT = 0x02; private final static byte IS_IN_SPIN_ATTACK_BIT = 0x04; - protected LivingEntityMeta(@NotNull Entity entity) { - super(entity); + protected LivingEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isHandActive() { @@ -45,52 +45,52 @@ public class LivingEntityMeta extends BaseEntityMeta { } public float getHealth() { - return getMetadata().getIndex((byte) 8, 1F); + return super.metadata.getIndex((byte) 8, 1F); } public void setHealth(float value) { - getMetadata().setIndex((byte) 8, Metadata.Float(value)); + super.metadata.setIndex((byte) 8, Metadata.Float(value)); } public int getPotionEffectColor() { - return getMetadata().getIndex((byte) 9, 0); + return super.metadata.getIndex((byte) 9, 0); } public void setPotionEffectColor(int value) { - getMetadata().setIndex((byte) 9, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 9, Metadata.VarInt(value)); } public boolean isPotionEffectAmbient() { - return getMetadata().getIndex((byte) 10, false); + return super.metadata.getIndex((byte) 10, false); } public void setPotionEffectAmbient(boolean value) { - getMetadata().setIndex((byte) 10, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 10, Metadata.Boolean(value)); } public int getNumberOfArrows() { - return getMetadata().getIndex((byte) 11, 0); + return super.metadata.getIndex((byte) 11, 0); } public void setNumberOfArrows(int value) { - getMetadata().getIndex((byte) 11, Metadata.VarInt(value)); + super.metadata.getIndex((byte) 11, Metadata.VarInt(value)); } public int getHealthAddedByAbsorption() { - return getMetadata().getIndex((byte) 12, 0); + return super.metadata.getIndex((byte) 12, 0); } public void setHealthAddedByAbsorption(int value) { - getMetadata().getIndex((byte) 12, Metadata.VarInt(value)); + super.metadata.getIndex((byte) 12, Metadata.VarInt(value)); } @Nullable public BlockPosition getBedInWhichSleepingPosition() { - return getMetadata().getIndex((byte) 13, null); + return super.metadata.getIndex((byte) 13, null); } public void setBedInWhichSleepingPosition(@Nullable BlockPosition value) { - getMetadata().setIndex((byte) 13, Metadata.OptPosition(value)); + super.metadata.setIndex((byte) 13, Metadata.OptPosition(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/MobMeta.java b/src/main/java/net/minestom/server/entity/metadata/MobMeta.java index 7e4e96fe6..c340fa9e0 100644 --- a/src/main/java/net/minestom/server/entity/metadata/MobMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/MobMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class MobMeta extends LivingEntityMeta { @@ -11,8 +12,8 @@ public class MobMeta extends LivingEntityMeta { private final static byte IS_LEFT_HANDED_BIT = 0x02; private final static byte IS_AGGRESSIVE_BIT = 0x04; - protected MobMeta(@NotNull Entity entity) { - super(entity); + protected MobMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isNoAi() { diff --git a/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java b/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java index ae736cd1c..9a4920d16 100644 --- a/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/PathfinderMobMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class PathfinderMobMeta extends MobMeta { - protected PathfinderMobMeta(@NotNull Entity entity) { - super(entity); + protected PathfinderMobMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java b/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java index 60791ac6e..1a17c0986 100644 --- a/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/PlayerMeta.java @@ -2,7 +2,6 @@ package net.minestom.server.entity.metadata; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBT; @@ -19,24 +18,24 @@ public class PlayerMeta extends LivingEntityMeta { private final static byte RIGHT_LEG_BIT = 0x20; private final static byte HAT_BIT = 0x40; - public PlayerMeta(@NotNull Entity entity) { - super(entity); + public PlayerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public float getAdditionalHearts() { - return getMetadata().getIndex((byte) 14, 0F); + return super.metadata.getIndex((byte) 14, 0F); } public void setAdditionalHearts(float value) { - getMetadata().setIndex((byte) 14, Metadata.Float(value)); + super.metadata.setIndex((byte) 14, Metadata.Float(value)); } public int getScore() { - return getMetadata().getIndex((byte) 15, 0); + return super.metadata.getIndex((byte) 15, 0); } public void setScore(int value) { - getMetadata().setIndex((byte) 15, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 15, Metadata.VarInt(value)); } public boolean isCapeEnabled() { @@ -96,29 +95,29 @@ public class PlayerMeta extends LivingEntityMeta { } public boolean isRightMainHand() { - return getMetadata().getIndex((byte) 17, (byte) 1) == (byte) 1; + return super.metadata.getIndex((byte) 17, (byte) 1) == (byte) 1; } public void setRightMainHand(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Byte(value ? (byte) 1 : (byte) 0)); + super.metadata.setIndex((byte) 17, Metadata.Byte(value ? (byte) 1 : (byte) 0)); } @Nullable public NBT getLeftShoulderEntityData() { - return getMetadata().getIndex((byte) 18, null); + return super.metadata.getIndex((byte) 18, null); } public void setLeftShoulderEntityData(@Nullable NBT value) { - getMetadata().setIndex((byte) 18, Metadata.NBT(value)); + super.metadata.setIndex((byte) 18, Metadata.NBT(value)); } @Nullable public NBT getRightShoulderEntityData() { - return getMetadata().getIndex((byte) 19, null); + return super.metadata.getIndex((byte) 19, null); } public void setRightShoulderEntityData(@Nullable NBT value) { - getMetadata().setIndex((byte) 19, Metadata.NBT(value)); + super.metadata.setIndex((byte) 19, Metadata.NBT(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java b/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java index 1b12fb960..ab1a24279 100644 --- a/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/ambient/AmbientCreatureMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.ambient; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.MobMeta; import org.jetbrains.annotations.NotNull; public class AmbientCreatureMeta extends MobMeta { - protected AmbientCreatureMeta(@NotNull Entity entity) { - super(entity); + protected AmbientCreatureMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java b/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java index e10cdab39..ce048f2ef 100644 --- a/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/ambient/BatMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata.ambient; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class BatMeta extends AmbientCreatureMeta { @@ -9,8 +10,8 @@ public class BatMeta extends AmbientCreatureMeta { private final static byte IS_HANGING_BIT = 0x01; - public BatMeta(@NotNull Entity entity) { - super(entity); + public BatMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isHanging() { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java index c4d0f03ec..1455f0f84 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/AbstractHorseMeta.java @@ -17,8 +17,8 @@ public class AbstractHorseMeta extends AnimalMeta { private final static byte REARING_BIT = 0x20; private final static byte MOUTH_OPEN_BIT = 0x40; - protected AbstractHorseMeta(@NotNull Entity entity) { - super(entity); + protected AbstractHorseMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isTamed() { @@ -70,11 +70,11 @@ public class AbstractHorseMeta extends AnimalMeta { } public UUID getOwner() { - return getMetadata().getIndex((byte) 17, null); + return super.metadata.getIndex((byte) 17, null); } public void setOwner(UUID value) { - getMetadata().setIndex((byte) 17, Metadata.OptUUID(value)); + super.metadata.setIndex((byte) 17, Metadata.OptUUID(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java index bc02993f8..e34ef8604 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/AnimalMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.AgeableMobMeta; import org.jetbrains.annotations.NotNull; public class AnimalMeta extends AgeableMobMeta { - protected AnimalMeta(@NotNull Entity entity) { - super(entity); + protected AnimalMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java index 3b8d75200..2267bb03a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/BeeMeta.java @@ -12,8 +12,8 @@ public class BeeMeta extends AnimalMeta { private final static byte HAS_STUNG_BIT = 0x04; private final static byte HAS_NECTAR_BIT = 0x08; - public BeeMeta(@NotNull Entity entity) { - super(entity); + public BeeMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isAngry() { @@ -41,11 +41,11 @@ public class BeeMeta extends AnimalMeta { } public int getAngerTicks() { - return getMetadata().getIndex((byte) 17, 0); + return super.metadata.getIndex((byte) 17, 0); } public void setAngerTicks(int value) { - getMetadata().setIndex((byte) 17, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 17, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java index 282d5d274..9793257ad 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/ChestedHorseMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class ChestedHorseMeta extends AbstractHorseMeta { - protected ChestedHorseMeta(@NotNull Entity entity) { - super(entity); + protected ChestedHorseMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isHasChest() { - return getMetadata().getIndex((byte) 18, false); + return super.metadata.getIndex((byte) 18, false); } public void setHasChest(boolean value) { - getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java index 35779ba05..422324d24 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/ChickenMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class ChickenMeta extends AnimalMeta { - public ChickenMeta(@NotNull Entity entity) { - super(entity); + public ChickenMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java index eaa984393..6c86455bc 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/CowMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class CowMeta extends AnimalMeta { - public CowMeta(@NotNull Entity entity) { - super(entity); + public CowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java index b7294ce0e..62dba04b6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/DonkeyMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class DonkeyMeta extends ChestedHorseMeta { - public DonkeyMeta(@NotNull Entity entity) { - super(entity); + public DonkeyMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java index 553d5972b..6701e6651 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java @@ -19,17 +19,17 @@ public class FoxMeta extends AnimalMeta { private final static byte FACEPLANTED_BIT = 0x40; private final static byte DEFENDING_BIT = (byte) 0x80; - public FoxMeta(@NotNull Entity entity) { - super(entity); + public FoxMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Type getType() { - return Type.VALUES[getMetadata().getIndex((byte) 16, 0)]; + return Type.VALUES[super.metadata.getIndex((byte) 16, 0)]; } public void setType(@NotNull Type type) { - getMetadata().setIndex((byte) 16, Metadata.VarInt(type.ordinal())); + super.metadata.setIndex((byte) 16, Metadata.VarInt(type.ordinal())); } public boolean isSitting() { @@ -90,20 +90,20 @@ public class FoxMeta extends AnimalMeta { @Nullable public UUID getFirstUUID() { - return getMetadata().getIndex((byte) 18, null); + return super.metadata.getIndex((byte) 18, null); } public void setFirstUUID(@Nullable UUID value) { - getMetadata().setIndex((byte) 18, Metadata.OptUUID(value)); + super.metadata.setIndex((byte) 18, Metadata.OptUUID(value)); } @Nullable public UUID getSecondUUID() { - return getMetadata().getIndex((byte) 19, null); + return super.metadata.getIndex((byte) 19, null); } public void setSecondUUID(@Nullable UUID value) { - getMetadata().setIndex((byte) 19, Metadata.OptUUID(value)); + super.metadata.setIndex((byte) 19, Metadata.OptUUID(value)); } public enum Type { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java index 62879979a..c3a31e156 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/HoglinMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class HoglinMeta extends AnimalMeta { - public HoglinMeta(@NotNull Entity entity) { - super(entity); + public HoglinMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isImmuneToZombification() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setImmuneToZombification(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java index 14247509b..4c12c69a9 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/HorseMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class HorseMeta extends AbstractHorseMeta { - public HorseMeta(@NotNull Entity entity) { - super(entity); + public HorseMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public Variant getVariant() { - return getVariantFromID(getMetadata().getIndex((byte) 18, 0)); + return getVariantFromID(super.metadata.getIndex((byte) 18, 0)); } public void setVariant(Variant variant) { - getMetadata().setIndex((byte) 18, Metadata.VarInt(getVariantID(variant.marking, variant.color))); + super.metadata.setIndex((byte) 18, Metadata.VarInt(getVariantID(variant.marking, variant.color))); } public static int getVariantID(@NotNull Marking marking, @NotNull Color color) { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java index 606166990..b62701d87 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/LlamaMeta.java @@ -6,32 +6,32 @@ import org.jetbrains.annotations.NotNull; public class LlamaMeta extends ChestedHorseMeta { - public LlamaMeta(@NotNull Entity entity) { - super(entity); + public LlamaMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getStrength() { - return getMetadata().getIndex((byte) 19, 0); + return super.metadata.getIndex((byte) 19, 0); } public void setStrength(int value) { - getMetadata().setIndex((byte) 19, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 19, Metadata.VarInt(value)); } public int getCarpetColor() { - return getMetadata().getIndex((byte) 20, -1); + return super.metadata.getIndex((byte) 20, -1); } public void setCarpetColor(int value) { - getMetadata().setIndex((byte) 20, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 20, Metadata.VarInt(value)); } public Variant getVariant() { - return Variant.VALUES[getMetadata().getIndex((byte) 21, 0)]; + return Variant.VALUES[super.metadata.getIndex((byte) 21, 0)]; } public void setVariant(Variant value) { - getMetadata().setIndex((byte) 21, Metadata.VarInt(value.ordinal())); + super.metadata.setIndex((byte) 21, Metadata.VarInt(value.ordinal())); } public enum Variant { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java index 60cff39ef..ee580ed2a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/MooshroomMeta.java @@ -8,17 +8,17 @@ import java.util.Locale; public class MooshroomMeta extends CowMeta { - public MooshroomMeta(@NotNull Entity entity) { - super(entity); + public MooshroomMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Variant getVariant() { - return Variant.valueOf(getMetadata().getIndex((byte) 16, "red").toUpperCase(Locale.ROOT)); + return Variant.valueOf(super.metadata.getIndex((byte) 16, "red").toUpperCase(Locale.ROOT)); } public void setVariant(@NotNull Variant value) { - getMetadata().setIndex((byte) 16, Metadata.String(value.name().toLowerCase(Locale.ROOT))); + super.metadata.setIndex((byte) 16, Metadata.String(value.name().toLowerCase(Locale.ROOT))); } public enum Variant { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java index 025adf145..661ff00c2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/MuleMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class MuleMeta extends ChestedHorseMeta { - public MuleMeta(@NotNull Entity entity) { - super(entity); + public MuleMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java index 5fb002a04..5869835f7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/OcelotMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class OcelotMeta extends AnimalMeta { - public OcelotMeta(@NotNull Entity entity) { - super(entity); + public OcelotMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isTrusting() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setTrusting(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java index f8635c364..298ea0763 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/PandaMeta.java @@ -13,50 +13,50 @@ public class PandaMeta extends AnimalMeta { private final static byte SITTING_BIT = 0x08; private final static byte ON_BACK_BIT = 0x10; - public PandaMeta(@NotNull Entity entity) { - super(entity); + public PandaMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getBreedTimer() { - return getMetadata().getIndex((byte) 16, 0); + return super.metadata.getIndex((byte) 16, 0); } public void setBreedTimer(int value) { - getMetadata().setIndex((byte) 16, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 16, Metadata.VarInt(value)); } public int getSneezeTimer() { - return getMetadata().getIndex((byte) 17, 0); + return super.metadata.getIndex((byte) 17, 0); } public void setSneezeTimer(int value) { - getMetadata().setIndex((byte) 17, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 17, Metadata.VarInt(value)); } public int getEatTimer() { - return getMetadata().getIndex((byte) 18, 0); + return super.metadata.getIndex((byte) 18, 0); } public void setEatTimer(int value) { - getMetadata().setIndex((byte) 18, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 18, Metadata.VarInt(value)); } @NotNull public Gene getMainGene() { - return Gene.VALUES[getMetadata().getIndex((byte) 19, (byte) 0)]; + return Gene.VALUES[super.metadata.getIndex((byte) 19, (byte) 0)]; } public void setMainGene(@NotNull Gene value) { - getMetadata().setIndex((byte) 19, Metadata.Byte((byte) value.ordinal())); + super.metadata.setIndex((byte) 19, Metadata.Byte((byte) value.ordinal())); } @NotNull public Gene getHiddenGene() { - return Gene.VALUES[getMetadata().getIndex((byte) 20, (byte) 0)]; + return Gene.VALUES[super.metadata.getIndex((byte) 20, (byte) 0)]; } public void setHiddenGene(@NotNull Gene value) { - getMetadata().setIndex((byte) 20, Metadata.Byte((byte) value.ordinal())); + super.metadata.setIndex((byte) 20, Metadata.Byte((byte) value.ordinal())); } public boolean isSneezing() { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java index 76a542590..482ac2c1a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/PigMeta.java @@ -6,24 +6,24 @@ import org.jetbrains.annotations.NotNull; public class PigMeta extends AnimalMeta { - public PigMeta(@NotNull Entity entity) { - super(entity); + public PigMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isHasSaddle() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setHasSaddle(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } public int getTimeToBoost() { - return getMetadata().getIndex((byte) 17, 0); + return super.metadata.getIndex((byte) 17, 0); } public void setTimeToBoost(int value) { - getMetadata().getIndex((byte) 17, Metadata.VarInt(value)); + super.metadata.getIndex((byte) 17, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java index 283b28c7f..0da00b06c 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/PolarBearMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class PolarBearMeta extends AnimalMeta { - public PolarBearMeta(@NotNull Entity entity) { - super(entity); + public PolarBearMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isStandingUp() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setStandingUp(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java index 366b13a25..a24fb2d15 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/RabbitMeta.java @@ -6,13 +6,13 @@ import org.jetbrains.annotations.NotNull; public class RabbitMeta extends AnimalMeta { - public RabbitMeta(@NotNull Entity entity) { - super(entity); + public RabbitMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Type getType() { - int id = getMetadata().getIndex((byte) 16, 0); + int id = super.metadata.getIndex((byte) 16, 0); if (id == 99) { return Type.KILLER_BUNNY; } @@ -21,7 +21,7 @@ public class RabbitMeta extends AnimalMeta { public void setType(@NotNull Type value) { int id = value == Type.KILLER_BUNNY ? 99 : value.ordinal(); - getMetadata().setIndex((byte) 16, Metadata.VarInt(id)); + super.metadata.setIndex((byte) 16, Metadata.VarInt(id)); } public enum Type { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java index 20046c84b..4dc2c4805 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/SheepMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SheepMeta extends AnimalMeta { @@ -10,8 +11,8 @@ public class SheepMeta extends AnimalMeta { private final static byte COLOR_BITS = 0x0F; private final static byte SHEARED_BIT = 0x10; - public SheepMeta(@NotNull Entity entity) { - super(entity); + public SheepMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getColor() { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java index 309e297d7..c644d783e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/SkeletonHorseMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SkeletonHorseMeta extends AbstractHorseMeta { - public SkeletonHorseMeta(@NotNull Entity entity) { - super(entity); + public SkeletonHorseMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java index c448076f2..8ad2cf944 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/StriderMeta.java @@ -6,32 +6,32 @@ import org.jetbrains.annotations.NotNull; public class StriderMeta extends AnimalMeta { - public StriderMeta(@NotNull Entity entity) { - super(entity); + public StriderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getTimeToBoost() { - return getMetadata().getIndex((byte) 16, 0); + return super.metadata.getIndex((byte) 16, 0); } public void setTimeToBoost(int value) { - getMetadata().setIndex((byte) 16, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 16, Metadata.VarInt(value)); } public boolean isShaking() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setShaking(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } public boolean isHasSaddle() { - return getMetadata().getIndex((byte) 18, false); + return super.metadata.getIndex((byte) 18, false); } public void setHasSaddle(boolean value) { - getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java index 652e84ba5..299bdae87 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/TurtleMeta.java @@ -7,58 +7,58 @@ import org.jetbrains.annotations.NotNull; public class TurtleMeta extends AnimalMeta { - public TurtleMeta(@NotNull Entity entity) { - super(entity); + public TurtleMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public BlockPosition getHomePosition() { - return getMetadata().getIndex((byte) 16, new BlockPosition(0, 0, 0)); + return super.metadata.getIndex((byte) 16, new BlockPosition(0, 0, 0)); } public void setBlockPosition(@NotNull BlockPosition value) { - getMetadata().setIndex((byte) 16, Metadata.Position(value)); + super.metadata.setIndex((byte) 16, Metadata.Position(value)); } public boolean isHasEgg() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setHasEgg(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } public boolean isLayingEgg() { - return getMetadata().getIndex((byte) 18, false); + return super.metadata.getIndex((byte) 18, false); } public void setLayingEgg(boolean value) { - getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } @NotNull public BlockPosition getTravelPosition() { - return getMetadata().getIndex((byte) 19, new BlockPosition(0, 0, 0)); + return super.metadata.getIndex((byte) 19, new BlockPosition(0, 0, 0)); } public void setTravelPosition(@NotNull BlockPosition value) { - getMetadata().setIndex((byte) 19, Metadata.Position(value)); + super.metadata.setIndex((byte) 19, Metadata.Position(value)); } public boolean isGoingHome() { - return getMetadata().getIndex((byte) 20, false); + return super.metadata.getIndex((byte) 20, false); } public void setGoingHome(boolean value) { - getMetadata().setIndex((byte) 20, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 20, Metadata.Boolean(value)); } public boolean isTravelling() { - return getMetadata().getIndex((byte) 21, false); + return super.metadata.getIndex((byte) 21, false); } public void setTravelling(boolean value) { - getMetadata().setIndex((byte) 21, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 21, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java index be373b9d9..b5efa4b9b 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/ZombieHorseMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.animal; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class ZombieHorseMeta extends AbstractHorseMeta { - public ZombieHorseMeta(@NotNull Entity entity) { - super(entity); + public ZombieHorseMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java index 9bcb815a9..4c32fe10b 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/CatMeta.java @@ -6,41 +6,41 @@ import org.jetbrains.annotations.NotNull; public class CatMeta extends TameableAnimalMeta { - public CatMeta(@NotNull Entity entity) { - super(entity); + public CatMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Color getColor() { - return Color.VALUES[getMetadata().getIndex((byte) 18, 1)]; + return Color.VALUES[super.metadata.getIndex((byte) 18, 1)]; } public void setColor(@NotNull Color value) { - getMetadata().setIndex((byte) 18, Metadata.VarInt(value.ordinal())); + super.metadata.setIndex((byte) 18, Metadata.VarInt(value.ordinal())); } public boolean isLying() { - return getMetadata().getIndex((byte) 19, false); + return super.metadata.getIndex((byte) 19, false); } public void setLying(boolean value) { - getMetadata().setIndex((byte) 19, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 19, Metadata.Boolean(value)); } public boolean isRelaxed() { - return getMetadata().getIndex((byte) 20, false); + return super.metadata.getIndex((byte) 20, false); } public void setRelaxed(boolean value) { - getMetadata().setIndex((byte) 20, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 20, Metadata.Boolean(value)); } public int getCollarColor() { - return getMetadata().getIndex((byte) 21, 14); + return super.metadata.getIndex((byte) 21, 14); } public void setCollarColor(int value) { - getMetadata().setIndex((byte) 21, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 21, Metadata.VarInt(value)); } public enum Color { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java index 5915a6c9c..603d1feb4 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/ParrotMeta.java @@ -6,17 +6,17 @@ import org.jetbrains.annotations.NotNull; public class ParrotMeta extends TameableAnimalMeta { - public ParrotMeta(@NotNull Entity entity) { - super(entity); + public ParrotMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Color getColor() { - return Color.VALUES[getMetadata().getIndex((byte) 18, 0)]; + return Color.VALUES[super.metadata.getIndex((byte) 18, 0)]; } public void setColor(@NotNull Color value) { - getMetadata().setIndex((byte) 18, Metadata.VarInt(value.ordinal())); + super.metadata.setIndex((byte) 18, Metadata.VarInt(value.ordinal())); } public enum Color { diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java index b52702f58..90d06be95 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/TameableAnimalMeta.java @@ -14,8 +14,8 @@ public class TameableAnimalMeta extends AnimalMeta { private final static byte SITTING_BIT = 0x01; private final static byte TAMED_BIT = 0x04; - protected TameableAnimalMeta(@NotNull Entity entity) { - super(entity); + protected TameableAnimalMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isSitting() { @@ -36,11 +36,11 @@ public class TameableAnimalMeta extends AnimalMeta { @NotNull public UUID getOwner() { - return getMetadata().getIndex((byte) 17, null); + return super.metadata.getIndex((byte) 17, null); } public void setOwner(@NotNull UUID value) { - getMetadata().setIndex((byte) 17, Metadata.OptUUID(value)); + super.metadata.setIndex((byte) 17, Metadata.OptUUID(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java index bbb3f20b4..2a6959822 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java @@ -6,32 +6,32 @@ import org.jetbrains.annotations.NotNull; public class WolfMeta extends TameableAnimalMeta { - public WolfMeta(@NotNull Entity entity) { - super(entity); + public WolfMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isBegging() { - return getMetadata().getIndex((byte) 18, false); + return super.metadata.getIndex((byte) 18, false); } public void setBegging(boolean value) { - getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } public int getCollarColor() { - return getMetadata().getIndex((byte) 19, 14); + return super.metadata.getIndex((byte) 19, 14); } public void setCollarColor(int value) { - getMetadata().setIndex((byte) 19, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 19, Metadata.VarInt(value)); } public int getAngerTime() { - return getMetadata().getIndex((byte) 20, 0); + return super.metadata.getIndex((byte) 20, 0); } public void setAngerTime(int value) { - getMetadata().setIndex((byte) 20, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 20, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java index 438ae0dee..449905f4a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java @@ -12,8 +12,8 @@ public class AbstractArrowMeta extends BaseEntityMeta { private final static byte CRITICAL_BIT = 0x01; private final static byte NO_CLIP_BIT = 0x01; - protected AbstractArrowMeta(@NotNull Entity entity) { - super(entity); + protected AbstractArrowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isCritical() { @@ -33,11 +33,11 @@ public class AbstractArrowMeta extends BaseEntityMeta { } public byte getPiercingLevel() { - return getMetadata().getIndex((byte) 8, (byte) 0); + return super.metadata.getIndex((byte) 8, (byte) 0); } public void setPiercingLevel(byte value) { - getMetadata().setIndex((byte) 8, Metadata.Byte(value)); + super.metadata.setIndex((byte) 8, Metadata.Byte(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java index 992a63986..0f2f23252 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java @@ -7,16 +7,16 @@ import org.jetbrains.annotations.NotNull; public class ArrowMeta extends BaseEntityMeta { - public ArrowMeta(@NotNull Entity entity) { - super(entity); + public ArrowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getColor() { - return getMetadata().getIndex((byte) 9, -1); + return super.metadata.getIndex((byte) 9, -1); } public void setColor(int value) { - getMetadata().setIndex((byte) 9, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 9, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java index 8b0768cf3..3bb69fb05 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.arrow; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SpectralArrowMeta extends AbstractArrowMeta { - public SpectralArrowMeta(@NotNull Entity entity) { - super(entity); + public SpectralArrowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java index e21a364d2..2ab3cd990 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ThrownTridentMeta.java @@ -6,24 +6,24 @@ import org.jetbrains.annotations.NotNull; public class ThrownTridentMeta extends AbstractArrowMeta { - public ThrownTridentMeta(@NotNull Entity entity) { - super(entity); + public ThrownTridentMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getLoyaltyLevel() { - return getMetadata().getIndex((byte) 9, 0); + return super.metadata.getIndex((byte) 9, 0); } public void setLoyaltyLevel(int value) { - getMetadata().setIndex((byte) 9, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 9, Metadata.VarInt(value)); } public boolean isHasEnchantmentGlint() { - return getMetadata().getIndex((byte) 10, false); + return super.metadata.getIndex((byte) 10, false); } public void setHasEnchantmentGlint(boolean value) { - getMetadata().setIndex((byte) 10, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 10, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java b/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java index 86259d12b..84b8d6fab 100644 --- a/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/flying/FlyingMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.flying; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.MobMeta; import org.jetbrains.annotations.NotNull; public class FlyingMeta extends MobMeta { - protected FlyingMeta(@NotNull Entity entity) { - super(entity); + protected FlyingMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java b/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java index a7084b6d1..d7d3068a9 100644 --- a/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/flying/GhastMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class GhastMeta extends FlyingMeta { - public GhastMeta(@NotNull Entity entity) { - super(entity); + public GhastMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isAttacking() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setAttacking(boolean value) { - getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java b/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java index 41d6c89f3..2cf2317d6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/flying/PhantomMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class PhantomMeta extends FlyingMeta { - public PhantomMeta(@NotNull Entity entity) { - super(entity); + public PhantomMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getSize() { - return getMetadata().getIndex((byte) 15, 0); + return super.metadata.getIndex((byte) 15, 0); } public void setSize(int value) { - getMetadata().setIndex((byte) 15, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 15, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java index b56f3f4bb..dfbbc2b61 100644 --- a/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/golem/AbstractGolemMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.golem; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.PathfinderMobMeta; import org.jetbrains.annotations.NotNull; public class AbstractGolemMeta extends PathfinderMobMeta { - protected AbstractGolemMeta(@NotNull Entity entity) { - super(entity); + protected AbstractGolemMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java index ae6777a72..af0de2ff9 100644 --- a/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/golem/IronGolemMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata.golem; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class IronGolemMeta extends AbstractGolemMeta { @@ -9,8 +10,8 @@ public class IronGolemMeta extends AbstractGolemMeta { private final static byte PLAYER_CREATED_BIT = 0x01; - public IronGolemMeta(@NotNull Entity entity) { - super(entity); + public IronGolemMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isPlayerCreated() { diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java index 450672929..1269d9c05 100644 --- a/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/golem/ShulkerMeta.java @@ -8,40 +8,40 @@ import org.jetbrains.annotations.NotNull; public class ShulkerMeta extends AbstractGolemMeta { - public ShulkerMeta(@NotNull Entity entity) { - super(entity); + public ShulkerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public Direction getAttachFace() { - return getMetadata().getIndex((byte) 15, Direction.DOWN); + return super.metadata.getIndex((byte) 15, Direction.DOWN); } public void setAttachFace(Direction value) { - getMetadata().setIndex((byte) 15, Metadata.Direction(value)); + super.metadata.setIndex((byte) 15, Metadata.Direction(value)); } public BlockPosition getAttachmentPosition() { - return getMetadata().getIndex((byte) 16, null); + return super.metadata.getIndex((byte) 16, null); } public void setAttachmentPosition(BlockPosition value) { - getMetadata().setIndex((byte) 16, Metadata.OptPosition(value)); + super.metadata.setIndex((byte) 16, Metadata.OptPosition(value)); } public byte getShieldHeight() { - return getMetadata().getIndex((byte) 17, (byte) 0); + return super.metadata.getIndex((byte) 17, (byte) 0); } public void setShieldHeight(byte value) { - getMetadata().setIndex((byte) 17, Metadata.Byte(value)); + super.metadata.setIndex((byte) 17, Metadata.Byte(value)); } public byte getColor() { - return getMetadata().getIndex((byte) 18, (byte) 10); + return super.metadata.getIndex((byte) 18, (byte) 10); } public void setColor(byte value) { - getMetadata().setIndex((byte) 18, Metadata.Byte(value)); + super.metadata.setIndex((byte) 18, Metadata.Byte(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java b/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java index ecbfef53a..143b7f7e8 100644 --- a/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/golem/SnowGolemMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class SnowGolemMeta extends AbstractGolemMeta { - public SnowGolemMeta(@NotNull Entity entity) { - super(entity); + public SnowGolemMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isHasPumpkinHat() { - return getMetadata().getIndex((byte) 15, (byte) 0x10) == (byte) 0x10; + return super.metadata.getIndex((byte) 15, (byte) 0x10) == (byte) 0x10; } public void setHasPumpkinHat(boolean value) { - getMetadata().setIndex((byte) 15, Metadata.Byte(value ? (byte) 0x10 : (byte) 0x00)); + super.metadata.setIndex((byte) 15, Metadata.Byte(value ? (byte) 0x10 : (byte) 0x00)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java index 6f143a622..7b468abce 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class AbstractMinecartContainerMeta extends AbstractMinecartMeta { - protected AbstractMinecartContainerMeta(@NotNull Entity entity) { - super(entity); + protected AbstractMinecartContainerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java index 9b8aa670a..a3c6927ce 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java @@ -7,49 +7,49 @@ import org.jetbrains.annotations.NotNull; public class AbstractMinecartMeta extends BaseEntityMeta { - protected AbstractMinecartMeta(@NotNull Entity entity) { - super(entity); + protected AbstractMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getShakingPower() { - return getMetadata().getIndex((byte) 7, 0); + return super.metadata.getIndex((byte) 7, 0); } public void setShakingPower(int value) { - getMetadata().setIndex((byte) 7, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 7, Metadata.VarInt(value)); } public int getShakingDirection() { - return getMetadata().getIndex((byte) 8, 1); + return super.metadata.getIndex((byte) 8, 1); } public void setShakingDirection(int value) { - getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 8, Metadata.VarInt(value)); } public float getShakingMultiplier() { - return getMetadata().getIndex((byte) 9, 0F); + return super.metadata.getIndex((byte) 9, 0F); } public void setShakingMultiplier(float value) { - getMetadata().setIndex((byte) 9, Metadata.Float(value)); + super.metadata.setIndex((byte) 9, Metadata.Float(value)); } public int getCustomBlockIdAndDamage() { - return getMetadata().getIndex((byte) 10, 0); + return super.metadata.getIndex((byte) 10, 0); } public void setCustomBlockIdAndDamage(int value) { - getMetadata().setIndex((byte) 10, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 10, Metadata.VarInt(value)); } // in 16th of a block public int getCustomBlockYPosition() { - return getMetadata().getIndex((byte) 11, 6); + return super.metadata.getIndex((byte) 11, 6); } public void setCustomBlockYPosition(int value) { - getMetadata().setIndex((byte) 11, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 11, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java index ee4a4987c..b5d32767f 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class ChestMinecartMeta extends AbstractMinecartContainerMeta { - public ChestMinecartMeta(@NotNull Entity entity) { - super(entity); + public ChestMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java index b60b20d0b..cbe5ed2f3 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java @@ -8,26 +8,26 @@ import org.jetbrains.annotations.NotNull; public class CommandBlockMinecartMeta extends AbstractMinecartMeta { - public CommandBlockMinecartMeta(@NotNull Entity entity) { - super(entity); + public CommandBlockMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public String getCommand() { - return getMetadata().getIndex((byte) 13, ""); + return super.metadata.getIndex((byte) 13, ""); } public void setCommand(@NotNull String value) { - getMetadata().setIndex((byte) 13, Metadata.String(value)); + super.metadata.setIndex((byte) 13, Metadata.String(value)); } @NotNull public JsonMessage getLastOutput() { - return getMetadata().getIndex((byte) 14, ColoredText.of("")); + return super.metadata.getIndex((byte) 14, ColoredText.of("")); } public void setLastOutput(@NotNull JsonMessage value) { - getMetadata().setIndex((byte) 14, Metadata.Chat(value)); + super.metadata.setIndex((byte) 14, Metadata.Chat(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java index d1bac2f74..af07198ea 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class FurnaceMinecartMeta extends AbstractMinecartMeta { - public FurnaceMinecartMeta(@NotNull Entity entity) { - super(entity); + public FurnaceMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isHasFuel() { - return getMetadata().getIndex((byte) 13, false); + return super.metadata.getIndex((byte) 13, false); } public void setHasFuel(boolean value) { - getMetadata().setIndex((byte) 13, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 13, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java index 88c737395..b35c663da 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class HopperMinecartMeta extends AbstractMinecartContainerMeta { - public HopperMinecartMeta(@NotNull Entity entity) { - super(entity); + public HopperMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java index 5aeb35be2..5b86f0aab 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class MinecartMeta extends AbstractMinecartMeta { - public MinecartMeta(@NotNull Entity entity) { - super(entity); + public MinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java index 7223f4164..b4c4f43c5 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SpawnerMinecartMeta extends AbstractMinecartMeta { - public SpawnerMinecartMeta(@NotNull Entity entity) { - super(entity); + public SpawnerMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java index 2ee5d6824..f66efdcab 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class TntMinecartMeta extends AbstractMinecartMeta { - public TntMinecartMeta(@NotNull Entity entity) { - super(entity); + public TntMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java index 4f392cc2f..b2accacb2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/BasePiglinMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class BasePiglinMeta extends MonsterMeta { - protected BasePiglinMeta(@NotNull Entity entity) { - super(entity); + protected BasePiglinMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isImmuneToZombification() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setImmuneToZombification(boolean value) { - getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java index d626640eb..d2004436f 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/BlazeMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class BlazeMeta extends MonsterMeta { @@ -9,8 +10,8 @@ public class BlazeMeta extends MonsterMeta { private final static byte ON_FIRE_BIT = 0x01; - public BlazeMeta(@NotNull Entity entity) { - super(entity); + public BlazeMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isOnFire() { diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/CaveSpiderMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/CaveSpiderMeta.java index a22c9e012..f62677c72 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/CaveSpiderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/CaveSpiderMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class CaveSpiderMeta extends SpiderMeta { - public CaveSpiderMeta(@NotNull Entity entity) { - super(entity); + public CaveSpiderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java index c615f0010..582416405 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/CreeperMeta.java @@ -6,34 +6,34 @@ import org.jetbrains.annotations.NotNull; public class CreeperMeta extends MonsterMeta { - public CreeperMeta(@NotNull Entity entity) { - super(entity); + public CreeperMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public State getState() { - int id = getMetadata().getIndex((byte) 15, -1); + int id = super.metadata.getIndex((byte) 15, -1); return id == -1 ? State.IDLE : State.FUSE; } public void setState(@NotNull State value) { - getMetadata().setIndex((byte) 15, Metadata.VarInt(value == State.IDLE ? -1 : 1)); + super.metadata.setIndex((byte) 15, Metadata.VarInt(value == State.IDLE ? -1 : 1)); } public boolean isCharged() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setCharged(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } public boolean isIgnited() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setIgnited(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } public enum State { diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java index de7be5c13..d08ebc32c 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/ElderGuardianMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class ElderGuardianMeta extends GuardianMeta { - public ElderGuardianMeta(@NotNull Entity entity) { - super(entity); + public ElderGuardianMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java index 161b197c5..9856f38ec 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/EndermanMeta.java @@ -7,32 +7,32 @@ import org.jetbrains.annotations.Nullable; public class EndermanMeta extends MonsterMeta { - public EndermanMeta(@NotNull Entity entity) { - super(entity); + public EndermanMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public Integer getCarriedBlockID() { - return getMetadata().getIndex((byte) 15, null); + return super.metadata.getIndex((byte) 15, null); } public void setCarriedBlockID(@Nullable Integer value) { - getMetadata().setIndex((byte) 15, Metadata.OptBlockID(value)); + super.metadata.setIndex((byte) 15, Metadata.OptBlockID(value)); } public boolean isScreaming() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setScreaming(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } public boolean isStaring() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setStaring(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java index 9669664ac..33850f32b 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/EndermiteMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class EndermiteMeta extends MonsterMeta { - public EndermiteMeta(@NotNull Entity entity) { - super(entity); + public EndermiteMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java index 2987ddfc2..543a24e64 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/GiantMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class GiantMeta extends MonsterMeta { - public GiantMeta(@NotNull Entity entity) { - super(entity); + public GiantMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java index 16bcfb73d..410e0f617 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/GuardianMeta.java @@ -8,16 +8,16 @@ public class GuardianMeta extends MonsterMeta { private Entity target; - public GuardianMeta(@NotNull Entity entity) { - super(entity); + public GuardianMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isRetractingSpikes() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setRetractingSpikes(boolean retractingSpikes) { - getMetadata().setIndex((byte) 15, Metadata.Boolean(retractingSpikes)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(retractingSpikes)); } public Entity getTarget() { @@ -26,7 +26,7 @@ public class GuardianMeta extends MonsterMeta { public void setTarget(@NotNull Entity target) { this.target = target; - getMetadata().setIndex((byte) 16, Metadata.VarInt(target.getEntityId())); + super.metadata.setIndex((byte) 16, Metadata.VarInt(target.getEntityId())); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java index 54a3d539e..373ce713e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/MonsterMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.PathfinderMobMeta; import org.jetbrains.annotations.NotNull; public class MonsterMeta extends PathfinderMobMeta { - protected MonsterMeta(@NotNull Entity entity) { - super(entity); + protected MonsterMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java index 5f43cede3..ad3bb28d2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinBruteMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class PiglinBruteMeta extends BasePiglinMeta { - public PiglinBruteMeta(@NotNull Entity entity) { - super(entity); + public PiglinBruteMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java index ae56a49b0..609b77690 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/PiglinMeta.java @@ -7,12 +7,12 @@ import org.jetbrains.annotations.NotNull; public class PiglinMeta extends BasePiglinMeta { - public PiglinMeta(@NotNull Entity entity) { - super(entity); + public PiglinMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isBaby() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setBaby(boolean value) { @@ -25,23 +25,23 @@ public class PiglinMeta extends BasePiglinMeta { } else { setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); } - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } public boolean isChargingCrossbow() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setChargingCrossbow(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } public boolean isDancing() { - return getMetadata().getIndex((byte) 18, false); + return super.metadata.getIndex((byte) 18, false); } public void setDancing(boolean value) { - getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java index 34d33633d..fc9b06439 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/SilverfishMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SilverfishMeta extends MonsterMeta { - public SilverfishMeta(@NotNull Entity entity) { - super(entity); + public SilverfishMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java index 6c4ef423d..c2183216a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/SpiderMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SpiderMeta extends MonsterMeta { @@ -9,8 +10,8 @@ public class SpiderMeta extends MonsterMeta { private final static byte CLIMBING_BIT = 0x01; - public SpiderMeta(@NotNull Entity entity) { - super(entity); + public SpiderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isClimbing() { diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java index 85d7d12ed..7891fa5a6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/VexMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.entity.metadata.monster; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class VexMeta extends MonsterMeta { @@ -9,8 +10,8 @@ public class VexMeta extends MonsterMeta { private final static byte ATTACKING_BIT = 0x01; - public VexMeta(@NotNull Entity entity) { - super(entity); + public VexMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isAttacking() { diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java index 82c5c4be5..959df41c4 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/WitherMeta.java @@ -11,8 +11,8 @@ public class WitherMeta extends MonsterMeta { private Entity leftHead; private Entity rightHead; - public WitherMeta(@NotNull Entity entity) { - super(entity); + public WitherMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @Nullable @@ -22,7 +22,7 @@ public class WitherMeta extends MonsterMeta { public void setCenterHead(@Nullable Entity value) { this.centerHead = value; - getMetadata().setIndex((byte) 15, Metadata.VarInt(value == null ? 0 : value.getEntityId())); + super.metadata.setIndex((byte) 15, Metadata.VarInt(value == null ? 0 : value.getEntityId())); } @Nullable @@ -32,7 +32,7 @@ public class WitherMeta extends MonsterMeta { public void setLeftHead(@Nullable Entity value) { this.leftHead = value; - getMetadata().setIndex((byte) 16, Metadata.VarInt(value == null ? 0 : value.getEntityId())); + super.metadata.setIndex((byte) 16, Metadata.VarInt(value == null ? 0 : value.getEntityId())); } @Nullable @@ -42,15 +42,15 @@ public class WitherMeta extends MonsterMeta { public void setRightHead(@Nullable Entity value) { this.rightHead = value; - getMetadata().setIndex((byte) 17, Metadata.VarInt(value == null ? 0 : value.getEntityId())); + super.metadata.setIndex((byte) 17, Metadata.VarInt(value == null ? 0 : value.getEntityId())); } public int getInvulnerableTime() { - return getMetadata().getIndex((byte) 18, 0); + return super.metadata.getIndex((byte) 18, 0); } public void setInvulnerableTime(int value) { - getMetadata().setIndex((byte) 18, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 18, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java index 19582f838..212f60fde 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/ZoglinMeta.java @@ -7,12 +7,12 @@ import org.jetbrains.annotations.NotNull; public class ZoglinMeta extends MonsterMeta { - public ZoglinMeta(@NotNull Entity entity) { - super(entity); + public ZoglinMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isBaby() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setBaby(boolean value) { @@ -25,7 +25,7 @@ public class ZoglinMeta extends MonsterMeta { } else { setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); } - getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java index 0fc9afbab..3f137d6d7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/AbstractIllagerMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class AbstractIllagerMeta extends RaiderMeta { - protected AbstractIllagerMeta(@NotNull Entity entity) { - super(entity); + protected AbstractIllagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java index d78c5600c..158dd4fe7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/EvokerMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class EvokerMeta extends SpellcasterIllagerMeta { - public EvokerMeta(@NotNull Entity entity) { - super(entity); + public EvokerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java index acb8a95e6..2e68e9882 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/IllusionerMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class IllusionerMeta extends SpellcasterIllagerMeta { - public IllusionerMeta(@NotNull Entity entity) { - super(entity); + public IllusionerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java index 1b895834b..ba9c5531f 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/PillagerMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class PillagerMeta extends AbstractIllagerMeta { - public PillagerMeta(@NotNull Entity entity) { - super(entity); + public PillagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java index 7d9bb30d3..6a0428af7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RaiderMeta.java @@ -7,16 +7,16 @@ import org.jetbrains.annotations.NotNull; public class RaiderMeta extends MonsterMeta { - protected RaiderMeta(@NotNull Entity entity) { - super(entity); + protected RaiderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isCelebrating() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setCelebrating(boolean value) { - getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java index 73f7c1ca8..cd7c08516 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/RavagerMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class RavagerMeta extends RaiderMeta { - public RavagerMeta(@NotNull Entity entity) { - super(entity); + public RavagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java index e2dd97377..0fe9a1f68 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/SpellcasterIllagerMeta.java @@ -6,17 +6,17 @@ import org.jetbrains.annotations.NotNull; public class SpellcasterIllagerMeta extends AbstractIllagerMeta { - protected SpellcasterIllagerMeta(@NotNull Entity entity) { - super(entity); + protected SpellcasterIllagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Spell getSpell() { - return Spell.VALUES[getMetadata().getIndex((byte) 16, (byte) 0)]; + return Spell.VALUES[super.metadata.getIndex((byte) 16, (byte) 0)]; } public void setSpell(@NotNull Spell spell) { - getMetadata().setIndex((byte) 16, Metadata.Byte((byte) spell.ordinal())); + super.metadata.setIndex((byte) 16, Metadata.Byte((byte) spell.ordinal())); } public enum Spell { diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java index cc26e51e9..76d25086d 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/VindicatorMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.raider; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class VindicatorMeta extends AbstractIllagerMeta { - public VindicatorMeta(@NotNull Entity entity) { - super(entity); + public VindicatorMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java index 0a162d717..3454caff6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/raider/WitchMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class WitchMeta extends RaiderMeta { - public WitchMeta(@NotNull Entity entity) { - super(entity); + public WitchMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isDrinkingPotion() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setDrinkingPotion(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java index c4f63abb6..053f63547 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/AbstractSkeletonMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.monster.skeleton; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.monster.MonsterMeta; import org.jetbrains.annotations.NotNull; public class AbstractSkeletonMeta extends MonsterMeta { - protected AbstractSkeletonMeta(@NotNull Entity entity) { - super(entity); + protected AbstractSkeletonMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java index 75999418e..e0abb8643 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/SkeletonMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.skeleton; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SkeletonMeta extends AbstractSkeletonMeta { - public SkeletonMeta(@NotNull Entity entity) { - super(entity); + public SkeletonMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java index 2f9685896..261079ab8 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/StrayMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.skeleton; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class StrayMeta extends AbstractSkeletonMeta { - public StrayMeta(@NotNull Entity entity) { - super(entity); + public StrayMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java index f764d3947..4f9f83317 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/skeleton/WitherSkeletonMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.skeleton; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class WitherSkeletonMeta extends AbstractSkeletonMeta { - public WitherSkeletonMeta(@NotNull Entity entity) { - super(entity); + public WitherSkeletonMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java index c1acdac45..a6101e304 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/DrownedMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.zombie; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class DrownedMeta extends ZombieMeta { - public DrownedMeta(@NotNull Entity entity) { - super(entity); + public DrownedMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java index de3e98b91..4f530a8a7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/HuskMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.zombie; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class HuskMeta extends ZombieMeta { - public HuskMeta(@NotNull Entity entity) { - super(entity); + public HuskMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java index aa80f9144..218fc0449 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieMeta.java @@ -8,12 +8,12 @@ import org.jetbrains.annotations.NotNull; public class ZombieMeta extends MonsterMeta { - public ZombieMeta(@NotNull Entity entity) { - super(entity); + public ZombieMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isBaby() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setBaby(boolean value) { @@ -26,15 +26,15 @@ public class ZombieMeta extends MonsterMeta { } else { setBoundingBox(bb.getWidth() * 2, bb.getHeight() * 2); } - getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } public boolean isBecomingDrowned() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setBecomingDrowned(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java index 963eb0d89..5d5072d45 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombieVillagerMeta.java @@ -7,20 +7,20 @@ import org.jetbrains.annotations.NotNull; public class ZombieVillagerMeta extends ZombieMeta { - public ZombieVillagerMeta(@NotNull Entity entity) { - super(entity); + public ZombieVillagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isConverting() { - return getMetadata().getIndex((byte) 18, false); + return super.metadata.getIndex((byte) 18, false); } public void setConverting(boolean value) { - getMetadata().setIndex((byte) 18, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 18, Metadata.Boolean(value)); } public VillagerMeta.VillagerData getVillagerData() { - int[] data = getMetadata().getIndex((byte) 17, null); + int[] data = super.metadata.getIndex((byte) 17, null); if (data == null) { return new VillagerMeta.VillagerData(VillagerMeta.Type.PLAINS, VillagerMeta.Profession.NONE, VillagerMeta.Level.NOVICE); } @@ -28,7 +28,7 @@ public class ZombieVillagerMeta extends ZombieMeta { } public void setVillagerData(VillagerMeta.VillagerData data) { - getMetadata().setIndex((byte) 17, Metadata.VillagerData( + super.metadata.setIndex((byte) 17, Metadata.VillagerData( data.getType().ordinal(), data.getProfession().ordinal(), data.getLevel().ordinal() + 1 diff --git a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java index b408f56b7..775de78c6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/monster/zombie/ZombifiedPiglinMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.monster.zombie; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class ZombifiedPiglinMeta extends ZombieMeta { - public ZombifiedPiglinMeta(@NotNull Entity entity) { - super(entity); + public ZombifiedPiglinMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java index b1b222b41..9635201c0 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class EyeOfEnderMeta extends ObjectEntityMeta { - public EyeOfEnderMeta(@NotNull Entity entity) { - super(entity, Material.ENDER_EYE); + public EyeOfEnderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.ENDER_EYE); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java index 297ceea18..062691eb2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class FireballMeta extends ObjectEntityMeta { - public FireballMeta(@NotNull Entity entity) { - super(entity, Material.AIR); + public FireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.AIR); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java index e3e659e2f..32b43ff0a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class ItemEntityMeta extends ObjectEntityMeta { - public ItemEntityMeta(@NotNull Entity entity) { - super(entity, Material.AIR); + public ItemEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.AIR); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java index 16a46be39..e952e66a3 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java @@ -11,18 +11,18 @@ public class ObjectEntityMeta extends BaseEntityMeta { private final ItemStack defaultItem; - protected ObjectEntityMeta(@NotNull Entity entity, @NotNull Material defaultItemMaterial) { - super(entity); + protected ObjectEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata, @NotNull Material defaultItemMaterial) { + super(entity, metadata); this.defaultItem = new ItemStack(defaultItemMaterial, (byte) 1); } @NotNull public ItemStack getItem() { - return getMetadata().getIndex((byte) 7, this.defaultItem); + return super.metadata.getIndex((byte) 7, this.defaultItem); } public void setItem(@NotNull ItemStack item) { - getMetadata().setIndex((byte) 7, Metadata.Slot(item)); + super.metadata.setIndex((byte) 7, Metadata.Slot(item)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java index 442911e6d..4f95791ac 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class SmallFireballMeta extends ObjectEntityMeta { - public SmallFireballMeta(@NotNull Entity entity) { - super(entity, Material.FIRE_CHARGE); + public SmallFireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.FIRE_CHARGE); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java index de6d3c7a1..6409f3ab9 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class SnowballMeta extends ObjectEntityMeta { - public SnowballMeta(@NotNull Entity entity) { - super(entity, Material.SNOWBALL); + public SnowballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.SNOWBALL); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java index cb8b5065f..8c840f922 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class ThrownEggMeta extends ObjectEntityMeta { - public ThrownEggMeta(@NotNull Entity entity) { - super(entity, Material.EGG); + public ThrownEggMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.EGG); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java index 6e202bf4e..22de9c6f3 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class ThrownEnderPearlMeta extends ObjectEntityMeta { - public ThrownEnderPearlMeta(@NotNull Entity entity) { - super(entity, Material.ENDER_PEARL); + public ThrownEnderPearlMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.ENDER_PEARL); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java index 4be269dea..4cb5a9903 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class ThrownExperienceBottleMeta extends ObjectEntityMeta { - public ThrownExperienceBottleMeta(@NotNull Entity entity) { - super(entity, Material.EXPERIENCE_BOTTLE); + public ThrownExperienceBottleMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.EXPERIENCE_BOTTLE); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java index 455c3a588..f7779fa34 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; public class ThrownPotionMeta extends ObjectEntityMeta { - public ThrownPotionMeta(@NotNull Entity entity) { - super(entity, Material.AIR); + public ThrownPotionMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.AIR); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java index 2099f5820..f4f3b5575 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java @@ -9,40 +9,40 @@ import org.jetbrains.annotations.NotNull; public class AreaEffectCloudMeta extends BaseEntityMeta { - public AreaEffectCloudMeta(@NotNull Entity entity) { - super(entity); + public AreaEffectCloudMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public float getRadius() { - return getMetadata().getIndex((byte) 7, .5F); + return super.metadata.getIndex((byte) 7, .5F); } public void setRadius(float value) { - getMetadata().setIndex((byte) 7, Metadata.Float(value)); + super.metadata.setIndex((byte) 7, Metadata.Float(value)); } public int getColor() { - return getMetadata().getIndex((byte) 8, 0); + return super.metadata.getIndex((byte) 8, 0); } public void setColor(int value) { - getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 8, Metadata.VarInt(value)); } public boolean isSinglePoint() { - return getMetadata().getIndex((byte) 9, false); + return super.metadata.getIndex((byte) 9, false); } public void setSinglePoint(boolean value) { - getMetadata().setIndex((byte) 9, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 9, Metadata.Boolean(value)); } public Particle getParticle() { - return getMetadata().getIndex((byte) 10, new Particle(ParticleType.EFFECT, null)); + return super.metadata.getIndex((byte) 10, new Particle(ParticleType.EFFECT, null)); } public void setParticle(Particle value) { - getMetadata().setIndex((byte) 11, Metadata.Particle(value)); + super.metadata.setIndex((byte) 11, Metadata.Particle(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java index a4a7a208f..ae7d8a6b0 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ArmorStandMeta.java @@ -3,7 +3,6 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.LivingEntityMeta; -import net.minestom.server.utils.Rotation; import net.minestom.server.utils.Vector; import org.jetbrains.annotations.NotNull; @@ -16,8 +15,8 @@ public class ArmorStandMeta extends LivingEntityMeta { private final static byte HAS_NO_BASE_PLATE_BIT = 0x08; private final static byte IS_MARKER_BIT = 0x10; - public ArmorStandMeta(@NotNull Entity entity) { - super(entity); + public ArmorStandMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isSmall() { @@ -54,56 +53,56 @@ public class ArmorStandMeta extends LivingEntityMeta { @NotNull public Vector getHeadRotation() { - return getMetadata().getIndex((byte) 15, new Vector(0D, 0D, 0D)); + return super.metadata.getIndex((byte) 15, new Vector(0D, 0D, 0D)); } public void setHeadRotation(@NotNull Vector value) { - getMetadata().setIndex((byte) 15, Metadata.Rotation(value)); + super.metadata.setIndex((byte) 15, Metadata.Rotation(value)); } @NotNull public Vector getBodyRotation() { - return getMetadata().getIndex((byte) 16, new Vector(0D, 0D, 0D)); + return super.metadata.getIndex((byte) 16, new Vector(0D, 0D, 0D)); } public void setBodyRotation(@NotNull Vector value) { - getMetadata().setIndex((byte) 16, Metadata.Rotation(value)); + super.metadata.setIndex((byte) 16, Metadata.Rotation(value)); } @NotNull public Vector getLeftArmRotation() { - return getMetadata().getIndex((byte) 17, new Vector(-10D, 0D, -10D)); + return super.metadata.getIndex((byte) 17, new Vector(-10D, 0D, -10D)); } public void setLeftArmRotation(@NotNull Vector value) { - getMetadata().setIndex((byte) 17, Metadata.Rotation(value)); + super.metadata.setIndex((byte) 17, Metadata.Rotation(value)); } @NotNull public Vector getRightArmRotation() { - return getMetadata().getIndex((byte) 18, new Vector(-15D, 0D, 10D)); + return super.metadata.getIndex((byte) 18, new Vector(-15D, 0D, 10D)); } public void setRightArmRotation(@NotNull Vector value) { - getMetadata().setIndex((byte) 18, Metadata.Rotation(value)); + super.metadata.setIndex((byte) 18, Metadata.Rotation(value)); } @NotNull public Vector getLeftLegRotation() { - return getMetadata().getIndex((byte) 19, new Vector(-1D, 0D, -1D)); + return super.metadata.getIndex((byte) 19, new Vector(-1D, 0D, -1D)); } public void setLeftLegRotation(@NotNull Vector value) { - getMetadata().setIndex((byte) 19, Metadata.Rotation(value)); + super.metadata.setIndex((byte) 19, Metadata.Rotation(value)); } @NotNull public Vector getRightLegRotation() { - return getMetadata().getIndex((byte) 20, new Vector(1D, 0D, 1D)); + return super.metadata.getIndex((byte) 20, new Vector(1D, 0D, 1D)); } public void setRightLegRotation(@NotNull Vector value) { - getMetadata().setIndex((byte) 20, Metadata.Rotation(value)); + super.metadata.setIndex((byte) 20, Metadata.Rotation(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java index edb99704e..f7c10fdfa 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java @@ -7,65 +7,65 @@ import org.jetbrains.annotations.NotNull; public class BoatMeta extends BaseEntityMeta { - public BoatMeta(@NotNull Entity entity) { - super(entity); + public BoatMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getTimeSinceLastHit() { - return getMetadata().getIndex((byte) 7, 0); + return super.metadata.getIndex((byte) 7, 0); } public void setTimeSinceLastHit(int value) { - getMetadata().setIndex((byte) 7, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 7, Metadata.VarInt(value)); } public int getForwardDirection() { - return getMetadata().getIndex((byte) 8, 1); + return super.metadata.getIndex((byte) 8, 1); } public void setForwardDirection(int value) { - getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 8, Metadata.VarInt(value)); } public float getDamageTaken() { - return getMetadata().getIndex((byte) 9, 0); + return super.metadata.getIndex((byte) 9, 0); } public void setDamageTaken(float value) { - getMetadata().setIndex((byte) 9, Metadata.Float(value)); + super.metadata.setIndex((byte) 9, Metadata.Float(value)); } @NotNull public Type getType() { - return Type.VALUES[getMetadata().getIndex((byte) 10, 0)]; + return Type.VALUES[super.metadata.getIndex((byte) 10, 0)]; } public void setType(@NotNull Type value) { - getMetadata().setIndex((byte) 10, Metadata.VarInt(value.ordinal())); + super.metadata.setIndex((byte) 10, Metadata.VarInt(value.ordinal())); } public boolean isLeftPaddleTurning() { - return getMetadata().getIndex((byte) 11, false); + return super.metadata.getIndex((byte) 11, false); } public void setLeftPaddleTurning(boolean value) { - getMetadata().setIndex((byte) 11, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 11, Metadata.Boolean(value)); } public boolean isRightPaddleTurning() { - return getMetadata().getIndex((byte) 12, false); + return super.metadata.getIndex((byte) 12, false); } public void setRightPaddleTurning(boolean value) { - getMetadata().setIndex((byte) 12, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 12, Metadata.Boolean(value)); } public int getSplashTimer() { - return getMetadata().getIndex((byte) 13, 0); + return super.metadata.getIndex((byte) 13, 0); } public void setSplashTimer(int value) { - getMetadata().setIndex((byte) 13, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 13, Metadata.VarInt(value)); } public enum Type { diff --git a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java index aab16735c..9de75948f 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.BaseEntityMeta; import org.jetbrains.annotations.NotNull; public class DragonFireballMeta extends BaseEntityMeta { - public DragonFireballMeta(@NotNull Entity entity) { - super(entity); + public DragonFireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java index 5fbab3e64..262c08730 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java @@ -9,25 +9,25 @@ import org.jetbrains.annotations.Nullable; public class EndCrystalMeta extends BaseEntityMeta { - public EndCrystalMeta(@NotNull Entity entity) { - super(entity); + public EndCrystalMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @Nullable public BlockPosition getBeamTarget() { - return getMetadata().getIndex((byte) 7, null); + return super.metadata.getIndex((byte) 7, null); } public void setBeamTarget(@Nullable BlockPosition value) { - getMetadata().setIndex((byte) 7, Metadata.OptPosition(value)); + super.metadata.setIndex((byte) 7, Metadata.OptPosition(value)); } public boolean isShowingBottom() { - return getMetadata().getIndex((byte) 8, true); + return super.metadata.getIndex((byte) 8, true); } public void setShowingBottom(boolean value) { - getMetadata().setIndex((byte) 8, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 8, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java index b0953b369..fa1d6f308 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/EnderDragonMeta.java @@ -7,17 +7,17 @@ import org.jetbrains.annotations.NotNull; public class EnderDragonMeta extends MobMeta { - public EnderDragonMeta(@NotNull Entity entity) { - super(entity); + public EnderDragonMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public Phase getPhase() { - return Phase.VALUES[getMetadata().getIndex((byte) 15, 0)]; + return Phase.VALUES[super.metadata.getIndex((byte) 15, 0)]; } public void setPhase(@NotNull Phase value) { - getMetadata().getIndex((byte) 15, Metadata.VarInt(value.ordinal())); + super.metadata.getIndex((byte) 15, Metadata.VarInt(value.ordinal())); } public enum Phase { diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java index 23f5c8cb3..9c8d645ce 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.BaseEntityMeta; import org.jetbrains.annotations.NotNull; public class EvokerFangsMeta extends BaseEntityMeta { - public EvokerFangsMeta(@NotNull Entity entity) { - super(entity); + public EvokerFangsMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java index 480392e96..dc2107a15 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; public class ExperienceOrbMeta extends EntityMeta { - public ExperienceOrbMeta(@NotNull Entity entity) { - super(entity); + public ExperienceOrbMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java index 1c87f2e02..098216492 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java @@ -8,16 +8,16 @@ import org.jetbrains.annotations.NotNull; public class FallingBlockMeta extends BaseEntityMeta { - public FallingBlockMeta(@NotNull Entity entity) { - super(entity); + public FallingBlockMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public BlockPosition getSpawnPosition() { - return getMetadata().getIndex((byte) 7, new BlockPosition(0, 0, 0)); + return super.metadata.getIndex((byte) 7, new BlockPosition(0, 0, 0)); } public void setSpawnPosition(BlockPosition value) { - getMetadata().setIndex((byte) 7, Metadata.Position(value)); + super.metadata.setIndex((byte) 7, Metadata.Position(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java index 9d1d7d46c..303b0fe76 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java @@ -11,17 +11,17 @@ public class FireworkRocketMeta extends BaseEntityMeta { private Entity shooter; - public FireworkRocketMeta(@NotNull Entity entity) { - super(entity); + public FireworkRocketMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public ItemStack getFireworkInfo() { - return getMetadata().getIndex((byte) 7, ItemStack.getAirItem()); + return super.metadata.getIndex((byte) 7, ItemStack.getAirItem()); } public void setFireworkInfo(@NotNull ItemStack value) { - getMetadata().setIndex((byte) 7, Metadata.Slot(value)); + super.metadata.setIndex((byte) 7, Metadata.Slot(value)); } @Nullable @@ -32,15 +32,15 @@ public class FireworkRocketMeta extends BaseEntityMeta { public void setShooter(@Nullable Entity value) { this.shooter = value; Integer entityID = value == null ? null : value.getEntityId(); - getMetadata().setIndex((byte) 8, Metadata.OptVarInt(entityID)); + super.metadata.setIndex((byte) 8, Metadata.OptVarInt(entityID)); } public boolean isShotAtAngle() { - return getMetadata().getIndex((byte) 9, false); + return super.metadata.getIndex((byte) 9, false); } public void setShotAtAngle(boolean value) { - getMetadata().setIndex((byte) 9, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 9, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java index 4f66c5a12..d8d34d7be 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java @@ -10,8 +10,8 @@ public class FishingHookMeta extends BaseEntityMeta { private Entity hooked; - public FishingHookMeta(@NotNull Entity entity) { - super(entity); + public FishingHookMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @Nullable @@ -22,15 +22,15 @@ public class FishingHookMeta extends BaseEntityMeta { public void setHookedEntity(@Nullable Entity value) { this.hooked = value; int entityID = value == null ? 0 : value.getEntityId() + 1; - getMetadata().setIndex((byte) 7, Metadata.VarInt(entityID)); + super.metadata.setIndex((byte) 7, Metadata.VarInt(entityID)); } public boolean isCatchable() { - return getMetadata().getIndex((byte) 8, false); + return super.metadata.getIndex((byte) 8, false); } public void setCatchable(boolean value) { - getMetadata().setIndex((byte) 8, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 8, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java index 5ef5a11a7..007ae1b68 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java @@ -8,25 +8,25 @@ import org.jetbrains.annotations.NotNull; public class ItemFrameMeta extends BaseEntityMeta { - public ItemFrameMeta(@NotNull Entity entity) { - super(entity); + public ItemFrameMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public ItemStack getItem() { - return getMetadata().getIndex((byte) 7, ItemStack.getAirItem()); + return super.metadata.getIndex((byte) 7, ItemStack.getAirItem()); } public void setItem(@NotNull ItemStack value) { - getMetadata().setIndex((byte) 7, Metadata.Slot(value)); + super.metadata.setIndex((byte) 7, Metadata.Slot(value)); } public int getRotation() { - return getMetadata().getIndex((byte) 8, 0); + return super.metadata.getIndex((byte) 8, 0); } public void setRotation(int value) { - getMetadata().setIndex((byte) 8, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 8, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/LeashKnotMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/LeashKnotMeta.java index aab1c21d8..0d5c3e753 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/LeashKnotMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/LeashKnotMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; public class LeashKnotMeta extends EntityMeta { - public LeashKnotMeta(@NotNull Entity entity) { - super(entity); + public LeashKnotMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/LightningBoltMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/LightningBoltMeta.java index a5c9f8734..ab3522e30 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/LightningBoltMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/LightningBoltMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; public class LightningBoltMeta extends EntityMeta { - public LightningBoltMeta(@NotNull Entity entity) { - super(entity); + public LightningBoltMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java index e4090a308..258b5d38b 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.BaseEntityMeta; import org.jetbrains.annotations.NotNull; public class LlamaSpitMeta extends BaseEntityMeta { - public LlamaSpitMeta(@NotNull Entity entity) { - super(entity); + public LlamaSpitMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java index f22c1d1fe..e70d7c6c2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/MagmaCubeMeta.java @@ -2,13 +2,12 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.MobMeta; import org.jetbrains.annotations.NotNull; public class MagmaCubeMeta extends SlimeMeta { - public MagmaCubeMeta(@NotNull Entity entity) { - super(entity); + public MagmaCubeMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java index 8f1db38a3..d0ce2ae9d 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; public class PaintingMeta extends EntityMeta { - public PaintingMeta(@NotNull Entity entity) { - super(entity); + public PaintingMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java index c4405fa58..442851d3e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java @@ -7,16 +7,16 @@ import org.jetbrains.annotations.NotNull; public class PrimedTntMeta extends BaseEntityMeta { - public PrimedTntMeta(@NotNull Entity entity) { - super(entity); + public PrimedTntMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getFuseTime() { - return getMetadata().getIndex((byte) 7, 80); + return super.metadata.getIndex((byte) 7, 80); } public void setFuseTime(int value) { - getMetadata().setIndex((byte) 7, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 7, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java index 1b06ac21f..00f9cf38d 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.BaseEntityMeta; import org.jetbrains.annotations.NotNull; public class ShulkerBulletMeta extends BaseEntityMeta { - public ShulkerBulletMeta(@NotNull Entity entity) { - super(entity); + public ShulkerBulletMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java index 6a57e1fd5..495cdae82 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/SlimeMeta.java @@ -7,18 +7,18 @@ import org.jetbrains.annotations.NotNull; public class SlimeMeta extends MobMeta { - public SlimeMeta(@NotNull Entity entity) { - super(entity); + public SlimeMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getSize() { - return getMetadata().getIndex((byte) 15, 0); + return super.metadata.getIndex((byte) 15, 0); } public void setSize(int value) { float boxSize = 0.51000005f * value; setBoundingBox(boxSize, boxSize); - getMetadata().setIndex((byte) 15, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 15, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java index a57dcf577..78d655be2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.BaseEntityMeta; import org.jetbrains.annotations.NotNull; public class TraderLlamaMeta extends BaseEntityMeta { - public TraderLlamaMeta(@NotNull Entity entity) { - super(entity); + public TraderLlamaMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java index 933942a24..1f2b87d99 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java @@ -7,16 +7,16 @@ import org.jetbrains.annotations.NotNull; public class WitherSkullMeta extends BaseEntityMeta { - public WitherSkullMeta(@NotNull Entity entity) { - super(entity); + public WitherSkullMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isInvulnerable() { - return getMetadata().getIndex((byte) 7, false); + return super.metadata.getIndex((byte) 7, false); } public void setInvulnerable(boolean value) { - getMetadata().setIndex((byte) 7, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 7, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java index 9cd4d91b2..4244c4e75 100644 --- a/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/villager/AbstractVillagerMeta.java @@ -7,15 +7,15 @@ import org.jetbrains.annotations.NotNull; public class AbstractVillagerMeta extends AgeableMobMeta { - protected AbstractVillagerMeta(@NotNull Entity entity) { - super(entity); + protected AbstractVillagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public int getHeadShakeTimer() { - return getMetadata().getIndex((byte) 16, 0); + return super.metadata.getIndex((byte) 16, 0); } public void setHeadShakeTimer(int value) { - getMetadata().setIndex((byte) 16, Metadata.VarInt(value)); + super.metadata.setIndex((byte) 16, Metadata.VarInt(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java b/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java index 75afe2cca..724f65354 100644 --- a/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/villager/VillagerMeta.java @@ -6,13 +6,13 @@ import org.jetbrains.annotations.NotNull; public class VillagerMeta extends AbstractVillagerMeta { - public VillagerMeta(@NotNull Entity entity) { - super(entity); + public VillagerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public VillagerData getVillagerData() { - int[] data = getMetadata().getIndex((byte) 17, null); + int[] data = super.metadata.getIndex((byte) 17, null); if (data == null) { return new VillagerData(Type.PLAINS, Profession.NONE, Level.NOVICE); } @@ -20,7 +20,7 @@ public class VillagerMeta extends AbstractVillagerMeta { } public void setVillagerData(@NotNull VillagerData data) { - getMetadata().setIndex((byte) 17, Metadata.VillagerData( + super.metadata.setIndex((byte) 17, Metadata.VillagerData( data.type.ordinal(), data.profession.ordinal(), data.level.ordinal() + 1 diff --git a/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java b/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java index 6467bd643..2384b63b5 100644 --- a/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/villager/WanderingTraderMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.villager; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class WanderingTraderMeta extends VillagerMeta { - public WanderingTraderMeta(@NotNull Entity entity) { - super(entity); + public WanderingTraderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java index 4e1ddc7a7..7dc4f37e7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/DolphinMeta.java @@ -7,33 +7,33 @@ import org.jetbrains.annotations.NotNull; public class DolphinMeta extends WaterAnimalMeta { - public DolphinMeta(@NotNull Entity entity) { - super(entity); + public DolphinMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } @NotNull public BlockPosition getTreasurePosition() { - return getMetadata().getIndex((byte) 15, new BlockPosition(0, 0, 0)); + return super.metadata.getIndex((byte) 15, new BlockPosition(0, 0, 0)); } public void setTreasurePosition(@NotNull BlockPosition value) { - getMetadata().setIndex((byte) 15, Metadata.Position(value)); + super.metadata.setIndex((byte) 15, Metadata.Position(value)); } public boolean isCanFindTreasure() { - return getMetadata().getIndex((byte) 16, false); + return super.metadata.getIndex((byte) 16, false); } public void setCanFindTreasure(boolean value) { - getMetadata().setIndex((byte) 16, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 16, Metadata.Boolean(value)); } public boolean isHasFish() { - return getMetadata().getIndex((byte) 17, false); + return super.metadata.getIndex((byte) 17, false); } public void setHasFish(boolean value) { - getMetadata().setIndex((byte) 17, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 17, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java index f564f77d6..b1c24e42d 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/SquidMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.water; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SquidMeta extends WaterAnimalMeta { - public SquidMeta(@NotNull Entity entity) { - super(entity); + public SquidMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java index 905b00b84..587f0c490 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/WaterAnimalMeta.java @@ -1,13 +1,14 @@ package net.minestom.server.entity.metadata.water; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.PathfinderMobMeta; import org.jetbrains.annotations.NotNull; public class WaterAnimalMeta extends PathfinderMobMeta { - protected WaterAnimalMeta(@NotNull Entity entity) { - super(entity); + protected WaterAnimalMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java index 41c9b901c..c62455368 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/AbstractFishMeta.java @@ -7,15 +7,15 @@ import org.jetbrains.annotations.NotNull; public class AbstractFishMeta extends WaterAnimalMeta { - protected AbstractFishMeta(@NotNull Entity entity) { - super(entity); + protected AbstractFishMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public boolean isFromBucket() { - return getMetadata().getIndex((byte) 15, false); + return super.metadata.getIndex((byte) 15, false); } public void setFromBucket(boolean value) { - getMetadata().setIndex((byte) 15, Metadata.Boolean(value)); + super.metadata.setIndex((byte) 15, Metadata.Boolean(value)); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java index 0226dbb85..5add05569 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/CodMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.water.fish; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class CodMeta extends AbstractFishMeta { - public CodMeta(@NotNull Entity entity) { - super(entity); + public CodMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java index 1274f540a..d14bcbf6b 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class PufferfishMeta extends AbstractFishMeta { - public PufferfishMeta(@NotNull Entity entity) { - super(entity); + public PufferfishMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public State getState() { - return State.VALUES[getMetadata().getIndex((byte) 16, 0)]; + return State.VALUES[super.metadata.getIndex((byte) 16, 0)]; } public void setState(State state) { - getMetadata().setIndex((byte) 16, Metadata.VarInt(state.ordinal())); + super.metadata.setIndex((byte) 16, Metadata.VarInt(state.ordinal())); updateBoundingBox(state); } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java index 7c329b196..2b57af49c 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/SalmonMeta.java @@ -1,12 +1,13 @@ package net.minestom.server.entity.metadata.water.fish; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class SalmonMeta extends AbstractFishMeta { - public SalmonMeta(@NotNull Entity entity) { - super(entity); + public SalmonMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java index cdbdb6aec..99f477384 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java @@ -6,16 +6,16 @@ import org.jetbrains.annotations.NotNull; public class TropicalFishMeta extends AbstractFishMeta { - public TropicalFishMeta(@NotNull Entity entity) { - super(entity); + public TropicalFishMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata); } public Variant getVariant() { - return getVariantFromID(getMetadata().getIndex((byte) 16, 0)); + return getVariantFromID(super.metadata.getIndex((byte) 16, 0)); } public void setVariant(Variant variant) { - getMetadata().setIndex((byte) 16, Metadata.VarInt(getVariantID(variant))); + super.metadata.setIndex((byte) 16, Metadata.VarInt(getVariantID(variant))); } public static int getVariantID(Variant variant) { diff --git a/src/test/java/demo/commands/HorseCommand.java b/src/test/java/demo/commands/HorseCommand.java index 7745caba2..cc5bd7cce 100644 --- a/src/test/java/demo/commands/HorseCommand.java +++ b/src/test/java/demo/commands/HorseCommand.java @@ -66,7 +66,7 @@ public class HorseCommand extends Command { HorseMeta.Marking marking = args.get("marking"); HorseMeta.Color color = args.get("color"); var horse = new EntityCreature(EntityType.HORSE, player.getPosition()); - var meta = new HorseMeta(horse); + var meta = (HorseMeta) horse.getEntityMeta(); meta.setBaby(baby); meta.setVariant(new HorseMeta.Variant(marking, color)); horse.setInstance(player.getInstance()); diff --git a/src/test/java/demo/commands/ShootCommand.java b/src/test/java/demo/commands/ShootCommand.java index 8b242ba19..60950889b 100644 --- a/src/test/java/demo/commands/ShootCommand.java +++ b/src/test/java/demo/commands/ShootCommand.java @@ -55,7 +55,7 @@ public class ShootCommand extends Command { break; case "colored": projectile = new EntityArrow(player, pos); - var meta = new ArrowMeta((Entity) projectile); + var meta = (ArrowMeta) ((Entity) projectile).getEntityMeta(); meta.setColor(ThreadLocalRandom.current().nextInt()); break; default: From 692dcfed4ccbe17bdfd9d4bae198bd744aabf328 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 18:41:24 +0300 Subject: [PATCH 18/48] Setting default entity BoundingBox from EntityType data --- src/main/java/net/minestom/server/entity/Entity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 40c974dfa..ce7279bec 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -146,7 +146,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); - setBoundingBox(0, 0, 0); + setBoundingBox(entityType.getWidth(), entityType.getHeight(), entityType.getWidth()); setAutoViewable(true); From ebb061ae3908e2befa006c832b693d094b402f56 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 18:45:24 +0300 Subject: [PATCH 19/48] Removed LambdaMetafactoryUtils --- .../server/utils/LambdaMetafactoryUtils.java | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java diff --git a/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java b/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java deleted file mode 100644 index e6a1d396b..000000000 --- a/src/main/java/net/minestom/server/utils/LambdaMetafactoryUtils.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.minestom.server.utils; - -import java.lang.invoke.LambdaMetafactory; -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; -import java.lang.invoke.MethodType; -import java.util.function.Function; -import java.util.function.Supplier; - -@SuppressWarnings("unchecked") -public class LambdaMetafactoryUtils { - - private final static MethodHandles.Lookup LOOKUP = MethodHandles.lookup(); - - public static Supplier getEmptyConstructor(Class targetClass) - throws Throwable { - MethodHandle handle = LOOKUP.findConstructor(targetClass, MethodType.methodType(void.class)); - return (Supplier) LambdaMetafactory.metafactory( - LOOKUP, - "get", - MethodType.methodType(Supplier.class), - handle.type().generic(), - handle, - handle.type() - ).getTarget().invokeExact(); - } - - public static Function getSingleArgumentConstructor(Class targetClass, Class argumentClass) throws Throwable { - MethodHandle handle = LOOKUP.findConstructor(targetClass, MethodType.methodType(void.class, argumentClass)); - return (Function) LambdaMetafactory.metafactory( - LOOKUP, - "apply", - MethodType.methodType(Function.class), - handle.type().generic(), - handle, - handle.type() - ).getTarget().invokeExact(); - } - -} From 54e1f59b2e9259ae18aeff1850a634b45073bb9a Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 18:57:55 +0300 Subject: [PATCH 20/48] Returning null as not existing entity type, optimized EntityType#fromId --- .../java/net/minestom/server/entity/EntityType.java | 8 +++++--- .../java/net/minestom/codegen/EnumGenerator.java | 12 ++++++++++++ .../codegen/entitytypes/EntityTypeEnumGenerator.java | 10 ++++++---- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index 89176087d..c9d40cbf9 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -337,6 +337,8 @@ public enum EntityType { FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25, FishingHookMeta::new); + private static final EntityType[] VALUES = values(); + @NotNull private String namespaceID; @@ -377,9 +379,9 @@ public enum EntityType { } public static EntityType fromId(short id) { - if(id >= 0 && id < values().length) { - return values()[id]; + if(id >= 0 && id < VALUES.length) { + return VALUES[id]; } - return PIG; + return null; } } diff --git a/src/generators/java/net/minestom/codegen/EnumGenerator.java b/src/generators/java/net/minestom/codegen/EnumGenerator.java index a16ae4621..06a3b2eea 100644 --- a/src/generators/java/net/minestom/codegen/EnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/EnumGenerator.java @@ -21,6 +21,7 @@ public class EnumGenerator implements CodeGenerator { private final String enumName; private ParameterSpec[] parameters; private List methods = new LinkedList<>(); + private List fields = new LinkedList<>(); private List instances = new LinkedList<>(); private List hardcodedFields = new LinkedList<>(); private List annotations = new LinkedList<>(); @@ -50,6 +51,10 @@ public class EnumGenerator implements CodeGenerator { methods.add(new Method(true, name, signature, returnType, code, false)); } + public void addStaticField(TypeName type, String name, String value) { + fields.add(new Field(type, name, value)); + } + public void addInstance(String name, Object... parameters) { instances.add(new Instance(name, parameters)); } @@ -95,6 +100,13 @@ public class EnumGenerator implements CodeGenerator { .build()); } + for (Field field : fields) { + enumClass.addField(FieldSpec.builder(field.type, field.name) + .initializer("$L", field.value) + .addModifiers(Modifier.PRIVATE, Modifier.FINAL, Modifier.STATIC) + .build()); + } + // hard coded fields for (Field hardcoded : hardcodedFields) { enumClass.addField(FieldSpec.builder(hardcoded.type, hardcoded.name) diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java index 4104663dc..169c042e0 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java @@ -8,6 +8,7 @@ import net.minestom.codegen.ConstructorLambda; import net.minestom.codegen.EnumGenerator; import net.minestom.codegen.MinestomEnumGenerator; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.registry.Registries; @@ -24,7 +25,6 @@ import java.io.InputStreamReader; import java.net.URL; import java.util.*; import java.util.function.BiFunction; -import java.util.function.Function; /** * Generates an EntityType enum containing all data about entity types @@ -164,11 +164,13 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator code.addStatement("return this.metaConstructor") ); + generator.addStaticField(ArrayTypeName.of(ClassName.get(EntityType.class)), "VALUES", "values()"); + generator.addStaticMethod("fromId", new ParameterSpec[]{ParameterSpec.builder(TypeName.SHORT, "id").build()}, className, code -> { - code.beginControlFlow("if(id >= 0 && id < values().length)") - .addStatement("return values()[id]") + code.beginControlFlow("if(id >= 0 && id < VALUES.length)") + .addStatement("return VALUES[id]") .endControlFlow() - .addStatement("return PIG"); + .addStatement("return null"); }); } From 6e950ab17068c901eead44f4c88456170bd4ad85 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 19:18:53 +0300 Subject: [PATCH 21/48] BaseEntityMeta is now an EntityMeta --- .../net/minestom/server/entity/Entity.java | 51 +++--- .../entity/metadata/BaseEntityMeta.java | 162 ------------------ .../server/entity/metadata/EntityMeta.java | 149 ++++++++++++++++ .../entity/metadata/LivingEntityMeta.java | 2 +- .../entity/metadata/animal/FoxMeta.java | 4 +- .../metadata/arrow/AbstractArrowMeta.java | 4 +- .../entity/metadata/arrow/ArrowMeta.java | 4 +- .../minecart/AbstractMinecartMeta.java | 4 +- .../metadata/object/ObjectEntityMeta.java | 4 +- .../metadata/other/AreaEffectCloudMeta.java | 4 +- .../entity/metadata/other/BoatMeta.java | 4 +- .../metadata/other/DragonFireballMeta.java | 4 +- .../entity/metadata/other/EndCrystalMeta.java | 4 +- .../metadata/other/EvokerFangsMeta.java | 4 +- .../metadata/other/FallingBlockMeta.java | 4 +- .../metadata/other/FireworkRocketMeta.java | 4 +- .../metadata/other/FishingHookMeta.java | 4 +- .../entity/metadata/other/ItemFrameMeta.java | 13 +- .../entity/metadata/other/LlamaSpitMeta.java | 4 +- .../entity/metadata/other/PrimedTntMeta.java | 4 +- .../metadata/other/ShulkerBulletMeta.java | 4 +- .../metadata/other/TraderLlamaMeta.java | 4 +- .../metadata/other/WitherSkullMeta.java | 4 +- 23 files changed, 213 insertions(+), 236 deletions(-) delete mode 100644 src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index ce7279bec..4c19cb73f 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -27,7 +27,6 @@ import net.minestom.server.thread.ThreadProvider; import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.Position; import net.minestom.server.utils.Vector; -import net.minestom.server.utils.binary.BitmaskUtil; import net.minestom.server.utils.callback.OptionalCallback; import net.minestom.server.utils.chunk.ChunkCallback; import net.minestom.server.utils.chunk.ChunkUtils; @@ -990,7 +989,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the entity is in fire, false otherwise */ public boolean isOnFire() { - return (getStateMeta() & 0x01) != 0; + return this.entityMeta.isOnFire(); } /** @@ -1002,8 +1001,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param fire should the entity be set in fire */ public void setOnFire(boolean fire) { - final byte state = BitmaskUtil.changeBit(getStateMeta(), (byte) 0x01, (byte) (fire ? 1 : 0), (byte) 0); - this.metadata.setIndex((byte) 0, Metadata.Byte(state)); + this.entityMeta.setOnFire(fire); } /** @@ -1014,7 +1012,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the player is sneaking */ public boolean isSneaking() { - return (getStateMeta() & 0x02) != 0; + return this.entityMeta.isSneaking(); } /** @@ -1026,9 +1024,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P */ public void setSneaking(boolean sneaking) { setPose(sneaking ? Pose.SNEAKING : Pose.STANDING); - // update the crouched metadata - final byte state = BitmaskUtil.changeBit(getStateMeta(), (byte) 0x02, (byte) (sneaking ? 1 : 0), (byte) 1); - this.metadata.setIndex((byte) 0, Metadata.Byte(state)); + this.entityMeta.setSneaking(sneaking); } /** @@ -1039,7 +1035,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the player is sprinting */ public boolean isSprinting() { - return (getStateMeta() & 0x08) != 0; + return this.entityMeta.isSprinting(); } /** @@ -1050,8 +1046,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param sprinting true to make the entity sprint */ public void setSprinting(boolean sprinting) { - final byte state = BitmaskUtil.changeBit(getStateMeta(), (byte) 0x08, (byte) (sprinting ? 1 : 0), (byte) 3); - this.metadata.setIndex((byte) 0, Metadata.Byte(state)); + this.entityMeta.setSprinting(sprinting); } /** @@ -1060,7 +1055,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the entity is invisible, false otherwise */ public boolean isInvisible() { - return (getStateMeta() & 0x20) != 0; + return this.entityMeta.isInvisible(); } /** @@ -1070,8 +1065,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param invisible true to set the entity invisible, false otherwise */ public void setInvisible(boolean invisible) { - final byte state = BitmaskUtil.changeBit(getStateMeta(), (byte) 0x20, (byte) (invisible ? 1 : 0), (byte) 5); - this.metadata.setIndex((byte) 0, Metadata.Byte(state)); + this.entityMeta.setInvisible(invisible); } /** @@ -1080,7 +1074,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the entity is glowing, false otherwise */ public boolean isGlowing() { - return (getStateMeta() & 0x40) != 0; + return this.entityMeta.isHasGlowingEffect(); } /** @@ -1089,8 +1083,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param glowing true to make the entity glows, false otherwise */ public void setGlowing(boolean glowing) { - final byte state = BitmaskUtil.changeBit(getStateMeta(), (byte) 0x40, (byte) (glowing ? 1 : 0), (byte) 6); - this.metadata.setIndex((byte) 0, Metadata.Byte(state)); + this.entityMeta.setHasGlowingEffect(glowing); } /** @@ -1100,7 +1093,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P */ @NotNull public Pose getPose() { - return metadata.getIndex((byte) 6, Pose.STANDING); + return this.entityMeta.getPose(); } /** @@ -1113,7 +1106,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P */ @NotNull public void setPose(@NotNull Pose pose) { - this.metadata.setIndex((byte) 6, Metadata.Pose(pose)); + this.entityMeta.setPose(pose); } /** @@ -1123,7 +1116,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P */ @Nullable public JsonMessage getCustomName() { - return metadata.getIndex((byte) 2, null); + return this.entityMeta.getCustomName(); } /** @@ -1132,7 +1125,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param customName the custom name of the entity, null to remove it */ public void setCustomName(@Nullable JsonMessage customName) { - this.metadata.setIndex((byte) 2, Metadata.OptChat(customName)); + this.entityMeta.setCustomName(customName); } /** @@ -1141,7 +1134,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the custom name is visible, false otherwise */ public boolean isCustomNameVisible() { - return metadata.getIndex((byte) 3, false); + return this.entityMeta.isCustomNameVisible(); } /** @@ -1151,15 +1144,15 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param customNameVisible true to make the custom name visible, false otherwise */ public void setCustomNameVisible(boolean customNameVisible) { - this.metadata.setIndex((byte) 3, Metadata.Boolean(customNameVisible)); + this.entityMeta.setCustomNameVisible(customNameVisible); } public boolean isSilent() { - return metadata.getIndex((byte) 4, false); + return this.entityMeta.isSilent(); } public void setSilent(boolean silent) { - this.metadata.setIndex((byte) 4, Metadata.Boolean(silent)); + this.entityMeta.setSilent(silent); } /** @@ -1168,7 +1161,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @return true if the entity ignore gravity, false otherwise */ public boolean hasNoGravity() { - return metadata.getIndex((byte) 5, false); + return this.entityMeta.isHasNoGravity(); } /** @@ -1177,7 +1170,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * @param noGravity should the entity ignore gravity */ public void setNoGravity(boolean noGravity) { - this.metadata.setIndex((byte) 5, Metadata.Boolean(noGravity)); + this.entityMeta.setHasNoGravity(noGravity); } /** @@ -1407,10 +1400,6 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P return metaDataPacket; } - private byte getStateMeta() { - return metadata.getIndex((byte) 0, (byte) 0); - } - protected void sendSynchronization() { EntityTeleportPacket entityTeleportPacket = new EntityTeleportPacket(); entityTeleportPacket.entityId = getEntityId(); diff --git a/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java deleted file mode 100644 index 0f8466de6..000000000 --- a/src/main/java/net/minestom/server/entity/metadata/BaseEntityMeta.java +++ /dev/null @@ -1,162 +0,0 @@ -package net.minestom.server.entity.metadata; - -import net.minestom.server.chat.JsonMessage; -import net.minestom.server.entity.Entity; -import net.minestom.server.entity.Metadata; -import org.jetbrains.annotations.NotNull; - -public class BaseEntityMeta extends EntityMeta { - - private final static byte MASK_INDEX = 0; - - private final static byte ON_FIRE_BIT = 0x01; - private final static byte CROUNCHING_BIT = 0x02; - private final static byte SPRINTING_BIT = 0x08; - private final static byte SWIMMING_BIT = 0x10; - private final static byte INVISIBLE_BIT = 0x20; - private final static byte HAS_GLOWING_EFFECT_BIT = 0x40; - private final static byte FLYING_WITH_ELYTRA_BIT = (byte) 0x80; - - protected BaseEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { - super(entity, metadata); - } - - public boolean isOnFire() { - return getMaskBit(MASK_INDEX, ON_FIRE_BIT); - } - - public void setOnFire(boolean value) { - setMaskBit(MASK_INDEX, ON_FIRE_BIT, value); - } - - public boolean isCrounching() { - return getMaskBit(MASK_INDEX, CROUNCHING_BIT); - } - - public void setCrounching(boolean value) { - setMaskBit(MASK_INDEX, CROUNCHING_BIT, value); - } - - public boolean isSprinting() { - return getMaskBit(MASK_INDEX, SPRINTING_BIT); - } - - public void setSprinting(boolean value) { - setMaskBit(MASK_INDEX, SPRINTING_BIT, value); - } - - public boolean isSwimming() { - return getMaskBit(MASK_INDEX, SWIMMING_BIT); - } - - public void setSwimming(boolean value) { - setMaskBit(MASK_INDEX, SWIMMING_BIT, value); - } - - public boolean isInvisible() { - return getMaskBit(MASK_INDEX, INVISIBLE_BIT); - } - - public void setInvisible(boolean value) { - setMaskBit(MASK_INDEX, INVISIBLE_BIT, value); - } - - public boolean isHasGlowingEffect() { - return getMaskBit(MASK_INDEX, HAS_GLOWING_EFFECT_BIT); - } - - public void setHasGlowingEffect(boolean value) { - setMaskBit(MASK_INDEX, HAS_GLOWING_EFFECT_BIT, value); - } - - public boolean isFlyingWithElytra() { - return getMaskBit(MASK_INDEX, FLYING_WITH_ELYTRA_BIT); - } - - public void setFlyingWithElytra(boolean value) { - setMaskBit(MASK_INDEX, FLYING_WITH_ELYTRA_BIT, value); - } - - public int getAirTicks() { - return super.metadata.getIndex((byte) 1, 300); - } - - public void setAirTicks(int value) { - super.metadata.setIndex((byte) 1, Metadata.VarInt(value)); - } - - public JsonMessage getCustomName() { - return super.metadata.getIndex((byte) 2, null); - } - - public void setCustomName(JsonMessage value) { - super.metadata.setIndex((byte) 2, Metadata.OptChat(value)); - } - - public boolean isCustomNameVisible() { - return super.metadata.getIndex((byte) 3, false); - } - - public void setCustomNameVisible(boolean value) { - super.metadata.setIndex((byte) 3, Metadata.Boolean(value)); - } - - public boolean isSilent() { - return super.metadata.getIndex((byte) 4, false); - } - - public void setSilent(boolean value) { - super.metadata.setIndex((byte) 4, Metadata.Boolean(value)); - } - - public boolean isHasNoGravity() { - return super.metadata.getIndex((byte) 5, false); - } - - public void setHasNoGravity(boolean value) { - super.metadata.setIndex((byte) 5, Metadata.Boolean(value)); - } - - public Entity.Pose getPose() { - return super.metadata.getIndex((byte) 6, Entity.Pose.STANDING); - } - - public void setPose(Entity.Pose value) { - super.metadata.setIndex((byte) 6, Metadata.Pose(value)); - } - - protected byte getMask(byte index) { - return super.metadata.getIndex(index, (byte) 0); - } - - protected void setMask(byte index, byte mask) { - super.metadata.setIndex(index, Metadata.Byte(mask)); - } - - protected boolean getMaskBit(byte index, byte bit) { - return (getMask(index) & bit) == bit; - } - - protected void setMaskBit(byte index, byte bit, boolean value) { - byte mask = getMask(index); - boolean currentValue = (mask & bit) == bit; - if (currentValue == value) { - return; - } - if (value) { - mask |= bit; - } else { - mask &= ~bit; - } - setMask(index, mask); - } - - protected void setBoundingBox(double x, double y, double z) { - this.entity.setBoundingBox(x, y, z); - } - - protected void setBoundingBox(double width, double height) { - setBoundingBox(width, height, width); - } - -} diff --git a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java index 51373b967..5d29beb9e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java @@ -1,11 +1,22 @@ package net.minestom.server.entity.metadata; +import net.minestom.server.chat.JsonMessage; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; public class EntityMeta { + private final static byte MASK_INDEX = 0; + + private final static byte ON_FIRE_BIT = 0x01; + private final static byte CROUNCHING_BIT = 0x02; + private final static byte SPRINTING_BIT = 0x08; + private final static byte SWIMMING_BIT = 0x10; + private final static byte INVISIBLE_BIT = 0x20; + private final static byte HAS_GLOWING_EFFECT_BIT = 0x40; + private final static byte FLYING_WITH_ELYTRA_BIT = (byte) 0x80; + protected final Entity entity; protected final Metadata metadata; @@ -14,4 +25,142 @@ public class EntityMeta { this.metadata = metadata; } + public boolean isOnFire() { + return getMaskBit(MASK_INDEX, ON_FIRE_BIT); + } + + public void setOnFire(boolean value) { + setMaskBit(MASK_INDEX, ON_FIRE_BIT, value); + } + + public boolean isSneaking() { + return getMaskBit(MASK_INDEX, CROUNCHING_BIT); + } + + public void setSneaking(boolean value) { + setMaskBit(MASK_INDEX, CROUNCHING_BIT, value); + } + + public boolean isSprinting() { + return getMaskBit(MASK_INDEX, SPRINTING_BIT); + } + + public void setSprinting(boolean value) { + setMaskBit(MASK_INDEX, SPRINTING_BIT, value); + } + + public boolean isSwimming() { + return getMaskBit(MASK_INDEX, SWIMMING_BIT); + } + + public void setSwimming(boolean value) { + setMaskBit(MASK_INDEX, SWIMMING_BIT, value); + } + + public boolean isInvisible() { + return getMaskBit(MASK_INDEX, INVISIBLE_BIT); + } + + public void setInvisible(boolean value) { + setMaskBit(MASK_INDEX, INVISIBLE_BIT, value); + } + + public boolean isHasGlowingEffect() { + return getMaskBit(MASK_INDEX, HAS_GLOWING_EFFECT_BIT); + } + + public void setHasGlowingEffect(boolean value) { + setMaskBit(MASK_INDEX, HAS_GLOWING_EFFECT_BIT, value); + } + + public boolean isFlyingWithElytra() { + return getMaskBit(MASK_INDEX, FLYING_WITH_ELYTRA_BIT); + } + + public void setFlyingWithElytra(boolean value) { + setMaskBit(MASK_INDEX, FLYING_WITH_ELYTRA_BIT, value); + } + + public int getAirTicks() { + return this.metadata.getIndex((byte) 1, 300); + } + + public void setAirTicks(int value) { + this.metadata.setIndex((byte) 1, Metadata.VarInt(value)); + } + + public JsonMessage getCustomName() { + return this.metadata.getIndex((byte) 2, null); + } + + public void setCustomName(JsonMessage value) { + this.metadata.setIndex((byte) 2, Metadata.OptChat(value)); + } + + public boolean isCustomNameVisible() { + return this.metadata.getIndex((byte) 3, false); + } + + public void setCustomNameVisible(boolean value) { + this.metadata.setIndex((byte) 3, Metadata.Boolean(value)); + } + + public boolean isSilent() { + return this.metadata.getIndex((byte) 4, false); + } + + public void setSilent(boolean value) { + this.metadata.setIndex((byte) 4, Metadata.Boolean(value)); + } + + public boolean isHasNoGravity() { + return this.metadata.getIndex((byte) 5, false); + } + + public void setHasNoGravity(boolean value) { + this.metadata.setIndex((byte) 5, Metadata.Boolean(value)); + } + + public Entity.Pose getPose() { + return this.metadata.getIndex((byte) 6, Entity.Pose.STANDING); + } + + public void setPose(Entity.Pose value) { + this.metadata.setIndex((byte) 6, Metadata.Pose(value)); + } + + protected byte getMask(byte index) { + return this.metadata.getIndex(index, (byte) 0); + } + + protected void setMask(byte index, byte mask) { + this.metadata.setIndex(index, Metadata.Byte(mask)); + } + + protected boolean getMaskBit(byte index, byte bit) { + return (getMask(index) & bit) == bit; + } + + protected void setMaskBit(byte index, byte bit, boolean value) { + byte mask = getMask(index); + boolean currentValue = (mask & bit) == bit; + if (currentValue == value) { + return; + } + if (value) { + mask |= bit; + } else { + mask &= ~bit; + } + setMask(index, mask); + } + + protected void setBoundingBox(double x, double y, double z) { + this.entity.setBoundingBox(x, y, z); + } + + protected void setBoundingBox(double width, double height) { + setBoundingBox(width, height, width); + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java index 6f4befe32..f7aa609a6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java @@ -7,7 +7,7 @@ import net.minestom.server.utils.BlockPosition; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class LivingEntityMeta extends BaseEntityMeta { +public class LivingEntityMeta extends EntityMeta { private final static byte MASK_INDEX = 7; diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java index 6701e6651..cc45e76e4 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/FoxMeta.java @@ -40,11 +40,11 @@ public class FoxMeta extends AnimalMeta { setMaskBit(MASK_INDEX, SITTING_BIT, value); } - public boolean isCrounching() { + public boolean isFoxSneaking() { return getMaskBit(MASK_INDEX, CROUCHING_BIT); } - public void setCrounching(boolean value) { + public void setFoxSneaking(boolean value) { setMaskBit(MASK_INDEX, CROUCHING_BIT, value); } diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java index 449905f4a..d3332ddaa 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/AbstractArrowMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.arrow; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class AbstractArrowMeta extends BaseEntityMeta { +public class AbstractArrowMeta extends EntityMeta { private final static byte MASK_INDEX = 7; diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java index 0f2f23252..3c325d0a6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.arrow; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class ArrowMeta extends BaseEntityMeta { +public class ArrowMeta extends EntityMeta { public ArrowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java index a3c6927ce..07e0cc01a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class AbstractMinecartMeta extends BaseEntityMeta { +public class AbstractMinecartMeta extends EntityMeta { protected AbstractMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java index e952e66a3..9f1347d10 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java @@ -2,12 +2,12 @@ package net.minestom.server.entity.metadata.object; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class ObjectEntityMeta extends BaseEntityMeta { +public class ObjectEntityMeta extends EntityMeta { private final ItemStack defaultItem; diff --git a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java index f4f3b5575..922efe0c0 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java @@ -2,12 +2,12 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.particle.Particle; import net.minestom.server.particle.ParticleType; import org.jetbrains.annotations.NotNull; -public class AreaEffectCloudMeta extends BaseEntityMeta { +public class AreaEffectCloudMeta extends EntityMeta { public AreaEffectCloudMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java index f7c10fdfa..6a3b5a8f3 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/BoatMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class BoatMeta extends BaseEntityMeta { +public class BoatMeta extends EntityMeta { public BoatMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java index 9de75948f..8277d8655 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class DragonFireballMeta extends BaseEntityMeta { +public class DragonFireballMeta extends EntityMeta { public DragonFireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java index 262c08730..df111b35e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/EndCrystalMeta.java @@ -2,12 +2,12 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.utils.BlockPosition; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class EndCrystalMeta extends BaseEntityMeta { +public class EndCrystalMeta extends EntityMeta { public EndCrystalMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java index 9c8d645ce..ab57d071d 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/EvokerFangsMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class EvokerFangsMeta extends BaseEntityMeta { +public class EvokerFangsMeta extends EntityMeta { public EvokerFangsMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java index 098216492..0fb872d91 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java @@ -2,11 +2,11 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.utils.BlockPosition; import org.jetbrains.annotations.NotNull; -public class FallingBlockMeta extends BaseEntityMeta { +public class FallingBlockMeta extends EntityMeta { public FallingBlockMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java index 303b0fe76..4dd141292 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FireworkRocketMeta.java @@ -2,12 +2,12 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class FireworkRocketMeta extends BaseEntityMeta { +public class FireworkRocketMeta extends EntityMeta { private Entity shooter; diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java index d8d34d7be..7f824143b 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FishingHookMeta.java @@ -2,11 +2,11 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class FishingHookMeta extends BaseEntityMeta { +public class FishingHookMeta extends EntityMeta { private Entity hooked; diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java index 007ae1b68..292c205aa 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java @@ -2,11 +2,12 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.item.ItemStack; +import net.minestom.server.utils.Rotation; import org.jetbrains.annotations.NotNull; -public class ItemFrameMeta extends BaseEntityMeta { +public class ItemFrameMeta extends EntityMeta { public ItemFrameMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); @@ -21,12 +22,12 @@ public class ItemFrameMeta extends BaseEntityMeta { super.metadata.setIndex((byte) 7, Metadata.Slot(value)); } - public int getRotation() { - return super.metadata.getIndex((byte) 8, 0); + public Rotation getRotation() { + return Rotation.values()[super.metadata.getIndex((byte) 8, 0)]; } - public void setRotation(int value) { - super.metadata.setIndex((byte) 8, Metadata.VarInt(value)); + public void setRotation(Rotation value) { + super.metadata.setIndex((byte) 8, Metadata.VarInt(value.ordinal())); } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java index 258b5d38b..b80cecb21 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class LlamaSpitMeta extends BaseEntityMeta { +public class LlamaSpitMeta extends EntityMeta { public LlamaSpitMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java index 442851d3e..944eec2eb 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/PrimedTntMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class PrimedTntMeta extends BaseEntityMeta { +public class PrimedTntMeta extends EntityMeta { public PrimedTntMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java index 00f9cf38d..fcb98f172 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class ShulkerBulletMeta extends BaseEntityMeta { +public class ShulkerBulletMeta extends EntityMeta { public ShulkerBulletMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java index 78d655be2..e4734298a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/TraderLlamaMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class TraderLlamaMeta extends BaseEntityMeta { +public class TraderLlamaMeta extends EntityMeta { public TraderLlamaMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java index 1f2b87d99..fca4a3254 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java @@ -2,10 +2,10 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.BaseEntityMeta; +import net.minestom.server.entity.metadata.EntityMeta; import org.jetbrains.annotations.NotNull; -public class WitherSkullMeta extends BaseEntityMeta { +public class WitherSkullMeta extends EntityMeta { public WitherSkullMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); From c9f7ee55464c77916fb458f1b162153e6d508469 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 19:29:21 +0300 Subject: [PATCH 22/48] Renamed ParticleType back to Particle --- .../{ParticleType.java => Particle.java} | 8 +++--- .../minestom/server/registry/Registries.java | 26 +++++++++---------- .../net/minestom/codegen/AllGenerators.java | 4 +-- .../minestom/codegen/RegistriesGenerator.java | 19 +++++++------- ...erator.java => ParticleEnumGenerator.java} | 11 ++++---- .../net/minestom/server/MinecraftServer.java | 4 +-- .../server/command/builder/Arguments.java | 6 ++--- .../minecraft/registry/ArgumentParticle.java | 10 +++---- .../net/minestom/server/entity/Metadata.java | 4 +-- .../metadata/other/AreaEffectCloudMeta.java | 8 +++--- .../type/other/EntityAreaEffectCloud.java | 10 +++---- .../server/particle/ParticleCreator.java | 4 +-- .../{Particle.java => ParticleWrapper.java} | 15 +++++++---- 13 files changed, 67 insertions(+), 62 deletions(-) rename src/autogenerated/java/net/minestom/server/particle/{ParticleType.java => Particle.java} (95%) rename src/generators/java/net/minestom/codegen/particles/{ParticleTypeEnumGenerator.java => ParticleEnumGenerator.java} (82%) rename src/main/java/net/minestom/server/particle/{Particle.java => ParticleWrapper.java} (62%) diff --git a/src/autogenerated/java/net/minestom/server/particle/ParticleType.java b/src/autogenerated/java/net/minestom/server/particle/Particle.java similarity index 95% rename from src/autogenerated/java/net/minestom/server/particle/ParticleType.java rename to src/autogenerated/java/net/minestom/server/particle/Particle.java index 0cce18962..4e5e15805 100644 --- a/src/autogenerated/java/net/minestom/server/particle/ParticleType.java +++ b/src/autogenerated/java/net/minestom/server/particle/Particle.java @@ -9,7 +9,7 @@ import net.minestom.server.utils.NamespaceID; * //============================== */ @SuppressWarnings({"deprecation"}) -public enum ParticleType { +public enum Particle { AMBIENT_ENTITY_EFFECT("minecraft:ambient_entity_effect"), ANGRY_VILLAGER("minecraft:angry_villager"), @@ -156,9 +156,9 @@ public enum ParticleType { private String namespaceID; - ParticleType(String namespaceID) { + Particle(String namespaceID) { this.namespaceID = namespaceID; - Registries.particleTypes.put(NamespaceID.from(namespaceID), this); + Registries.particles.put(NamespaceID.from(namespaceID), this); } public int getId() { @@ -169,7 +169,7 @@ public enum ParticleType { return namespaceID; } - public static ParticleType fromId(int id) { + public static Particle fromId(int id) { if (id >= 0 && id < values().length) { return values()[id]; } diff --git a/src/autogenerated/java/net/minestom/server/registry/Registries.java b/src/autogenerated/java/net/minestom/server/registry/Registries.java index 34b965150..b4ab492cd 100644 --- a/src/autogenerated/java/net/minestom/server/registry/Registries.java +++ b/src/autogenerated/java/net/minestom/server/registry/Registries.java @@ -7,7 +7,7 @@ import net.minestom.server.fluids.Fluid; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.Material; -import net.minestom.server.particle.ParticleType; +import net.minestom.server.particle.Particle; import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionType; import net.minestom.server.sound.Sound; @@ -48,7 +48,7 @@ public final class Registries { * Should only be used for internal code, please use the get* methods. */ @Deprecated - public static final HashMap particleTypes = new HashMap<>(); + public static final HashMap particles = new HashMap<>(); /** * Should only be used for internal code, please use the get* methods. @@ -129,35 +129,35 @@ public final class Registries { } /** - * Returns the corresponding EntityType matching the given id. Returns 'PIG' if none match. + * Returns the corresponding EntityType matching the given id. Returns null if none match. */ - @NotNull + @Nullable public static EntityType getEntityType(String id) { return getEntityType(NamespaceID.from(id)); } /** - * Returns the corresponding EntityType matching the given id. Returns 'PIG' if none match. + * Returns the corresponding EntityType matching the given id. Returns null if none match. */ - @NotNull + @Nullable public static EntityType getEntityType(NamespaceID id) { - return entityTypes.getOrDefault(id, EntityType.PIG); + return entityTypes.get(id); } /** - * Returns the corresponding ParticleType matching the given id. Returns null if none match. + * Returns the corresponding Particle matching the given id. Returns null if none match. */ @Nullable - public static ParticleType getParticleType(String id) { - return getParticleType(NamespaceID.from(id)); + public static Particle getParticle(String id) { + return getParticle(NamespaceID.from(id)); } /** - * Returns the corresponding ParticleType matching the given id. Returns null if none match. + * Returns the corresponding Particle matching the given id. Returns null if none match. */ @Nullable - public static ParticleType getParticleType(NamespaceID id) { - return particleTypes.get(id); + public static Particle getParticle(NamespaceID id) { + return particles.get(id); } /** diff --git a/src/generators/java/net/minestom/codegen/AllGenerators.java b/src/generators/java/net/minestom/codegen/AllGenerators.java index 47b92ea6a..d63856e81 100644 --- a/src/generators/java/net/minestom/codegen/AllGenerators.java +++ b/src/generators/java/net/minestom/codegen/AllGenerators.java @@ -5,7 +5,7 @@ import net.minestom.codegen.enchantment.EnchantmentEnumGenerator; import net.minestom.codegen.entitytypes.EntityTypeEnumGenerator; import net.minestom.codegen.fluids.FluidEnumGenerator; import net.minestom.codegen.items.ItemEnumGenerator; -import net.minestom.codegen.particles.ParticleTypeEnumGenerator; +import net.minestom.codegen.particles.ParticleEnumGenerator; import net.minestom.codegen.potions.PotionEffectEnumGenerator; import net.minestom.codegen.potions.PotionEnumGenerator; import net.minestom.codegen.sounds.SoundEnumGenerator; @@ -23,7 +23,7 @@ public class AllGenerators { EnchantmentEnumGenerator.main(args); EntityTypeEnumGenerator.main(args); SoundEnumGenerator.main(args); - ParticleTypeEnumGenerator.main(args); + ParticleEnumGenerator.main(args); StatsEnumGenerator.main(args); FluidEnumGenerator.main(args); RegistriesGenerator.main(args); diff --git a/src/generators/java/net/minestom/codegen/RegistriesGenerator.java b/src/generators/java/net/minestom/codegen/RegistriesGenerator.java index db9a5cefc..fdcbba675 100644 --- a/src/generators/java/net/minestom/codegen/RegistriesGenerator.java +++ b/src/generators/java/net/minestom/codegen/RegistriesGenerator.java @@ -6,7 +6,7 @@ import net.minestom.server.fluids.Fluid; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.Material; -import net.minestom.server.particle.ParticleType; +import net.minestom.server.particle.Particle; import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionType; import net.minestom.server.registry.ResourceGatherer; @@ -20,7 +20,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.lang.model.element.Modifier; -import java.io.*; +import java.io.File; +import java.io.IOException; import java.lang.annotation.Annotation; import java.util.Collections; import java.util.HashMap; @@ -39,8 +40,8 @@ public class RegistriesGenerator implements CodeGenerator { new ImmutablePair<>(Block.class.getCanonicalName(), "AIR"), new ImmutablePair<>(Material.class.getCanonicalName(), "AIR"), new ImmutablePair<>(Enchantment.class.getCanonicalName(), null), - new ImmutablePair<>(EntityType.class.getCanonicalName(), "PIG"), - new ImmutablePair<>(ParticleType.class.getCanonicalName(), null), + new ImmutablePair<>(EntityType.class.getCanonicalName(), null), + new ImmutablePair<>(Particle.class.getCanonicalName(), null), new ImmutablePair<>(PotionType.class.getCanonicalName(), null), new ImmutablePair<>(PotionEffect.class.getCanonicalName(), null), new ImmutablePair<>(Sound.class.getCanonicalName(), null), @@ -61,7 +62,7 @@ public class RegistriesGenerator implements CodeGenerator { ClassName type = ClassName.bestGuess(registries[i].left); String simpleType = type.simpleName(); - FieldSpec field = FieldSpec.builder(ParameterizedTypeName.get(ClassName.get(HashMap.class), ClassName.get(NamespaceID.class), type), CodeGenerator.decapitalize(simpleType)+"s") + FieldSpec field = FieldSpec.builder(ParameterizedTypeName.get(ClassName.get(HashMap.class), ClassName.get(NamespaceID.class), type), CodeGenerator.decapitalize(simpleType) + "s") .addModifiers(Modifier.FINAL, Modifier.STATIC, Modifier.PUBLIC) .addJavadoc("Should only be used for internal code, please use the get* methods.") .addAnnotation(Deprecated.class) @@ -103,7 +104,7 @@ public class RegistriesGenerator implements CodeGenerator { CodeBlock.Builder code = CodeBlock.builder(); Class annotation; - if(defaultValue != null) { + if (defaultValue != null) { annotation = NotNull.class; code.addStatement("return $N.getOrDefault($N, $T.$N)", fields[i], namespaceIDParam, type, defaultValue); } else { @@ -114,7 +115,7 @@ public class RegistriesGenerator implements CodeGenerator { // string variant ParameterSpec idParam = ParameterSpec.builder(ClassName.get(String.class), "id") .build(); - MethodSpec idMethod = MethodSpec.methodBuilder("get"+simpleType) + MethodSpec idMethod = MethodSpec.methodBuilder("get" + simpleType) .returns(type) .addAnnotation(annotation) .addModifiers(Modifier.STATIC, Modifier.PUBLIC) @@ -125,7 +126,7 @@ public class RegistriesGenerator implements CodeGenerator { registriesClass.addMethod(idMethod); // NamespaceID variant - registriesClass.addMethod(MethodSpec.methodBuilder("get"+simpleType) + registriesClass.addMethod(MethodSpec.methodBuilder("get" + simpleType) .returns(type) .addAnnotation(annotation) .addModifiers(Modifier.STATIC, Modifier.PUBLIC) @@ -136,7 +137,7 @@ public class RegistriesGenerator implements CodeGenerator { } JavaFile file = JavaFile.builder("net.minestom.server.registry", registriesClass.build()) - .addFileComment("AUTOGENERATED by "+getClass().getCanonicalName()) + .addFileComment("AUTOGENERATED by " + getClass().getCanonicalName()) .indent(" ") .skipJavaLangImports(true) .build(); diff --git a/src/generators/java/net/minestom/codegen/particles/ParticleTypeEnumGenerator.java b/src/generators/java/net/minestom/codegen/particles/ParticleEnumGenerator.java similarity index 82% rename from src/generators/java/net/minestom/codegen/particles/ParticleTypeEnumGenerator.java rename to src/generators/java/net/minestom/codegen/particles/ParticleEnumGenerator.java index f146d1315..c7363e01f 100644 --- a/src/generators/java/net/minestom/codegen/particles/ParticleTypeEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/particles/ParticleEnumGenerator.java @@ -7,11 +7,10 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; -import java.util.Arrays; -public class ParticleTypeEnumGenerator extends BasicEnumGenerator { +public class ParticleEnumGenerator extends BasicEnumGenerator { - private static final Logger LOGGER = LoggerFactory.getLogger(ParticleTypeEnumGenerator.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ParticleEnumGenerator.class); public static void main(String[] args) throws IOException { String targetVersion; @@ -38,10 +37,10 @@ public class ParticleTypeEnumGenerator extends BasicEnumGenerator { targetFolder.mkdirs(); } - new ParticleTypeEnumGenerator(targetFolder); + new ParticleEnumGenerator(targetFolder); } - private ParticleTypeEnumGenerator(File targetFolder) throws IOException { + private ParticleEnumGenerator(File targetFolder) throws IOException { super(targetFolder); } @@ -57,7 +56,7 @@ public class ParticleTypeEnumGenerator extends BasicEnumGenerator { @Override public String getClassName() { - return "ParticleType"; + return "Particle"; } @Override diff --git a/src/main/java/net/minestom/server/MinecraftServer.java b/src/main/java/net/minestom/server/MinecraftServer.java index 8c45beccb..2dff72bf5 100644 --- a/src/main/java/net/minestom/server/MinecraftServer.java +++ b/src/main/java/net/minestom/server/MinecraftServer.java @@ -30,7 +30,7 @@ import net.minestom.server.network.netty.NettyServer; import net.minestom.server.network.packet.server.play.PluginMessagePacket; import net.minestom.server.network.packet.server.play.ServerDifficultyPacket; import net.minestom.server.network.packet.server.play.UpdateViewDistancePacket; -import net.minestom.server.particle.ParticleType; +import net.minestom.server.particle.Particle; import net.minestom.server.ping.ResponseDataConsumer; import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionType; @@ -159,7 +159,7 @@ public final class MinecraftServer { Enchantment.values(); EntityType.values(); Sound.values(); - ParticleType.values(); + Particle.values(); StatisticType.values(); Fluid.values(); diff --git a/src/main/java/net/minestom/server/command/builder/Arguments.java b/src/main/java/net/minestom/server/command/builder/Arguments.java index a5ca0475c..f34ecdac5 100644 --- a/src/main/java/net/minestom/server/command/builder/Arguments.java +++ b/src/main/java/net/minestom/server/command/builder/Arguments.java @@ -6,7 +6,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.ItemStack; -import net.minestom.server.particle.ParticleType; +import net.minestom.server.particle.Particle; import net.minestom.server.potion.PotionEffect; import net.minestom.server.utils.entity.EntityFinder; import net.minestom.server.utils.location.RelativeBlockPosition; @@ -156,8 +156,8 @@ public final class Arguments { */ @Deprecated @NotNull - public ParticleType getParticle(@NotNull String id) { - return (ParticleType) getObject(id); + public Particle getParticle(@NotNull String id) { + return (Particle) getObject(id); } /** diff --git a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java index 775042733..91c7e42ff 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentParticle.java @@ -2,22 +2,22 @@ package net.minestom.server.command.builder.arguments.minecraft.registry; import net.minestom.server.command.builder.NodeMaker; import net.minestom.server.network.packet.server.play.DeclareCommandsPacket; -import net.minestom.server.particle.ParticleType; +import net.minestom.server.particle.Particle; import net.minestom.server.registry.Registries; import org.jetbrains.annotations.NotNull; /** - * Represents an argument giving a {@link ParticleType}. + * Represents an argument giving a {@link Particle}. */ -public class ArgumentParticle extends ArgumentRegistry { +public class ArgumentParticle extends ArgumentRegistry { public ArgumentParticle(String id) { super(id); } @Override - public ParticleType getRegistry(@NotNull String value) { - return Registries.getParticleType(value); + public Particle getRegistry(@NotNull String value) { + return Registries.getParticle(value); } @Override diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index 57b6d0858..e34ee7055 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -3,7 +3,7 @@ package net.minestom.server.entity; import net.minestom.server.chat.JsonMessage; import net.minestom.server.item.ItemStack; import net.minestom.server.network.packet.server.play.EntityMetaDataPacket; -import net.minestom.server.particle.Particle; +import net.minestom.server.particle.ParticleWrapper; import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.Direction; import net.minestom.server.utils.Vector; @@ -132,7 +132,7 @@ public class Metadata { return new Value<>(TYPE_POSE, value, writer -> writer.writeVarInt(value.ordinal())); } - public static Value Particle(@NotNull Particle value) { + public static Value Particle(@NotNull ParticleWrapper value) { return new Value<>(TYPE_PARTICLE, value, writer -> { writer.writeVarInt(value.getType().getId()); if (value.getDataWriter() != null) { diff --git a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java index 922efe0c0..e2ce3e52a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java @@ -3,8 +3,8 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.particle.ParticleWrapper; import net.minestom.server.particle.Particle; -import net.minestom.server.particle.ParticleType; import org.jetbrains.annotations.NotNull; public class AreaEffectCloudMeta extends EntityMeta { @@ -37,11 +37,11 @@ public class AreaEffectCloudMeta extends EntityMeta { super.metadata.setIndex((byte) 9, Metadata.Boolean(value)); } - public Particle getParticle() { - return super.metadata.getIndex((byte) 10, new Particle(ParticleType.EFFECT, null)); + public ParticleWrapper getParticle() { + return super.metadata.getIndex((byte) 10, new ParticleWrapper(Particle.EFFECT, null)); } - public void setParticle(Particle value) { + public void setParticle(ParticleWrapper value) { super.metadata.setIndex((byte) 11, Metadata.Particle(value)); } diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java index afb6cdfc0..a7e6ddb5e 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java @@ -2,7 +2,7 @@ package net.minestom.server.entity.type.other; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.ObjectEntity; -import net.minestom.server.particle.ParticleType; +import net.minestom.server.particle.Particle; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; @@ -18,14 +18,14 @@ public class EntityAreaEffectCloud extends ObjectEntity { private float radius; private int color; private boolean ignoreRadius; - private ParticleType particleType; + private Particle particleType; public EntityAreaEffectCloud(Position spawnPosition) { super(EntityType.AREA_EFFECT_CLOUD, spawnPosition); setRadius(0.5f); setColor(0); setIgnoreRadius(false); - setParticle(ParticleType.EFFECT); + setParticle(Particle.EFFECT); setParticleDataConsumer(packetWriter -> { }); } @@ -98,11 +98,11 @@ public class EntityAreaEffectCloud extends ObjectEntity { //sendMetadataIndex(9); } - public ParticleType getParticle() { + public Particle getParticle() { return particleType; } - public void setParticle(ParticleType particleType) { + public void setParticle(Particle particleType) { this.particleType = particleType; //sendMetadataIndex(10); } diff --git a/src/main/java/net/minestom/server/particle/ParticleCreator.java b/src/main/java/net/minestom/server/particle/ParticleCreator.java index 8c1011ad8..49a10c272 100644 --- a/src/main/java/net/minestom/server/particle/ParticleCreator.java +++ b/src/main/java/net/minestom/server/particle/ParticleCreator.java @@ -10,7 +10,7 @@ import java.util.function.Consumer; */ public class ParticleCreator { - public static ParticlePacket createParticlePacket(ParticleType particleType, boolean distance, + public static ParticlePacket createParticlePacket(Particle particleType, boolean distance, double x, double y, double z, float offsetX, float offsetY, float offsetZ, float particleData, int count, Consumer dataWriter) { @@ -33,7 +33,7 @@ public class ParticleCreator { return particlePacket; } - public static ParticlePacket createParticlePacket(ParticleType particleType, + public static ParticlePacket createParticlePacket(Particle particleType, double x, double y, double z, float offsetX, float offsetY, float offsetZ, int count) { diff --git a/src/main/java/net/minestom/server/particle/Particle.java b/src/main/java/net/minestom/server/particle/ParticleWrapper.java similarity index 62% rename from src/main/java/net/minestom/server/particle/Particle.java rename to src/main/java/net/minestom/server/particle/ParticleWrapper.java index 89ef42f99..06361a54a 100644 --- a/src/main/java/net/minestom/server/particle/Particle.java +++ b/src/main/java/net/minestom/server/particle/ParticleWrapper.java @@ -6,22 +6,27 @@ import org.jetbrains.annotations.Nullable; import java.util.function.Consumer; -public class Particle { +/** + * @deprecated It's a a temporary solution so that + * {@link net.minestom.server.entity.metadata.other.AreaEffectCloudMeta} could work. + */ +@Deprecated +public class ParticleWrapper { - private ParticleType type; + private Particle type; private Consumer dataWriter; - public Particle(@NotNull ParticleType type, @Nullable Consumer dataWriter) { + public ParticleWrapper(@NotNull Particle type, @Nullable Consumer dataWriter) { this.type = type; this.dataWriter = dataWriter; } @NotNull - public ParticleType getType() { + public Particle getType() { return this.type; } - public void setType(@NotNull ParticleType type) { + public void setType(@NotNull Particle type) { this.type = type; } From 60fcd43f18db1eab86a09856012ab26fc2b082b6 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 19:30:26 +0300 Subject: [PATCH 23/48] Removed ParticleWrapper --- .../net/minestom/server/entity/Metadata.java | 10 ----- .../metadata/other/AreaEffectCloudMeta.java | 16 ++++---- .../server/particle/ParticleWrapper.java | 41 ------------------- 3 files changed, 7 insertions(+), 60 deletions(-) delete mode 100644 src/main/java/net/minestom/server/particle/ParticleWrapper.java diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index e34ee7055..e6f97cec9 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -3,7 +3,6 @@ package net.minestom.server.entity; import net.minestom.server.chat.JsonMessage; import net.minestom.server.item.ItemStack; import net.minestom.server.network.packet.server.play.EntityMetaDataPacket; -import net.minestom.server.particle.ParticleWrapper; import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.Direction; import net.minestom.server.utils.Vector; @@ -132,15 +131,6 @@ public class Metadata { return new Value<>(TYPE_POSE, value, writer -> writer.writeVarInt(value.ordinal())); } - public static Value Particle(@NotNull ParticleWrapper value) { - return new Value<>(TYPE_PARTICLE, value, writer -> { - writer.writeVarInt(value.getType().getId()); - if (value.getDataWriter() != null) { - value.getDataWriter().accept(writer); - } - }); - } - public static final byte TYPE_BYTE = 0; public static final byte TYPE_VARINT = 1; public static final byte TYPE_FLOAT = 2; diff --git a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java index e2ce3e52a..7ca62378d 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/AreaEffectCloudMeta.java @@ -3,8 +3,6 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; -import net.minestom.server.particle.ParticleWrapper; -import net.minestom.server.particle.Particle; import org.jetbrains.annotations.NotNull; public class AreaEffectCloudMeta extends EntityMeta { @@ -37,12 +35,12 @@ public class AreaEffectCloudMeta extends EntityMeta { super.metadata.setIndex((byte) 9, Metadata.Boolean(value)); } - public ParticleWrapper getParticle() { - return super.metadata.getIndex((byte) 10, new ParticleWrapper(Particle.EFFECT, null)); - } - - public void setParticle(ParticleWrapper value) { - super.metadata.setIndex((byte) 11, Metadata.Particle(value)); - } +// public ParticleWrapper getParticle() { +// return super.metadata.getIndex((byte) 10, new ParticleWrapper(Particle.EFFECT, null)); +// } +// +// public void setParticle(ParticleWrapper value) { +// super.metadata.setIndex((byte) 11, Metadata.Particle(value)); +// } } diff --git a/src/main/java/net/minestom/server/particle/ParticleWrapper.java b/src/main/java/net/minestom/server/particle/ParticleWrapper.java deleted file mode 100644 index 06361a54a..000000000 --- a/src/main/java/net/minestom/server/particle/ParticleWrapper.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.minestom.server.particle; - -import net.minestom.server.utils.binary.BinaryWriter; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.function.Consumer; - -/** - * @deprecated It's a a temporary solution so that - * {@link net.minestom.server.entity.metadata.other.AreaEffectCloudMeta} could work. - */ -@Deprecated -public class ParticleWrapper { - - private Particle type; - private Consumer dataWriter; - - public ParticleWrapper(@NotNull Particle type, @Nullable Consumer dataWriter) { - this.type = type; - this.dataWriter = dataWriter; - } - - @NotNull - public Particle getType() { - return this.type; - } - - public void setType(@NotNull Particle type) { - this.type = type; - } - - @Nullable - public Consumer getDataWriter() { - return this.dataWriter; - } - - public void setDataWriter(@Nullable Consumer dataWriter) { - this.dataWriter = dataWriter; - } -} From 405390640b8124803a1ee195d054b04d56ca7402 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 19:57:45 +0300 Subject: [PATCH 24/48] Switched LivingEntity's explicit usage of metadata to LivingEntityMeta --- .../minestom/server/entity/LivingEntity.java | 52 +++++++++++++------ .../entity/metadata/LivingEntityMeta.java | 4 +- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index 9f6d49e8c..ba345ce3f 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -5,6 +5,7 @@ import net.minestom.server.attribute.AttributeInstance; import net.minestom.server.attribute.Attributes; import net.minestom.server.collision.BoundingBox; import net.minestom.server.entity.damage.DamageType; +import net.minestom.server.entity.metadata.LivingEntityMeta; import net.minestom.server.event.entity.EntityDamageEvent; import net.minestom.server.event.entity.EntityDeathEvent; import net.minestom.server.event.entity.EntityFireEvent; @@ -27,6 +28,7 @@ import net.minestom.server.utils.block.BlockIterator; import net.minestom.server.utils.time.CooldownUtils; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.time.UpdateOption; +import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -70,6 +72,9 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { private Team team; + private int arrowCount; + private float health = 1F; + public LivingEntity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { super(entityType, spawnPosition); setupAttributes(); @@ -152,7 +157,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { * @return the arrow count */ public int getArrowCount() { - return metadata.getIndex((byte) 11, 0); + return this.arrowCount; } /** @@ -161,7 +166,11 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { * @param arrowCount the arrow count */ public void setArrowCount(int arrowCount) { - this.metadata.setIndex((byte) 11, Metadata.VarInt(arrowCount)); + this.arrowCount = arrowCount; + LivingEntityMeta meta = getLivingEntityMeta(); + if (meta != null) { + meta.setArrowCount(arrowCount); + } } /** @@ -315,7 +324,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { * @return the entity health */ public float getHealth() { - return metadata.getIndex((byte) 8, 1f); + return this.health; } /** @@ -324,12 +333,14 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { * @param health the new entity health */ public void setHealth(float health) { - health = Math.min(health, getMaxHealth()); - if (health <= 0 && !isDead) { + this.health = Math.min(health, getMaxHealth()); + if (this.health <= 0 && !isDead) { kill(); } - - this.metadata.setIndex((byte) 8, Metadata.Float(health)); + LivingEntityMeta meta = getLivingEntityMeta(); + if (meta != null) { + meta.setHealth(this.health); + } } /** @@ -447,15 +458,12 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { } public void refreshActiveHand(boolean isHandActive, boolean offHand, boolean riptideSpinAttack) { - byte handState = 0; - if (isHandActive) - handState |= 0x01; - if (offHand) - handState |= 0x02; - if (riptideSpinAttack) - handState |= 0x04; - - this.metadata.setIndex((byte) 7, Metadata.Byte(handState)); + LivingEntityMeta meta = getLivingEntityMeta(); + if (meta != null) { + meta.setHandActive(isHandActive); + meta.setActiveHand(offHand ? Player.Hand.OFF : Player.Hand.MAIN); + meta.setInRiptideSpinAttack(riptideSpinAttack); + } } /** @@ -630,4 +638,16 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { return null; } + /** + * Gets {@link net.minestom.server.entity.metadata.EntityMeta} of this entity casted to {@link LivingEntityMeta}. + * + * @return null if meta of this entity does not inherit {@link LivingEntityMeta}, casted value otherwise. + */ + public LivingEntityMeta getLivingEntityMeta() { + if (this.entityMeta instanceof LivingEntityMeta) { + return (LivingEntityMeta) this.entityMeta; + } + return null; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java index f7aa609a6..8ecc46876 100644 --- a/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/LivingEntityMeta.java @@ -68,11 +68,11 @@ public class LivingEntityMeta extends EntityMeta { super.metadata.setIndex((byte) 10, Metadata.Boolean(value)); } - public int getNumberOfArrows() { + public int getArrowCount() { return super.metadata.getIndex((byte) 11, 0); } - public void setNumberOfArrows(int value) { + public void setArrowCount(int value) { super.metadata.getIndex((byte) 11, Metadata.VarInt(value)); } From 3f941d51bba8a024a46a9171a2737bc037b34cba Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Tue, 23 Feb 2021 20:04:30 +0300 Subject: [PATCH 25/48] Fixed initial BoundingBox of Pufferfish --- src/main/java/net/minestom/server/entity/Entity.java | 4 ++-- .../server/entity/metadata/water/fish/PufferfishMeta.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 4c19cb73f..1d1223240 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -143,10 +143,10 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P this.lastY = spawnPosition.getY(); this.lastZ = spawnPosition.getZ(); - this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); - setBoundingBox(entityType.getWidth(), entityType.getHeight(), entityType.getWidth()); + this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); + setAutoViewable(true); Entity.entityById.put(id, this); diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java index d14bcbf6b..591ebe110 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/PufferfishMeta.java @@ -8,6 +8,7 @@ public class PufferfishMeta extends AbstractFishMeta { public PufferfishMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); + updateBoundingBox(State.UNPUFFED); } public State getState() { From f8634171f74e9cd735ad9e577b0f8b900e4d3d68 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Wed, 24 Feb 2021 13:28:23 +0300 Subject: [PATCH 26/48] Metadata#setNotifyAboutChanges --- .../minestom/server/entity/LivingEntity.java | 2 + .../net/minestom/server/entity/Metadata.java | 51 ++++++++++++++++--- .../server/entity/metadata/EntityMeta.java | 17 +++++++ 3 files changed, 62 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index ba345ce3f..f69a2995b 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -460,9 +460,11 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { public void refreshActiveHand(boolean isHandActive, boolean offHand, boolean riptideSpinAttack) { LivingEntityMeta meta = getLivingEntityMeta(); if (meta != null) { + meta.setNotifyAboutChanges(false); meta.setHandActive(isHandActive); meta.setActiveHand(offHand ? Player.Hand.OFF : Player.Hand.MAIN); meta.setInRiptideSpinAttack(riptideSpinAttack); + meta.setNotifyAboutChanges(true); } } diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index e6f97cec9..8d90adc3e 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -12,10 +12,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBT; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; @@ -153,14 +150,18 @@ public class Metadata { private final Entity entity; - private Map> metadataMap = new ConcurrentHashMap<>(); + private final Map> metadataMap = new ConcurrentHashMap<>(); + + private volatile boolean notifyAboutChanges = true; + private final Map> notNotifiedChanges = new HashMap<>(); public Metadata(@Nullable Entity entity) { this.entity = entity; } + @SuppressWarnings("unchecked") public T getIndex(byte index, @Nullable T defaultValue) { - Entry value = metadataMap.get(index); + Entry value = this.metadataMap.get(index); return value != null ? (T) value.getMetaValue().value : defaultValue; } @@ -169,15 +170,49 @@ public class Metadata { this.metadataMap.put(index, entry); // Send metadata packet to update viewers and self - if (entity != null && entity.isActive()) { + if (this.entity != null && this.entity.isActive()) { + if (!this.notifyAboutChanges) { + synchronized (this.notNotifiedChanges) { + this.notNotifiedChanges.put(index, entry); + } + return; + } EntityMetaDataPacket metaDataPacket = new EntityMetaDataPacket(); - metaDataPacket.entityId = entity.getEntityId(); + metaDataPacket.entityId = this.entity.getEntityId(); metaDataPacket.entries = Collections.singleton(entry); this.entity.sendPacketToViewersAndSelf(metaDataPacket); } } + public void setNotifyAboutChanges(boolean notifyAboutChanges) { + if (this.notifyAboutChanges == notifyAboutChanges) { + return; + } + + Collection> entries = null; + synchronized (this.notNotifiedChanges) { + this.notifyAboutChanges = notifyAboutChanges; + if (notifyAboutChanges) { + entries = this.notNotifiedChanges.values(); + if (entries.isEmpty()) { + return; + } + this.notNotifiedChanges.clear(); + } + } + + if (entries == null || this.entity == null || !this.entity.isActive()) { + return; + } + + EntityMetaDataPacket metaDataPacket = new EntityMetaDataPacket(); + metaDataPacket.entityId = this.entity.getEntityId(); + metaDataPacket.entries = entries; + + this.entity.sendPacketToViewersAndSelf(metaDataPacket); + } + @NotNull public Collection> getEntries() { return metadataMap.values(); diff --git a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java index 5d29beb9e..9d535e594 100644 --- a/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/EntityMeta.java @@ -25,6 +25,23 @@ public class EntityMeta { this.metadata = metadata; } + /** + * Sets whether any changes to this meta must result in a metadata packet being sent to entity viewers. + * By default it's set to true. + *

+ * It's usable if you want to change multiple values of this meta at the same time and want just a + * single packet being sent: if so, disable notification before your first change and enable it + * right after the last one: once notification is set to false, we collect all the updates + * that are being performed, and when it's returned to true we send them all together. + * An example usage could be found at + * {@link net.minestom.server.entity.LivingEntity#refreshActiveHand(boolean, boolean, boolean)}. + * + * @param notifyAboutChanges if to notify entity viewers about this meta changes. + */ + public void setNotifyAboutChanges(boolean notifyAboutChanges) { + this.metadata.setNotifyAboutChanges(notifyAboutChanges); + } + public boolean isOnFire() { return getMaskBit(MASK_INDEX, ON_FIRE_BIT); } From d60118d5f6be08c0495e974e68a7099ccc1e8d91 Mon Sep 17 00:00:00 2001 From: themode Date: Wed, 24 Feb 2021 12:18:27 +0100 Subject: [PATCH 27/48] Improve block breaking code, to fix issue when breaking a block should immediately place a new one --- .../net/minestom/server/instance/InstanceContainer.java | 4 +++- .../minestom/server/listener/PlayerDiggingListener.java | 7 ++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index e52b571e8..ac2e4b67c 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -391,7 +391,9 @@ public class InstanceContainer extends Instance { final boolean allowed = !blockBreakEvent.isCancelled(); if (allowed) { // Break or change the broken block based on event result - setSeparateBlocks(x, y, z, blockBreakEvent.getResultBlockStateId(), blockBreakEvent.getResultCustomBlockId()); + final short resultState = blockBreakEvent.getResultBlockStateId(); + final short resultCustom = blockBreakEvent.getResultCustomBlockId(); + setSeparateBlocks(x, y, z, resultState, resultCustom); // Send the block break effect packet { diff --git a/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java b/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java index 13aa909b9..597a65972 100644 --- a/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java +++ b/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java @@ -154,14 +154,11 @@ public class PlayerDiggingListener { // Unverified block break, client is fully responsible final boolean result = instance.breakBlock(player, blockPosition); - final int updatedBlockId = result ? 0 : blockStateId; - final ClientPlayerDiggingPacket.Status status = result ? - ClientPlayerDiggingPacket.Status.FINISHED_DIGGING : - ClientPlayerDiggingPacket.Status.CANCELLED_DIGGING; + final int updatedBlockId = instance.getBlockStateId(blockPosition); // Send acknowledge packet to allow or cancel the digging process sendAcknowledgePacket(player, blockPosition, updatedBlockId, - status, result); + ClientPlayerDiggingPacket.Status.FINISHED_DIGGING, result); if (!result) { final boolean solid = Block.fromStateId((short) blockStateId).isSolid(); From 49c92883cd1f675e4ba70ca2b7f0706fa1d31a60 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 07:03:26 +0300 Subject: [PATCH 28/48] ArgumentEnum --- .../builder/arguments/ArgumentEnum.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java index 0550abd6d..2ab8ed3f5 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java @@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Locale; import java.util.function.Consumer; +import java.util.function.Function; @SuppressWarnings("rawtypes") public class ArgumentEnum extends Argument { @@ -15,6 +16,7 @@ public class ArgumentEnum extends Argument { private final Class enumClass; private final E[] values; + private Format format = Format.DEFAULT; public ArgumentEnum(@NotNull String id, Class enumClass) { super(id); @@ -22,11 +24,15 @@ public class ArgumentEnum extends Argument { this.values = enumClass.getEnumConstants(); } + public void setFormat(@NotNull Format format) { + this.format = format; + } + @NotNull @Override public E parse(@NotNull String input) throws ArgumentSyntaxException { for (E value : this.values) { - if (value.name().equalsIgnoreCase(input)) { + if (this.format.formatter.apply(value.name()).equals(input)) { return value; } } @@ -52,10 +58,23 @@ public class ArgumentEnum extends Argument { argumentNode.flags = DeclareCommandsPacket.getFlag(DeclareCommandsPacket.NodeType.LITERAL, executable, false, false); - argumentNode.name = this.values[i].name().toLowerCase(Locale.ROOT); + argumentNode.name = this.format.formatter.apply(this.values[i].name()); wordConsumer.accept(argumentNode); nodes[i] = argumentNode; } nodeMaker.addNodes(nodes); } + + public enum Format { + DEFAULT(name -> name), + LOWER_CASED(name -> name.toLowerCase(Locale.ROOT)), + UPPER_CASED(name -> name.toUpperCase(Locale.ROOT)); + + private final Function formatter; + + Format(Function formatter) { + this.formatter = formatter; + } + } + } From 7db7dab4b999aa715d81d9e73461111dd6694235 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 08:59:55 +0300 Subject: [PATCH 29/48] EntitySpawnType initial commit --- .../minestom/server/entity/EntityType.java | 251 +++++++++--------- .../entitytypes/EntityTypeContainer.java | 6 + .../entitytypes/EntityTypeEnumGenerator.java | 14 +- .../net/minestom/server/entity/Entity.java | 14 +- .../server/entity/EntitySpawnType.java | 109 ++++++++ .../entity/metadata/ObjectDataProvider.java | 10 + .../entity/metadata/arrow/ArrowMeta.java | 25 +- .../metadata/arrow/SpectralArrowMeta.java | 25 +- .../{object => item}/EyeOfEnderMeta.java | 4 +- .../entity/metadata/item/FireballMeta.java | 37 +++ .../ItemContainingMeta.java} | 6 +- .../entity/metadata/item/ItemEntityMeta.java | 25 ++ .../metadata/item/SmallFireballMeta.java | 37 +++ .../{object => item}/SnowballMeta.java | 4 +- .../{object => item}/ThrownEggMeta.java | 4 +- .../ThrownEnderPearlMeta.java | 4 +- .../ThrownExperienceBottleMeta.java | 4 +- .../{object => item}/ThrownPotionMeta.java | 4 +- .../AbstractMinecartContainerMeta.java | 2 +- .../minecart/AbstractMinecartMeta.java | 8 +- .../metadata/minecart/ChestMinecartMeta.java | 5 + .../minecart/CommandBlockMinecartMeta.java | 5 + .../minecart/FurnaceMinecartMeta.java | 5 + .../metadata/minecart/HopperMinecartMeta.java | 5 + .../metadata/minecart/MinecartMeta.java | 5 + .../minecart/SpawnerMinecartMeta.java | 5 + .../metadata/minecart/TntMinecartMeta.java | 5 + .../entity/metadata/object/FireballMeta.java | 14 - .../metadata/object/ItemEntityMeta.java | 14 - .../metadata/object/SmallFireballMeta.java | 14 - .../metadata/other/DragonFireballMeta.java | 25 +- .../metadata/other/ExperienceOrbMeta.java | 15 ++ .../metadata/other/FallingBlockMeta.java | 34 ++- .../entity/metadata/other/ItemFrameMeta.java | 43 ++- .../entity/metadata/other/LlamaSpitMeta.java | 13 +- .../entity/metadata/other/PaintingMeta.java | 114 ++++++++ .../metadata/other/ShulkerBulletMeta.java | 13 +- .../metadata/other/WitherSkullMeta.java | 25 +- .../metadata/water/fish/TropicalFishMeta.java | 14 +- .../type/projectile/EntityEyeOfEnder.java | 4 +- .../entity/type/projectile/EntityPotion.java | 4 +- 41 files changed, 770 insertions(+), 204 deletions(-) create mode 100644 src/main/java/net/minestom/server/entity/EntitySpawnType.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/ObjectDataProvider.java rename src/main/java/net/minestom/server/entity/metadata/{object => item}/EyeOfEnderMeta.java (74%) create mode 100644 src/main/java/net/minestom/server/entity/metadata/item/FireballMeta.java rename src/main/java/net/minestom/server/entity/metadata/{object/ObjectEntityMeta.java => item/ItemContainingMeta.java} (74%) create mode 100644 src/main/java/net/minestom/server/entity/metadata/item/ItemEntityMeta.java create mode 100644 src/main/java/net/minestom/server/entity/metadata/item/SmallFireballMeta.java rename src/main/java/net/minestom/server/entity/metadata/{object => item}/SnowballMeta.java (74%) rename src/main/java/net/minestom/server/entity/metadata/{object => item}/ThrownEggMeta.java (74%) rename src/main/java/net/minestom/server/entity/metadata/{object => item}/ThrownEnderPearlMeta.java (74%) rename src/main/java/net/minestom/server/entity/metadata/{object => item}/ThrownExperienceBottleMeta.java (73%) rename src/main/java/net/minestom/server/entity/metadata/{object => item}/ThrownPotionMeta.java (74%) delete mode 100644 src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java delete mode 100644 src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java delete mode 100644 src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index c9d40cbf9..6f4728d94 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -35,6 +35,15 @@ import net.minestom.server.entity.metadata.flying.PhantomMeta; import net.minestom.server.entity.metadata.golem.IronGolemMeta; import net.minestom.server.entity.metadata.golem.ShulkerMeta; import net.minestom.server.entity.metadata.golem.SnowGolemMeta; +import net.minestom.server.entity.metadata.item.EyeOfEnderMeta; +import net.minestom.server.entity.metadata.item.FireballMeta; +import net.minestom.server.entity.metadata.item.ItemEntityMeta; +import net.minestom.server.entity.metadata.item.SmallFireballMeta; +import net.minestom.server.entity.metadata.item.SnowballMeta; +import net.minestom.server.entity.metadata.item.ThrownEggMeta; +import net.minestom.server.entity.metadata.item.ThrownEnderPearlMeta; +import net.minestom.server.entity.metadata.item.ThrownExperienceBottleMeta; +import net.minestom.server.entity.metadata.item.ThrownPotionMeta; import net.minestom.server.entity.metadata.minecart.ChestMinecartMeta; import net.minestom.server.entity.metadata.minecart.CommandBlockMinecartMeta; import net.minestom.server.entity.metadata.minecart.FurnaceMinecartMeta; @@ -71,15 +80,6 @@ import net.minestom.server.entity.metadata.monster.zombie.HuskMeta; import net.minestom.server.entity.metadata.monster.zombie.ZombieMeta; import net.minestom.server.entity.metadata.monster.zombie.ZombieVillagerMeta; import net.minestom.server.entity.metadata.monster.zombie.ZombifiedPiglinMeta; -import net.minestom.server.entity.metadata.object.EyeOfEnderMeta; -import net.minestom.server.entity.metadata.object.FireballMeta; -import net.minestom.server.entity.metadata.object.ItemEntityMeta; -import net.minestom.server.entity.metadata.object.SmallFireballMeta; -import net.minestom.server.entity.metadata.object.SnowballMeta; -import net.minestom.server.entity.metadata.object.ThrownEggMeta; -import net.minestom.server.entity.metadata.object.ThrownEnderPearlMeta; -import net.minestom.server.entity.metadata.object.ThrownExperienceBottleMeta; -import net.minestom.server.entity.metadata.object.ThrownPotionMeta; import net.minestom.server.entity.metadata.other.AreaEffectCloudMeta; import net.minestom.server.entity.metadata.other.ArmorStandMeta; import net.minestom.server.entity.metadata.other.BoatMeta; @@ -121,221 +121,221 @@ import org.jetbrains.annotations.NotNull; */ @SuppressWarnings({"deprecation"}) public enum EntityType { - AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", 6.0, 0.5, AreaEffectCloudMeta::new), + AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", 6.0, 0.5, AreaEffectCloudMeta::new, EntitySpawnType.BASE), - ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975, ArmorStandMeta::new), + ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975, ArmorStandMeta::new, EntitySpawnType.BASE), - ARROW("minecraft:arrow", 0.5, 0.5, ArrowMeta::new), + ARROW("minecraft:arrow", 0.5, 0.5, ArrowMeta::new, EntitySpawnType.BASE), - BAT("minecraft:bat", 0.5, 0.9, BatMeta::new), + BAT("minecraft:bat", 0.5, 0.9, BatMeta::new, EntitySpawnType.BASE), - BEE("minecraft:bee", 0.7, 0.6, BeeMeta::new), + BEE("minecraft:bee", 0.7, 0.6, BeeMeta::new, EntitySpawnType.BASE), - BLAZE("minecraft:blaze", 0.6, 1.8, BlazeMeta::new), + BLAZE("minecraft:blaze", 0.6, 1.8, BlazeMeta::new, EntitySpawnType.BASE), - BOAT("minecraft:boat", 1.375, 0.5625, BoatMeta::new), + BOAT("minecraft:boat", 1.375, 0.5625, BoatMeta::new, EntitySpawnType.BASE), - CAT("minecraft:cat", 0.6, 0.7, CatMeta::new), + CAT("minecraft:cat", 0.6, 0.7, CatMeta::new, EntitySpawnType.BASE), - CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5, CaveSpiderMeta::new), + CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5, CaveSpiderMeta::new, EntitySpawnType.BASE), - CHICKEN("minecraft:chicken", 0.4, 0.7, ChickenMeta::new), + CHICKEN("minecraft:chicken", 0.4, 0.7, ChickenMeta::new, EntitySpawnType.BASE), - COD("minecraft:cod", 0.5, 0.3, CodMeta::new), + COD("minecraft:cod", 0.5, 0.3, CodMeta::new, EntitySpawnType.BASE), - COW("minecraft:cow", 0.9, 1.4, CowMeta::new), + COW("minecraft:cow", 0.9, 1.4, CowMeta::new, EntitySpawnType.BASE), - CREEPER("minecraft:creeper", 0.6, 1.7, CreeperMeta::new), + CREEPER("minecraft:creeper", 0.6, 1.7, CreeperMeta::new, EntitySpawnType.BASE), - DOLPHIN("minecraft:dolphin", 0.9, 0.6, DolphinMeta::new), + DOLPHIN("minecraft:dolphin", 0.9, 0.6, DolphinMeta::new, EntitySpawnType.BASE), - DONKEY("minecraft:donkey", 1.39648, 1.5, DonkeyMeta::new), + DONKEY("minecraft:donkey", 1.39648, 1.5, DonkeyMeta::new, EntitySpawnType.BASE), - DRAGON_FIREBALL("minecraft:dragon_fireball", 1.0, 1.0, DragonFireballMeta::new), + DRAGON_FIREBALL("minecraft:dragon_fireball", 1.0, 1.0, DragonFireballMeta::new, EntitySpawnType.BASE), - DROWNED("minecraft:drowned", 0.6, 1.95, DrownedMeta::new), + DROWNED("minecraft:drowned", 0.6, 1.95, DrownedMeta::new, EntitySpawnType.BASE), - ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975, ElderGuardianMeta::new), + ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975, ElderGuardianMeta::new, EntitySpawnType.BASE), - END_CRYSTAL("minecraft:end_crystal", 2.0, 2.0, EndCrystalMeta::new), + END_CRYSTAL("minecraft:end_crystal", 2.0, 2.0, EndCrystalMeta::new, EntitySpawnType.BASE), - ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0, EnderDragonMeta::new), + ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0, EnderDragonMeta::new, EntitySpawnType.BASE), - ENDERMAN("minecraft:enderman", 0.6, 2.9, EndermanMeta::new), + ENDERMAN("minecraft:enderman", 0.6, 2.9, EndermanMeta::new, EntitySpawnType.BASE), - ENDERMITE("minecraft:endermite", 0.4, 0.3, EndermiteMeta::new), + ENDERMITE("minecraft:endermite", 0.4, 0.3, EndermiteMeta::new, EntitySpawnType.BASE), - EVOKER("minecraft:evoker", 0.6, 1.95, EvokerMeta::new), + EVOKER("minecraft:evoker", 0.6, 1.95, EvokerMeta::new, EntitySpawnType.BASE), - EVOKER_FANGS("minecraft:evoker_fangs", 0.5, 0.8, EvokerFangsMeta::new), + EVOKER_FANGS("minecraft:evoker_fangs", 0.5, 0.8, EvokerFangsMeta::new, EntitySpawnType.BASE), - EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5, ExperienceOrbMeta::new), + EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5, ExperienceOrbMeta::new, EntitySpawnType.BASE), - EYE_OF_ENDER("minecraft:eye_of_ender", 0.25, 0.25, EyeOfEnderMeta::new), + EYE_OF_ENDER("minecraft:eye_of_ender", 0.25, 0.25, EyeOfEnderMeta::new, EntitySpawnType.BASE), - FALLING_BLOCK("minecraft:falling_block", 0.98, 0.98, FallingBlockMeta::new), + FALLING_BLOCK("minecraft:falling_block", 0.98, 0.98, FallingBlockMeta::new, EntitySpawnType.BASE), - FIREWORK_ROCKET("minecraft:firework_rocket", 0.25, 0.25, FireworkRocketMeta::new), + FIREWORK_ROCKET("minecraft:firework_rocket", 0.25, 0.25, FireworkRocketMeta::new, EntitySpawnType.BASE), - FOX("minecraft:fox", 0.6, 0.7, FoxMeta::new), + FOX("minecraft:fox", 0.6, 0.7, FoxMeta::new, EntitySpawnType.BASE), - GHAST("minecraft:ghast", 4.0, 4.0, GhastMeta::new), + GHAST("minecraft:ghast", 4.0, 4.0, GhastMeta::new, EntitySpawnType.BASE), - GIANT("minecraft:giant", 3.6, 12.0, GiantMeta::new), + GIANT("minecraft:giant", 3.6, 12.0, GiantMeta::new, EntitySpawnType.BASE), - GUARDIAN("minecraft:guardian", 0.85, 0.85, GuardianMeta::new), + GUARDIAN("minecraft:guardian", 0.85, 0.85, GuardianMeta::new, EntitySpawnType.BASE), - HOGLIN("minecraft:hoglin", 1.39648, 1.4, HoglinMeta::new), + HOGLIN("minecraft:hoglin", 1.39648, 1.4, HoglinMeta::new, EntitySpawnType.BASE), - HORSE("minecraft:horse", 1.39648, 1.6, HorseMeta::new), + HORSE("minecraft:horse", 1.39648, 1.6, HorseMeta::new, EntitySpawnType.BASE), - HUSK("minecraft:husk", 0.6, 1.95, HuskMeta::new), + HUSK("minecraft:husk", 0.6, 1.95, HuskMeta::new, EntitySpawnType.BASE), - ILLUSIONER("minecraft:illusioner", 0.6, 1.95, IllusionerMeta::new), + ILLUSIONER("minecraft:illusioner", 0.6, 1.95, IllusionerMeta::new, EntitySpawnType.BASE), - IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7, IronGolemMeta::new), + IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7, IronGolemMeta::new, EntitySpawnType.BASE), - ITEM("minecraft:item", 0.25, 0.25, ItemEntityMeta::new), + ITEM("minecraft:item", 0.25, 0.25, ItemEntityMeta::new, EntitySpawnType.BASE), - ITEM_FRAME("minecraft:item_frame", 0.5, 0.5, ItemFrameMeta::new), + ITEM_FRAME("minecraft:item_frame", 0.5, 0.5, ItemFrameMeta::new, EntitySpawnType.BASE), - FIREBALL("minecraft:fireball", 1.0, 1.0, FireballMeta::new), + FIREBALL("minecraft:fireball", 1.0, 1.0, FireballMeta::new, EntitySpawnType.BASE), - LEASH_KNOT("minecraft:leash_knot", 0.5, 0.5, LeashKnotMeta::new), + LEASH_KNOT("minecraft:leash_knot", 0.5, 0.5, LeashKnotMeta::new, EntitySpawnType.BASE), - LIGHTNING_BOLT("minecraft:lightning_bolt", 0.0, 0.0, LightningBoltMeta::new), + LIGHTNING_BOLT("minecraft:lightning_bolt", 0.0, 0.0, LightningBoltMeta::new, EntitySpawnType.BASE), - LLAMA("minecraft:llama", 0.9, 1.87, LlamaMeta::new), + LLAMA("minecraft:llama", 0.9, 1.87, LlamaMeta::new, EntitySpawnType.BASE), - LLAMA_SPIT("minecraft:llama_spit", 0.25, 0.25, LlamaSpitMeta::new), + LLAMA_SPIT("minecraft:llama_spit", 0.25, 0.25, LlamaSpitMeta::new, EntitySpawnType.BASE), - MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04, MagmaCubeMeta::new), + MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04, MagmaCubeMeta::new, EntitySpawnType.BASE), - MINECART("minecraft:minecart", 0.98, 0.7, MinecartMeta::new), + MINECART("minecraft:minecart", 0.98, 0.7, MinecartMeta::new, EntitySpawnType.BASE), - CHEST_MINECART("minecraft:chest_minecart", 0.98, 0.7, ChestMinecartMeta::new), + CHEST_MINECART("minecraft:chest_minecart", 0.98, 0.7, ChestMinecartMeta::new, EntitySpawnType.BASE), - COMMAND_BLOCK_MINECART("minecraft:command_block_minecart", 0.98, 0.7, CommandBlockMinecartMeta::new), + COMMAND_BLOCK_MINECART("minecraft:command_block_minecart", 0.98, 0.7, CommandBlockMinecartMeta::new, EntitySpawnType.BASE), - FURNACE_MINECART("minecraft:furnace_minecart", 0.98, 0.7, FurnaceMinecartMeta::new), + FURNACE_MINECART("minecraft:furnace_minecart", 0.98, 0.7, FurnaceMinecartMeta::new, EntitySpawnType.BASE), - HOPPER_MINECART("minecraft:hopper_minecart", 0.98, 0.7, HopperMinecartMeta::new), + HOPPER_MINECART("minecraft:hopper_minecart", 0.98, 0.7, HopperMinecartMeta::new, EntitySpawnType.BASE), - SPAWNER_MINECART("minecraft:spawner_minecart", 0.98, 0.7, SpawnerMinecartMeta::new), + SPAWNER_MINECART("minecraft:spawner_minecart", 0.98, 0.7, SpawnerMinecartMeta::new, EntitySpawnType.BASE), - TNT_MINECART("minecraft:tnt_minecart", 0.98, 0.7, TntMinecartMeta::new), + TNT_MINECART("minecraft:tnt_minecart", 0.98, 0.7, TntMinecartMeta::new, EntitySpawnType.BASE), - MULE("minecraft:mule", 1.39648, 1.6, MuleMeta::new), + MULE("minecraft:mule", 1.39648, 1.6, MuleMeta::new, EntitySpawnType.BASE), - MOOSHROOM("minecraft:mooshroom", 0.9, 1.4, MooshroomMeta::new), + MOOSHROOM("minecraft:mooshroom", 0.9, 1.4, MooshroomMeta::new, EntitySpawnType.BASE), - OCELOT("minecraft:ocelot", 0.6, 0.7, OcelotMeta::new), + OCELOT("minecraft:ocelot", 0.6, 0.7, OcelotMeta::new, EntitySpawnType.BASE), - PAINTING("minecraft:painting", 0.5, 0.5, PaintingMeta::new), + PAINTING("minecraft:painting", 0.5, 0.5, PaintingMeta::new, EntitySpawnType.BASE), - PANDA("minecraft:panda", 1.3, 1.25, PandaMeta::new), + PANDA("minecraft:panda", 1.3, 1.25, PandaMeta::new, EntitySpawnType.BASE), - PARROT("minecraft:parrot", 0.5, 0.9, ParrotMeta::new), + PARROT("minecraft:parrot", 0.5, 0.9, ParrotMeta::new, EntitySpawnType.BASE), - PHANTOM("minecraft:phantom", 0.9, 0.5, PhantomMeta::new), + PHANTOM("minecraft:phantom", 0.9, 0.5, PhantomMeta::new, EntitySpawnType.BASE), - PIG("minecraft:pig", 0.9, 0.9, PigMeta::new), + PIG("minecraft:pig", 0.9, 0.9, PigMeta::new, EntitySpawnType.BASE), - PIGLIN("minecraft:piglin", 0.6, 1.95, PiglinMeta::new), + PIGLIN("minecraft:piglin", 0.6, 1.95, PiglinMeta::new, EntitySpawnType.BASE), - PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95, PiglinBruteMeta::new), + PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95, PiglinBruteMeta::new, EntitySpawnType.BASE), - PILLAGER("minecraft:pillager", 0.6, 1.95, PillagerMeta::new), + PILLAGER("minecraft:pillager", 0.6, 1.95, PillagerMeta::new, EntitySpawnType.BASE), - POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4, PolarBearMeta::new), + POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4, PolarBearMeta::new, EntitySpawnType.BASE), - TNT("minecraft:tnt", 0.98, 0.98, PrimedTntMeta::new), + TNT("minecraft:tnt", 0.98, 0.98, PrimedTntMeta::new, EntitySpawnType.BASE), - PUFFERFISH("minecraft:pufferfish", 0.7, 0.7, PufferfishMeta::new), + PUFFERFISH("minecraft:pufferfish", 0.7, 0.7, PufferfishMeta::new, EntitySpawnType.BASE), - RABBIT("minecraft:rabbit", 0.4, 0.5, RabbitMeta::new), + RABBIT("minecraft:rabbit", 0.4, 0.5, RabbitMeta::new, EntitySpawnType.BASE), - RAVAGER("minecraft:ravager", 1.95, 2.2, RavagerMeta::new), + RAVAGER("minecraft:ravager", 1.95, 2.2, RavagerMeta::new, EntitySpawnType.BASE), - SALMON("minecraft:salmon", 0.7, 0.4, SalmonMeta::new), + SALMON("minecraft:salmon", 0.7, 0.4, SalmonMeta::new, EntitySpawnType.BASE), - SHEEP("minecraft:sheep", 0.9, 1.3, SheepMeta::new), + SHEEP("minecraft:sheep", 0.9, 1.3, SheepMeta::new, EntitySpawnType.BASE), - SHULKER("minecraft:shulker", 1.0, 1.0, ShulkerMeta::new), + SHULKER("minecraft:shulker", 1.0, 1.0, ShulkerMeta::new, EntitySpawnType.BASE), - SHULKER_BULLET("minecraft:shulker_bullet", 0.3125, 0.3125, ShulkerBulletMeta::new), + SHULKER_BULLET("minecraft:shulker_bullet", 0.3125, 0.3125, ShulkerBulletMeta::new, EntitySpawnType.BASE), - SILVERFISH("minecraft:silverfish", 0.4, 0.3, SilverfishMeta::new), + SILVERFISH("minecraft:silverfish", 0.4, 0.3, SilverfishMeta::new, EntitySpawnType.BASE), - SKELETON("minecraft:skeleton", 0.6, 1.99, SkeletonMeta::new), + SKELETON("minecraft:skeleton", 0.6, 1.99, SkeletonMeta::new, EntitySpawnType.BASE), - SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6, SkeletonHorseMeta::new), + SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6, SkeletonHorseMeta::new, EntitySpawnType.BASE), - SLIME("minecraft:slime", 2.04, 2.04, SlimeMeta::new), + SLIME("minecraft:slime", 2.04, 2.04, SlimeMeta::new, EntitySpawnType.BASE), - SMALL_FIREBALL("minecraft:small_fireball", 0.3125, 0.3125, SmallFireballMeta::new), + SMALL_FIREBALL("minecraft:small_fireball", 0.3125, 0.3125, SmallFireballMeta::new, EntitySpawnType.BASE), - SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9, SnowGolemMeta::new), + SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9, SnowGolemMeta::new, EntitySpawnType.BASE), - SNOWBALL("minecraft:snowball", 0.25, 0.25, SnowballMeta::new), + SNOWBALL("minecraft:snowball", 0.25, 0.25, SnowballMeta::new, EntitySpawnType.BASE), - SPECTRAL_ARROW("minecraft:spectral_arrow", 0.5, 0.5, SpectralArrowMeta::new), + SPECTRAL_ARROW("minecraft:spectral_arrow", 0.5, 0.5, SpectralArrowMeta::new, EntitySpawnType.BASE), - SPIDER("minecraft:spider", 1.4, 0.9, SpiderMeta::new), + SPIDER("minecraft:spider", 1.4, 0.9, SpiderMeta::new, EntitySpawnType.BASE), - SQUID("minecraft:squid", 0.8, 0.8, SquidMeta::new), + SQUID("minecraft:squid", 0.8, 0.8, SquidMeta::new, EntitySpawnType.BASE), - STRAY("minecraft:stray", 0.6, 1.99, StrayMeta::new), + STRAY("minecraft:stray", 0.6, 1.99, StrayMeta::new, EntitySpawnType.BASE), - STRIDER("minecraft:strider", 0.9, 1.7, StriderMeta::new), + STRIDER("minecraft:strider", 0.9, 1.7, StriderMeta::new, EntitySpawnType.BASE), - EGG("minecraft:egg", 0.25, 0.25, ThrownEggMeta::new), + EGG("minecraft:egg", 0.25, 0.25, ThrownEggMeta::new, EntitySpawnType.BASE), - ENDER_PEARL("minecraft:ender_pearl", 0.25, 0.25, ThrownEnderPearlMeta::new), + ENDER_PEARL("minecraft:ender_pearl", 0.25, 0.25, ThrownEnderPearlMeta::new, EntitySpawnType.BASE), - EXPERIENCE_BOTTLE("minecraft:experience_bottle", 0.25, 0.25, ThrownExperienceBottleMeta::new), + EXPERIENCE_BOTTLE("minecraft:experience_bottle", 0.25, 0.25, ThrownExperienceBottleMeta::new, EntitySpawnType.BASE), - POTION("minecraft:potion", 0.25, 0.25, ThrownPotionMeta::new), + POTION("minecraft:potion", 0.25, 0.25, ThrownPotionMeta::new, EntitySpawnType.BASE), - TRIDENT("minecraft:trident", 0.5, 0.5, ThrownTridentMeta::new), + TRIDENT("minecraft:trident", 0.5, 0.5, ThrownTridentMeta::new, EntitySpawnType.BASE), - TRADER_LLAMA("minecraft:trader_llama", 0.9, 1.87, TraderLlamaMeta::new), + TRADER_LLAMA("minecraft:trader_llama", 0.9, 1.87, TraderLlamaMeta::new, EntitySpawnType.BASE), - TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4, TropicalFishMeta::new), + TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4, TropicalFishMeta::new, EntitySpawnType.BASE), - TURTLE("minecraft:turtle", 1.2, 0.4, TurtleMeta::new), + TURTLE("minecraft:turtle", 1.2, 0.4, TurtleMeta::new, EntitySpawnType.BASE), - VEX("minecraft:vex", 0.4, 0.8, VexMeta::new), + VEX("minecraft:vex", 0.4, 0.8, VexMeta::new, EntitySpawnType.BASE), - VILLAGER("minecraft:villager", 0.6, 1.95, VillagerMeta::new), + VILLAGER("minecraft:villager", 0.6, 1.95, VillagerMeta::new, EntitySpawnType.BASE), - VINDICATOR("minecraft:vindicator", 0.6, 1.95, VindicatorMeta::new), + VINDICATOR("minecraft:vindicator", 0.6, 1.95, VindicatorMeta::new, EntitySpawnType.BASE), - WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95, WanderingTraderMeta::new), + WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95, WanderingTraderMeta::new, EntitySpawnType.BASE), - WITCH("minecraft:witch", 0.6, 1.95, WitchMeta::new), + WITCH("minecraft:witch", 0.6, 1.95, WitchMeta::new, EntitySpawnType.BASE), - WITHER("minecraft:wither", 0.9, 3.5, WitherMeta::new), + WITHER("minecraft:wither", 0.9, 3.5, WitherMeta::new, EntitySpawnType.BASE), - WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4, WitherSkeletonMeta::new), + WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4, WitherSkeletonMeta::new, EntitySpawnType.BASE), - WITHER_SKULL("minecraft:wither_skull", 0.3125, 0.3125, WitherSkullMeta::new), + WITHER_SKULL("minecraft:wither_skull", 0.3125, 0.3125, WitherSkullMeta::new, EntitySpawnType.BASE), - WOLF("minecraft:wolf", 0.6, 0.85, WolfMeta::new), + WOLF("minecraft:wolf", 0.6, 0.85, WolfMeta::new, EntitySpawnType.BASE), - ZOGLIN("minecraft:zoglin", 1.39648, 1.4, ZoglinMeta::new), + ZOGLIN("minecraft:zoglin", 1.39648, 1.4, ZoglinMeta::new, EntitySpawnType.BASE), - ZOMBIE("minecraft:zombie", 0.6, 1.95, ZombieMeta::new), + ZOMBIE("minecraft:zombie", 0.6, 1.95, ZombieMeta::new, EntitySpawnType.BASE), - ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6, ZombieHorseMeta::new), + ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6, ZombieHorseMeta::new, EntitySpawnType.BASE), - ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95, ZombieVillagerMeta::new), + ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95, ZombieVillagerMeta::new, EntitySpawnType.BASE), - ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95, ZombifiedPiglinMeta::new), + ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95, ZombifiedPiglinMeta::new, EntitySpawnType.BASE), - PLAYER("minecraft:player", 0.6, 1.8, PlayerMeta::new), + PLAYER("minecraft:player", 0.6, 1.8, PlayerMeta::new, EntitySpawnType.BASE), - FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25, FishingHookMeta::new); + FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25, FishingHookMeta::new, EntitySpawnType.BASE); private static final EntityType[] VALUES = values(); @@ -349,21 +349,26 @@ public enum EntityType { @NotNull private BiFunction metaConstructor; - EntityType(@NotNull String namespaceID, double width, double height, - @NotNull BiFunction metaConstructor) { + @NotNull + private EntitySpawnType spawnType; + + EntityType(@NotNull final String namespaceID, final double width, final double height, + @NotNull final BiFunction metaConstructor, + @NotNull final EntitySpawnType spawnType) { this.namespaceID = namespaceID; this.width = width; this.height = height; this.metaConstructor = metaConstructor; + this.spawnType = spawnType; Registries.entityTypes.put(NamespaceID.from(namespaceID), this); } public short getId() { - return (short)ordinal(); + return (short) ordinal(); } public String getNamespaceID() { - return namespaceID; + return this.namespaceID; } public double getWidth() { @@ -378,6 +383,10 @@ public enum EntityType { return this.metaConstructor; } + public EntitySpawnType getSpawnType() { + return this.spawnType; + } + public static EntityType fromId(short id) { if(id >= 0 && id < VALUES.length) { return VALUES[id]; diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java index 168cca625..85fb5dc7b 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java @@ -1,6 +1,7 @@ package net.minestom.codegen.entitytypes; import com.google.common.base.CaseFormat; +import net.minestom.server.entity.EntitySpawnType; import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; @@ -18,6 +19,7 @@ public class EntityTypeContainer implements Comparable { private double width; private double height; private Class metaClass; + private EntitySpawnType spawnType = EntitySpawnType.BASE; public EntityTypeContainer(int id, NamespaceID name, double width, double height) { this.id = id; @@ -70,6 +72,10 @@ public class EntityTypeContainer implements Comparable { return metaClass; } + public EntitySpawnType getSpawnType() { + return spawnType; + } + @Override public int compareTo(@NotNull EntityTypeContainer o) { return Integer.compare(id, o.id); diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java index 169c042e0..dc8649a30 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeEnumGenerator.java @@ -8,6 +8,7 @@ import net.minestom.codegen.ConstructorLambda; import net.minestom.codegen.EnumGenerator; import net.minestom.codegen.MinestomEnumGenerator; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntitySpawnType; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; @@ -136,17 +137,18 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator { code.addStatement("$T.$N.put($T.from(namespaceID), this)", Registries.class, "entityTypes", NamespaceID.class); }); generator.addMethod("getId", new ParameterSpec[0], TypeName.SHORT, code -> { - code.addStatement("return (short)ordinal()"); + code.addStatement("return (short) ordinal()"); }); generator.addMethod("getNamespaceID", new ParameterSpec[0], ClassName.get(String.class), code -> { - code.addStatement("return namespaceID"); + code.addStatement("return this.namespaceID"); }); generator.addMethod("getWidth", new ParameterSpec[0], TypeName.DOUBLE, code -> { code.addStatement("return this.width"); @@ -163,6 +165,9 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator code.addStatement("return this.metaConstructor") ); + generator.addMethod("getSpawnType", new ParameterSpec[0], ClassName.get(EntitySpawnType.class), code -> { + code.addStatement("return this.spawnType"); + }); generator.addStaticField(ArrayTypeName.of(ClassName.get(EntityType.class)), "VALUES", "values()"); @@ -181,7 +186,8 @@ public class EntityTypeEnumGenerator extends MinestomEnumGenerator> 1) - 1), + paintingMeta.getMotive().getHeight() >> 1, + 0 + ); + switch (paintingMeta.getDirection()) { + case SOUTH: + packet.direction = 0; + break; + case WEST: + packet.direction = 1; + break; + case NORTH: + packet.direction = 2; + break; + default: + packet.direction = 3; + break; + } + } else { + packet.position = new BlockPosition(0, 0, 0); + } + return packet; + } + }; + + public abstract ServerPacket getSpawnPacket(Entity entity); + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/ObjectDataProvider.java b/src/main/java/net/minestom/server/entity/metadata/ObjectDataProvider.java new file mode 100644 index 000000000..326479c00 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/ObjectDataProvider.java @@ -0,0 +1,10 @@ +package net.minestom.server.entity.metadata; + +// https://wiki.vg/Object_Data +public interface ObjectDataProvider { + + int getObjectData(); + + boolean requiresVelocityPacketAtSpawn(); + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java index 3c325d0a6..19a96afb4 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java @@ -3,9 +3,13 @@ package net.minestom.server.entity.metadata.arrow; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class ArrowMeta extends EntityMeta { +public class ArrowMeta extends EntityMeta implements ObjectDataProvider { + + private Entity shooter; public ArrowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); @@ -19,4 +23,23 @@ public class ArrowMeta extends EntityMeta { super.metadata.setIndex((byte) 9, Metadata.VarInt(value)); } + @Nullable + public Entity getShooter() { + return this.shooter; + } + + public void setShooter(@Nullable Entity shooter) { + this.shooter = shooter; + } + + @Override + public int getObjectData() { + return this.shooter == null ? 0 : this.shooter.getEntityId() + 1; + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java index 3bb69fb05..4e356f4df 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/SpectralArrowMeta.java @@ -2,12 +2,35 @@ package net.minestom.server.entity.metadata.arrow; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class SpectralArrowMeta extends AbstractArrowMeta { +public class SpectralArrowMeta extends AbstractArrowMeta implements ObjectDataProvider { + + private Entity shooter; public SpectralArrowMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } + @Nullable + public Entity getShooter() { + return this.shooter; + } + + public void setShooter(@Nullable Entity shooter) { + this.shooter = shooter; + } + + @Override + public int getObjectData() { + return this.shooter == null ? 0 : this.shooter.getEntityId() + 1; + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/EyeOfEnderMeta.java similarity index 74% rename from src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/EyeOfEnderMeta.java index 9635201c0..86aeed45c 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/EyeOfEnderMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/EyeOfEnderMeta.java @@ -1,11 +1,11 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class EyeOfEnderMeta extends ObjectEntityMeta { +public class EyeOfEnderMeta extends ItemContainingMeta { public EyeOfEnderMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata, Material.ENDER_EYE); diff --git a/src/main/java/net/minestom/server/entity/metadata/item/FireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/FireballMeta.java new file mode 100644 index 000000000..822de1f39 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/item/FireballMeta.java @@ -0,0 +1,37 @@ +package net.minestom.server.entity.metadata.item; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.ObjectDataProvider; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class FireballMeta extends ItemContainingMeta implements ObjectDataProvider { + + private Entity shooter; + + public FireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.AIR); + } + + @Nullable + public Entity getShooter() { + return shooter; + } + + public void setShooter(@Nullable Entity shooter) { + this.shooter = shooter; + } + + @Override + public int getObjectData() { + return this.shooter == null ? 0 : this.shooter.getEntityId(); + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/ItemContainingMeta.java similarity index 74% rename from src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/ItemContainingMeta.java index 9f1347d10..18e2512b7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ObjectEntityMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/ItemContainingMeta.java @@ -1,4 +1,4 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; @@ -7,11 +7,11 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class ObjectEntityMeta extends EntityMeta { +class ItemContainingMeta extends EntityMeta { private final ItemStack defaultItem; - protected ObjectEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata, @NotNull Material defaultItemMaterial) { + protected ItemContainingMeta(@NotNull Entity entity, @NotNull Metadata metadata, @NotNull Material defaultItemMaterial) { super(entity, metadata); this.defaultItem = new ItemStack(defaultItemMaterial, (byte) 1); } diff --git a/src/main/java/net/minestom/server/entity/metadata/item/ItemEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/ItemEntityMeta.java new file mode 100644 index 000000000..812f0f9c6 --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/item/ItemEntityMeta.java @@ -0,0 +1,25 @@ +package net.minestom.server.entity.metadata.item; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.ObjectDataProvider; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; + +public class ItemEntityMeta extends ItemContainingMeta implements ObjectDataProvider { + + public ItemEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.AIR); + } + + @Override + public int getObjectData() { + return 1; + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/item/SmallFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/SmallFireballMeta.java new file mode 100644 index 000000000..5953445cb --- /dev/null +++ b/src/main/java/net/minestom/server/entity/metadata/item/SmallFireballMeta.java @@ -0,0 +1,37 @@ +package net.minestom.server.entity.metadata.item; + +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.ObjectDataProvider; +import net.minestom.server.item.Material; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class SmallFireballMeta extends ItemContainingMeta implements ObjectDataProvider { + + private Entity shooter; + + public SmallFireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { + super(entity, metadata, Material.FIRE_CHARGE); + } + + @Nullable + public Entity getShooter() { + return shooter; + } + + public void setShooter(@Nullable Entity shooter) { + this.shooter = shooter; + } + + @Override + public int getObjectData() { + return this.shooter == null ? 0 : this.shooter.getEntityId(); + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + +} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/SnowballMeta.java similarity index 74% rename from src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/SnowballMeta.java index 6409f3ab9..4d60ec831 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/SnowballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/SnowballMeta.java @@ -1,11 +1,11 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class SnowballMeta extends ObjectEntityMeta { +public class SnowballMeta extends ItemContainingMeta { public SnowballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata, Material.SNOWBALL); diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/ThrownEggMeta.java similarity index 74% rename from src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/ThrownEggMeta.java index 8c840f922..ba8911d55 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEggMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/ThrownEggMeta.java @@ -1,11 +1,11 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class ThrownEggMeta extends ObjectEntityMeta { +public class ThrownEggMeta extends ItemContainingMeta { public ThrownEggMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata, Material.EGG); diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/ThrownEnderPearlMeta.java similarity index 74% rename from src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/ThrownEnderPearlMeta.java index 22de9c6f3..1fc85438e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownEnderPearlMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/ThrownEnderPearlMeta.java @@ -1,11 +1,11 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class ThrownEnderPearlMeta extends ObjectEntityMeta { +public class ThrownEnderPearlMeta extends ItemContainingMeta { public ThrownEnderPearlMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata, Material.ENDER_PEARL); diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/ThrownExperienceBottleMeta.java similarity index 73% rename from src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/ThrownExperienceBottleMeta.java index 4cb5a9903..9b574140a 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownExperienceBottleMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/ThrownExperienceBottleMeta.java @@ -1,11 +1,11 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class ThrownExperienceBottleMeta extends ObjectEntityMeta { +public class ThrownExperienceBottleMeta extends ItemContainingMeta { public ThrownExperienceBottleMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata, Material.EXPERIENCE_BOTTLE); diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java b/src/main/java/net/minestom/server/entity/metadata/item/ThrownPotionMeta.java similarity index 74% rename from src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java rename to src/main/java/net/minestom/server/entity/metadata/item/ThrownPotionMeta.java index f7779fa34..3fc282f89 100644 --- a/src/main/java/net/minestom/server/entity/metadata/object/ThrownPotionMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/item/ThrownPotionMeta.java @@ -1,11 +1,11 @@ -package net.minestom.server.entity.metadata.object; +package net.minestom.server.entity.metadata.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -public class ThrownPotionMeta extends ObjectEntityMeta { +public class ThrownPotionMeta extends ItemContainingMeta { public ThrownPotionMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata, Material.AIR); diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java index 7b468abce..8d35eb323 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartContainerMeta.java @@ -4,7 +4,7 @@ import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import org.jetbrains.annotations.NotNull; -public class AbstractMinecartContainerMeta extends AbstractMinecartMeta { +public abstract class AbstractMinecartContainerMeta extends AbstractMinecartMeta { protected AbstractMinecartContainerMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java index 07e0cc01a..194ccc8b2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/AbstractMinecartMeta.java @@ -3,9 +3,10 @@ package net.minestom.server.entity.metadata.minecart; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; -public class AbstractMinecartMeta extends EntityMeta { +public abstract class AbstractMinecartMeta extends EntityMeta implements ObjectDataProvider { protected AbstractMinecartMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); @@ -52,4 +53,9 @@ public class AbstractMinecartMeta extends EntityMeta { super.metadata.setIndex((byte) 11, Metadata.VarInt(value)); } + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java index b5d32767f..78c0d52dd 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/ChestMinecartMeta.java @@ -10,4 +10,9 @@ public class ChestMinecartMeta extends AbstractMinecartContainerMeta { super(entity, metadata); } + @Override + public int getObjectData() { + return 1; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java index cbe5ed2f3..acac0c2fe 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/CommandBlockMinecartMeta.java @@ -30,4 +30,9 @@ public class CommandBlockMinecartMeta extends AbstractMinecartMeta { super.metadata.setIndex((byte) 14, Metadata.Chat(value)); } + @Override + public int getObjectData() { + return 6; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java index af07198ea..57fd31199 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/FurnaceMinecartMeta.java @@ -18,4 +18,9 @@ public class FurnaceMinecartMeta extends AbstractMinecartMeta { super.metadata.setIndex((byte) 13, Metadata.Boolean(value)); } + @Override + public int getObjectData() { + return 2; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java index b35c663da..043da17e7 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/HopperMinecartMeta.java @@ -10,4 +10,9 @@ public class HopperMinecartMeta extends AbstractMinecartContainerMeta { super(entity, metadata); } + @Override + public int getObjectData() { + return 5; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java index 5b86f0aab..10e139bc6 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/MinecartMeta.java @@ -10,4 +10,9 @@ public class MinecartMeta extends AbstractMinecartMeta { super(entity, metadata); } + @Override + public int getObjectData() { + return 0; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java index b4c4f43c5..2d378a33e 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/SpawnerMinecartMeta.java @@ -10,4 +10,9 @@ public class SpawnerMinecartMeta extends AbstractMinecartMeta { super(entity, metadata); } + @Override + public int getObjectData() { + return 4; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java b/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java index f66efdcab..3a03be33f 100644 --- a/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/minecart/TntMinecartMeta.java @@ -10,4 +10,9 @@ public class TntMinecartMeta extends AbstractMinecartMeta { super(entity, metadata); } + @Override + public int getObjectData() { + return 3; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java deleted file mode 100644 index 062691eb2..000000000 --- a/src/main/java/net/minestom/server/entity/metadata/object/FireballMeta.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minestom.server.entity.metadata.object; - -import net.minestom.server.entity.Entity; -import net.minestom.server.entity.Metadata; -import net.minestom.server.item.Material; -import org.jetbrains.annotations.NotNull; - -public class FireballMeta extends ObjectEntityMeta { - - public FireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { - super(entity, metadata, Material.AIR); - } - -} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java deleted file mode 100644 index 32b43ff0a..000000000 --- a/src/main/java/net/minestom/server/entity/metadata/object/ItemEntityMeta.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minestom.server.entity.metadata.object; - -import net.minestom.server.entity.Entity; -import net.minestom.server.entity.Metadata; -import net.minestom.server.item.Material; -import org.jetbrains.annotations.NotNull; - -public class ItemEntityMeta extends ObjectEntityMeta { - - public ItemEntityMeta(@NotNull Entity entity, @NotNull Metadata metadata) { - super(entity, metadata, Material.AIR); - } - -} diff --git a/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java deleted file mode 100644 index 4f95791ac..000000000 --- a/src/main/java/net/minestom/server/entity/metadata/object/SmallFireballMeta.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minestom.server.entity.metadata.object; - -import net.minestom.server.entity.Entity; -import net.minestom.server.entity.Metadata; -import net.minestom.server.item.Material; -import org.jetbrains.annotations.NotNull; - -public class SmallFireballMeta extends ObjectEntityMeta { - - public SmallFireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { - super(entity, metadata, Material.FIRE_CHARGE); - } - -} diff --git a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java index 8277d8655..27abf9d32 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/DragonFireballMeta.java @@ -3,12 +3,35 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class DragonFireballMeta extends EntityMeta { +public class DragonFireballMeta extends EntityMeta implements ObjectDataProvider { + + private Entity shooter; public DragonFireballMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } + @Nullable + public Entity getShooter() { + return shooter; + } + + public void setShooter(@Nullable Entity shooter) { + this.shooter = shooter; + } + + @Override + public int getObjectData() { + return this.shooter == null ? 0 : this.shooter.getEntityId(); + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java index dc2107a15..08076974c 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ExperienceOrbMeta.java @@ -7,8 +7,23 @@ import org.jetbrains.annotations.NotNull; public class ExperienceOrbMeta extends EntityMeta { + private int count = 1; + public ExperienceOrbMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } + public int getCount() { + return count; + } + + /** + * Sets count of orbs. + * This is possible only before spawn packet is sent. + * + * @param count count of orbs. + */ + public void setCount(int count) { + this.count = count; + } } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java index 0fb872d91..94a6e36b3 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/FallingBlockMeta.java @@ -3,10 +3,14 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; +import net.minestom.server.instance.block.Block; import net.minestom.server.utils.BlockPosition; import org.jetbrains.annotations.NotNull; -public class FallingBlockMeta extends EntityMeta { +public class FallingBlockMeta extends EntityMeta implements ObjectDataProvider { + + private Block block = Block.STONE; public FallingBlockMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); @@ -20,4 +24,32 @@ public class FallingBlockMeta extends EntityMeta { super.metadata.setIndex((byte) 7, Metadata.Position(value)); } + @NotNull + public Block getBlock() { + return block; + } + + /** + * Sets which block to display. + * This is possible only before spawn packet is sent. + * + * @param block which block to display. + */ + public void setBlock(@NotNull Block block) { + this.block = block; + } + + @SuppressWarnings("ConstantConditions") + @Override + public int getObjectData() { + int id = this.block.getBlockId(); + int metadata = 0; // TODO ? + return id | (metadata << 12); + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return false; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java index 292c205aa..b4d0e2f68 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ItemFrameMeta.java @@ -3,14 +3,18 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import net.minestom.server.item.ItemStack; import net.minestom.server.utils.Rotation; import org.jetbrains.annotations.NotNull; -public class ItemFrameMeta extends EntityMeta { +public class ItemFrameMeta extends EntityMeta implements ObjectDataProvider { + + private Orientation orientation; public ItemFrameMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); + this.orientation = Orientation.DOWN; } @NotNull @@ -22,12 +26,47 @@ public class ItemFrameMeta extends EntityMeta { super.metadata.setIndex((byte) 7, Metadata.Slot(value)); } + @NotNull public Rotation getRotation() { return Rotation.values()[super.metadata.getIndex((byte) 8, 0)]; } - public void setRotation(Rotation value) { + public void setRotation(@NotNull Rotation value) { super.metadata.setIndex((byte) 8, Metadata.VarInt(value.ordinal())); } + @NotNull + public Orientation getOrientation() { + return this.orientation; + } + + /** + * Sets orientation of the item frame. + * This is possible only before spawn packet is sent. + * + * @param orientation the orientation of the item frame. + */ + public void setOrientation(@NotNull Orientation orientation) { + this.orientation = orientation; + } + + @Override + public int getObjectData() { + return this.orientation.ordinal(); + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return false; + } + + public enum Orientation { + DOWN, + UP, + NORTH, + SOUTH, + WEST, + EAST + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java index b80cecb21..e3b313dd0 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/LlamaSpitMeta.java @@ -3,12 +3,23 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; -public class LlamaSpitMeta extends EntityMeta { +public class LlamaSpitMeta extends EntityMeta implements ObjectDataProvider { public LlamaSpitMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } + @Override + public int getObjectData() { + return 0; + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java index d0ce2ae9d..de1318ad2 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java @@ -3,12 +3,126 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.utils.Direction; +import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; +import java.util.Locale; + public class PaintingMeta extends EntityMeta { + private Motive motive = Motive.KEBAB; + private Direction direction = Direction.SOUTH; + public PaintingMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } + @NotNull + public Motive getMotive() { + return motive; + } + + /** + * Sets motive of a painting. + * This is possible only before spawn packet is sent. + * + * @param motive motive of a painting. + */ + public void setMotive(@NotNull Motive motive) { + this.motive = motive; + } + + @NotNull + public Direction getDirection() { + return direction; + } + + /** + * Sets direction of a painting. + * This is possible only before spawn packet is sent. + * + * @param direction direction of a painting. + */ + public void setDirection(@NotNull Direction direction) { + Check.argCondition(direction == Direction.UP || direction == Direction.DOWN, "Painting can't look up or down!"); + this.direction = direction; + } + + /* + TODO: write a parser? + Currently none of existing ones support it. + */ + public enum Motive { + KEBAB(0, 0, 16, 16), + AZTEC(16, 0, 16, 16), + ALBAN(32, 0, 16, 16), + AZTEC2(48, 0, 16, 16), + BOMB(64, 0, 16, 16), + PLANT(80, 0, 16, 16), + WASTELAND(96, 0, 16, 16), + POOL(0, 32, 32, 16), + COURBET(32, 32, 32, 16), + SEA(64, 32, 32, 16), + SUNSET(96, 32, 32, 16), + CREEBET(128, 32, 32, 16), + WANDERER(0, 64, 16, 32), + GRAHAM(16, 64, 16, 32), + MATCH(0, 128, 32, 32), + BUST(32, 128, 32, 32), + STAGE(64, 128, 32, 32), + VOID(96, 128, 32, 32), + SKULL_AND_ROSES("skull_and_roses", 128, 128, 32, 32), + WITHER(160, 128, 32, 32), + FIGHTERS(0, 96, 64, 32), + POINTER(0, 192, 64, 64), + PIGSCENE(64, 192, 64, 64), + BURNING_SKULL(128, 192, 64, 64), + SKELETON(192, 64, 64, 48), + DONKEY_KONG(192, 112, 64, 48); + + private final String name; + private final int x; + private final int y; + private final int width; + private final int height; + + Motive(String name, int x, int y, int width, int height) { + this.name = name; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + Motive(int x, int y, int width, int height) { + this.name = "minecraft:" + name().toLowerCase(Locale.ROOT); + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + public String getName() { + return this.name; + } + + public int getX() { + return this.x; + } + + public int getY() { + return this.y; + } + + public int getWidth() { + return this.width; + } + + public int getHeight() { + return this.height; + } + + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java index fcb98f172..d19d272d1 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/ShulkerBulletMeta.java @@ -3,12 +3,23 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; -public class ShulkerBulletMeta extends EntityMeta { +public class ShulkerBulletMeta extends EntityMeta implements ObjectDataProvider { public ShulkerBulletMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } + @Override + public int getObjectData() { + return 0; + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java index fca4a3254..7f751ab12 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/WitherSkullMeta.java @@ -3,9 +3,13 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class WitherSkullMeta extends EntityMeta { +public class WitherSkullMeta extends EntityMeta implements ObjectDataProvider { + + private Entity shooter; public WitherSkullMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); @@ -19,4 +23,23 @@ public class WitherSkullMeta extends EntityMeta { super.metadata.setIndex((byte) 7, Metadata.Boolean(value)); } + @Nullable + public Entity getShooter() { + return shooter; + } + + public void setShooter(@Nullable Entity shooter) { + this.shooter = shooter; + } + + @Override + public int getObjectData() { + return this.shooter == null ? 0 : this.shooter.getEntityId(); + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return true; + } + } diff --git a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java index 99f477384..9cae81e02 100644 --- a/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/water/fish/TropicalFishMeta.java @@ -2,9 +2,10 @@ package net.minestom.server.entity.metadata.water.fish; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; -public class TropicalFishMeta extends AbstractFishMeta { +public class TropicalFishMeta extends AbstractFishMeta implements ObjectDataProvider { public TropicalFishMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); @@ -41,6 +42,17 @@ public class TropicalFishMeta extends AbstractFishMeta { return new Variant(type, pattern, bodyColor, patternColor); } + @Override + public int getObjectData() { + // TODO: returns Entity ID of the owner (???) + return 0; + } + + @Override + public boolean requiresVelocityPacketAtSpawn() { + return false; + } + public static class Variant { private Type type; diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java index 0aa0f6cf1..79a4637f8 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java @@ -3,8 +3,6 @@ package net.minestom.server.entity.type.projectile; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.ObjectEntity; -import net.minestom.server.entity.type.Projectile; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.utils.Position; @@ -12,7 +10,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * @deprecated Use {@link net.minestom.server.entity.metadata.object.EyeOfEnderMeta} instead. + * @deprecated Use {@link net.minestom.server.entity.metadata.item.EyeOfEnderMeta} instead. */ @Deprecated public class EntityEyeOfEnder extends AbstractProjectile { diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java index 9448e1499..7c0ba2b4f 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java @@ -3,15 +3,13 @@ package net.minestom.server.entity.type.projectile; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.ObjectEntity; -import net.minestom.server.entity.type.Projectile; import net.minestom.server.item.ItemStack; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * @deprecated Use {@link net.minestom.server.entity.metadata.object.ThrownPotionMeta} instead. + * @deprecated Use {@link net.minestom.server.entity.metadata.item.ThrownPotionMeta} instead. */ @Deprecated public class EntityPotion extends AbstractProjectile { From c8d0b783d8d18acd6ef725b29ea6d81b2263e355 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 09:01:13 +0300 Subject: [PATCH 30/48] Made autogenerated fields final --- .../net/minestom/server/entity/EntityType.java | 16 ++++++++-------- .../java/net/minestom/codegen/EnumGenerator.java | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index 6f4728d94..2be6b74ca 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -340,21 +340,21 @@ public enum EntityType { private static final EntityType[] VALUES = values(); @NotNull - private String namespaceID; + private final String namespaceID; - private double width; + private final double width; - private double height; + private final double height; @NotNull - private BiFunction metaConstructor; + private final BiFunction metaConstructor; @NotNull - private EntitySpawnType spawnType; + private final EntitySpawnType spawnType; - EntityType(@NotNull final String namespaceID, final double width, final double height, - @NotNull final BiFunction metaConstructor, - @NotNull final EntitySpawnType spawnType) { + EntityType(@NotNull String namespaceID, double width, double height, + @NotNull BiFunction metaConstructor, + @NotNull EntitySpawnType spawnType) { this.namespaceID = namespaceID; this.width = width; this.height = height; diff --git a/src/generators/java/net/minestom/codegen/EnumGenerator.java b/src/generators/java/net/minestom/codegen/EnumGenerator.java index 06a3b2eea..4400596f3 100644 --- a/src/generators/java/net/minestom/codegen/EnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/EnumGenerator.java @@ -95,7 +95,7 @@ public class EnumGenerator implements CodeGenerator { // properties for (ParameterSpec property : parameters) { enumClass.addField(FieldSpec.builder(property.type, property.name) - .addModifiers(Modifier.PRIVATE) + .addModifiers(Modifier.PRIVATE, Modifier.FINAL) .addAnnotations(property.annotations) .build()); } From 1308f81678508d078bc6fb432643784784b8a1b8 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 09:15:51 +0300 Subject: [PATCH 31/48] Switched all direct spawn packets interactions to EntityType#getSpawnType#getSpawnPacket --- .../server/entity/EntityCreature.java | 10 +----- .../minestom/server/entity/ExperienceOrb.java | 21 ------------ .../minestom/server/entity/ObjectEntity.java | 32 +++---------------- .../net/minestom/server/entity/Player.java | 13 ++------ 4 files changed, 8 insertions(+), 68 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index b445709a8..23a3277b7 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -12,7 +12,6 @@ import net.minestom.server.event.item.ArmorEquipEvent; import net.minestom.server.instance.Instance; import net.minestom.server.item.ItemStack; import net.minestom.server.network.packet.server.play.EntityEquipmentPacket; -import net.minestom.server.network.packet.server.play.SpawnLivingEntityPacket; import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.Position; import net.minestom.server.utils.time.TimeUnit; @@ -116,14 +115,7 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent final PlayerConnection playerConnection = player.getPlayerConnection(); - SpawnLivingEntityPacket spawnLivingEntityPacket = new SpawnLivingEntityPacket(); - spawnLivingEntityPacket.entityId = getEntityId(); - spawnLivingEntityPacket.entityUuid = getUuid(); - spawnLivingEntityPacket.entityType = getEntityType().getId(); - spawnLivingEntityPacket.position = getPosition(); - spawnLivingEntityPacket.headPitch = getPosition().getYaw(); - - playerConnection.sendPacket(spawnLivingEntityPacket); + playerConnection.sendPacket(getEntityType().getSpawnType().getSpawnPacket(this)); playerConnection.sendPacket(getVelocityPacket()); playerConnection.sendPacket(getMetadataPacket()); diff --git a/src/main/java/net/minestom/server/entity/ExperienceOrb.java b/src/main/java/net/minestom/server/entity/ExperienceOrb.java index 71b99dad7..379b647ac 100644 --- a/src/main/java/net/minestom/server/entity/ExperienceOrb.java +++ b/src/main/java/net/minestom/server/entity/ExperienceOrb.java @@ -1,8 +1,6 @@ package net.minestom.server.entity; import net.minestom.server.instance.Instance; -import net.minestom.server.network.packet.server.play.SpawnExperienceOrbPacket; -import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.Position; import net.minestom.server.utils.Vector; import org.jetbrains.annotations.NotNull; @@ -87,25 +85,6 @@ public class ExperienceOrb extends Entity { } - @Override - public boolean addViewer(@NotNull Player player) { - final boolean result = super.addViewer(player); // Add player to viewers list - if (!result) - return false; - - final PlayerConnection playerConnection = player.getPlayerConnection(); - - SpawnExperienceOrbPacket experienceOrbPacket = new SpawnExperienceOrbPacket(); - experienceOrbPacket.entityId = getEntityId(); - experienceOrbPacket.position = getPosition(); - experienceOrbPacket.expCount = experienceCount; - - playerConnection.sendPacket(experienceOrbPacket); - playerConnection.sendPacket(getVelocityPacket()); - - return true; - } - /** * Gets the experience count. * diff --git a/src/main/java/net/minestom/server/entity/ObjectEntity.java b/src/main/java/net/minestom/server/entity/ObjectEntity.java index 11083c20c..50b46dd29 100644 --- a/src/main/java/net/minestom/server/entity/ObjectEntity.java +++ b/src/main/java/net/minestom/server/entity/ObjectEntity.java @@ -1,10 +1,13 @@ package net.minestom.server.entity; -import net.minestom.server.network.packet.server.play.SpawnEntityPacket; -import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +/** + * @deprecated Use {@link net.minestom.server.entity.metadata.EntityMeta} that inherits + * {@link net.minestom.server.entity.metadata.ObjectDataProvider} instead. + */ +@Deprecated public abstract class ObjectEntity extends Entity { public ObjectEntity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { @@ -30,29 +33,4 @@ public abstract class ObjectEntity extends Entity { } - @Override - public boolean addViewer(@NotNull Player player) { - final boolean result = super.addViewer(player); - if (!result) - return false; - - final PlayerConnection playerConnection = player.getPlayerConnection(); - - SpawnEntityPacket spawnEntityPacket = new SpawnEntityPacket(); - spawnEntityPacket.entityId = getEntityId(); - spawnEntityPacket.uuid = getUuid(); - spawnEntityPacket.type = getEntityType().getId(); - spawnEntityPacket.position = getPosition(); - spawnEntityPacket.data = getObjectData(); - playerConnection.sendPacket(spawnEntityPacket); - playerConnection.sendPacket(getVelocityPacket()); - playerConnection.sendPacket(getMetadataPacket()); - - if (hasPassenger()) { - playerConnection.sendPacket(getPassengersPacket()); - } - - return true; - } - } diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 7d833c86a..780a092ec 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -1417,11 +1417,7 @@ public class Player extends LivingEntity implements CommandSender { protected void refreshAfterTeleport() { getInventory().update(); - SpawnPlayerPacket spawnPlayerPacket = new SpawnPlayerPacket(); - spawnPlayerPacket.entityId = getEntityId(); - spawnPlayerPacket.playerUuid = getUuid(); - spawnPlayerPacket.position = getPosition(); - sendPacketToViewers(spawnPlayerPacket); + sendPacketsToViewers(getEntityType().getSpawnType().getSpawnPacket(this)); // Update for viewers sendPacketToViewersAndSelf(getVelocityPacket()); @@ -2400,14 +2396,9 @@ public class Player extends LivingEntity implements CommandSender { * @param connection the connection to show the player to */ protected void showPlayer(@NotNull PlayerConnection connection) { - SpawnPlayerPacket spawnPlayerPacket = new SpawnPlayerPacket(); - spawnPlayerPacket.entityId = getEntityId(); - spawnPlayerPacket.playerUuid = getUuid(); - spawnPlayerPacket.position = getPosition(); - connection.sendPacket(getAddPlayerToList()); - connection.sendPacket(spawnPlayerPacket); + connection.sendPacket(getEntityType().getSpawnType().getSpawnPacket(this)); connection.sendPacket(getVelocityPacket()); connection.sendPacket(getMetadataPacket()); From 6386705fc54c9b8c03da8754ae4557d2f758e0c1 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 09:51:30 +0300 Subject: [PATCH 32/48] Properly generating EntitySpawnType --- .../minestom/server/entity/EntityType.java | 146 +++++++++--------- .../entitytypes/EntityTypeContainer.java | 18 ++- 2 files changed, 90 insertions(+), 74 deletions(-) diff --git a/src/autogenerated/java/net/minestom/server/entity/EntityType.java b/src/autogenerated/java/net/minestom/server/entity/EntityType.java index 2be6b74ca..dab56474a 100644 --- a/src/autogenerated/java/net/minestom/server/entity/EntityType.java +++ b/src/autogenerated/java/net/minestom/server/entity/EntityType.java @@ -123,53 +123,53 @@ import org.jetbrains.annotations.NotNull; public enum EntityType { AREA_EFFECT_CLOUD("minecraft:area_effect_cloud", 6.0, 0.5, AreaEffectCloudMeta::new, EntitySpawnType.BASE), - ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975, ArmorStandMeta::new, EntitySpawnType.BASE), + ARMOR_STAND("minecraft:armor_stand", 0.5, 1.975, ArmorStandMeta::new, EntitySpawnType.LIVING), ARROW("minecraft:arrow", 0.5, 0.5, ArrowMeta::new, EntitySpawnType.BASE), - BAT("minecraft:bat", 0.5, 0.9, BatMeta::new, EntitySpawnType.BASE), + BAT("minecraft:bat", 0.5, 0.9, BatMeta::new, EntitySpawnType.LIVING), - BEE("minecraft:bee", 0.7, 0.6, BeeMeta::new, EntitySpawnType.BASE), + BEE("minecraft:bee", 0.7, 0.6, BeeMeta::new, EntitySpawnType.LIVING), - BLAZE("minecraft:blaze", 0.6, 1.8, BlazeMeta::new, EntitySpawnType.BASE), + BLAZE("minecraft:blaze", 0.6, 1.8, BlazeMeta::new, EntitySpawnType.LIVING), BOAT("minecraft:boat", 1.375, 0.5625, BoatMeta::new, EntitySpawnType.BASE), - CAT("minecraft:cat", 0.6, 0.7, CatMeta::new, EntitySpawnType.BASE), + CAT("minecraft:cat", 0.6, 0.7, CatMeta::new, EntitySpawnType.LIVING), - CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5, CaveSpiderMeta::new, EntitySpawnType.BASE), + CAVE_SPIDER("minecraft:cave_spider", 0.7, 0.5, CaveSpiderMeta::new, EntitySpawnType.LIVING), - CHICKEN("minecraft:chicken", 0.4, 0.7, ChickenMeta::new, EntitySpawnType.BASE), + CHICKEN("minecraft:chicken", 0.4, 0.7, ChickenMeta::new, EntitySpawnType.LIVING), - COD("minecraft:cod", 0.5, 0.3, CodMeta::new, EntitySpawnType.BASE), + COD("minecraft:cod", 0.5, 0.3, CodMeta::new, EntitySpawnType.LIVING), - COW("minecraft:cow", 0.9, 1.4, CowMeta::new, EntitySpawnType.BASE), + COW("minecraft:cow", 0.9, 1.4, CowMeta::new, EntitySpawnType.LIVING), - CREEPER("minecraft:creeper", 0.6, 1.7, CreeperMeta::new, EntitySpawnType.BASE), + CREEPER("minecraft:creeper", 0.6, 1.7, CreeperMeta::new, EntitySpawnType.LIVING), - DOLPHIN("minecraft:dolphin", 0.9, 0.6, DolphinMeta::new, EntitySpawnType.BASE), + DOLPHIN("minecraft:dolphin", 0.9, 0.6, DolphinMeta::new, EntitySpawnType.LIVING), - DONKEY("minecraft:donkey", 1.39648, 1.5, DonkeyMeta::new, EntitySpawnType.BASE), + DONKEY("minecraft:donkey", 1.39648, 1.5, DonkeyMeta::new, EntitySpawnType.LIVING), DRAGON_FIREBALL("minecraft:dragon_fireball", 1.0, 1.0, DragonFireballMeta::new, EntitySpawnType.BASE), - DROWNED("minecraft:drowned", 0.6, 1.95, DrownedMeta::new, EntitySpawnType.BASE), + DROWNED("minecraft:drowned", 0.6, 1.95, DrownedMeta::new, EntitySpawnType.LIVING), - ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975, ElderGuardianMeta::new, EntitySpawnType.BASE), + ELDER_GUARDIAN("minecraft:elder_guardian", 1.9975, 1.9975, ElderGuardianMeta::new, EntitySpawnType.LIVING), END_CRYSTAL("minecraft:end_crystal", 2.0, 2.0, EndCrystalMeta::new, EntitySpawnType.BASE), - ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0, EnderDragonMeta::new, EntitySpawnType.BASE), + ENDER_DRAGON("minecraft:ender_dragon", 16.0, 8.0, EnderDragonMeta::new, EntitySpawnType.LIVING), - ENDERMAN("minecraft:enderman", 0.6, 2.9, EndermanMeta::new, EntitySpawnType.BASE), + ENDERMAN("minecraft:enderman", 0.6, 2.9, EndermanMeta::new, EntitySpawnType.LIVING), - ENDERMITE("minecraft:endermite", 0.4, 0.3, EndermiteMeta::new, EntitySpawnType.BASE), + ENDERMITE("minecraft:endermite", 0.4, 0.3, EndermiteMeta::new, EntitySpawnType.LIVING), - EVOKER("minecraft:evoker", 0.6, 1.95, EvokerMeta::new, EntitySpawnType.BASE), + EVOKER("minecraft:evoker", 0.6, 1.95, EvokerMeta::new, EntitySpawnType.LIVING), EVOKER_FANGS("minecraft:evoker_fangs", 0.5, 0.8, EvokerFangsMeta::new, EntitySpawnType.BASE), - EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5, ExperienceOrbMeta::new, EntitySpawnType.BASE), + EXPERIENCE_ORB("minecraft:experience_orb", 0.5, 0.5, ExperienceOrbMeta::new, EntitySpawnType.EXPERIENCE_ORB), EYE_OF_ENDER("minecraft:eye_of_ender", 0.25, 0.25, EyeOfEnderMeta::new, EntitySpawnType.BASE), @@ -177,23 +177,23 @@ public enum EntityType { FIREWORK_ROCKET("minecraft:firework_rocket", 0.25, 0.25, FireworkRocketMeta::new, EntitySpawnType.BASE), - FOX("minecraft:fox", 0.6, 0.7, FoxMeta::new, EntitySpawnType.BASE), + FOX("minecraft:fox", 0.6, 0.7, FoxMeta::new, EntitySpawnType.LIVING), - GHAST("minecraft:ghast", 4.0, 4.0, GhastMeta::new, EntitySpawnType.BASE), + GHAST("minecraft:ghast", 4.0, 4.0, GhastMeta::new, EntitySpawnType.LIVING), - GIANT("minecraft:giant", 3.6, 12.0, GiantMeta::new, EntitySpawnType.BASE), + GIANT("minecraft:giant", 3.6, 12.0, GiantMeta::new, EntitySpawnType.LIVING), - GUARDIAN("minecraft:guardian", 0.85, 0.85, GuardianMeta::new, EntitySpawnType.BASE), + GUARDIAN("minecraft:guardian", 0.85, 0.85, GuardianMeta::new, EntitySpawnType.LIVING), - HOGLIN("minecraft:hoglin", 1.39648, 1.4, HoglinMeta::new, EntitySpawnType.BASE), + HOGLIN("minecraft:hoglin", 1.39648, 1.4, HoglinMeta::new, EntitySpawnType.LIVING), - HORSE("minecraft:horse", 1.39648, 1.6, HorseMeta::new, EntitySpawnType.BASE), + HORSE("minecraft:horse", 1.39648, 1.6, HorseMeta::new, EntitySpawnType.LIVING), - HUSK("minecraft:husk", 0.6, 1.95, HuskMeta::new, EntitySpawnType.BASE), + HUSK("minecraft:husk", 0.6, 1.95, HuskMeta::new, EntitySpawnType.LIVING), - ILLUSIONER("minecraft:illusioner", 0.6, 1.95, IllusionerMeta::new, EntitySpawnType.BASE), + ILLUSIONER("minecraft:illusioner", 0.6, 1.95, IllusionerMeta::new, EntitySpawnType.LIVING), - IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7, IronGolemMeta::new, EntitySpawnType.BASE), + IRON_GOLEM("minecraft:iron_golem", 1.4, 2.7, IronGolemMeta::new, EntitySpawnType.LIVING), ITEM("minecraft:item", 0.25, 0.25, ItemEntityMeta::new, EntitySpawnType.BASE), @@ -205,11 +205,11 @@ public enum EntityType { LIGHTNING_BOLT("minecraft:lightning_bolt", 0.0, 0.0, LightningBoltMeta::new, EntitySpawnType.BASE), - LLAMA("minecraft:llama", 0.9, 1.87, LlamaMeta::new, EntitySpawnType.BASE), + LLAMA("minecraft:llama", 0.9, 1.87, LlamaMeta::new, EntitySpawnType.LIVING), LLAMA_SPIT("minecraft:llama_spit", 0.25, 0.25, LlamaSpitMeta::new, EntitySpawnType.BASE), - MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04, MagmaCubeMeta::new, EntitySpawnType.BASE), + MAGMA_CUBE("minecraft:magma_cube", 2.04, 2.04, MagmaCubeMeta::new, EntitySpawnType.LIVING), MINECART("minecraft:minecart", 0.98, 0.7, MinecartMeta::new, EntitySpawnType.BASE), @@ -225,69 +225,69 @@ public enum EntityType { TNT_MINECART("minecraft:tnt_minecart", 0.98, 0.7, TntMinecartMeta::new, EntitySpawnType.BASE), - MULE("minecraft:mule", 1.39648, 1.6, MuleMeta::new, EntitySpawnType.BASE), + MULE("minecraft:mule", 1.39648, 1.6, MuleMeta::new, EntitySpawnType.LIVING), - MOOSHROOM("minecraft:mooshroom", 0.9, 1.4, MooshroomMeta::new, EntitySpawnType.BASE), + MOOSHROOM("minecraft:mooshroom", 0.9, 1.4, MooshroomMeta::new, EntitySpawnType.LIVING), - OCELOT("minecraft:ocelot", 0.6, 0.7, OcelotMeta::new, EntitySpawnType.BASE), + OCELOT("minecraft:ocelot", 0.6, 0.7, OcelotMeta::new, EntitySpawnType.LIVING), - PAINTING("minecraft:painting", 0.5, 0.5, PaintingMeta::new, EntitySpawnType.BASE), + PAINTING("minecraft:painting", 0.5, 0.5, PaintingMeta::new, EntitySpawnType.PAINTING), - PANDA("minecraft:panda", 1.3, 1.25, PandaMeta::new, EntitySpawnType.BASE), + PANDA("minecraft:panda", 1.3, 1.25, PandaMeta::new, EntitySpawnType.LIVING), - PARROT("minecraft:parrot", 0.5, 0.9, ParrotMeta::new, EntitySpawnType.BASE), + PARROT("minecraft:parrot", 0.5, 0.9, ParrotMeta::new, EntitySpawnType.LIVING), - PHANTOM("minecraft:phantom", 0.9, 0.5, PhantomMeta::new, EntitySpawnType.BASE), + PHANTOM("minecraft:phantom", 0.9, 0.5, PhantomMeta::new, EntitySpawnType.LIVING), - PIG("minecraft:pig", 0.9, 0.9, PigMeta::new, EntitySpawnType.BASE), + PIG("minecraft:pig", 0.9, 0.9, PigMeta::new, EntitySpawnType.LIVING), - PIGLIN("minecraft:piglin", 0.6, 1.95, PiglinMeta::new, EntitySpawnType.BASE), + PIGLIN("minecraft:piglin", 0.6, 1.95, PiglinMeta::new, EntitySpawnType.LIVING), - PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95, PiglinBruteMeta::new, EntitySpawnType.BASE), + PIGLIN_BRUTE("minecraft:piglin_brute", 0.6, 1.95, PiglinBruteMeta::new, EntitySpawnType.LIVING), - PILLAGER("minecraft:pillager", 0.6, 1.95, PillagerMeta::new, EntitySpawnType.BASE), + PILLAGER("minecraft:pillager", 0.6, 1.95, PillagerMeta::new, EntitySpawnType.LIVING), - POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4, PolarBearMeta::new, EntitySpawnType.BASE), + POLAR_BEAR("minecraft:polar_bear", 1.4, 1.4, PolarBearMeta::new, EntitySpawnType.LIVING), TNT("minecraft:tnt", 0.98, 0.98, PrimedTntMeta::new, EntitySpawnType.BASE), - PUFFERFISH("minecraft:pufferfish", 0.7, 0.7, PufferfishMeta::new, EntitySpawnType.BASE), + PUFFERFISH("minecraft:pufferfish", 0.7, 0.7, PufferfishMeta::new, EntitySpawnType.LIVING), - RABBIT("minecraft:rabbit", 0.4, 0.5, RabbitMeta::new, EntitySpawnType.BASE), + RABBIT("minecraft:rabbit", 0.4, 0.5, RabbitMeta::new, EntitySpawnType.LIVING), - RAVAGER("minecraft:ravager", 1.95, 2.2, RavagerMeta::new, EntitySpawnType.BASE), + RAVAGER("minecraft:ravager", 1.95, 2.2, RavagerMeta::new, EntitySpawnType.LIVING), - SALMON("minecraft:salmon", 0.7, 0.4, SalmonMeta::new, EntitySpawnType.BASE), + SALMON("minecraft:salmon", 0.7, 0.4, SalmonMeta::new, EntitySpawnType.LIVING), - SHEEP("minecraft:sheep", 0.9, 1.3, SheepMeta::new, EntitySpawnType.BASE), + SHEEP("minecraft:sheep", 0.9, 1.3, SheepMeta::new, EntitySpawnType.LIVING), - SHULKER("minecraft:shulker", 1.0, 1.0, ShulkerMeta::new, EntitySpawnType.BASE), + SHULKER("minecraft:shulker", 1.0, 1.0, ShulkerMeta::new, EntitySpawnType.LIVING), SHULKER_BULLET("minecraft:shulker_bullet", 0.3125, 0.3125, ShulkerBulletMeta::new, EntitySpawnType.BASE), - SILVERFISH("minecraft:silverfish", 0.4, 0.3, SilverfishMeta::new, EntitySpawnType.BASE), + SILVERFISH("minecraft:silverfish", 0.4, 0.3, SilverfishMeta::new, EntitySpawnType.LIVING), - SKELETON("minecraft:skeleton", 0.6, 1.99, SkeletonMeta::new, EntitySpawnType.BASE), + SKELETON("minecraft:skeleton", 0.6, 1.99, SkeletonMeta::new, EntitySpawnType.LIVING), - SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6, SkeletonHorseMeta::new, EntitySpawnType.BASE), + SKELETON_HORSE("minecraft:skeleton_horse", 1.39648, 1.6, SkeletonHorseMeta::new, EntitySpawnType.LIVING), - SLIME("minecraft:slime", 2.04, 2.04, SlimeMeta::new, EntitySpawnType.BASE), + SLIME("minecraft:slime", 2.04, 2.04, SlimeMeta::new, EntitySpawnType.LIVING), SMALL_FIREBALL("minecraft:small_fireball", 0.3125, 0.3125, SmallFireballMeta::new, EntitySpawnType.BASE), - SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9, SnowGolemMeta::new, EntitySpawnType.BASE), + SNOW_GOLEM("minecraft:snow_golem", 0.7, 1.9, SnowGolemMeta::new, EntitySpawnType.LIVING), SNOWBALL("minecraft:snowball", 0.25, 0.25, SnowballMeta::new, EntitySpawnType.BASE), SPECTRAL_ARROW("minecraft:spectral_arrow", 0.5, 0.5, SpectralArrowMeta::new, EntitySpawnType.BASE), - SPIDER("minecraft:spider", 1.4, 0.9, SpiderMeta::new, EntitySpawnType.BASE), + SPIDER("minecraft:spider", 1.4, 0.9, SpiderMeta::new, EntitySpawnType.LIVING), - SQUID("minecraft:squid", 0.8, 0.8, SquidMeta::new, EntitySpawnType.BASE), + SQUID("minecraft:squid", 0.8, 0.8, SquidMeta::new, EntitySpawnType.LIVING), - STRAY("minecraft:stray", 0.6, 1.99, StrayMeta::new, EntitySpawnType.BASE), + STRAY("minecraft:stray", 0.6, 1.99, StrayMeta::new, EntitySpawnType.LIVING), - STRIDER("minecraft:strider", 0.9, 1.7, StriderMeta::new, EntitySpawnType.BASE), + STRIDER("minecraft:strider", 0.9, 1.7, StriderMeta::new, EntitySpawnType.LIVING), EGG("minecraft:egg", 0.25, 0.25, ThrownEggMeta::new, EntitySpawnType.BASE), @@ -301,39 +301,39 @@ public enum EntityType { TRADER_LLAMA("minecraft:trader_llama", 0.9, 1.87, TraderLlamaMeta::new, EntitySpawnType.BASE), - TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4, TropicalFishMeta::new, EntitySpawnType.BASE), + TROPICAL_FISH("minecraft:tropical_fish", 0.5, 0.4, TropicalFishMeta::new, EntitySpawnType.LIVING), - TURTLE("minecraft:turtle", 1.2, 0.4, TurtleMeta::new, EntitySpawnType.BASE), + TURTLE("minecraft:turtle", 1.2, 0.4, TurtleMeta::new, EntitySpawnType.LIVING), - VEX("minecraft:vex", 0.4, 0.8, VexMeta::new, EntitySpawnType.BASE), + VEX("minecraft:vex", 0.4, 0.8, VexMeta::new, EntitySpawnType.LIVING), - VILLAGER("minecraft:villager", 0.6, 1.95, VillagerMeta::new, EntitySpawnType.BASE), + VILLAGER("minecraft:villager", 0.6, 1.95, VillagerMeta::new, EntitySpawnType.LIVING), - VINDICATOR("minecraft:vindicator", 0.6, 1.95, VindicatorMeta::new, EntitySpawnType.BASE), + VINDICATOR("minecraft:vindicator", 0.6, 1.95, VindicatorMeta::new, EntitySpawnType.LIVING), - WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95, WanderingTraderMeta::new, EntitySpawnType.BASE), + WANDERING_TRADER("minecraft:wandering_trader", 0.6, 1.95, WanderingTraderMeta::new, EntitySpawnType.LIVING), - WITCH("minecraft:witch", 0.6, 1.95, WitchMeta::new, EntitySpawnType.BASE), + WITCH("minecraft:witch", 0.6, 1.95, WitchMeta::new, EntitySpawnType.LIVING), - WITHER("minecraft:wither", 0.9, 3.5, WitherMeta::new, EntitySpawnType.BASE), + WITHER("minecraft:wither", 0.9, 3.5, WitherMeta::new, EntitySpawnType.LIVING), - WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4, WitherSkeletonMeta::new, EntitySpawnType.BASE), + WITHER_SKELETON("minecraft:wither_skeleton", 0.7, 2.4, WitherSkeletonMeta::new, EntitySpawnType.LIVING), WITHER_SKULL("minecraft:wither_skull", 0.3125, 0.3125, WitherSkullMeta::new, EntitySpawnType.BASE), - WOLF("minecraft:wolf", 0.6, 0.85, WolfMeta::new, EntitySpawnType.BASE), + WOLF("minecraft:wolf", 0.6, 0.85, WolfMeta::new, EntitySpawnType.LIVING), - ZOGLIN("minecraft:zoglin", 1.39648, 1.4, ZoglinMeta::new, EntitySpawnType.BASE), + ZOGLIN("minecraft:zoglin", 1.39648, 1.4, ZoglinMeta::new, EntitySpawnType.LIVING), - ZOMBIE("minecraft:zombie", 0.6, 1.95, ZombieMeta::new, EntitySpawnType.BASE), + ZOMBIE("minecraft:zombie", 0.6, 1.95, ZombieMeta::new, EntitySpawnType.LIVING), - ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6, ZombieHorseMeta::new, EntitySpawnType.BASE), + ZOMBIE_HORSE("minecraft:zombie_horse", 1.39648, 1.6, ZombieHorseMeta::new, EntitySpawnType.LIVING), - ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95, ZombieVillagerMeta::new, EntitySpawnType.BASE), + ZOMBIE_VILLAGER("minecraft:zombie_villager", 0.6, 1.95, ZombieVillagerMeta::new, EntitySpawnType.LIVING), - ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95, ZombifiedPiglinMeta::new, EntitySpawnType.BASE), + ZOMBIFIED_PIGLIN("minecraft:zombified_piglin", 0.6, 1.95, ZombifiedPiglinMeta::new, EntitySpawnType.LIVING), - PLAYER("minecraft:player", 0.6, 1.8, PlayerMeta::new, EntitySpawnType.BASE), + PLAYER("minecraft:player", 0.6, 1.8, PlayerMeta::new, EntitySpawnType.PLAYER), FISHING_BOBBER("minecraft:fishing_bobber", 0.25, 0.25, FishingHookMeta::new, EntitySpawnType.BASE); diff --git a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java index 85fb5dc7b..cdd2a37b2 100644 --- a/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java +++ b/src/generators/java/net/minestom/codegen/entitytypes/EntityTypeContainer.java @@ -2,6 +2,10 @@ package net.minestom.codegen.entitytypes; import com.google.common.base.CaseFormat; import net.minestom.server.entity.EntitySpawnType; +import net.minestom.server.entity.metadata.LivingEntityMeta; +import net.minestom.server.entity.metadata.PlayerMeta; +import net.minestom.server.entity.metadata.other.ExperienceOrbMeta; +import net.minestom.server.entity.metadata.other.PaintingMeta; import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; @@ -19,7 +23,7 @@ public class EntityTypeContainer implements Comparable { private double width; private double height; private Class metaClass; - private EntitySpawnType spawnType = EntitySpawnType.BASE; + private EntitySpawnType spawnType; public EntityTypeContainer(int id, NamespaceID name, double width, double height) { this.id = id; @@ -50,6 +54,18 @@ public class EntityTypeContainer implements Comparable { } metaClassName += "Meta"; this.metaClass = findClassIn("net.minestom.server.entity.metadata", metaClassName); + + if (this.metaClass == PlayerMeta.class) { + this.spawnType = EntitySpawnType.PLAYER; + } else if (this.metaClass == PaintingMeta.class) { + this.spawnType = EntitySpawnType.PAINTING; + } else if (this.metaClass == ExperienceOrbMeta.class) { + this.spawnType = EntitySpawnType.EXPERIENCE_ORB; + } else if (LivingEntityMeta.class.isAssignableFrom(this.metaClass)) { + this.spawnType = EntitySpawnType.LIVING; + } else { + this.spawnType = EntitySpawnType.BASE; + } } public int getId() { From ca6546eb7d1a4af569b6b939e3b16cb88970578f Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 10:00:29 +0300 Subject: [PATCH 33/48] Removed obsolete metadata type values inside Entity --- .../net/minestom/server/entity/Entity.java | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 5793a95f9..478974090 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -58,27 +58,6 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P private static final Map entityByUuid = new ConcurrentHashMap<>(); private static final AtomicInteger lastEntityId = new AtomicInteger(); - // Metadata - protected static final byte METADATA_BYTE = 0; - protected static final byte METADATA_VARINT = 1; - protected static final byte METADATA_FLOAT = 2; - protected static final byte METADATA_STRING = 3; - protected static final byte METADATA_CHAT = 4; - protected static final byte METADATA_OPTCHAT = 5; - protected static final byte METADATA_SLOT = 6; - protected static final byte METADATA_BOOLEAN = 7; - protected static final byte METADATA_ROTATION = 8; - protected static final byte METADATA_POSITION = 9; - protected static final byte METADATA_OPTPOSITION = 10; - protected static final byte METADATA_DIRECTION = 11; - protected static final byte METADATA_OPTUUID = 12; - protected static final byte METADATA_OPTBLOCKID = 13; - protected static final byte METADATA_NBT = 14; - protected static final byte METADATA_PARTICLE = 15; - protected static final byte METADATA_VILLAGERDATA = 16; - protected static final byte METADATA_OPTVARINT = 17; - protected static final byte METADATA_POSE = 18; - protected Instance instance; protected final Position position; protected double lastX, lastY, lastZ; From 18da3e01687b1ba9f295a31a647d58e1b35f6489 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 10:37:02 +0300 Subject: [PATCH 34/48] Moved switchEntityType from EntityCreature to Entity --- .../net/minestom/server/entity/Entity.java | 65 +++++++- .../server/entity/EntityCreature.java | 156 ------------------ .../minestom/server/entity/LivingEntity.java | 114 ++++++++++++- .../net/minestom/server/entity/Player.java | 20 +-- .../type/decoration/EntityArmorStand.java | 8 +- 5 files changed, 184 insertions(+), 179 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 478974090..7dd8b13da 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -13,11 +13,15 @@ import net.minestom.server.event.Event; import net.minestom.server.event.EventCallback; import net.minestom.server.event.entity.*; import net.minestom.server.event.handler.EventHandler; +import net.minestom.server.event.item.ArmorEquipEvent; import net.minestom.server.instance.Chunk; import net.minestom.server.instance.Instance; import net.minestom.server.instance.InstanceManager; import net.minestom.server.instance.block.CustomBlock; +import net.minestom.server.inventory.EquipmentHandler; +import net.minestom.server.item.ItemStack; import net.minestom.server.network.packet.server.play.*; +import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.permission.Permission; import net.minestom.server.permission.PermissionHandler; import net.minestom.server.potion.Potion; @@ -114,6 +118,11 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P private long ticks; private final EntityTickEvent tickEvent = new EntityTickEvent(this); + /** + * Lock used to support #switchEntityType + */ + private final Object entityTypeLock = new Object(); + public Entity(@NotNull EntityType entityType, @NotNull UUID uuid, @NotNull Position spawnPosition) { this.id = generateId(); this.entityType = entityType; @@ -313,18 +322,41 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P } @Override - public boolean addViewer(@NotNull Player player) { - boolean result = this.viewers.add(player); - if (!result) + public final boolean addViewer(@NotNull Player player) { + synchronized (this.entityTypeLock) { + return addViewer0(player); + } + } + + public boolean addViewer0(@NotNull Player player) { + if (!this.viewers.add(player)) { return false; + } player.viewableEntities.add(this); + + PlayerConnection playerConnection = player.getPlayerConnection(); + playerConnection.sendPacket(getEntityType().getSpawnType().getSpawnPacket(this)); + playerConnection.sendPacket(getVelocityPacket()); + playerConnection.sendPacket(getMetadataPacket()); + + if (hasPassenger()) { + playerConnection.sendPacket(getPassengersPacket()); + } + return true; } @Override - public boolean removeViewer(@NotNull Player player) { - if (!viewers.remove(player)) + public final boolean removeViewer(@NotNull Player player) { + synchronized (this.entityTypeLock) { + return removeViewer0(player); + } + } + + public boolean removeViewer0(@NotNull Player player) { + if (!viewers.remove(player)) { return false; + } DestroyEntitiesPacket destroyEntitiesPacket = new DestroyEntitiesPacket(); destroyEntitiesPacket.entityIds = new int[]{getEntityId()}; @@ -339,6 +371,29 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P return unmodifiableViewers; } + /** + * Changes the entity type of this entity. + *

+ * Works by changing the internal entity type field and by calling {@link #removeViewer(Player)} + * followed by {@link #addViewer(Player)} to all current viewers. + *

+ * Be aware that this only change the visual of the entity, the {@link net.minestom.server.collision.BoundingBox} + * will not be modified. + * + * @param entityType the new entity type + */ + public final void switchEntityType(@NotNull EntityType entityType) { + synchronized (entityTypeLock) { + this.entityType = entityType; + this.metadata = new Metadata(this); + this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); + + Set viewers = new HashSet<>(getViewers()); + getViewers().forEach(this::removeViewer); + viewers.forEach(this::addViewer); + } + } + @Override public Data getData() { return data; diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index 23a3277b7..090dd0f0a 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -8,20 +8,14 @@ import net.minestom.server.entity.ai.TargetSelector; import net.minestom.server.entity.pathfinding.NavigableEntity; import net.minestom.server.entity.pathfinding.Navigator; import net.minestom.server.event.entity.EntityAttackEvent; -import net.minestom.server.event.item.ArmorEquipEvent; import net.minestom.server.instance.Instance; -import net.minestom.server.item.ItemStack; -import net.minestom.server.network.packet.server.play.EntityEquipmentPacket; -import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.Position; import net.minestom.server.utils.time.TimeUnit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; public class EntityCreature extends LivingEntity implements NavigableEntity, EntityAI { @@ -35,31 +29,9 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent private Entity target; - /** - * Lock used to support #switchEntityType - */ - private final Object entityTypeLock = new Object(); - - // Equipments - private ItemStack mainHandItem; - private ItemStack offHandItem; - - private ItemStack helmet; - private ItemStack chestplate; - private ItemStack leggings; - private ItemStack boots; - public EntityCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { super(entityType, spawnPosition); - this.mainHandItem = ItemStack.getAirItem(); - this.offHandItem = ItemStack.getAirItem(); - - this.helmet = ItemStack.getAirItem(); - this.chestplate = ItemStack.getAirItem(); - this.leggings = ItemStack.getAirItem(); - this.boots = ItemStack.getAirItem(); - heal(); } @@ -108,56 +80,6 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent } } - @Override - public boolean addViewer(@NotNull Player player) { - synchronized (entityTypeLock) { - final boolean result = super.addViewer(player); - - final PlayerConnection playerConnection = player.getPlayerConnection(); - - playerConnection.sendPacket(getEntityType().getSpawnType().getSpawnPacket(this)); - playerConnection.sendPacket(getVelocityPacket()); - playerConnection.sendPacket(getMetadataPacket()); - - // Equipments synchronization - syncEquipments(playerConnection); - - if (hasPassenger()) { - playerConnection.sendPacket(getPassengersPacket()); - } - - return result; - } - } - - @Override - public boolean removeViewer(@NotNull Player player) { - synchronized (entityTypeLock) { - return super.removeViewer(player); - } - } - - /** - * Changes the entity type of this entity. - *

- * Works by changing the internal entity type field and by calling {@link #removeViewer(Player)} - * followed by {@link #addViewer(Player)} to all current viewers. - *

- * Be aware that this only change the visual of the entity, the {@link net.minestom.server.collision.BoundingBox} - * will not be modified. - * - * @param entityType the new entity type - */ - public void switchEntityType(@NotNull EntityType entityType) { - synchronized (entityTypeLock) { - this.entityType = entityType; - - Set viewers = new HashSet<>(getViewers()); - getViewers().forEach(this::removeViewer); - viewers.forEach(this::addViewer); - } - } - /** * Gets the kill animation delay before vanishing the entity. * @@ -167,7 +89,6 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent return removalAnimationDelay; } - /** * Changes the removal animation delay of the entity. *

@@ -221,78 +142,6 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent this.target = target; } - @NotNull - @Override - public ItemStack getItemInMainHand() { - return mainHandItem; - } - - @Override - public void setItemInMainHand(@NotNull ItemStack itemStack) { - this.mainHandItem = itemStack; - syncEquipment(EntityEquipmentPacket.Slot.MAIN_HAND); - } - - @NotNull - @Override - public ItemStack getItemInOffHand() { - return offHandItem; - } - - @Override - public void setItemInOffHand(@NotNull ItemStack itemStack) { - this.offHandItem = itemStack; - syncEquipment(EntityEquipmentPacket.Slot.OFF_HAND); - } - - @NotNull - @Override - public ItemStack getHelmet() { - return helmet; - } - - @Override - public void setHelmet(@NotNull ItemStack itemStack) { - this.helmet = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.HELMET); - syncEquipment(EntityEquipmentPacket.Slot.HELMET); - } - - @NotNull - @Override - public ItemStack getChestplate() { - return chestplate; - } - - @Override - public void setChestplate(@NotNull ItemStack itemStack) { - this.chestplate = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.CHESTPLATE); - syncEquipment(EntityEquipmentPacket.Slot.CHESTPLATE); - } - - @NotNull - @Override - public ItemStack getLeggings() { - return leggings; - } - - @Override - public void setLeggings(@NotNull ItemStack itemStack) { - this.leggings = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.LEGGINGS); - syncEquipment(EntityEquipmentPacket.Slot.LEGGINGS); - } - - @NotNull - @Override - public ItemStack getBoots() { - return boots; - } - - @Override - public void setBoots(@NotNull ItemStack itemStack) { - this.boots = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.BOOTS); - syncEquipment(EntityEquipmentPacket.Slot.BOOTS); - } - @NotNull @Override public Navigator getNavigator() { @@ -323,9 +172,4 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent attack(target, false); } - private ItemStack getEquipmentItem(@NotNull ItemStack itemStack, @NotNull ArmorEquipEvent.ArmorSlot armorSlot) { - ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent(this, itemStack, armorSlot); - callEvent(ArmorEquipEvent.class, armorEquipEvent); - return armorEquipEvent.getArmorItem(); - } } diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index f69a2995b..771d32f23 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -9,15 +9,13 @@ import net.minestom.server.entity.metadata.LivingEntityMeta; import net.minestom.server.event.entity.EntityDamageEvent; import net.minestom.server.event.entity.EntityDeathEvent; import net.minestom.server.event.entity.EntityFireEvent; +import net.minestom.server.event.item.ArmorEquipEvent; import net.minestom.server.event.item.PickupItemEvent; import net.minestom.server.instance.Chunk; import net.minestom.server.instance.block.Block; import net.minestom.server.inventory.EquipmentHandler; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.packet.server.play.CollectItemPacket; -import net.minestom.server.network.packet.server.play.EntityAnimationPacket; -import net.minestom.server.network.packet.server.play.EntityPropertiesPacket; -import net.minestom.server.network.packet.server.play.SoundEffectPacket; +import net.minestom.server.network.packet.server.play.*; import net.minestom.server.scoreboard.Team; import net.minestom.server.sound.Sound; import net.minestom.server.sound.SoundCategory; @@ -75,10 +73,20 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { private int arrowCount; private float health = 1F; + // Equipments + private ItemStack mainHandItem; + private ItemStack offHandItem; + + private ItemStack helmet; + private ItemStack chestplate; + private ItemStack leggings; + private ItemStack boots; + public LivingEntity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { super(entityType, spawnPosition); setupAttributes(); setGravity(0.02f, 0.08f, 3.92f); + initEquipments(); } /** @@ -88,6 +96,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { super(entityType, uuid, spawnPosition); setupAttributes(); setGravity(0.02f, 0.08f, 3.92f); + initEquipments(); } public LivingEntity(@NotNull EntityType entityType) { @@ -101,6 +110,94 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { this(entityType, uuid, new Position()); } + private void initEquipments() { + this.mainHandItem = ItemStack.getAirItem(); + this.offHandItem = ItemStack.getAirItem(); + + this.helmet = ItemStack.getAirItem(); + this.chestplate = ItemStack.getAirItem(); + this.leggings = ItemStack.getAirItem(); + this.boots = ItemStack.getAirItem(); + } + + @NotNull + @Override + public ItemStack getItemInMainHand() { + return mainHandItem; + } + + @Override + public void setItemInMainHand(@NotNull ItemStack itemStack) { + this.mainHandItem = itemStack; + syncEquipment(EntityEquipmentPacket.Slot.MAIN_HAND); + } + + @NotNull + @Override + public ItemStack getItemInOffHand() { + return offHandItem; + } + + @Override + public void setItemInOffHand(@NotNull ItemStack itemStack) { + this.offHandItem = itemStack; + syncEquipment(EntityEquipmentPacket.Slot.OFF_HAND); + } + + @NotNull + @Override + public ItemStack getHelmet() { + return helmet; + } + + @Override + public void setHelmet(@NotNull ItemStack itemStack) { + this.helmet = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.HELMET); + syncEquipment(EntityEquipmentPacket.Slot.HELMET); + } + + @NotNull + @Override + public ItemStack getChestplate() { + return chestplate; + } + + @Override + public void setChestplate(@NotNull ItemStack itemStack) { + this.chestplate = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.CHESTPLATE); + syncEquipment(EntityEquipmentPacket.Slot.CHESTPLATE); + } + + @NotNull + @Override + public ItemStack getLeggings() { + return leggings; + } + + @Override + public void setLeggings(@NotNull ItemStack itemStack) { + this.leggings = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.LEGGINGS); + syncEquipment(EntityEquipmentPacket.Slot.LEGGINGS); + } + + @NotNull + @Override + public ItemStack getBoots() { + return boots; + } + + @Override + public void setBoots(@NotNull ItemStack itemStack) { + this.boots = getEquipmentItem(itemStack, ArmorEquipEvent.ArmorSlot.BOOTS); + syncEquipment(EntityEquipmentPacket.Slot.BOOTS); + } + + private ItemStack getEquipmentItem(@NotNull ItemStack itemStack, @NotNull ArmorEquipEvent.ArmorSlot armorSlot) { + ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent(this, itemStack, armorSlot); + callEvent(ArmorEquipEvent.class, armorEquipEvent); + return armorEquipEvent.getArmorItem(); + } + @Override public void update(long time) { if (isOnFire()) { @@ -429,6 +526,15 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { this.canPickupItem = canPickupItem; } + @Override + public boolean addViewer0(@NotNull Player player) { + if (!super.addViewer0(player)) { + return false; + } + syncEquipments(player.getPlayerConnection()); + return true; + } + @Override public void setBoundingBox(double x, double y, double z) { super.setBoundingBox(x, y, z); diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 780a092ec..e41392295 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -626,13 +626,10 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public boolean addViewer(@NotNull Player player) { - if (player == this) - return false; - - final boolean result = super.addViewer(player); - if (!result) + public boolean addViewer0(@NotNull Player player) { + if (player == this || !super.addViewer0(player)) { return false; + } PlayerConnection viewerConnection = player.getPlayerConnection(); showPlayer(viewerConnection); @@ -640,18 +637,19 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public boolean removeViewer(@NotNull Player player) { - if (player == this) + public boolean removeViewer0(@NotNull Player player) { + if (player == this || !super.removeViewer0(player)) { return false; + } - boolean result = super.removeViewer(player); PlayerConnection viewerConnection = player.getPlayerConnection(); viewerConnection.sendPacket(getRemovePlayerToList()); // Team - if (this.getTeam() != null && this.getTeam().getMembers().size() == 1) // If team only contains "this" player + if (this.getTeam() != null && this.getTeam().getMembers().size() == 1) {// If team only contains "this" player viewerConnection.sendPacket(this.getTeam().createTeamDestructionPacket()); - return result; + } + return true; } /** diff --git a/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java b/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java index e245ccd57..d293f79b8 100644 --- a/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java +++ b/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java @@ -52,10 +52,12 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler { } @Override - public boolean addViewer(@NotNull Player player) { - final boolean result = super.addViewer(player); + public boolean addViewer0(@NotNull Player player) { + if (!super.addViewer0(player)) { + return false; + } syncEquipments(player.getPlayerConnection()); - return result; + return true; } @Override From 83c5d3c95f8f8527b2702a11ecce6fa44f65e1c7 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 10:38:53 +0300 Subject: [PATCH 35/48] Marked Entity#getEntityType as NotNull --- src/main/java/net/minestom/server/entity/Entity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 7dd8b13da..1bd78dcac 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -709,6 +709,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * * @return the entity type */ + @NotNull public EntityType getEntityType() { return entityType; } From 8a57918fe9e6cdd7bb16d6a3906090b4165f40d5 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 11:39:37 +0300 Subject: [PATCH 36/48] LivingEntity is not abstract anymore --- src/main/java/net/minestom/server/entity/LivingEntity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index 771d32f23..2fc96e1da 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -34,7 +34,7 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; //TODO: Default attributes registration (and limitation ?) -public abstract class LivingEntity extends Entity implements EquipmentHandler { +public class LivingEntity extends Entity implements EquipmentHandler { // Item pickup protected boolean canPickupItem; @@ -248,6 +248,11 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { } } + @Override + public void spawn() { + + } + /** * Gets the amount of arrows in the entity. * From 9e6aaa10882fe73d2b7c72382f25fd5a7e7679a1 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 12:02:40 +0300 Subject: [PATCH 37/48] Removed TestArrow from the demo scene --- src/test/java/demo/entity/TestArrow.java | 25 ------------------------ 1 file changed, 25 deletions(-) delete mode 100644 src/test/java/demo/entity/TestArrow.java diff --git a/src/test/java/demo/entity/TestArrow.java b/src/test/java/demo/entity/TestArrow.java deleted file mode 100644 index fef5a70f5..000000000 --- a/src/test/java/demo/entity/TestArrow.java +++ /dev/null @@ -1,25 +0,0 @@ -package demo.entity; - -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.LivingEntity; -import net.minestom.server.entity.ObjectEntity; -import net.minestom.server.utils.Position; - -public class TestArrow extends ObjectEntity { - - private LivingEntity shooter; - - public TestArrow(LivingEntity shooter, Position spawnPosition) { - super(EntityType.ARROW, spawnPosition); - this.shooter = shooter; - } - - @Override - public int getObjectData() { - return shooter.getEntityId() + 1; - } - - public LivingEntity getShooter() { - return shooter; - } -} From 8ca43c4caa3842f3af7abe61fa478de39a12079c Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 13:00:02 +0300 Subject: [PATCH 38/48] Entity is not abstract anymore --- src/main/java/net/minestom/server/entity/Entity.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 1bd78dcac..0ac1860cc 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -56,7 +56,7 @@ import java.util.function.Consumer; *

* To create your own entity you probably want to extends {@link ObjectEntity} or {@link EntityCreature} instead. */ -public abstract class Entity implements Viewable, EventHandler, DataContainer, PermissionHandler { +public class Entity implements Viewable, EventHandler, DataContainer, PermissionHandler { private static final Map entityById = new ConcurrentHashMap<>(); private static final Map entityByUuid = new ConcurrentHashMap<>(); @@ -201,12 +201,16 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P * * @param time time of the update in milliseconds */ - public abstract void update(long time); + public void update(long time) { + + } /** * Called when a new instance is set. */ - public abstract void spawn(); + public void spawn() { + + } public boolean isOnGround() { return onGround || EntityUtils.isOnGround(this) /* backup for levitating entities */; From 046ebc03f61d0ed35dff48822cbdfe4e182a9808 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 13:07:55 +0300 Subject: [PATCH 39/48] AbstractProjectile now extends Entity and not ObjectEntity --- .../minestom/server/entity/metadata/arrow/ArrowMeta.java | 3 +-- .../server/entity/type/projectile/AbstractProjectile.java | 3 ++- .../server/entity/type/projectile/EntityAbstractArrow.java | 6 ------ .../minestom/server/entity/type/projectile/EntityArrow.java | 2 ++ .../server/entity/type/projectile/EntityEyeOfEnder.java | 4 ---- .../server/entity/type/projectile/EntityPotion.java | 5 ----- .../server/entity/type/projectile/EntitySpectralArrow.java | 2 ++ 7 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java index 19a96afb4..d02f96cdc 100644 --- a/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/arrow/ArrowMeta.java @@ -2,12 +2,11 @@ package net.minestom.server.entity.metadata.arrow; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; -import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.entity.metadata.ObjectDataProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class ArrowMeta extends EntityMeta implements ObjectDataProvider { +public class ArrowMeta extends AbstractArrowMeta implements ObjectDataProvider { private Entity shooter; diff --git a/src/main/java/net/minestom/server/entity/type/projectile/AbstractProjectile.java b/src/main/java/net/minestom/server/entity/type/projectile/AbstractProjectile.java index 5adf4d6f1..c4ad5c8eb 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/AbstractProjectile.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/AbstractProjectile.java @@ -8,12 +8,13 @@ import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public abstract class AbstractProjectile extends ObjectEntity implements Projectile { +public abstract class AbstractProjectile extends Entity implements Projectile { private final Entity shooter; public AbstractProjectile(@Nullable Entity shooter, @NotNull EntityType entityType, @NotNull Position spawnPosition) { super(entityType, spawnPosition); + setGravity(0.02f, 0.04f, 1.96f); this.shooter = shooter; } diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java index 32af51d08..bab55e201 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityAbstractArrow.java @@ -119,10 +119,4 @@ public class EntityAbstractArrow extends AbstractProjectile { return false; } - @Override - public int getObjectData() { - Entity shooter = getShooter(); - return shooter == null ? 0 : shooter.getEntityId() + 1; - } - } diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java index a82d7ca0d..a5a3efc21 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityArrow.java @@ -3,6 +3,7 @@ package net.minestom.server.entity.type.projectile; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; import net.minestom.server.entity.Metadata; +import net.minestom.server.entity.metadata.arrow.ArrowMeta; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -11,6 +12,7 @@ public class EntityArrow extends EntityAbstractArrow { public EntityArrow(@Nullable Entity shooter, @NotNull Position spawnPosition) { super(shooter, EntityType.ARROW, spawnPosition); + ((ArrowMeta) getEntityMeta()).setShooter(shooter); } } diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java index 79a4637f8..609a87377 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java @@ -40,8 +40,4 @@ public class EntityEyeOfEnder extends AbstractProjectile { this.metadata.setIndex((byte) 7, Metadata.Slot(itemStack)); } - @Override - public int getObjectData() { - return 0; - } } diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java index 7c0ba2b4f..f7b9f17de 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java @@ -20,11 +20,6 @@ public class EntityPotion extends AbstractProjectile { setPotion(potion); } - @Override - public int getObjectData() { - return 0; - } - @NotNull public ItemStack getPotion() { return metadata.getIndex((byte) 7, ItemStack.getAirItem()); diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntitySpectralArrow.java b/src/main/java/net/minestom/server/entity/type/projectile/EntitySpectralArrow.java index 944b13690..21b958d41 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntitySpectralArrow.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntitySpectralArrow.java @@ -2,6 +2,7 @@ package net.minestom.server.entity.type.projectile; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.metadata.arrow.SpectralArrowMeta; import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,6 +11,7 @@ public class EntitySpectralArrow extends EntityAbstractArrow { public EntitySpectralArrow(@Nullable Entity shooter, @NotNull Position spawnPosition) { super(shooter, EntityType.SPECTRAL_ARROW, spawnPosition); + ((SpectralArrowMeta) getEntityMeta()).setShooter(shooter); } } From e13bca1fdd9ef4e9b78831b19aba9434a46a2a0e Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 13:37:40 +0300 Subject: [PATCH 40/48] default scope to EAST case in EntitySpawnType.PAINTING --- src/main/java/net/minestom/server/entity/EntitySpawnType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/entity/EntitySpawnType.java b/src/main/java/net/minestom/server/entity/EntitySpawnType.java index d2d062a16..9ebd261a5 100644 --- a/src/main/java/net/minestom/server/entity/EntitySpawnType.java +++ b/src/main/java/net/minestom/server/entity/EntitySpawnType.java @@ -93,7 +93,7 @@ public enum EntitySpawnType { case NORTH: packet.direction = 2; break; - default: + case EAST: packet.direction = 3; break; } From 3c5b76c0a806384190e70d1718a5da4a09465a8d Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 13:39:22 +0300 Subject: [PATCH 41/48] Tiny improvement for Entity#switchEntityType --- src/main/java/net/minestom/server/entity/Entity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 0ac1860cc..8892e964b 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -393,8 +393,8 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); Set viewers = new HashSet<>(getViewers()); - getViewers().forEach(this::removeViewer); - viewers.forEach(this::addViewer); + getViewers().forEach(this::removeViewer0); + viewers.forEach(this::addViewer0); } } From 23ee4c7fdfc8c95b9105bb4bf09bed287b25aea6 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 13:56:10 +0300 Subject: [PATCH 42/48] Deprecated Entity constructors accepting spawnPosition and introduces Entity#setInstance(Instance, Position) --- .../net/minestom/server/entity/Entity.java | 53 ++++++++++++++++--- .../server/entity/EntityCreature.java | 21 ++++++-- .../minestom/server/entity/LivingEntity.java | 24 +++++---- .../net/minestom/server/entity/Player.java | 1 + .../net/minestom/server/utils/Position.java | 11 ++++ 5 files changed, 88 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 8892e964b..e6312f7b2 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -123,6 +123,30 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission */ private final Object entityTypeLock = new Object(); + public Entity(@NotNull EntityType entityType, @NotNull UUID uuid) { + this.id = generateId(); + this.entityType = entityType; + this.uuid = uuid; + this.position = new Position(); + this.lastX = this.position.getX(); + this.lastY = this.position.getY(); + this.lastZ = this.position.getZ(); + + setBoundingBox(entityType.getWidth(), entityType.getHeight(), entityType.getWidth()); + + this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); + + setAutoViewable(true); + + Entity.entityById.put(id, this); + Entity.entityByUuid.put(uuid, this); + } + + public Entity(@NotNull EntityType entityType) { + this(entityType, UUID.randomUUID()); + } + + @Deprecated public Entity(@NotNull EntityType entityType, @NotNull UUID uuid, @NotNull Position spawnPosition) { this.id = generateId(); this.entityType = entityType; @@ -142,14 +166,11 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission Entity.entityByUuid.put(uuid, this); } + @Deprecated public Entity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { this(entityType, UUID.randomUUID(), spawnPosition); } - public Entity(@NotNull EntityType entityType) { - this(entityType, new Position()); - } - /** * Schedules a task to be run during the next entity tick. * It ensures that the task will be executed in the same thread as the entity (depending of the {@link ThreadProvider}). @@ -805,13 +826,13 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission } /** - * Changes the entity instance. + * Changes the entity instance, i.e. spawns it. * * @param instance the new instance of the entity - * @throws NullPointerException if {@code instance} is null + * @param spawnPosition the spawn position for the entity. * @throws IllegalStateException if {@code instance} has not been registered in {@link InstanceManager} */ - public void setInstance(@NotNull Instance instance) { + public void setInstance(@NotNull Instance instance, @NotNull Position spawnPosition) { Check.stateCondition(!instance.isRegistered(), "Instances need to be registered, please use InstanceManager#registerInstance or InstanceManager#registerSharedInstance"); @@ -819,6 +840,11 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission this.instance.UNSAFE_removeEntity(this); } + this.position.set(spawnPosition); + this.lastX = this.position.getX(); + this.lastY = this.position.getY(); + this.lastZ = this.position.getZ(); + this.isActive = true; this.instance = instance; instance.UNSAFE_addEntity(this); @@ -827,6 +853,19 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission callEvent(EntitySpawnEvent.class, entitySpawnEvent); } + /** + * Changes the entity instance. + * + * @param instance the new instance of the entity + * @deprecated Use {@link Entity#setInstance(Instance, Position)} instead. + * @throws NullPointerException if {@code instance} is null + * @throws IllegalStateException if {@code instance} has not been registered in {@link InstanceManager} + */ + @Deprecated + public void setInstance(@NotNull Instance instance) { + setInstance(instance, this.position); + } + /** * Gets the entity current velocity. * diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index 090dd0f0a..adf594dd7 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -16,6 +16,7 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; +import java.util.UUID; public class EntityCreature extends LivingEntity implements NavigableEntity, EntityAI { @@ -29,15 +30,27 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent private Entity target; - public EntityCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); - + /** + * Constructor which allows to specify an UUID. Only use if you know what you are doing! + */ + public EntityCreature(@NotNull EntityType entityType, @NotNull UUID uuid) { + super(entityType, uuid); heal(); } + public EntityCreature(@NotNull EntityType entityType) { + this(entityType, UUID.randomUUID()); + } + + @Deprecated + public EntityCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + super(entityType, spawnPosition); + heal(); + } + + @Deprecated public EntityCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { this(entityType, spawnPosition); - if (instance != null) { setInstance(instance); } diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index 2fc96e1da..b34d7fc46 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -82,16 +82,24 @@ public class LivingEntity extends Entity implements EquipmentHandler { private ItemStack leggings; private ItemStack boots; - public LivingEntity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { - super(entityType, spawnPosition); + /** + * Constructor which allows to specify an UUID. Only use if you know what you are doing! + */ + public LivingEntity(@NotNull EntityType entityType, @NotNull UUID uuid) { + this(entityType, uuid, new Position()); setupAttributes(); setGravity(0.02f, 0.08f, 3.92f); initEquipments(); } + public LivingEntity(@NotNull EntityType entityType) { + this(entityType, UUID.randomUUID()); + } + /** * Constructor which allows to specify an UUID. Only use if you know what you are doing! */ + @Deprecated public LivingEntity(@NotNull EntityType entityType, @NotNull UUID uuid, @NotNull Position spawnPosition) { super(entityType, uuid, spawnPosition); setupAttributes(); @@ -99,15 +107,9 @@ public class LivingEntity extends Entity implements EquipmentHandler { initEquipments(); } - public LivingEntity(@NotNull EntityType entityType) { - this(entityType, new Position()); - } - - /** - * Constructor which allows to specify an UUID. Only use if you know what you are doing! - */ - public LivingEntity(@NotNull EntityType entityType, @NotNull UUID uuid) { - this(entityType, uuid, new Position()); + @Deprecated + public LivingEntity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { + this(entityType, UUID.randomUUID(), spawnPosition); } private void initEquipments() { diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index e41392295..8b5d9147d 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -661,6 +661,7 @@ public class Player extends LivingEntity implements CommandSender { * @param instance the new player instance * @param spawnPosition the new position of the player */ + @Override public void setInstance(@NotNull Instance instance, @NotNull Position spawnPosition) { Check.argCondition(this.instance == instance, "Instance should be different than the current one"); diff --git a/src/main/java/net/minestom/server/utils/Position.java b/src/main/java/net/minestom/server/utils/Position.java index bea0d25d0..3527c9f29 100644 --- a/src/main/java/net/minestom/server/utils/Position.java +++ b/src/main/java/net/minestom/server/utils/Position.java @@ -336,6 +336,17 @@ public class Position implements PublicCloneable { this.z = z; } + /** + * Changes the position to the given one. + * + * @param position the new position. + */ + public void set(Position position) { + this.x = position.x; + this.y = position.y; + this.z = position.z; + } + /** * Gets the position yaw. * From 6192d1fead8fe25f9ea89241a34c6caa074ded4a Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Thu, 25 Feb 2021 14:40:14 +0300 Subject: [PATCH 43/48] removed duplicating code piece --- .../net/minestom/server/entity/Entity.java | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index e6312f7b2..b4ce6973e 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -128,9 +128,6 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission this.entityType = entityType; this.uuid = uuid; this.position = new Position(); - this.lastX = this.position.getX(); - this.lastY = this.position.getY(); - this.lastZ = this.position.getZ(); setBoundingBox(entityType.getWidth(), entityType.getHeight(), entityType.getWidth()); @@ -148,22 +145,11 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission @Deprecated public Entity(@NotNull EntityType entityType, @NotNull UUID uuid, @NotNull Position spawnPosition) { - this.id = generateId(); - this.entityType = entityType; - this.uuid = uuid; - this.position = spawnPosition.clone(); + this(entityType, uuid); + this.position.set(spawnPosition); this.lastX = spawnPosition.getX(); this.lastY = spawnPosition.getY(); this.lastZ = spawnPosition.getZ(); - - setBoundingBox(entityType.getWidth(), entityType.getHeight(), entityType.getWidth()); - - this.entityMeta = entityType.getMetaConstructor().apply(this, this.metadata); - - setAutoViewable(true); - - Entity.entityById.put(id, this); - Entity.entityByUuid.put(uuid, this); } @Deprecated From 7da3a1697861751c82e3017560237bac3b5c39d7 Mon Sep 17 00:00:00 2001 From: themode Date: Thu, 25 Feb 2021 15:35:31 +0100 Subject: [PATCH 44/48] Fix connection loop --- src/main/java/net/minestom/server/entity/Entity.java | 2 -- src/main/java/net/minestom/server/entity/Player.java | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index b4ce6973e..018c28d37 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -843,11 +843,9 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission * Changes the entity instance. * * @param instance the new instance of the entity - * @deprecated Use {@link Entity#setInstance(Instance, Position)} instead. * @throws NullPointerException if {@code instance} is null * @throws IllegalStateException if {@code instance} has not been registered in {@link InstanceManager} */ - @Deprecated public void setInstance(@NotNull Instance instance) { setInstance(instance, this.position); } diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index f63c2b837..7c287bf8b 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -733,7 +733,7 @@ public class Player extends LivingEntity implements CommandSender { * @param spawnPosition the position to teleport the player * @param firstSpawn true if this is the player first spawn */ - private void spawnPlayer(@NotNull Instance instance, @Nullable Position spawnPosition, + private void spawnPlayer(@NotNull Instance instance, @NotNull Position spawnPosition, boolean firstSpawn, boolean updateChunks) { // Clear previous instance elements if (!firstSpawn) { @@ -741,9 +741,9 @@ public class Player extends LivingEntity implements CommandSender { this.viewableEntities.forEach(entity -> entity.removeViewer(this)); } - super.setInstance(instance); + super.setInstance(instance, spawnPosition); - if (spawnPosition != null && !position.isSimilar(spawnPosition)) { + if (!position.isSimilar(spawnPosition)) { teleport(spawnPosition); } else if (updateChunks) { // Send newly visible chunks to player once spawned in the instance From a0d5ac12bc40a5c0c8dce2e0e8e8ffc72f2e0d03 Mon Sep 17 00:00:00 2001 From: themode Date: Thu, 25 Feb 2021 15:38:59 +0100 Subject: [PATCH 45/48] Small literal argument cleanup --- .../builder/arguments/ArgumentEnum.java | 10 -------- .../builder/arguments/ArgumentWord.java | 24 ++++++------------- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java index 2ab8ed3f5..7d91f157a 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentEnum.java @@ -6,7 +6,6 @@ import net.minestom.server.network.packet.server.play.DeclareCommandsPacket; import org.jetbrains.annotations.NotNull; import java.util.Locale; -import java.util.function.Consumer; import java.util.function.Function; @SuppressWarnings("rawtypes") @@ -41,14 +40,6 @@ public class ArgumentEnum extends Argument { @Override public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) { - // Add the single word properties + parser - final Consumer wordConsumer = node -> { - node.parser = "brigadier:string"; - node.properties = packetWriter -> { - packetWriter.writeVarInt(0); // Single word - }; - }; - // Create a primitive array for mapping DeclareCommandsPacket.Node[] nodes = new DeclareCommandsPacket.Node[this.values.length]; @@ -59,7 +50,6 @@ public class ArgumentEnum extends Argument { argumentNode.flags = DeclareCommandsPacket.getFlag(DeclareCommandsPacket.NodeType.LITERAL, executable, false, false); argumentNode.name = this.format.formatter.apply(this.values[i].name()); - wordConsumer.accept(argumentNode); nodes[i] = argumentNode; } nodeMaker.addNodes(nodes); diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentWord.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentWord.java index 64a6a7239..8b7ca48a3 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentWord.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentWord.java @@ -8,8 +8,6 @@ import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.function.Consumer; - /** * Represents a single word in the command. *

@@ -72,20 +70,10 @@ public class ArgumentWord extends Argument { @Override public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) { - - // Add the single word properties + parser - final Consumer wordConsumer = node -> { - node.parser = "brigadier:string"; - node.properties = packetWriter -> { - packetWriter.writeVarInt(0); // Single word - }; - }; - - final boolean hasRestriction = this.hasRestrictions(); - if (hasRestriction) { + if (restrictions != null) { // Create a primitive array for mapping - DeclareCommandsPacket.Node[] nodes = new DeclareCommandsPacket.Node[this.getRestrictions().length]; + DeclareCommandsPacket.Node[] nodes = new DeclareCommandsPacket.Node[this.restrictions.length]; // Create a node for each restrictions as literal for (int i = 0; i < nodes.length; i++) { @@ -93,8 +81,7 @@ public class ArgumentWord extends Argument { argumentNode.flags = DeclareCommandsPacket.getFlag(DeclareCommandsPacket.NodeType.LITERAL, executable, false, false); - argumentNode.name = this.getRestrictions()[i]; - wordConsumer.accept(argumentNode); + argumentNode.name = this.restrictions[i]; nodes[i] = argumentNode; } @@ -102,7 +89,10 @@ public class ArgumentWord extends Argument { } else { // Can be any word, add only one argument node DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(this, executable, false, false); - wordConsumer.accept(argumentNode); + argumentNode.parser = "brigadier:string"; + argumentNode.properties = packetWriter -> { + packetWriter.writeVarInt(0); // Single word + }; nodeMaker.addNodes(new DeclareCommandsPacket.Node[]{argumentNode}); } } From e8e8022ec68f29b653201e688c47ac2dbbd7619b Mon Sep 17 00:00:00 2001 From: themode Date: Thu, 25 Feb 2021 15:48:48 +0100 Subject: [PATCH 46/48] Fix pathfinding + cleanup --- .../java/net/minestom/server/entity/Entity.java | 6 ++++-- .../net/minestom/server/entity/EntityCreature.java | 9 ++------- .../net/minestom/server/entity/LivingEntity.java | 14 ++++---------- .../java/net/minestom/server/entity/Metadata.java | 4 +--- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 018c28d37..7d9298bdb 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -75,7 +75,7 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission protected Entity vehicle; // Velocity - protected Vector velocity = new Vector(); // Movement in block per second + protected Vector velocity = new Vector(); // Movement in block per second protected boolean hasPhysics = true; protected double gravityDragPerTick; @@ -814,7 +814,7 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission /** * Changes the entity instance, i.e. spawns it. * - * @param instance the new instance of the entity + * @param instance the new instance of the entity * @param spawnPosition the spawn position for the entity. * @throws IllegalStateException if {@code instance} has not been registered in {@link InstanceManager} */ @@ -845,7 +845,9 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission * @param instance the new instance of the entity * @throws NullPointerException if {@code instance} is null * @throws IllegalStateException if {@code instance} has not been registered in {@link InstanceManager} + * @deprecated Use {@link Entity#setInstance(Instance, Position)} instead. */ + @Deprecated public void setInstance(@NotNull Instance instance) { setInstance(instance, this.position); } diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index adf594dd7..538338e76 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -69,15 +69,10 @@ public class EntityCreature extends LivingEntity implements NavigableEntity, Ent } @Override - public void setInstance(@NotNull Instance instance) { + public void setInstance(@NotNull Instance instance, @NotNull Position spawnPosition) { this.navigator.setPathFinder(new HydrazinePathFinder(navigator.getPathingEntity(), instance.getInstanceSpace())); - super.setInstance(instance); - } - - @Override - public void spawn() { - + super.setInstance(instance, spawnPosition); } @Override diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index b34d7fc46..58ff055e0 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -26,7 +26,6 @@ import net.minestom.server.utils.block.BlockIterator; import net.minestom.server.utils.time.CooldownUtils; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.time.UpdateOption; -import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -250,11 +249,6 @@ public class LivingEntity extends Entity implements EquipmentHandler { } } - @Override - public void spawn() { - - } - /** * Gets the amount of arrows in the entity. * @@ -723,10 +717,10 @@ public class LivingEntity extends Entity implements EquipmentHandler { * @return if the current entity has line of sight to the given one. */ public boolean hasLineOfSight(Entity entity) { - Vector start = getPosition().toVector().add(0D, getEyeHeight(), 0D); - Vector end = entity.getPosition().toVector().add(0D, getEyeHeight(), 0D); - Vector direction = end.subtract(start); - int maxDistance = (int) Math.ceil(direction.length()); + Vector start = getPosition().toVector().add(0D, getEyeHeight(), 0D); + Vector end = entity.getPosition().toVector().add(0D, getEyeHeight(), 0D); + Vector direction = end.subtract(start); + int maxDistance = (int) Math.ceil(direction.length()); Iterator it = new BlockIterator(start, direction.normalize(), 0D, maxDistance); while (it.hasNext()) { diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index 8d90adc3e..47e049df2 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -102,9 +102,7 @@ public class Metadata { } public static Value NBT(@NotNull NBT nbt) { - return new Value<>(TYPE_NBT, nbt, writer -> { - writer.writeNBT("", nbt); - }); + return new Value<>(TYPE_NBT, nbt, writer -> writer.writeNBT("", nbt)); } public static Value VillagerData(int villagerType, From 882720c822bbf8650564e00160eb32b58411cd64 Mon Sep 17 00:00:00 2001 From: themode Date: Thu, 25 Feb 2021 19:01:29 +0100 Subject: [PATCH 47/48] Added RawJsonMessage constructor taking a json object as a string to reduce boilerplate code --- src/main/java/net/minestom/server/chat/JsonMessage.java | 5 +++++ .../java/net/minestom/server/utils/binary/BinaryReader.java | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minestom/server/chat/JsonMessage.java b/src/main/java/net/minestom/server/chat/JsonMessage.java index 33e27d3f7..3842b738a 100644 --- a/src/main/java/net/minestom/server/chat/JsonMessage.java +++ b/src/main/java/net/minestom/server/chat/JsonMessage.java @@ -2,6 +2,7 @@ package net.minestom.server.chat; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import org.jetbrains.annotations.NotNull; import java.util.Objects; @@ -109,6 +110,10 @@ public abstract class JsonMessage { this.jsonObject = jsonObject; } + public RawJsonMessage(@NotNull String jsonObject) { + this.jsonObject = JsonParser.parseString(jsonObject).getAsJsonObject(); + } + @NotNull @Override public JsonObject getJsonObject() { diff --git a/src/main/java/net/minestom/server/utils/binary/BinaryReader.java b/src/main/java/net/minestom/server/utils/binary/BinaryReader.java index 147a58153..b8cb1b97e 100644 --- a/src/main/java/net/minestom/server/utils/binary/BinaryReader.java +++ b/src/main/java/net/minestom/server/utils/binary/BinaryReader.java @@ -1,7 +1,5 @@ package net.minestom.server.utils.binary; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minestom.server.chat.JsonMessage; @@ -152,8 +150,7 @@ public class BinaryReader extends InputStream { } public JsonMessage readJsonMessage(int maxLength) { - final String string = readSizedString(maxLength); - final JsonObject jsonObject = JsonParser.parseString(string).getAsJsonObject(); + final String jsonObject = readSizedString(maxLength); return new JsonMessage.RawJsonMessage(jsonObject); } From d3bea57ddc9885a79291d4f15078f66e24d16b9a Mon Sep 17 00:00:00 2001 From: TheMode Date: Thu, 25 Feb 2021 20:14:13 +0100 Subject: [PATCH 48/48] Packet caching cleanup Signed-off-by: TheMode --- .../network/packet/server/play/ChunkDataPacket.java | 6 +++--- .../packet/server/play/UpdateLightPacket.java | 7 ++++--- .../minestom/server/utils/cache/CacheablePacket.java | 5 +++-- .../server/utils/cache/TemporaryPacketCache.java | 12 ------------ 4 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 src/main/java/net/minestom/server/utils/cache/TemporaryPacketCache.java diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java index 0e75291ce..230071f4d 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java @@ -15,7 +15,7 @@ import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.Utils; import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.cache.CacheablePacket; -import net.minestom.server.utils.cache.TemporaryPacketCache; +import net.minestom.server.utils.cache.TemporaryCache; import net.minestom.server.utils.chunk.ChunkUtils; import net.minestom.server.world.biomes.Biome; import org.jetbrains.annotations.NotNull; @@ -27,7 +27,7 @@ import java.util.UUID; public class ChunkDataPacket implements ServerPacket, CacheablePacket { private static final BlockManager BLOCK_MANAGER = MinecraftServer.getBlockManager(); - private static final TemporaryPacketCache CACHE = new TemporaryPacketCache(10000L); + private static final TemporaryCache CACHE = new TemporaryCache<>(10000L); public boolean fullChunk; public Biome[] biomes; @@ -139,7 +139,7 @@ public class ChunkDataPacket implements ServerPacket, CacheablePacket { @NotNull @Override - public TemporaryPacketCache getCache() { + public TemporaryCache getCache() { return CACHE; } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java index a98aceb1d..55c2fafe5 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java @@ -1,10 +1,11 @@ package net.minestom.server.network.packet.server.play; +import io.netty.buffer.ByteBuf; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.cache.CacheablePacket; -import net.minestom.server.utils.cache.TemporaryPacketCache; +import net.minestom.server.utils.cache.TemporaryCache; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -13,7 +14,7 @@ import java.util.UUID; public class UpdateLightPacket implements ServerPacket, CacheablePacket { - private static final TemporaryPacketCache CACHE = new TemporaryPacketCache(10000L); + private static final TemporaryCache CACHE = new TemporaryCache<>(10000L); public int chunkX; public int chunkZ; @@ -71,7 +72,7 @@ public class UpdateLightPacket implements ServerPacket, CacheablePacket { @NotNull @Override - public TemporaryPacketCache getCache() { + public TemporaryCache getCache() { return CACHE; } diff --git a/src/main/java/net/minestom/server/utils/cache/CacheablePacket.java b/src/main/java/net/minestom/server/utils/cache/CacheablePacket.java index 38729c77b..b607fb97a 100644 --- a/src/main/java/net/minestom/server/utils/cache/CacheablePacket.java +++ b/src/main/java/net/minestom/server/utils/cache/CacheablePacket.java @@ -1,5 +1,6 @@ package net.minestom.server.utils.cache; +import io.netty.buffer.ByteBuf; import net.minestom.server.network.packet.server.ServerPacket; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,14 +23,14 @@ public interface CacheablePacket { * @return the temporary packet cache */ @NotNull - TemporaryPacketCache getCache(); + TemporaryCache getCache(); /** * Gets the identifier of this packet. *

* Used to verify if this packet is already cached or not. * - * @return this packet identifier, null to do not retrieve the cache + * @return this packet identifier, null to prevent caching */ @Nullable UUID getIdentifier(); diff --git a/src/main/java/net/minestom/server/utils/cache/TemporaryPacketCache.java b/src/main/java/net/minestom/server/utils/cache/TemporaryPacketCache.java deleted file mode 100644 index 4e7b975b0..000000000 --- a/src/main/java/net/minestom/server/utils/cache/TemporaryPacketCache.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.minestom.server.utils.cache; - -import io.netty.buffer.ByteBuf; - -/** - * Convenient superclass of {@link TemporaryCache} explicitly for packet to store a {@link ByteBuf}. - */ -public class TemporaryPacketCache extends TemporaryCache { - public TemporaryPacketCache(long keepTime) { - super(keepTime); - } -}