mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-14 19:32:17 +01:00
Refactor boat and minecart metadata to pull out common fields, register new boats, and add a default metadata for the creaking (#2444)
This commit is contained in:
parent
ffe42a243f
commit
5cf30408d2
@ -138,28 +138,38 @@ public final class MetadataHolder {
|
||||
|
||||
private static Map<String, BiFunction<Entity, MetadataHolder, EntityMeta>> createMetaMap() {
|
||||
return Map.<String, BiFunction<Entity, MetadataHolder, EntityMeta>>ofEntries(
|
||||
Map.entry("minecraft:acacia_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:acacia_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:allay", AllayMeta::new),
|
||||
Map.entry("minecraft:area_effect_cloud", AreaEffectCloudMeta::new),
|
||||
Map.entry("minecraft:armadillo", ArmadilloMeta::new),
|
||||
Map.entry("minecraft:armor_stand", ArmorStandMeta::new),
|
||||
Map.entry("minecraft:arrow", ArrowMeta::new),
|
||||
Map.entry("minecraft:axolotl", AxolotlMeta::new),
|
||||
Map.entry("minecraft:bamboo_raft", BoatMeta::new),
|
||||
Map.entry("minecraft:bamboo_chest_raft", BoatMeta::new),
|
||||
Map.entry("minecraft:bat", BatMeta::new),
|
||||
Map.entry("minecraft:bee", BeeMeta::new),
|
||||
Map.entry("minecraft:birch_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:birch_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:blaze", BlazeMeta::new),
|
||||
Map.entry("minecraft:block_display", BlockDisplayMeta::new),
|
||||
Map.entry("minecraft:boat", BoatMeta::new),
|
||||
Map.entry("minecraft:bogged", BoggedMeta::new),
|
||||
Map.entry("minecraft:breeze", BreezeMeta::new),
|
||||
Map.entry("minecraft:breeze_wind_charge", BreezeWindChargeMeta::new),
|
||||
Map.entry("minecraft:chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:camel", CamelMeta::new),
|
||||
Map.entry("minecraft:cat", CatMeta::new),
|
||||
Map.entry("minecraft:cave_spider", CaveSpiderMeta::new),
|
||||
Map.entry("minecraft:cherry_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:cherry_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:chicken", ChickenMeta::new),
|
||||
Map.entry("minecraft:cod", CodMeta::new),
|
||||
Map.entry("minecraft:cow", CowMeta::new),
|
||||
Map.entry("minecraft:creaking", CreakingMeta::new),
|
||||
Map.entry("minecraft:creaking_transient", CreakingMeta::new),
|
||||
Map.entry("minecraft:creeper", CreeperMeta::new),
|
||||
Map.entry("minecraft:dark_oak_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:dark_oak_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:dolphin", DolphinMeta::new),
|
||||
Map.entry("minecraft:donkey", DonkeyMeta::new),
|
||||
Map.entry("minecraft:dragon_fireball", DragonFireballMeta::new),
|
||||
@ -192,12 +202,16 @@ public final class MetadataHolder {
|
||||
Map.entry("minecraft:item", ItemEntityMeta::new),
|
||||
Map.entry("minecraft:item_display", ItemDisplayMeta::new),
|
||||
Map.entry("minecraft:item_frame", ItemFrameMeta::new),
|
||||
Map.entry("minecraft:jungle_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:jungle_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:fireball", FireballMeta::new),
|
||||
Map.entry("minecraft:leash_knot", LeashKnotMeta::new),
|
||||
Map.entry("minecraft:lightning_bolt", LightningBoltMeta::new),
|
||||
Map.entry("minecraft:llama", LlamaMeta::new),
|
||||
Map.entry("minecraft:llama_spit", LlamaSpitMeta::new),
|
||||
Map.entry("minecraft:magma_cube", MagmaCubeMeta::new),
|
||||
Map.entry("minecraft:mangrove_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:mangrove_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:marker", MarkerMeta::new),
|
||||
Map.entry("minecraft:minecart", MinecartMeta::new),
|
||||
Map.entry("minecraft:chest_minecart", ChestMinecartMeta::new),
|
||||
@ -207,11 +221,15 @@ public final class MetadataHolder {
|
||||
Map.entry("minecraft:spawner_minecart", SpawnerMinecartMeta::new),
|
||||
Map.entry("minecraft:text_display", TextDisplayMeta::new),
|
||||
Map.entry("minecraft:tnt_minecart", TntMinecartMeta::new),
|
||||
Map.entry("minecraft:mule", MuleMeta::new),
|
||||
Map.entry("minecraft:mooshroom", MooshroomMeta::new),
|
||||
Map.entry("minecraft:mule", MuleMeta::new),
|
||||
Map.entry("minecraft:oak_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:oak_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:ocelot", OcelotMeta::new),
|
||||
Map.entry("minecraft:ominous_item_spawner", OminousItemSpawnerMeta::new),
|
||||
Map.entry("minecraft:painting", PaintingMeta::new),
|
||||
Map.entry("minecraft:pale_oak_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:pale_oak_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:panda", PandaMeta::new),
|
||||
Map.entry("minecraft:parrot", ParrotMeta::new),
|
||||
Map.entry("minecraft:phantom", PhantomMeta::new),
|
||||
@ -238,6 +256,8 @@ public final class MetadataHolder {
|
||||
Map.entry("minecraft:snowball", SnowballMeta::new),
|
||||
Map.entry("minecraft:spectral_arrow", SpectralArrowMeta::new),
|
||||
Map.entry("minecraft:spider", SpiderMeta::new),
|
||||
Map.entry("minecraft:spruce_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:spruce_chest_boat", BoatMeta::new),
|
||||
Map.entry("minecraft:squid", SquidMeta::new),
|
||||
Map.entry("minecraft:stray", StrayMeta::new),
|
||||
Map.entry("minecraft:strider", StriderMeta::new),
|
||||
|
@ -0,0 +1,40 @@
|
||||
package net.minestom.server.entity.metadata;
|
||||
|
||||
import net.minestom.server.entity.Entity;
|
||||
import net.minestom.server.entity.Metadata;
|
||||
import net.minestom.server.entity.MetadataHolder;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class AbstractVehicleMeta extends EntityMeta {
|
||||
|
||||
public static final byte OFFSET = EntityMeta.MAX_OFFSET;
|
||||
public static final byte MAX_OFFSET = OFFSET + 3;
|
||||
|
||||
public AbstractVehicleMeta(@NotNull Entity entity, @NotNull MetadataHolder metadata) {
|
||||
super(entity, metadata);
|
||||
}
|
||||
|
||||
public int getShakingTicks() {
|
||||
return super.metadata.getIndex(OFFSET, 0);
|
||||
}
|
||||
|
||||
public void setShakingTicks(int value) {
|
||||
super.metadata.setIndex(OFFSET, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public int getShakingDirection() {
|
||||
return super.metadata.getIndex(OFFSET + 1, 1);
|
||||
}
|
||||
|
||||
public void setShakingDirection(int value) {
|
||||
super.metadata.setIndex(OFFSET + 1, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public float getShakingMultiplier() {
|
||||
return super.metadata.getIndex(OFFSET + 2, 0);
|
||||
}
|
||||
|
||||
public void setShakingMultiplier(float value) {
|
||||
super.metadata.setIndex(OFFSET + 2, Metadata.Float(value));
|
||||
}
|
||||
}
|
@ -3,57 +3,42 @@ package net.minestom.server.entity.metadata.minecart;
|
||||
import net.minestom.server.entity.Entity;
|
||||
import net.minestom.server.entity.Metadata;
|
||||
import net.minestom.server.entity.MetadataHolder;
|
||||
import net.minestom.server.entity.metadata.AbstractVehicleMeta;
|
||||
import net.minestom.server.entity.metadata.EntityMeta;
|
||||
import net.minestom.server.entity.metadata.ObjectDataProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public abstract class AbstractMinecartMeta extends EntityMeta implements ObjectDataProvider {
|
||||
public static final byte OFFSET = EntityMeta.MAX_OFFSET;
|
||||
public static final byte MAX_OFFSET = OFFSET + 6;
|
||||
public abstract class AbstractMinecartMeta extends AbstractVehicleMeta implements ObjectDataProvider {
|
||||
public static final byte OFFSET = AbstractVehicleMeta.MAX_OFFSET;
|
||||
public static final byte MAX_OFFSET = OFFSET + 3;
|
||||
|
||||
protected AbstractMinecartMeta(@NotNull Entity entity, @NotNull MetadataHolder metadata) {
|
||||
super(entity, metadata);
|
||||
}
|
||||
|
||||
public int getShakingPower() {
|
||||
public int getCustomBlockIdAndDamage() {
|
||||
return super.metadata.getIndex(OFFSET, 0);
|
||||
}
|
||||
|
||||
public void setShakingPower(int value) {
|
||||
super.metadata.setIndex(OFFSET, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public int getShakingDirection() {
|
||||
return super.metadata.getIndex(OFFSET + 1, 1);
|
||||
}
|
||||
|
||||
public void setShakingDirection(int value) {
|
||||
super.metadata.setIndex(OFFSET + 1, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public float getShakingMultiplier() {
|
||||
return super.metadata.getIndex(OFFSET + 2, 0F);
|
||||
}
|
||||
|
||||
public void setShakingMultiplier(float value) {
|
||||
super.metadata.setIndex(OFFSET + 2, Metadata.Float(value));
|
||||
}
|
||||
|
||||
public int getCustomBlockIdAndDamage() {
|
||||
return super.metadata.getIndex(OFFSET + 3, 0);
|
||||
}
|
||||
|
||||
public void setCustomBlockIdAndDamage(int value) {
|
||||
super.metadata.setIndex(OFFSET + 3, Metadata.VarInt(value));
|
||||
super.metadata.setIndex(OFFSET, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
// in 16th of a block
|
||||
public int getCustomBlockYPosition() {
|
||||
return super.metadata.getIndex(OFFSET + 4, 6);
|
||||
return super.metadata.getIndex(OFFSET + 1, 6);
|
||||
}
|
||||
|
||||
public void setCustomBlockYPosition(int value) {
|
||||
super.metadata.setIndex(OFFSET + 4, Metadata.VarInt(value));
|
||||
super.metadata.setIndex(OFFSET + 1, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public boolean getShowCustomBlock() {
|
||||
return super.metadata.getIndex(OFFSET + 2, false);
|
||||
}
|
||||
|
||||
public void setShowCustomBlock(boolean show) {
|
||||
super.metadata.setIndex(OFFSET + 2, Metadata.Boolean(show));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,15 @@
|
||||
package net.minestom.server.entity.metadata.monster;
|
||||
|
||||
import net.minestom.server.entity.Entity;
|
||||
import net.minestom.server.entity.MetadataHolder;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
// TODO(1.21.2) - Find out what the metadata fields of a creaking are
|
||||
public class CreakingMeta extends MonsterMeta {
|
||||
public static final byte OFFSET = MonsterMeta.MAX_OFFSET;
|
||||
public static final byte MAX_OFFSET = OFFSET + 0;
|
||||
|
||||
public CreakingMeta(@NotNull Entity entity, @NotNull MetadataHolder metadata) {
|
||||
super(entity, metadata);
|
||||
}
|
||||
}
|
@ -3,72 +3,49 @@ package net.minestom.server.entity.metadata.other;
|
||||
import net.minestom.server.entity.Entity;
|
||||
import net.minestom.server.entity.Metadata;
|
||||
import net.minestom.server.entity.MetadataHolder;
|
||||
import net.minestom.server.entity.metadata.AbstractVehicleMeta;
|
||||
import net.minestom.server.entity.metadata.EntityMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class BoatMeta extends EntityMeta {
|
||||
public static final byte OFFSET = EntityMeta.MAX_OFFSET;
|
||||
public static final byte MAX_OFFSET = OFFSET + 7;
|
||||
public class BoatMeta extends AbstractVehicleMeta {
|
||||
public static final byte OFFSET = AbstractVehicleMeta.MAX_OFFSET;
|
||||
public static final byte MAX_OFFSET = OFFSET + 4;
|
||||
|
||||
public BoatMeta(@NotNull Entity entity, @NotNull MetadataHolder metadata) {
|
||||
super(entity, metadata);
|
||||
}
|
||||
|
||||
public int getTimeSinceLastHit() {
|
||||
return super.metadata.getIndex(OFFSET, 0);
|
||||
}
|
||||
|
||||
public void setTimeSinceLastHit(int value) {
|
||||
super.metadata.setIndex(OFFSET, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public int getForwardDirection() {
|
||||
return super.metadata.getIndex(OFFSET + 1, 1);
|
||||
}
|
||||
|
||||
public void setForwardDirection(int value) {
|
||||
super.metadata.setIndex(OFFSET + 1, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public float getDamageTaken() {
|
||||
return super.metadata.getIndex(OFFSET + 2, 0);
|
||||
}
|
||||
|
||||
public void setDamageTaken(float value) {
|
||||
super.metadata.setIndex(OFFSET + 2, Metadata.Float(value));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Type getType() {
|
||||
return Type.VALUES[super.metadata.getIndex(OFFSET + 3, 0)];
|
||||
return Type.VALUES[super.metadata.getIndex(OFFSET, 0)];
|
||||
}
|
||||
|
||||
public void setType(@NotNull Type value) {
|
||||
super.metadata.setIndex(OFFSET + 3, Metadata.VarInt(value.ordinal()));
|
||||
super.metadata.setIndex(OFFSET, Metadata.VarInt(value.ordinal()));
|
||||
}
|
||||
|
||||
public boolean isLeftPaddleTurning() {
|
||||
return super.metadata.getIndex(OFFSET + 4, false);
|
||||
return super.metadata.getIndex(OFFSET + 1, false);
|
||||
}
|
||||
|
||||
public void setLeftPaddleTurning(boolean value) {
|
||||
super.metadata.setIndex(OFFSET + 4, Metadata.Boolean(value));
|
||||
super.metadata.setIndex(OFFSET + 1, Metadata.Boolean(value));
|
||||
}
|
||||
|
||||
public boolean isRightPaddleTurning() {
|
||||
return super.metadata.getIndex(OFFSET + 5, false);
|
||||
return super.metadata.getIndex(OFFSET + 2, false);
|
||||
}
|
||||
|
||||
public void setRightPaddleTurning(boolean value) {
|
||||
super.metadata.setIndex(OFFSET + 5, Metadata.Boolean(value));
|
||||
super.metadata.setIndex(OFFSET + 2, Metadata.Boolean(value));
|
||||
}
|
||||
|
||||
public int getSplashTimer() {
|
||||
return super.metadata.getIndex(OFFSET + 6, 0);
|
||||
return super.metadata.getIndex(OFFSET + 3, 0);
|
||||
}
|
||||
|
||||
public void setSplashTimer(int value) {
|
||||
super.metadata.setIndex(OFFSET + 6, Metadata.VarInt(value));
|
||||
super.metadata.setIndex(OFFSET + 3, Metadata.VarInt(value));
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
|
Loading…
Reference in New Issue
Block a user