9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2026-01-06 15:51:33 +00:00

Fix and update Jade protocol

This commit is contained in:
violetc
2023-07-01 10:30:55 +08:00
parent 0294bfd284
commit 7ccd5b1737

View File

@@ -70,10 +70,10 @@ index 2ef8eac38e5136defacc8904480a21d2bd20b325..69868f675624ad3b2c4742572a2b2c49
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
diff --git a/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java
new file mode 100644
index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade59c6f796
index 0000000000000000000000000000000000000000..68ff2809250ca290113ec2528075f812ba4ea41b
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java
@@ -0,0 +1,572 @@
@@ -0,0 +1,580 @@
+package top.leavesmc.leaves.protocol;
+
+import com.google.common.cache.Cache;
@@ -82,11 +82,9 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Streams;
+import com.mojang.authlib.GameProfile;
+import io.netty.buffer.Unpooled;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Registry;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
@@ -97,7 +95,6 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.util.Mth;
+import net.minecraft.world.Container;
+import net.minecraft.world.LockCode;
+import net.minecraft.world.Nameable;
@@ -119,6 +116,7 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+import net.minecraft.world.level.BaseCommandBlock;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.ChestBlock;
+import net.minecraft.world.level.block.ChiseledBookShelfBlock;
+import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
+import net.minecraft.world.level.block.entity.BaseContainerBlockEntity;
+import net.minecraft.world.level.block.entity.BeehiveBlockEntity;
@@ -126,6 +124,7 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.block.entity.BrewingStandBlockEntity;
+import net.minecraft.world.level.block.entity.ChestBlockEntity;
+import net.minecraft.world.level.block.entity.ChiseledBookShelfBlockEntity;
+import net.minecraft.world.level.block.entity.CommandBlockEntity;
+import net.minecraft.world.level.block.entity.ComparatorBlockEntity;
+import net.minecraft.world.level.block.entity.EnderChestBlockEntity;
@@ -135,6 +134,7 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.phys.BlockHitResult;
+import org.apache.commons.lang3.mutable.MutableInt;
+import org.apache.logging.log4j.util.TriConsumer;
+import org.jetbrains.annotations.Contract;
@@ -353,6 +353,12 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+ }
+ }
+ }));
+ tileDataProviders.register(ChiseledBookShelfBlockEntity.class, ((data, player, world, object, showDetails) -> {
+ ChiseledBookShelfBlockEntity bookShelf = (ChiseledBookShelfBlockEntity) object;
+ if (!bookShelf.isEmpty()) {
+ data.put("Bookshelf", bookShelf.saveWithoutMetadata());
+ }
+ }));
+ tileDataProviders.register(BlockEntity.class, ((tag, player, world, object, showDetails) -> {
+ if (object instanceof AbstractFurnaceBlockEntity) {
+ return;
@@ -392,8 +398,8 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+ }
+
+ Level world = player.level();
+ Entity entity = world.getEntity(buf.readVarInt());
+ boolean showDetails = buf.readBoolean();
+ Entity entity = world.getEntity(buf.readVarInt());
+ if (entity == null || player.distanceToSqr(entity) > MAX_DISTANCE_SQR) {
+ return;
+ }
@@ -425,8 +431,9 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+ return;
+ }
+
+ BlockPos pos = buf.readBlockPos();
+ boolean showDetails = buf.readBoolean();
+ BlockHitResult result = buf.readBlockHitResult();
+ BlockPos pos = result.getBlockPos();
+ Level world = player.level();
+ if (pos.distSqr(player.blockPosition()) > MAX_DISTANCE_SQR || !world.isLoaded(pos)) {
+ return;
@@ -457,6 +464,7 @@ index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade
+
+ FriendlyByteBuf buf1 = new FriendlyByteBuf(Unpooled.buffer());
+ buf1.writeNbt(tag);
+ buf1.writeNbt(tag);
+ ProtocolUtils.sendPayloadPacket(player, PACKET_RECEIVE_DATA, buf1);
+ });
+