mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
Updated Upstream (Leaves)
Upstream has released updates that appear to apply and compile correctly Leaves Changes: LeavesMC/Leaves@2c30e11 Update Paper and use archive LeavesMC/Leaves@e64ef21 [ci skip] issue template LeavesMC -> Leaves (#386) LeavesMC/Leaves@bce1d6c Fix GlobalConfigCreator (#385), and not pre LeavesMC/Leaves@abda1c7 Fix color in console (#383) LeavesMC/Leaves@b723a7f Update Jade Protocol LeavesMC/Leaves@41476d8 Fix EndPortal teleport entity's delta movement (#388)
This commit is contained in:
@@ -9,7 +9,7 @@ and change store way to sql maybe?
|
||||
Original license: GPLv3
|
||||
Original project: https://github.com/LeavesMC/Leaves
|
||||
|
||||
Commit: aeeef2213c2295288b71c9162cbe008c4a3defd9
|
||||
Commit: 41476d86922416c45f703df2871890831fc42bb5
|
||||
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/LeavesLogger.java b/src/main/java/org/leavesmc/leaves/LeavesLogger.java
|
||||
new file mode 100644
|
||||
|
||||
@@ -142,13 +142,12 @@ index c63bdbd72ecd45b8d5862a996636c0ce1e87166e..4e91895387b214cadc658b150ed6b88e
|
||||
}
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22db31adef
|
||||
index 0000000000000000000000000000000000000000..3f21db1707c961242090f2edd54b72f233c59d79
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java
|
||||
@@ -0,0 +1,310 @@
|
||||
@@ -0,0 +1,279 @@
|
||||
+package org.leavesmc.leaves.protocol.jade;
|
||||
+
|
||||
+import com.google.common.base.Suppliers;
|
||||
+import net.minecraft.core.BlockPos;
|
||||
+import net.minecraft.core.registries.BuiltInRegistries;
|
||||
+import net.minecraft.core.registries.Registries;
|
||||
@@ -165,12 +164,9 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+import net.minecraft.world.entity.animal.allay.Allay;
|
||||
+import net.minecraft.world.entity.animal.armadillo.Armadillo;
|
||||
+import net.minecraft.world.entity.animal.frog.Tadpole;
|
||||
+import net.minecraft.world.entity.boss.EnderDragonPart;
|
||||
+import net.minecraft.world.entity.boss.enderdragon.EnderDragon;
|
||||
+import net.minecraft.world.entity.monster.ZombieVillager;
|
||||
+import net.minecraft.world.item.ItemStack;
|
||||
+import net.minecraft.world.item.Items;
|
||||
+import net.minecraft.world.level.Level;
|
||||
+import net.minecraft.world.level.block.Block;
|
||||
+import net.minecraft.world.level.block.CampfireBlock;
|
||||
+import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
|
||||
@@ -185,9 +181,6 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+import net.minecraft.world.level.block.entity.JukeboxBlockEntity;
|
||||
+import net.minecraft.world.level.block.entity.LecternBlockEntity;
|
||||
+import net.minecraft.world.level.block.entity.TrialSpawnerBlockEntity;
|
||||
+import net.minecraft.world.level.block.state.BlockState;
|
||||
+import net.minecraft.world.phys.BlockHitResult;
|
||||
+import net.minecraft.world.phys.EntityHitResult;
|
||||
+import org.jetbrains.annotations.Contract;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.leavesmc.leaves.LeavesLogger;
|
||||
@@ -195,9 +188,7 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+import org.leavesmc.leaves.protocol.core.ProtocolHandler;
|
||||
+import org.leavesmc.leaves.protocol.core.ProtocolUtils;
|
||||
+import org.leavesmc.leaves.protocol.jade.accessor.BlockAccessor;
|
||||
+import org.leavesmc.leaves.protocol.jade.accessor.BlockAccessorImpl;
|
||||
+import org.leavesmc.leaves.protocol.jade.accessor.EntityAccessor;
|
||||
+import org.leavesmc.leaves.protocol.jade.accessor.EntityAccessorImpl;
|
||||
+import org.leavesmc.leaves.protocol.jade.payload.ReceiveDataPayload;
|
||||
+import org.leavesmc.leaves.protocol.jade.payload.RequestBlockPayload;
|
||||
+import org.leavesmc.leaves.protocol.jade.payload.RequestEntityPayload;
|
||||
@@ -244,7 +235,7 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+
|
||||
+ public static final HierarchyLookup<IServerDataProvider<EntityAccessor>> entityDataProviders = new HierarchyLookup<>(Entity.class);
|
||||
+ public static final PairHierarchyLookup<IServerDataProvider<BlockAccessor>> blockDataProviders = new PairHierarchyLookup<>(new HierarchyLookup<>(Block.class), new HierarchyLookup<>(BlockEntity.class));
|
||||
+ public static final WrappedHierarchyLookup<IServerExtensionProvider<ItemStack>> itemStorageProviders = new WrappedHierarchyLookup<>();
|
||||
+ public static final WrappedHierarchyLookup<IServerExtensionProvider<ItemStack>> itemStorageProviders = WrappedHierarchyLookup.forAccessor();
|
||||
+
|
||||
+ @Contract("_ -> new")
|
||||
+ public static @NotNull ResourceLocation id(String path) {
|
||||
@@ -308,7 +299,8 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+ try {
|
||||
+ shearableBlocks = Collections.unmodifiableList(LootTableMineableCollector.execute(
|
||||
+ MinecraftServer.getServer().reloadableRegistries().lookup().lookupOrThrow(Registries.LOOT_TABLE),
|
||||
+ Items.SHEARS.getDefaultInstance()));
|
||||
+ Items.SHEARS.getDefaultInstance()
|
||||
+ ));
|
||||
+ } catch (Throwable ignore) {
|
||||
+ shearableBlocks = List.of();
|
||||
+ LeavesLogger.LOGGER.severe("Failed to collect shearable blocks");
|
||||
@@ -330,40 +322,28 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ MinecraftServer server = MinecraftServer.getServer();
|
||||
+ server.execute(() -> {
|
||||
+ Level world = player.level();
|
||||
+ boolean showDetails = payload.data().showDetails();
|
||||
+ Entity entity = world.getEntity(payload.data().id());
|
||||
+ double maxDistance = Mth.square(player.entityInteractionRange() + 21);
|
||||
+ MinecraftServer.getServer().execute(() -> {
|
||||
+ EntityAccessor accessor = payload.data().unpack(player);
|
||||
+ if (accessor == null) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ Entity entity = accessor.getEntity();
|
||||
+ double maxDistance = Mth.square(player.entityInteractionRange() + 21);
|
||||
+ if (entity == null || player.distanceToSqr(entity) > maxDistance) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (payload.data().partIndex() >= 0 && entity instanceof EnderDragon dragon) {
|
||||
+ EnderDragonPart[] parts = dragon.getSubEntities();
|
||||
+ if (payload.data().partIndex() < parts.length) {
|
||||
+ entity = parts[payload.data().partIndex()];
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ var providers = entityDataProviders.get(entity);
|
||||
+ List<IServerDataProvider<EntityAccessor>> providers = entityDataProviders.get(entity);
|
||||
+ if (providers.isEmpty()) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ final Entity finalEntity = entity;
|
||||
+ CompoundTag tag = new CompoundTag();
|
||||
+ EntityAccessor accessor = new EntityAccessorImpl.Builder()
|
||||
+ .level(world)
|
||||
+ .player(player)
|
||||
+ .showDetails(showDetails)
|
||||
+ .entity(entity)
|
||||
+ .hit(Suppliers.memoize(() -> new EntityHitResult(finalEntity, payload.data().hitVec())))
|
||||
+ .build();
|
||||
+
|
||||
+ for (IServerDataProvider<EntityAccessor> provider : providers) {
|
||||
+ if (!payload.dataProviders().contains(provider)) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ try {
|
||||
+ provider.appendServerData(tag, accessor);
|
||||
+ } catch (Exception e) {
|
||||
@@ -384,21 +364,17 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+
|
||||
+ MinecraftServer server = MinecraftServer.getServer();
|
||||
+ server.execute(() -> {
|
||||
+ Level world = player.level();
|
||||
+ BlockState blockState = payload.data().blockState();
|
||||
+ Block block = blockState.getBlock();
|
||||
+ BlockHitResult result = payload.data().hit();
|
||||
+ BlockPos pos = result.getBlockPos();
|
||||
+ boolean showDetails = payload.data().showDetails();
|
||||
+
|
||||
+ double maxDistance = Mth.square(player.blockInteractionRange() + 21);
|
||||
+ if (pos.distSqr(player.blockPosition()) > maxDistance || !world.isLoaded(pos)) {
|
||||
+ BlockAccessor accessor = payload.data().unpack(player);
|
||||
+ if (accessor == null) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ BlockEntity blockEntity = null;
|
||||
+ if (blockState.hasBlockEntity()) {
|
||||
+ blockEntity = world.getBlockEntity(pos);
|
||||
+ BlockPos pos = accessor.getPosition();
|
||||
+ Block block = accessor.getBlock();
|
||||
+ BlockEntity blockEntity = accessor.getBlockEntity();
|
||||
+ double maxDistance = Mth.square(player.blockInteractionRange() + 21);
|
||||
+ if (pos.distSqr(player.blockPosition()) > maxDistance || !accessor.getLevel().isLoaded(pos)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ List<IServerDataProvider<BlockAccessor>> providers;
|
||||
@@ -409,25 +385,18 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+ }
|
||||
+
|
||||
+ if (providers.isEmpty()) {
|
||||
+ player.getBukkitEntity().sendMessage("Provider is empty!");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ CompoundTag tag = new CompoundTag();
|
||||
+ BlockAccessor accessor = new BlockAccessorImpl.Builder()
|
||||
+ .level(world)
|
||||
+ .player(player)
|
||||
+ .showDetails(showDetails)
|
||||
+ .hit(result)
|
||||
+ .blockState(blockState)
|
||||
+ .blockEntity(blockEntity)
|
||||
+ .build();
|
||||
+
|
||||
+ for (IServerDataProvider<BlockAccessor> provider : providers) {
|
||||
+ if (!payload.dataProviders().contains(provider)) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ try {
|
||||
+ provider.appendServerData(tag, accessor);
|
||||
+ } catch (Exception e) {
|
||||
+ LeavesLogger.LOGGER.warning("Error while saving data for block " + blockState);
|
||||
+ LeavesLogger.LOGGER.warning("Error while saving data for block " + accessor.getBlockState());
|
||||
+ }
|
||||
+ }
|
||||
+ tag.putInt("x", pos.getX());
|
||||
@@ -456,7 +425,6 @@ index 0000000000000000000000000000000000000000..41e4f98203b2e4392b0f76a560a4ed22
|
||||
+ ProtocolUtils.sendPayloadPacket(player, new ServerPingPayload(Collections.emptyMap(), shearableBlocks, blockDataProviders.mappedIds(), entityDataProviders.mappedIds()));
|
||||
+ }
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/accessor/Accessor.java b/src/main/java/org/leavesmc/leaves/protocol/jade/accessor/Accessor.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..1a637045d9375ae357ca1e592ec0dc7b45fa47fa
|
||||
@@ -1084,7 +1052,7 @@ index 0000000000000000000000000000000000000000..480ec35f28c850bfbe4f787d080fd7bb
|
||||
\ No newline at end of file
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/RequestEntityPayload.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/RequestEntityPayload.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..ef7ee32f0f2fd78b7e7891d622f76cddb8cb0680
|
||||
index 0000000000000000000000000000000000000000..395138d427413e562a5a3df80b33b53cffacc637
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/RequestEntityPayload.java
|
||||
@@ -0,0 +1,53 @@
|
||||
@@ -1119,8 +1087,8 @@ index 0000000000000000000000000000000000000000..ef7ee32f0f2fd78b7e7891d622f76cdd
|
||||
+ ByteBufCodecs.<ByteBuf, IServerDataProvider<EntityAccessor>>list()
|
||||
+ .apply(ByteBufCodecs.idMapper(
|
||||
+ $ -> Objects.requireNonNull(entityDataProviders.idMapper()).byId($),
|
||||
+ $ -> Objects.requireNonNull(entityDataProviders.idMapper())
|
||||
+ .getIdOrThrow($))),
|
||||
+ $ -> Objects.requireNonNull(entityDataProviders.idMapper()).getIdOrThrow($)
|
||||
+ )),
|
||||
+ RequestEntityPayload::dataProviders,
|
||||
+ RequestEntityPayload::new);
|
||||
+
|
||||
@@ -1991,21 +1959,24 @@ index 0000000000000000000000000000000000000000..a70f4a81166221ec1971b1fbf06e4c73
|
||||
+}
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ObjectNameProvider.java b/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ObjectNameProvider.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..e97fb13707365cceaf28f2624791d0472e56169c
|
||||
index 0000000000000000000000000000000000000000..6a060c8a64f18a3bff232bcb43f20121b1da36b1
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/provider/block/ObjectNameProvider.java
|
||||
@@ -0,0 +1,57 @@
|
||||
@@ -0,0 +1,63 @@
|
||||
+package org.leavesmc.leaves.protocol.jade.provider.block;
|
||||
+
|
||||
+import net.minecraft.core.component.DataComponents;
|
||||
+import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
+import net.minecraft.network.chat.Component;
|
||||
+import net.minecraft.network.chat.ComponentSerialization;
|
||||
+import net.minecraft.network.chat.contents.TranslatableContents;
|
||||
+import net.minecraft.network.codec.StreamCodec;
|
||||
+import net.minecraft.resources.ResourceLocation;
|
||||
+import net.minecraft.world.MenuProvider;
|
||||
+import net.minecraft.world.Nameable;
|
||||
+import net.minecraft.world.level.block.ChestBlock;
|
||||
+import net.minecraft.world.level.block.entity.ChestBlockEntity;
|
||||
+import net.minecraft.world.level.block.state.properties.ChestType;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+import org.leavesmc.leaves.protocol.jade.JadeProtocol;
|
||||
@@ -2025,15 +1996,18 @@ index 0000000000000000000000000000000000000000..e97fb13707365cceaf28f2624791d047
|
||||
+ if (!(accessor.getBlockEntity() instanceof Nameable nameable)) {
|
||||
+ return null;
|
||||
+ }
|
||||
+ if (nameable instanceof ChestBlockEntity && accessor.getBlock() instanceof ChestBlock) {
|
||||
+ if (nameable instanceof ChestBlockEntity && accessor.getBlock() instanceof ChestBlock && accessor.getBlockState().getValue(ChestBlock.TYPE) != ChestType.SINGLE) {
|
||||
+ MenuProvider menuProvider = accessor.getBlockState().getMenuProvider(accessor.getLevel(), accessor.getPosition());
|
||||
+ if (menuProvider != null) {
|
||||
+ return menuProvider.getDisplayName();
|
||||
+ Component name = menuProvider.getDisplayName();
|
||||
+ if (!(name.getContents() instanceof TranslatableContents contents) || !"container.chestDouble".equals(contents.getKey())) {
|
||||
+ return name;
|
||||
+ }
|
||||
+ }
|
||||
+ } else if (nameable.hasCustomName()) {
|
||||
+ return nameable.getDisplayName();
|
||||
+ }
|
||||
+ return null;
|
||||
+ return accessor.getBlockEntity().components().get(DataComponents.ITEM_NAME);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@@ -2747,7 +2721,7 @@ index 0000000000000000000000000000000000000000..0070fd22b096281a094d1cd19c93fdbc
|
||||
\ No newline at end of file
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/util/IHierarchyLookup.java b/src/main/java/org/leavesmc/leaves/protocol/jade/util/IHierarchyLookup.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..137cdf619879390477b4fc8c4b7ecee5b762dc30
|
||||
index 0000000000000000000000000000000000000000..0536309cb016f05f296daaeb17dd9275777a7333
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/util/IHierarchyLookup.java
|
||||
@@ -0,0 +1,66 @@
|
||||
@@ -2809,7 +2783,7 @@ index 0000000000000000000000000000000000000000..137cdf619879390477b4fc8c4b7ecee5
|
||||
+ idMapper = new IdMapper<>(list.size());
|
||||
+ }
|
||||
+ for (T provider : list) {
|
||||
+ if (idMapper.getId(provider) == -1) {
|
||||
+ if (idMapper.getId(provider) == IdMapper.DEFAULT) {
|
||||
+ idMapper.add(provider);
|
||||
+ }
|
||||
+ }
|
||||
@@ -2819,10 +2793,10 @@ index 0000000000000000000000000000000000000000..137cdf619879390477b4fc8c4b7ecee5
|
||||
+
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java b/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..8f57cb0714dc684bd90325a6d2e84d5b1b303d6e
|
||||
index 0000000000000000000000000000000000000000..408c81a0d0762f7d4b32aedc9b67c7ff546b43f3
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/util/ItemCollector.java
|
||||
@@ -0,0 +1,116 @@
|
||||
@@ -0,0 +1,118 @@
|
||||
+package org.leavesmc.leaves.protocol.jade.util;
|
||||
+
|
||||
+import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap;
|
||||
@@ -2861,6 +2835,7 @@ index 0000000000000000000000000000000000000000..8f57cb0714dc684bd90325a6d2e84d5b
|
||||
+ private final ItemIterator<T> iterator;
|
||||
+ public long version;
|
||||
+ public long lastTimeFinished;
|
||||
+ public boolean lastTimeIsEmpty;
|
||||
+ public List<ViewGroup<ItemStack>> mergedResult;
|
||||
+
|
||||
+ public ItemCollector(ItemIterator<T> iterator) {
|
||||
@@ -2899,13 +2874,14 @@ index 0000000000000000000000000000000000000000..8f57cb0714dc684bd90325a6d2e84d5b
|
||||
+ updateCollectingProgress(mergedResult.getFirst());
|
||||
+ return mergedResult;
|
||||
+ }
|
||||
+ List<ItemStack> partialResult = items.object2IntEntrySet().stream().limit(54).map(entry -> {
|
||||
+ List<ItemStack> partialResult = items.object2IntEntrySet().stream().limit(MAX_SIZE ).map(entry -> {
|
||||
+ ItemDefinition def = entry.getKey();
|
||||
+ return def.toStack(entry.getIntValue());
|
||||
+ }).toList();
|
||||
+ List<ViewGroup<ItemStack>> groups = List.of(updateCollectingProgress(new ViewGroup<>(partialResult)));
|
||||
+ if (iterator.isFinished()) {
|
||||
+ mergedResult = groups;
|
||||
+ lastTimeIsEmpty = mergedResult.getFirst().views.isEmpty();
|
||||
+ version = currentVersion;
|
||||
+ lastTimeFinished = gameTime;
|
||||
+ items.clear();
|
||||
@@ -2914,12 +2890,12 @@ index 0000000000000000000000000000000000000000..8f57cb0714dc684bd90325a6d2e84d5b
|
||||
+ }
|
||||
+
|
||||
+ protected ViewGroup<ItemStack> updateCollectingProgress(ViewGroup<ItemStack> group) {
|
||||
+ if (lastTimeIsEmpty && group.views.isEmpty()) {
|
||||
+ return group;
|
||||
+ }
|
||||
+ float progress = iterator.getCollectingProgress();
|
||||
+ CompoundTag data = group.getExtraData();
|
||||
+ if (Float.isNaN(progress)) {
|
||||
+ progress = 0;
|
||||
+ }
|
||||
+ if (progress >= 1) {
|
||||
+ if (Float.isNaN(progress) || progress >= 1) {
|
||||
+ data.remove("Collecting");
|
||||
+ } else {
|
||||
+ data.putFloat("Collecting", progress);
|
||||
@@ -3470,16 +3446,17 @@ index 0000000000000000000000000000000000000000..520eadbf6de55141524741b4e4063cd5
|
||||
+}
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/util/WrappedHierarchyLookup.java b/src/main/java/org/leavesmc/leaves/protocol/jade/util/WrappedHierarchyLookup.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..11d66b88327a954c8d530a002aa87c9abae8da12
|
||||
index 0000000000000000000000000000000000000000..9b49efd3255e4521824e1b21b88e3625eedcc7a5
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/util/WrappedHierarchyLookup.java
|
||||
@@ -0,0 +1,96 @@
|
||||
@@ -0,0 +1,104 @@
|
||||
+package org.leavesmc.leaves.protocol.jade.util;
|
||||
+
|
||||
+import com.google.common.collect.Lists;
|
||||
+import net.minecraft.resources.ResourceLocation;
|
||||
+import net.minecraft.world.level.block.Block;
|
||||
+import org.apache.commons.lang3.tuple.Pair;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+import org.leavesmc.leaves.protocol.jade.accessor.Accessor;
|
||||
+import org.leavesmc.leaves.protocol.jade.accessor.BlockAccessor;
|
||||
@@ -3496,13 +3473,20 @@ index 0000000000000000000000000000000000000000..11d66b88327a954c8d530a002aa87c9a
|
||||
+ private boolean empty = true;
|
||||
+
|
||||
+ public WrappedHierarchyLookup() {
|
||||
+ super(Object.class, true);
|
||||
+ overrides.add(Pair.of(new HierarchyLookup<>(Block.class, true), accessor -> {
|
||||
+ if (accessor instanceof BlockAccessor blockAccessor) {
|
||||
+ return blockAccessor.getBlock();
|
||||
+ }
|
||||
+ return null;
|
||||
+ }));
|
||||
+ super(Object.class);
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static <T extends IJadeProvider> WrappedHierarchyLookup<T> forAccessor() {
|
||||
+ WrappedHierarchyLookup<T> lookup = new WrappedHierarchyLookup<>();
|
||||
+ lookup.overrides.add(Pair.of(
|
||||
+ new HierarchyLookup<>(Block.class), accessor -> {
|
||||
+ if (accessor instanceof BlockAccessor blockAccessor) {
|
||||
+ return blockAccessor.getBlock();
|
||||
+ }
|
||||
+ return null;
|
||||
+ }));
|
||||
+ return lookup;
|
||||
+ }
|
||||
+
|
||||
+ public List<T> wrappedGet(Accessor<?> accessor) {
|
||||
|
||||
@@ -353,12 +353,12 @@ index 87b1502c1b980d33cae205ae35d336f7450e5e94..89cc2bc49c9a8d6ae5dd3ff10ac96e42
|
||||
@Override
|
||||
public void write(@NotNull FriendlyByteBuf buf) {
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java
|
||||
index 41e4f98203b2e4392b0f76a560a4ed22db31adef..7777bfba21233625b21876ae55e09157ce84e04c 100644
|
||||
index 3f21db1707c961242090f2edd54b72f233c59d79..a7d9bd324f8a83e0424194711af66f691172b3f6 100644
|
||||
--- a/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java
|
||||
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java
|
||||
@@ -98,6 +98,10 @@ public class JadeProtocol {
|
||||
@@ -89,6 +89,10 @@ public class JadeProtocol {
|
||||
public static final PairHierarchyLookup<IServerDataProvider<BlockAccessor>> blockDataProviders = new PairHierarchyLookup<>(new HierarchyLookup<>(Block.class), new HierarchyLookup<>(BlockEntity.class));
|
||||
public static final WrappedHierarchyLookup<IServerExtensionProvider<ItemStack>> itemStorageProviders = new WrappedHierarchyLookup<>();
|
||||
public static final WrappedHierarchyLookup<IServerExtensionProvider<ItemStack>> itemStorageProviders = WrappedHierarchyLookup.forAccessor();
|
||||
|
||||
+ public static boolean shouldEnable() {
|
||||
+ return org.dreeam.leaf.config.modules.network.ProtocolSupport.jadeProtocol;
|
||||
@@ -367,7 +367,7 @@ index 41e4f98203b2e4392b0f76a560a4ed22db31adef..7777bfba21233625b21876ae55e09157
|
||||
@Contract("_ -> new")
|
||||
public static @NotNull ResourceLocation id(String path) {
|
||||
return new ResourceLocation(PROTOCOL_ID, path);
|
||||
@@ -169,19 +173,11 @@ public class JadeProtocol {
|
||||
@@ -161,19 +165,11 @@ public class JadeProtocol {
|
||||
|
||||
@ProtocolHandler.PlayerJoin
|
||||
public static void onPlayerJoin(ServerPlayer player) {
|
||||
@@ -384,10 +384,10 @@ index 41e4f98203b2e4392b0f76a560a4ed22db31adef..7777bfba21233625b21876ae55e09157
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
MinecraftServer server = MinecraftServer.getServer();
|
||||
server.execute(() -> {
|
||||
Level world = player.level();
|
||||
@@ -230,10 +226,6 @@ public class JadeProtocol {
|
||||
MinecraftServer.getServer().execute(() -> {
|
||||
EntityAccessor accessor = payload.data().unpack(player);
|
||||
if (accessor == null) {
|
||||
@@ -210,10 +206,6 @@ public class JadeProtocol {
|
||||
|
||||
@ProtocolHandler.PayloadReceiver(payload = RequestBlockPayload.class, payloadId = "request_block")
|
||||
public static void requestBlockData(ServerPlayer player, RequestBlockPayload payload) {
|
||||
@@ -397,7 +397,7 @@ index 41e4f98203b2e4392b0f76a560a4ed22db31adef..7777bfba21233625b21876ae55e09157
|
||||
-
|
||||
MinecraftServer server = MinecraftServer.getServer();
|
||||
server.execute(() -> {
|
||||
Level world = player.level();
|
||||
BlockAccessor accessor = payload.data().unpack(player);
|
||||
diff --git a/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java b/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java
|
||||
index 0704ac7825c69e69097b3e7c77763044f9fa9e1e..c039765237d56def91a1e630a0510062305fd585 100644
|
||||
--- a/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java
|
||||
|
||||
Reference in New Issue
Block a user