mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
修正潜影贝和收纳袋
This commit is contained in:
@@ -31,6 +31,7 @@ public class ComponentTypes {
|
|||||||
public static final Object DEATH_PROTECTION = getComponentType(ComponentKeys.DEATH_PROTECTION);
|
public static final Object DEATH_PROTECTION = getComponentType(ComponentKeys.DEATH_PROTECTION);
|
||||||
public static final Object FIREWORK_EXPLOSION = getComponentType(ComponentKeys.FIREWORK_EXPLOSION);
|
public static final Object FIREWORK_EXPLOSION = getComponentType(ComponentKeys.FIREWORK_EXPLOSION);
|
||||||
public static final Object BUNDLE_CONTENTS = getComponentType(ComponentKeys.BUNDLE_CONTENTS);
|
public static final Object BUNDLE_CONTENTS = getComponentType(ComponentKeys.BUNDLE_CONTENTS);
|
||||||
|
public static final Object CONTAINER = getComponentType(ComponentKeys.CONTAINER);
|
||||||
|
|
||||||
private ComponentTypes() {}
|
private ComponentTypes() {}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
|
|||||||
import net.momirealms.sparrow.nbt.ListTag;
|
import net.momirealms.sparrow.nbt.ListTag;
|
||||||
import net.momirealms.sparrow.nbt.StringTag;
|
import net.momirealms.sparrow.nbt.StringTag;
|
||||||
import net.momirealms.sparrow.nbt.Tag;
|
import net.momirealms.sparrow.nbt.Tag;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -31,6 +32,26 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item<ItemStack> c2s(Item<ItemStack> wrapped) {
|
public Item<ItemStack> c2s(Item<ItemStack> wrapped) {
|
||||||
|
if (wrapped.hasComponent(ComponentTypes.BUNDLE_CONTENTS)) {
|
||||||
|
Object bundleContents = wrapped.getExactComponent(ComponentTypes.BUNDLE_CONTENTS);
|
||||||
|
List<Object> newItems = new ArrayList<>();
|
||||||
|
for (Object previousItem : FastNMS.INSTANCE.method$BundleContents$items(bundleContents)) {
|
||||||
|
ItemStack itemStack = BukkitItemManager.instance().c2s(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem));
|
||||||
|
newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack));
|
||||||
|
}
|
||||||
|
wrapped.setExactComponent(ComponentTypes.BUNDLE_CONTENTS, FastNMS.INSTANCE.constructor$BundleContents(newItems));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wrapped.hasComponent(ComponentTypes.CONTAINER)) {
|
||||||
|
Object containerContents = wrapped.getExactComponent(ComponentTypes.CONTAINER);
|
||||||
|
List<Object> newItems = new ArrayList<>();
|
||||||
|
for (Object previousItem : FastNMS.INSTANCE.field$ItemContainerContents$items(containerContents)) {
|
||||||
|
ItemStack itemStack = BukkitItemManager.instance().c2s(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem));
|
||||||
|
newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack));
|
||||||
|
}
|
||||||
|
wrapped.setExactComponent(ComponentTypes.CONTAINER, FastNMS.INSTANCE.method$ItemContainerContents$fromItems(newItems));
|
||||||
|
}
|
||||||
|
|
||||||
// 先尝试恢复client-bound-material
|
// 先尝试恢复client-bound-material
|
||||||
Optional<CustomItem<ItemStack>> optionalCustomItem = wrapped.getCustomItem();
|
Optional<CustomItem<ItemStack>> optionalCustomItem = wrapped.getCustomItem();
|
||||||
if (optionalCustomItem.isPresent()) {
|
if (optionalCustomItem.isPresent()) {
|
||||||
@@ -67,7 +88,25 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item<ItemStack> s2c(Item<ItemStack> wrapped, Player player) {
|
public Item<ItemStack> s2c(Item<ItemStack> wrapped, Player player) {
|
||||||
// todo 处理bundle和container
|
if (wrapped.hasComponent(ComponentTypes.BUNDLE_CONTENTS)) {
|
||||||
|
Object bundleContents = wrapped.getExactComponent(ComponentTypes.BUNDLE_CONTENTS);
|
||||||
|
List<Object> newItems = new ArrayList<>();
|
||||||
|
for (Object previousItem : FastNMS.INSTANCE.method$BundleContents$items(bundleContents)) {
|
||||||
|
ItemStack itemStack = BukkitItemManager.instance().s2c(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem), player);
|
||||||
|
newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack));
|
||||||
|
}
|
||||||
|
wrapped.setExactComponent(ComponentTypes.BUNDLE_CONTENTS, FastNMS.INSTANCE.constructor$BundleContents(newItems));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wrapped.hasComponent(ComponentTypes.CONTAINER)) {
|
||||||
|
Object containerContents = wrapped.getExactComponent(ComponentTypes.CONTAINER);
|
||||||
|
List<Object> newItems = new ArrayList<>();
|
||||||
|
for (Object previousItem : FastNMS.INSTANCE.field$ItemContainerContents$items(containerContents)) {
|
||||||
|
ItemStack itemStack = BukkitItemManager.instance().s2c(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem), player);
|
||||||
|
newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack));
|
||||||
|
}
|
||||||
|
wrapped.setExactComponent(ComponentTypes.CONTAINER, FastNMS.INSTANCE.method$ItemContainerContents$fromItems(newItems));
|
||||||
|
}
|
||||||
|
|
||||||
// todo 处理book
|
// todo 处理book
|
||||||
|
|
||||||
|
|||||||
@@ -3320,7 +3320,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
itemStack = BukkitItemManager.instance().s2c(itemStack, serverPlayer);
|
itemStack = BukkitItemManager.instance().c2s(itemStack);
|
||||||
|
|
||||||
event.setChanged(true);
|
event.setChanged(true);
|
||||||
buf.clear();
|
buf.clear();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
|
|
||||||
# Project settings
|
# Project settings
|
||||||
# Rule: [major update].[feature update].[bug fix]
|
# Rule: [major update].[feature update].[bug fix]
|
||||||
project_version=0.0.64.1
|
project_version=0.0.64.2
|
||||||
config_version=47
|
config_version=47
|
||||||
lang_version=34
|
lang_version=34
|
||||||
project_group=net.momirealms
|
project_group=net.momirealms
|
||||||
@@ -50,7 +50,7 @@ byte_buddy_version=1.17.5
|
|||||||
ahocorasick_version=0.6.3
|
ahocorasick_version=0.6.3
|
||||||
snake_yaml_version=2.5
|
snake_yaml_version=2.5
|
||||||
anti_grief_version=1.0.2
|
anti_grief_version=1.0.2
|
||||||
nms_helper_version=1.0.106
|
nms_helper_version=1.0.107
|
||||||
evalex_version=3.5.0
|
evalex_version=3.5.0
|
||||||
reactive_streams_version=1.0.4
|
reactive_streams_version=1.0.4
|
||||||
amazon_awssdk_version=2.34.5
|
amazon_awssdk_version=2.34.5
|
||||||
|
|||||||
Reference in New Issue
Block a user