diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java index 42d6fb5e..8f9471cc 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java @@ -70,7 +70,7 @@ import java.util.Set; public class JadeProtocol implements LeavesProtocol { public static final String PROTOCOL_ID = "jade"; - public static final String PROTOCOL_VERSION = "8"; + public static final String PROTOCOL_VERSION = "9"; public static final HierarchyLookup> entityDataProviders = new HierarchyLookup<>(Entity.class); public static final PairHierarchyLookup> blockDataProviders = new PairHierarchyLookup<>(new HierarchyLookup<>(Block.class), new HierarchyLookup<>(BlockEntity.class)); public static final WrappedHierarchyLookup> itemStorageProviders = WrappedHierarchyLookup.forAccessor(); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/CampfireProvider.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/CampfireProvider.java index 2fd1752f..0968658b 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/CampfireProvider.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/CampfireProvider.java @@ -1,8 +1,6 @@ package org.leavesmc.leaves.protocol.jade.provider.block; import com.google.common.collect.Lists; -import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; import net.minecraft.core.component.DataComponents; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -21,7 +19,6 @@ import java.util.List; public enum CampfireProvider implements IServerExtensionProvider { INSTANCE; - private static final MapCodec COOKING_TIME_CODEC = Codec.INT.fieldOf("jade:cooking"); private static final ResourceLocation MC_CAMPFIRE = JadeProtocol.mc_id("campfire"); @Override @@ -35,9 +32,8 @@ public enum CampfireProvider implements IServerExtensionProvider { } stack = stack.copy(); - int finalI = i; - CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY) - .update(tag -> tag.store(COOKING_TIME_CODEC, campfire.cookingTime[finalI] - campfire.cookingProgress[finalI])); + int time = campfire.cookingTime[i] - campfire.cookingProgress[i]; + CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).update(tag -> tag.putInt("jade:cooking", time)); stack.set(DataComponents.CUSTOM_DATA, customData); list.add(stack); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ChiseledBookshelfProvider.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ChiseledBookshelfProvider.java index d2bcd592..ad1bcc28 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ChiseledBookshelfProvider.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ChiseledBookshelfProvider.java @@ -18,7 +18,7 @@ import static net.minecraft.world.level.block.CampfireBlock.FACING; public enum ChiseledBookshelfProvider implements StreamServerDataProvider { INSTANCE; - private static final ResourceLocation MC_CHISELED_BOOKSHELF = JadeProtocol.mc_id("chiseled_bookshelf"); + private static final ResourceLocation MC_CHISELED_BOOKSHELF = JadeProtocol.mc_id("shelf"); @Override public @Nullable ItemStack streamData(@NotNull BlockAccessor accessor) { diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/entity/AnimalOwnerProvider.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/entity/AnimalOwnerProvider.java index 495815a2..d1520c88 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/entity/AnimalOwnerProvider.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/provider/entity/AnimalOwnerProvider.java @@ -1,22 +1,27 @@ package org.leavesmc.leaves.protocol.jade.provider.entity; +import com.mojang.authlib.GameProfile; import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentSerialization; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.Services; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.players.NameAndId; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityReference; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.OwnableEntity; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.leavesmc.leaves.protocol.jade.JadeProtocol; import org.leavesmc.leaves.protocol.jade.accessor.EntityAccessor; import org.leavesmc.leaves.protocol.jade.provider.StreamServerDataProvider; -import org.leavesmc.leaves.protocol.jade.util.CommonUtil; import java.util.UUID; -public enum AnimalOwnerProvider implements StreamServerDataProvider { +public enum AnimalOwnerProvider implements StreamServerDataProvider { INSTANCE; private static final ResourceLocation MC_ANIMAL_OWNER = JadeProtocol.mc_id("animal_owner"); @@ -32,13 +37,34 @@ public enum AnimalOwnerProvider implements StreamServerDataProvider streamCodec() { - return ByteBufCodecs.STRING_UTF8.cast(); + public @NotNull StreamCodec streamCodec() { + return ComponentSerialization.STREAM_CODEC; } @Override diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java index 8ad85ca7..30b57703 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java @@ -11,13 +11,13 @@ import net.minecraft.world.item.component.TooltipDisplay; import org.leavesmc.leaves.protocol.jade.accessor.Accessor; import java.util.List; -import java.util.Locale; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Predicate; public class ItemCollector { public static final int MAX_SIZE = 54; public static final ItemCollector EMPTY = new ItemCollector<>(null); + private static final CompoundTag IGNORED_TAG = new CompoundTag(); private static final Predicate SHOWN = stack -> { if (stack.isEmpty()) { return false; @@ -26,12 +26,8 @@ public class ItemCollector { return false; } if (stack.hasNonDefault(DataComponents.CUSTOM_MODEL_DATA) || stack.hasNonDefault(DataComponents.ITEM_MODEL)) { - CompoundTag tag = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag(); - for (String key : tag.keySet()) { - if (key.toLowerCase(Locale.ENGLISH).endsWith("clear") && tag.getBooleanOr(key, true)) { - return false; - } - } + CustomData data = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); + return !data.matchedBy(IGNORED_TAG); } return true; }; @@ -42,6 +38,10 @@ public class ItemCollector { public boolean lastTimeIsEmpty; public List> mergedResult; + static { + IGNORED_TAG.putBoolean("__JadeClear", true); + } + public ItemCollector(ItemIterator iterator) { this.iterator = iterator; }