mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-25 01:49:30 +00:00
feat(entity): 添加自定义三叉戟
This commit is contained in:
@@ -14,6 +14,7 @@ import org.incendo.cloud.Command;
|
||||
import org.incendo.cloud.bukkit.parser.NamespacedKeyParser;
|
||||
import org.incendo.cloud.context.CommandContext;
|
||||
import org.incendo.cloud.context.CommandInput;
|
||||
import org.incendo.cloud.parser.standard.ByteParser;
|
||||
import org.incendo.cloud.parser.standard.IntegerParser;
|
||||
import org.incendo.cloud.suggestion.Suggestion;
|
||||
import org.incendo.cloud.suggestion.SuggestionProvider;
|
||||
@@ -40,15 +41,22 @@ public class TestCommand extends BukkitCommandFeature<CommandSender> {
|
||||
.required("interpolationDelay", IntegerParser.integerParser())
|
||||
.required("transformationInterpolationDuration", IntegerParser.integerParser())
|
||||
.required("positionRotationInterpolationDuration", IntegerParser.integerParser())
|
||||
.required("displayType", ByteParser.byteParser())
|
||||
.handler(context -> {
|
||||
Player player = context.sender();
|
||||
NamespacedKey namespacedKey = context.get("id");
|
||||
var item = ItemStack.of(Material.TRIDENT);
|
||||
NamespacedKey customTridentKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:custom_trident"));
|
||||
NamespacedKey interpolationDelayKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:interpolation_delay"));
|
||||
NamespacedKey transformationInterpolationDurationaKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:transformation_interpolation_duration"));
|
||||
NamespacedKey positionRotationInterpolationDurationKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:position_rotation_interpolation_duration"));
|
||||
NamespacedKey displayTypeKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:display_type"));
|
||||
item.editPersistentDataContainer(container -> {
|
||||
container.set(Objects.requireNonNull(NamespacedKey.fromString("craftengine:custom_trident")), PersistentDataType.STRING, namespacedKey.asString());
|
||||
container.set(Objects.requireNonNull(NamespacedKey.fromString("craftengine:interpolation_delay")), PersistentDataType.INTEGER, context.get("interpolationDelay"));
|
||||
container.set(Objects.requireNonNull(NamespacedKey.fromString("craftengine:transformation_interpolation_duration")), PersistentDataType.INTEGER, context.get("transformationInterpolationDuration"));
|
||||
container.set(Objects.requireNonNull(NamespacedKey.fromString("craftengine:position_rotation_interpolation_duration")), PersistentDataType.INTEGER, context.get("positionRotationInterpolationDuration"));
|
||||
container.set(customTridentKey, PersistentDataType.STRING, namespacedKey.asString());
|
||||
container.set(interpolationDelayKey, PersistentDataType.INTEGER, context.get("interpolationDelay"));
|
||||
container.set(transformationInterpolationDurationaKey, PersistentDataType.INTEGER, context.get("transformationInterpolationDuration"));
|
||||
container.set(positionRotationInterpolationDurationKey, PersistentDataType.INTEGER, context.get("positionRotationInterpolationDuration"));
|
||||
container.set(displayTypeKey, PersistentDataType.BYTE, context.get("displayType"));
|
||||
});
|
||||
player.getInventory().addItem(item);
|
||||
});
|
||||
|
||||
@@ -1604,14 +1604,13 @@ public class PacketConsumers {
|
||||
NamespacedKey interpolationDelayKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:interpolation_delay"));
|
||||
NamespacedKey transformationInterpolationDurationaKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:transformation_interpolation_duration"));
|
||||
NamespacedKey positionRotationInterpolationDurationKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:position_rotation_interpolation_duration"));
|
||||
NamespacedKey displayTypeKey = Objects.requireNonNull(NamespacedKey.fromString("craftengine:display_type"));
|
||||
String customTrident = container.get(customTridentKey, PersistentDataType.STRING);
|
||||
Integer interpolationDelay = container.get(interpolationDelayKey, PersistentDataType.INTEGER);
|
||||
Integer transformationInterpolationDuration = container.get(transformationInterpolationDurationaKey, PersistentDataType.INTEGER);
|
||||
Integer positionRotationInterpolationDuration = container.get(positionRotationInterpolationDurationKey, PersistentDataType.INTEGER);
|
||||
Byte displayType = container.get(displayTypeKey, PersistentDataType.BYTE);
|
||||
if (customTrident == null) return;
|
||||
if (interpolationDelay == null) return;
|
||||
if (transformationInterpolationDuration == null) return;
|
||||
if (positionRotationInterpolationDuration == null) return;
|
||||
Reflections.field$ClientboundAddEntityPacket$type.set(packet, Reflections.instance$EntityType$ITEM_DISPLAY);
|
||||
List<Object> itemDisplayValues = new ArrayList<>();
|
||||
Item<ItemStack> item = BukkitItemManager.instance().createWrappedItem(Key.of(customTrident), null);
|
||||
@@ -1623,6 +1622,7 @@ public class PacketConsumers {
|
||||
ItemDisplayEntityData.InterpolationDuration.addEntityDataIfNotDefaultValue(transformationInterpolationDuration, itemDisplayValues);
|
||||
}
|
||||
ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(item.getLiteralObject(), itemDisplayValues);
|
||||
ItemDisplayEntityData.DisplayType.addEntityDataIfNotDefaultValue(displayType, itemDisplayValues);
|
||||
user.tridentView().put(entityId, itemDisplayValues);
|
||||
event.addDelayedTask(() -> {
|
||||
user.sendPacket(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId, itemDisplayValues), true);
|
||||
|
||||
Reference in New Issue
Block a user