mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 08:59:27 +00:00
refactor entity data
This commit is contained in:
@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.util.Reflections;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class BaseEntityData<T> extends SimpleEntityData<T> {
|
public class BaseEntityData<T> extends SimpleEntityData<T> {
|
||||||
|
|
||||||
public static final BaseEntityData<Byte> SharedFlags = new BaseEntityData<>(0, EntityDataValue.Serializers$BYTE, (byte) 0);
|
public static final BaseEntityData<Byte> SharedFlags = new BaseEntityData<>(0, EntityDataValue.Serializers$BYTE, (byte) 0);
|
||||||
public static final BaseEntityData<Integer> AirSupply = new BaseEntityData<>(1, EntityDataValue.Serializers$INT, 300);
|
public static final BaseEntityData<Integer> AirSupply = new BaseEntityData<>(1, EntityDataValue.Serializers$INT, 300);
|
||||||
public static final BaseEntityData<Optional<Object>> CustomName = new BaseEntityData<>(2, EntityDataValue.Serializers$OPTIONAL_COMPONENT, Optional.empty());
|
public static final BaseEntityData<Optional<Object>> CustomName = new BaseEntityData<>(2, EntityDataValue.Serializers$OPTIONAL_COMPONENT, Optional.empty());
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package net.momirealms.craftengine.bukkit.entity.data;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||||
|
|
||||||
|
public class BlockDisplayEntityData<T> extends DisplayEntityData<T> {
|
||||||
|
// Block display only
|
||||||
|
public static final DisplayEntityData<Object> DisplayedBlock = of(23, EntityDataValue.Serializers$BLOCK_STATE, Reflections.instance$Blocks$AIR$defaultState);
|
||||||
|
|
||||||
|
public BlockDisplayEntityData(int id, Object serializer, T defaultValue) {
|
||||||
|
super(id, serializer, defaultValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,17 +3,7 @@ package net.momirealms.craftengine.bukkit.entity.data;
|
|||||||
import net.momirealms.craftengine.bukkit.util.Reflections;
|
import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||||
|
|
||||||
import java.util.List;
|
public class DisplayEntityData<T> extends BaseEntityData<T> {
|
||||||
|
|
||||||
public class DisplayEntityData<T> {
|
|
||||||
|
|
||||||
private final int id;
|
|
||||||
private final Object serializer;
|
|
||||||
private final T defaultValue;
|
|
||||||
|
|
||||||
// Entity
|
|
||||||
public static final DisplayEntityData<Byte> EntityMasks = of(0, EntityDataValue.Serializers$BYTE, (byte) 0);
|
|
||||||
|
|
||||||
// Display only
|
// Display only
|
||||||
public static final DisplayEntityData<Integer> InterpolationDelay = of(8, EntityDataValue.Serializers$INT, 0);
|
public static final DisplayEntityData<Integer> InterpolationDelay = of(8, EntityDataValue.Serializers$INT, 0);
|
||||||
|
|
||||||
@@ -43,70 +33,11 @@ public class DisplayEntityData<T> {
|
|||||||
public static final DisplayEntityData<Float> Height = of(21, EntityDataValue.Serializers$FLOAT, 0f);
|
public static final DisplayEntityData<Float> Height = of(21, EntityDataValue.Serializers$FLOAT, 0f);
|
||||||
public static final DisplayEntityData<Integer> GlowColorOverride = of(22, EntityDataValue.Serializers$INT, -1);
|
public static final DisplayEntityData<Integer> GlowColorOverride = of(22, EntityDataValue.Serializers$INT, -1);
|
||||||
|
|
||||||
// Text display only
|
|
||||||
public static final DisplayEntityData<Object> Text = of(23, EntityDataValue.Serializers$COMPONENT, Reflections.instance$Component$empty);
|
|
||||||
public static final DisplayEntityData<Integer> LineWidth = of(24, EntityDataValue.Serializers$INT, 200);
|
|
||||||
public static final DisplayEntityData<Integer> BackgroundColor = of(25, EntityDataValue.Serializers$INT, 0x40000000);
|
|
||||||
public static final DisplayEntityData<Byte> TextOpacity = of(26, EntityDataValue.Serializers$BYTE, (byte) -1);
|
|
||||||
public static final DisplayEntityData<Byte> TextDisplayMasks = of(27, EntityDataValue.Serializers$BYTE, (byte) 0);
|
|
||||||
|
|
||||||
// Item display only
|
|
||||||
public static final DisplayEntityData<Object> DisplayedItem = of(23, EntityDataValue.Serializers$ITEM_STACK, Reflections.instance$ItemStack$Air);
|
|
||||||
/**
|
|
||||||
* Display type:
|
|
||||||
* 0 = NONE
|
|
||||||
* 1 = THIRD_PERSON_LEFT_HAND
|
|
||||||
* 2 = THIRD_PERSON_RIGHT_HAND
|
|
||||||
* 3 = FIRST_PERSON_LEFT_HAND
|
|
||||||
* 4 = FIRST_PERSON_RIGHT_HAND
|
|
||||||
* 5 = HEAD
|
|
||||||
* 6 = GUI
|
|
||||||
* 7 = GROUND
|
|
||||||
* 8 = FIXED
|
|
||||||
*/
|
|
||||||
public static final DisplayEntityData<Byte> DisplayType = of(24, EntityDataValue.Serializers$BYTE, (byte) 0);
|
|
||||||
|
|
||||||
// Block display only
|
|
||||||
public static final DisplayEntityData<Object> DisplayedBlock = of(23, EntityDataValue.Serializers$BLOCK_STATE, Reflections.instance$Blocks$AIR$defaultState);
|
|
||||||
|
|
||||||
public static <T> DisplayEntityData<T> of(final int id, final Object serializer, T defaultValue) {
|
public static <T> DisplayEntityData<T> of(final int id, final Object serializer, T defaultValue) {
|
||||||
return new DisplayEntityData<>(id, serializer, defaultValue);
|
return new DisplayEntityData<>(id, serializer, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DisplayEntityData(int id, Object serializer, T defaultValue) {
|
public DisplayEntityData(int id, Object serializer, T defaultValue) {
|
||||||
if (!VersionHelper.isVersionNewerThan1_20_2()) {
|
super(!VersionHelper.isVersionNewerThan1_20_2() && id >= 11 ? id - 1 : id, serializer, defaultValue);
|
||||||
if (id >= 11) {
|
|
||||||
id--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.id = id;
|
|
||||||
this.serializer = serializer;
|
|
||||||
this.defaultValue = defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object serializer() {
|
|
||||||
return serializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int id() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public T defaultValue() {
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object createEntityDataIfNotDefaultValue(T value) {
|
|
||||||
if (defaultValue().equals(value)) return null;
|
|
||||||
return EntityDataValue.create(id, serializer, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addEntityDataIfNotDefaultValue(T value, List<Object> list) {
|
|
||||||
if (defaultValue().equals(value)) return;
|
|
||||||
list.add(EntityDataValue.create(id, serializer, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addEntityData(T value, List<Object> list) {
|
|
||||||
list.add(EntityDataValue.create(id, serializer, value));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,7 @@ package net.momirealms.craftengine.bukkit.entity.data;
|
|||||||
|
|
||||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||||
|
|
||||||
import java.util.List;
|
public class InteractionEntityData<T> extends BaseEntityData<T> {
|
||||||
|
|
||||||
public class InteractionEntityData<T> {
|
|
||||||
|
|
||||||
private final int id;
|
|
||||||
private final Object serializer;
|
|
||||||
private final T defaultValue;
|
|
||||||
|
|
||||||
// Entity
|
|
||||||
public static final InteractionEntityData<Byte> EntityMasks = of(0, EntityDataValue.Serializers$BYTE, (byte) 0);
|
|
||||||
// Interaction only
|
// Interaction only
|
||||||
public static final InteractionEntityData<Float> Width = of(8, EntityDataValue.Serializers$FLOAT, 1F);
|
public static final InteractionEntityData<Float> Width = of(8, EntityDataValue.Serializers$FLOAT, 1F);
|
||||||
public static final InteractionEntityData<Float> Height = of(9, EntityDataValue.Serializers$FLOAT, 1F);
|
public static final InteractionEntityData<Float> Height = of(9, EntityDataValue.Serializers$FLOAT, 1F);
|
||||||
@@ -22,39 +13,6 @@ public class InteractionEntityData<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public InteractionEntityData(int id, Object serializer, T defaultValue) {
|
public InteractionEntityData(int id, Object serializer, T defaultValue) {
|
||||||
if (!VersionHelper.isVersionNewerThan1_20_2()) {
|
super(!VersionHelper.isVersionNewerThan1_20_2() && id >= 11 ? id - 1 : id, serializer, defaultValue);
|
||||||
if (id >= 11) {
|
|
||||||
id--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.id = id;
|
|
||||||
this.serializer = serializer;
|
|
||||||
this.defaultValue = defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object serializer() {
|
|
||||||
return serializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int id() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public T defaultValue() {
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object createEntityDataIfNotDefaultValue(T value) {
|
|
||||||
if (defaultValue().equals(value)) return null;
|
|
||||||
return EntityDataValue.create(id, serializer, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addEntityDataIfNotDefaultValue(T value, List<Object> list) {
|
|
||||||
if (defaultValue().equals(value)) return;
|
|
||||||
list.add(EntityDataValue.create(id, serializer, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addEntityData(T value, List<Object> list) {
|
|
||||||
list.add(EntityDataValue.create(id, serializer, value));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package net.momirealms.craftengine.bukkit.entity.data;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||||
|
|
||||||
|
public class ItemDisplayEntityData<T> extends DisplayEntityData<T> {
|
||||||
|
// Item display only
|
||||||
|
public static final DisplayEntityData<Object> DisplayedItem = of(23, EntityDataValue.Serializers$ITEM_STACK, Reflections.instance$ItemStack$Air);
|
||||||
|
/**
|
||||||
|
* Display type:
|
||||||
|
* 0 = NONE
|
||||||
|
* 1 = THIRD_PERSON_LEFT_HAND
|
||||||
|
* 2 = THIRD_PERSON_RIGHT_HAND
|
||||||
|
* 3 = FIRST_PERSON_LEFT_HAND
|
||||||
|
* 4 = FIRST_PERSON_RIGHT_HAND
|
||||||
|
* 5 = HEAD
|
||||||
|
* 6 = GUI
|
||||||
|
* 7 = GROUND
|
||||||
|
* 8 = FIXED
|
||||||
|
*/
|
||||||
|
public static final DisplayEntityData<Byte> DisplayType = of(24, EntityDataValue.Serializers$BYTE, (byte) 0);
|
||||||
|
|
||||||
|
public ItemDisplayEntityData(int id, Object serializer, T defaultValue) {
|
||||||
|
super(id, serializer, defaultValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
package net.momirealms.craftengine.bukkit.entity.data;
|
package net.momirealms.craftengine.bukkit.entity.data;
|
||||||
|
|
||||||
public class SimpleEntityData<T> implements EntityData<T> {
|
public class SimpleEntityData<T> implements EntityData<T> {
|
||||||
|
|
||||||
private final int id;
|
private final int id;
|
||||||
private final Object serializer;
|
private final Object serializer;
|
||||||
private final T defaultValue;
|
private final T defaultValue;
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package net.momirealms.craftengine.bukkit.entity.data;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||||
|
|
||||||
|
public class TextDisplayEntityData<T> extends DisplayEntityData<T> {
|
||||||
|
// Text display only
|
||||||
|
public static final DisplayEntityData<Object> Text = of(23, EntityDataValue.Serializers$COMPONENT, Reflections.instance$Component$empty);
|
||||||
|
public static final DisplayEntityData<Integer> LineWidth = of(24, EntityDataValue.Serializers$INT, 200);
|
||||||
|
public static final DisplayEntityData<Integer> BackgroundColor = of(25, EntityDataValue.Serializers$INT, 0x40000000);
|
||||||
|
public static final DisplayEntityData<Byte> TextOpacity = of(26, EntityDataValue.Serializers$BYTE, (byte) -1);
|
||||||
|
public static final DisplayEntityData<Byte> TextDisplayMasks = of(27, EntityDataValue.Serializers$BYTE, (byte) 0);
|
||||||
|
|
||||||
|
public TextDisplayEntityData(int id, Object serializer, T defaultValue) {
|
||||||
|
super(id, serializer, defaultValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package net.momirealms.craftengine.bukkit.entity.furniture;
|
package net.momirealms.craftengine.bukkit.entity.furniture;
|
||||||
|
|
||||||
import net.momirealms.craftengine.bukkit.entity.data.DisplayEntityData;
|
import net.momirealms.craftengine.bukkit.entity.data.ItemDisplayEntityData;
|
||||||
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||||
import net.momirealms.craftengine.bukkit.util.Reflections;
|
import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||||
import net.momirealms.craftengine.core.entity.furniture.AbstractFurnitureElement;
|
import net.momirealms.craftengine.core.entity.furniture.AbstractFurnitureElement;
|
||||||
@@ -55,12 +55,12 @@ public class BukkitFurnitureElement extends AbstractFurnitureElement {
|
|||||||
CraftEngine.instance().logger().warn("Failed to create furniture element for " + item() + " because item " + item() + " not found");
|
CraftEngine.instance().logger().warn("Failed to create furniture element for " + item() + " because item " + item() + " not found");
|
||||||
item = BukkitItemManager.instance().wrap(new ItemStack(Material.STONE));
|
item = BukkitItemManager.instance().wrap(new ItemStack(Material.STONE));
|
||||||
}
|
}
|
||||||
DisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(item.getLiteralObject(), this.cachedValues);
|
ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(item.getLiteralObject(), this.cachedValues);
|
||||||
DisplayEntityData.Scale.addEntityDataIfNotDefaultValue(scale(), this.cachedValues);
|
ItemDisplayEntityData.Scale.addEntityDataIfNotDefaultValue(scale(), this.cachedValues);
|
||||||
DisplayEntityData.RotationLeft.addEntityDataIfNotDefaultValue(rotation(), this.cachedValues);
|
ItemDisplayEntityData.RotationLeft.addEntityDataIfNotDefaultValue(rotation(), this.cachedValues);
|
||||||
DisplayEntityData.BillboardConstraints.addEntityDataIfNotDefaultValue(billboard().id(), this.cachedValues);
|
ItemDisplayEntityData.BillboardConstraints.addEntityDataIfNotDefaultValue(billboard().id(), this.cachedValues);
|
||||||
DisplayEntityData.Translation.addEntityDataIfNotDefaultValue(translation(), this.cachedValues);
|
ItemDisplayEntityData.Translation.addEntityDataIfNotDefaultValue(translation(), this.cachedValues);
|
||||||
DisplayEntityData.DisplayType.addEntityDataIfNotDefaultValue(transform().id(), this.cachedValues);
|
ItemDisplayEntityData.DisplayType.addEntityDataIfNotDefaultValue(transform().id(), this.cachedValues);
|
||||||
}
|
}
|
||||||
return this.cachedValues;
|
return this.cachedValues;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package net.momirealms.craftengine.bukkit.entity.furniture.hitbox;
|
package net.momirealms.craftengine.bukkit.entity.furniture.hitbox;
|
||||||
|
|
||||||
import io.netty.buffer.Unpooled;
|
|
||||||
import net.momirealms.craftengine.bukkit.entity.data.ShulkerData;
|
import net.momirealms.craftengine.bukkit.entity.data.ShulkerData;
|
||||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||||
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
|
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ import java.nio.file.*;
|
|||||||
import java.nio.file.attribute.BasicFileAttributes;
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.*;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|||||||
Reference in New Issue
Block a user