mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-30 20:39:10 +00:00
添加elytra配置
This commit is contained in:
@@ -366,7 +366,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
|
||||
private void parseCustomBlock(Pack pack, Path path, Key id, Map<String, Object> section) {
|
||||
// read block settings
|
||||
BlockSettings settings = BlockSettings.fromMap(MiscUtils.castToMap(section.get("settings"), true));
|
||||
BlockSettings settings = BlockSettings.fromMap(id, MiscUtils.castToMap(section.get("settings"), true));
|
||||
// read states
|
||||
Map<String, Property<?>> properties;
|
||||
Map<String, Integer> appearances;
|
||||
|
||||
@@ -79,11 +79,11 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public Optional<ItemStack> s2c(ItemStack itemStack, ItemBuildContext context) {
|
||||
public Optional<ItemStack> s2c(ItemStack itemStack, Player player) {
|
||||
try {
|
||||
Item<ItemStack> wrapped = wrap(itemStack);
|
||||
if (wrapped == null) return Optional.empty();
|
||||
return this.networkItemHandler.s2c(wrapped, context).map(Item::load);
|
||||
return this.networkItemHandler.s2c(wrapped, player).map(Item::load);
|
||||
} catch (Throwable e) {
|
||||
if (Config.debug()) {
|
||||
this.plugin.logger().warn("Failed to handle s2c items.", e);
|
||||
@@ -92,11 +92,11 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
}
|
||||
}
|
||||
|
||||
public Optional<ItemStack> c2s(ItemStack itemStack, ItemBuildContext context) {
|
||||
public Optional<ItemStack> c2s(ItemStack itemStack) {
|
||||
try {
|
||||
Item<ItemStack> wrapped = wrap(itemStack);
|
||||
if (wrapped == null) return Optional.empty();
|
||||
return this.networkItemHandler.c2s(wrapped, context).map(Item::load);
|
||||
return this.networkItemHandler.c2s(wrapped).map(Item::load);
|
||||
} catch (Throwable e) {
|
||||
if (Config.debug()) {
|
||||
this.plugin.logger().warn("Failed to handle c2s items.", e);
|
||||
|
||||
@@ -1,20 +1,11 @@
|
||||
package net.momirealms.craftengine.bukkit.item;
|
||||
|
||||
import com.saicone.rtag.RtagItem;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||
import net.momirealms.craftengine.core.item.ItemWrapper;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.sparrow.nbt.NBT;
|
||||
import net.momirealms.sparrow.nbt.Tag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class LegacyItemWrapper implements ItemWrapper<ItemStack> {
|
||||
private final RtagItem rtagItem;
|
||||
private int count;
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
package net.momirealms.craftengine.bukkit.item;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.CustomItem;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||
import net.momirealms.craftengine.core.item.NetworkItemHandler;
|
||||
import net.momirealms.craftengine.core.item.modifier.ArgumentModifier;
|
||||
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
import net.momirealms.sparrow.nbt.ListTag;
|
||||
@@ -24,7 +28,7 @@ import java.util.function.BiConsumer;
|
||||
public class LegacyNetworkItemHandler implements NetworkItemHandler<ItemStack> {
|
||||
|
||||
@Override
|
||||
public Optional<Item<ItemStack>> c2s(Item<ItemStack> wrapped, ItemBuildContext context) {
|
||||
public Optional<Item<ItemStack>> c2s(Item<ItemStack> wrapped) {
|
||||
if (!wrapped.hasTag(NETWORK_ITEM_TAG)) return Optional.empty();
|
||||
CompoundTag networkData = (CompoundTag) wrapped.getNBTTag(NETWORK_ITEM_TAG);
|
||||
if (networkData == null) return Optional.empty();
|
||||
@@ -38,7 +42,7 @@ public class LegacyNetworkItemHandler implements NetworkItemHandler<ItemStack> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Item<ItemStack>> s2c(Item<ItemStack> wrapped, ItemBuildContext context) {
|
||||
public Optional<Item<ItemStack>> s2c(Item<ItemStack> wrapped, Player player) {
|
||||
Optional<CustomItem<ItemStack>> optionalCustomItem = wrapped.getCustomItem();
|
||||
if (optionalCustomItem.isEmpty()) {
|
||||
if (!Config.interceptItem()) return Optional.empty();
|
||||
@@ -50,6 +54,17 @@ public class LegacyNetworkItemHandler implements NetworkItemHandler<ItemStack> {
|
||||
return new OtherItem(wrapped).process();
|
||||
} else {
|
||||
CompoundTag tag = new CompoundTag();
|
||||
Tag argumentTag = wrapped.getNBTTag(ArgumentModifier.ARGUMENTS_TAG);
|
||||
ItemBuildContext context;
|
||||
if (argumentTag instanceof CompoundTag arguments) {
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
for (Map.Entry<String, Tag> entry : arguments.entrySet()) {
|
||||
builder.withParameter(ContextKey.direct(entry.getKey()), entry.getValue().getAsString());
|
||||
}
|
||||
context = ItemBuildContext.of(player, builder);
|
||||
} else {
|
||||
context = ItemBuildContext.of(player);
|
||||
}
|
||||
for (ItemDataModifier<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
|
||||
modifier.prepareNetworkItem(wrapped, context, tag);
|
||||
modifier.apply(wrapped, context);
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package net.momirealms.craftengine.bukkit.item;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.*;
|
||||
import net.momirealms.craftengine.core.item.modifier.ArgumentModifier;
|
||||
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
@@ -23,7 +27,7 @@ import java.util.function.Supplier;
|
||||
public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemStack> {
|
||||
|
||||
@Override
|
||||
public Optional<Item<ItemStack>> c2s(Item<ItemStack> wrapped, ItemBuildContext context) {
|
||||
public Optional<Item<ItemStack>> c2s(Item<ItemStack> wrapped) {
|
||||
Tag customData = wrapped.getNBTComponent(ComponentTypes.CUSTOM_DATA);
|
||||
if (!(customData instanceof CompoundTag compoundTag)) return Optional.empty();
|
||||
CompoundTag networkData = compoundTag.getCompound(NETWORK_ITEM_TAG);
|
||||
@@ -34,14 +38,13 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
|
||||
NetworkItemHandler.apply(entry.getKey(), tag, wrapped);
|
||||
}
|
||||
}
|
||||
// todo 可能会是 !custom_data吗,不可能,绝对不可能!
|
||||
if (compoundTag.isEmpty()) wrapped.resetComponent(ComponentTypes.CUSTOM_DATA);
|
||||
else wrapped.setNBTComponent(ComponentTypes.CUSTOM_DATA, compoundTag);
|
||||
return Optional.of(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Item<ItemStack>> s2c(Item<ItemStack> wrapped, ItemBuildContext context) {
|
||||
public Optional<Item<ItemStack>> s2c(Item<ItemStack> wrapped, Player player) {
|
||||
Optional<CustomItem<ItemStack>> optionalCustomItem = wrapped.getCustomItem();
|
||||
if (optionalCustomItem.isEmpty()) {
|
||||
if (!Config.interceptItem()) return Optional.empty();
|
||||
@@ -53,6 +56,17 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
|
||||
return new OtherItem(wrapped).process();
|
||||
} else {
|
||||
CompoundTag customData = Optional.ofNullable(wrapped.getNBTComponent(ComponentTypes.CUSTOM_DATA)).map(CompoundTag.class::cast).orElse(new CompoundTag());
|
||||
CompoundTag arguments = customData.getCompound(ArgumentModifier.ARGUMENTS_TAG);
|
||||
ItemBuildContext context;
|
||||
if (arguments == null) {
|
||||
context = ItemBuildContext.of(player);
|
||||
} else {
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
for (Map.Entry<String, Tag> entry : arguments.entrySet()) {
|
||||
builder.withParameter(ContextKey.direct(entry.getKey()), entry.getValue().getAsString());
|
||||
}
|
||||
context = ItemBuildContext.of(player, builder);
|
||||
}
|
||||
CompoundTag tag = new CompoundTag();
|
||||
for (ItemDataModifier<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
|
||||
modifier.prepareNetworkItem(wrapped, context, tag);
|
||||
|
||||
@@ -34,7 +34,6 @@ import net.momirealms.craftengine.core.font.FontManager;
|
||||
import net.momirealms.craftengine.core.font.IllegalCharacterProcessResult;
|
||||
import net.momirealms.craftengine.core.item.CustomItem;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
|
||||
import net.momirealms.craftengine.core.item.context.UseOnContext;
|
||||
import net.momirealms.craftengine.core.pack.host.ResourcePackDownloadData;
|
||||
@@ -1954,17 +1953,17 @@ public class PacketConsumers {
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> CONTAINER_SET_CONTENT = (user, event) -> {
|
||||
try {
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
int containerId = buf.readContainerId();
|
||||
int stateId = buf.readVarInt();
|
||||
int listSize = buf.readVarInt();
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
List<ItemStack> items = new ArrayList<>(listSize);
|
||||
boolean changed = false;
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
for (int i = 0; i < listSize; i++) {
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, serverPlayer);
|
||||
if (optional.isPresent()) {
|
||||
items.add(optional.get());
|
||||
changed = true;
|
||||
@@ -1974,7 +1973,7 @@ public class PacketConsumers {
|
||||
}
|
||||
ItemStack carriedItem = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
ItemStack newCarriedItem = carriedItem;
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(carriedItem, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(carriedItem, serverPlayer);
|
||||
if (optional.isPresent()) {
|
||||
changed = true;
|
||||
newCarriedItem = optional.get();
|
||||
@@ -1998,14 +1997,14 @@ public class PacketConsumers {
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> CONTAINER_SET_SLOT = (user, event) -> {
|
||||
try {
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
int containerId = buf.readContainerId();
|
||||
int stateId = buf.readVarInt();
|
||||
int slot = buf.readShort();
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
BukkitItemManager.instance().s2c(itemStack, context).ifPresent((newItemStack) -> {
|
||||
BukkitItemManager.instance().s2c(itemStack, serverPlayer).ifPresent((newItemStack) -> {
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
@@ -2022,11 +2021,11 @@ public class PacketConsumers {
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_CURSOR_ITEM = (user, event) -> {
|
||||
try {
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
BukkitItemManager.instance().s2c(itemStack, context).ifPresent((newItemStack) -> {
|
||||
BukkitItemManager.instance().s2c(itemStack, serverPlayer).ifPresent((newItemStack) -> {
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
@@ -2040,9 +2039,9 @@ public class PacketConsumers {
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_EQUIPMENT = (user, event) -> {
|
||||
try {
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
boolean changed = false;
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
int entity = buf.readVarInt();
|
||||
List<com.mojang.datafixers.util.Pair<Object, ItemStack>> slots = Lists.newArrayList();
|
||||
@@ -2051,7 +2050,7 @@ public class PacketConsumers {
|
||||
slotMask = buf.readByte();
|
||||
Object equipmentSlot = Reflections.instance$EquipmentSlot$values[slotMask & 127];
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, serverPlayer);
|
||||
if (optional.isPresent()) {
|
||||
changed = true;
|
||||
itemStack = optional.get();
|
||||
@@ -2081,12 +2080,12 @@ public class PacketConsumers {
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_PLAYER_INVENTORY_1_21_2 = (user, event) -> {
|
||||
try {
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
int slot = buf.readVarInt();
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
BukkitItemManager.instance().s2c(itemStack, context).ifPresent((newItemStack) -> {
|
||||
BukkitItemManager.instance().s2c(itemStack, serverPlayer).ifPresent((newItemStack) -> {
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
@@ -2101,13 +2100,13 @@ public class PacketConsumers {
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_CREATIVE_MODE_SLOT = (user, event) -> {
|
||||
try {
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
short slotNum = buf.readShort();
|
||||
ItemStack itemStack = VersionHelper.isOrAbove1_20_5() ?
|
||||
FastNMS.INSTANCE.method$FriendlyByteBuf$readUntrustedItem(friendlyBuf) : FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
BukkitItemManager.instance().c2s(itemStack, context).ifPresent((newItemStack) -> {
|
||||
BukkitItemManager.instance().c2s(itemStack).ifPresent((newItemStack) -> {
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
@@ -2127,9 +2126,9 @@ public class PacketConsumers {
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> CONTAINER_CLICK_1_20 = (user, event) -> {
|
||||
try {
|
||||
if (VersionHelper.isOrAbove1_21_5()) return; // 1.21.5+需要其他办法解决同步问题
|
||||
if (!(user instanceof BukkitServerPlayer serverPlayer)) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
boolean changed = false;
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf);
|
||||
int containerId = buf.readContainerId();
|
||||
int stateId = buf.readVarInt();
|
||||
@@ -2141,7 +2140,7 @@ public class PacketConsumers {
|
||||
for (int j = 0; j < i; ++j) {
|
||||
int k = buf.readShort();
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().c2s(itemStack, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().c2s(itemStack);
|
||||
if (optional.isPresent()) {
|
||||
changed = true;
|
||||
itemStack = optional.get();
|
||||
@@ -2149,7 +2148,7 @@ public class PacketConsumers {
|
||||
changedSlots.put(k, itemStack);
|
||||
}
|
||||
ItemStack carriedItem = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().c2s(carriedItem, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().c2s(carriedItem);
|
||||
if (optional.isPresent()) {
|
||||
changed = true;
|
||||
carriedItem = optional.get();
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.util.EntityDataUtils;
|
||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||
import net.momirealms.craftengine.core.plugin.network.ByteBufPacketEvent;
|
||||
import net.momirealms.craftengine.core.plugin.network.EntityPacketHandler;
|
||||
import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
|
||||
@@ -20,7 +19,6 @@ public class CommonItemPacketHandler implements EntityPacketHandler {
|
||||
@Override
|
||||
public void handleSetEntityData(NetWorkUser user, ByteBufPacketEvent event) {
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
int id = buf.readVarInt();
|
||||
boolean isChanged = false;
|
||||
List<Object> packedItems = FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$unpack(buf);
|
||||
@@ -30,7 +28,7 @@ public class CommonItemPacketHandler implements EntityPacketHandler {
|
||||
if (entityDataId == EntityDataUtils.ITEM_DATA_ID) {
|
||||
Object nmsItemStack = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, (BukkitServerPlayer) user);
|
||||
if (optional.isPresent()) {
|
||||
isChanged = true;
|
||||
itemStack = optional.get();
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.util.EntityDataUtils;
|
||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||
import net.momirealms.craftengine.core.plugin.network.ByteBufPacketEvent;
|
||||
import net.momirealms.craftengine.core.plugin.network.EntityPacketHandler;
|
||||
import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
|
||||
@@ -20,7 +19,6 @@ public class ItemDisplayPacketHandler implements EntityPacketHandler {
|
||||
@Override
|
||||
public void handleSetEntityData(NetWorkUser user, ByteBufPacketEvent event) {
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user);
|
||||
int id = buf.readVarInt();
|
||||
boolean isChanged = false;
|
||||
List<Object> packedItems = FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$unpack(buf);
|
||||
@@ -30,7 +28,7 @@ public class ItemDisplayPacketHandler implements EntityPacketHandler {
|
||||
if (entityDataId == EntityDataUtils.DISPLAYED_ITEM_DATA_ID) {
|
||||
Object nmsItemStack = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, context);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, (BukkitServerPlayer) user);
|
||||
if (optional.isPresent()) {
|
||||
isChanged = true;
|
||||
itemStack = optional.get();
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.sql.Ref;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user