Skip to content

Commit

Permalink
Rollback to v6
Browse files Browse the repository at this point in the history
  • Loading branch information
Lumine1909 committed Nov 7, 2024
1 parent e425ea1 commit 0b9883d
Showing 1 changed file with 46 additions and 114 deletions.
160 changes: 46 additions & 114 deletions patches/server/0036-Jade-Protocol.patch
Original file line number Diff line number Diff line change
Expand Up @@ -124,26 +124,19 @@ index 30d0133a42ce990352f5c492fcf9beb105364848..1ab2eab686b3a89d406f127a6036c0e2
protected CompositeLootItemCondition(List<LootItemCondition> terms, Predicate<LootContext> predicate) {
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..2d3f3de3f37d635ceeb2f350c844dcfde327a412
index 0000000000000000000000000000000000000000..3506533241e9222d2453cacea5539355c0d4ef22
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java
@@ -0,0 +1,413 @@
@@ -0,0 +1,387 @@
+package org.leavesmc.leaves.protocol.jade;
+
+import com.google.common.base.Suppliers;
+import com.google.common.collect.Maps;
+import io.netty.buffer.ByteBuf;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerPlayer;
Expand Down Expand Up @@ -181,10 +174,8 @@ index 0000000000000000000000000000000000000000..2d3f3de3f37d635ceeb2f350c844dcfd
+import net.minecraft.world.phys.EntityHitResult;
+import org.jetbrains.annotations.Contract;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.leavesmc.leaves.LeavesConfig;
+import org.leavesmc.leaves.LeavesLogger;
+import org.leavesmc.leaves.protocol.core.LeavesCustomPayload;
+import org.leavesmc.leaves.protocol.core.LeavesProtocol;
+import org.leavesmc.leaves.protocol.core.ProtocolHandler;
+import org.leavesmc.leaves.protocol.core.ProtocolUtils;
Expand All @@ -193,11 +184,10 @@ index 0000000000000000000000000000000000000000..2d3f3de3f37d635ceeb2f350c844dcfd
+import org.leavesmc.leaves.protocol.jade.accessor.DataAccessor;
+import org.leavesmc.leaves.protocol.jade.accessor.EntityAccessor;
+import org.leavesmc.leaves.protocol.jade.accessor.EntityAccessorImpl;
+import org.leavesmc.leaves.protocol.jade.payload.ClientHandshakePayload;
+import org.leavesmc.leaves.protocol.jade.payload.ReceiveDataPayload;
+import org.leavesmc.leaves.protocol.jade.payload.RequestBlockPayload;
+import org.leavesmc.leaves.protocol.jade.payload.RequestEntityPayload;
+import org.leavesmc.leaves.protocol.jade.payload.ServerHandshakePayload;
+import org.leavesmc.leaves.protocol.jade.payload.ServerPingPayload;
+import org.leavesmc.leaves.protocol.jade.provider.IJadeProvider;
+import org.leavesmc.leaves.protocol.jade.provider.IServerDataProvider;
+import org.leavesmc.leaves.protocol.jade.provider.IServerExtensionProvider;
Expand Down Expand Up @@ -232,8 +222,6 @@ index 0000000000000000000000000000000000000000..2d3f3de3f37d635ceeb2f350c844dcfd
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.UUID;
+import java.util.function.Predicate;
Expand All @@ -247,7 +235,6 @@ index 0000000000000000000000000000000000000000..2d3f3de3f37d635ceeb2f350c844dcfd
+ private static List<Block> shearableBlocks = null;
+
+ public static final String PROTOCOL_ID = "jade";
+ public static final String PROTOCOL_VERSION = "7";
+
+ 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));
Expand Down Expand Up @@ -392,22 +379,9 @@ index 0000000000000000000000000000000000000000..2d3f3de3f37d635ceeb2f350c844dcfd
+ }
+ }
+
+ @ProtocolHandler.PlayerLeave
+ public static void onPlayerQuit(ServerPlayer player) {
+ enabledPlayers.remove(player.getUUID());
+ }
+
+ @ProtocolHandler.PayloadReceiver(payload = ClientHandshakePayload.class, payloadId = "client_handshake")
+ public static void clientHandshake(ServerPlayer player, ClientHandshakePayload payload) {
+ if (!LeavesConfig.jadeProtocol) {
+ return;
+ }
+ if (!payload.protocolVersion().equals(PROTOCOL_VERSION)) {
+ player.sendSystemMessage(Component.literal("You are using a different version of Jade than the server. Please update Jade or report to the server operator").withColor(0xff0000));
+ return;
+ }
+ ProtocolUtils.sendPayloadPacket(player, new ServerHandshakePayload(Collections.emptyMap(), shearableBlocks, blockDataProviders.mappedIds(), entityDataProviders.mappedIds()));
+ enabledPlayers.add(player.getUUID());
+ @ProtocolHandler.PlayerJoin
+ public static void onPlayerJoin(ServerPlayer player) {
+ ProtocolUtils.sendPayloadPacket(player, new ServerPingPayload(Collections.emptyMap(), shearableBlocks, blockDataProviders.mappedIds(), entityDataProviders.mappedIds()));
+ }
+
+ @ProtocolHandler.PayloadReceiver(payload = RequestEntityPayload.class, payloadId = "request_entity")
Expand Down Expand Up @@ -536,7 +510,7 @@ index 0000000000000000000000000000000000000000..2d3f3de3f37d635ceeb2f350c844dcfd
+ public static void enableAllPlayer() {
+ for (ServerPlayer player : MinecraftServer.getServer().getPlayerList().players) {
+ if (enabledPlayers.contains(player.getUUID())) {
+ ProtocolUtils.sendPayloadPacket(player, new ServerHandshakePayload(Collections.emptyMap(), shearableBlocks, blockDataProviders.mappedIds(), entityDataProviders.mappedIds()));
+ ProtocolUtils.sendPayloadPacket(player, new ServerPingPayload(Collections.emptyMap(), shearableBlocks, blockDataProviders.mappedIds(), entityDataProviders.mappedIds()));
+ }
+ }
+ }
Expand Down Expand Up @@ -1438,48 +1412,6 @@ index 0000000000000000000000000000000000000000..a92edcbb3e707065455ad5464484068e
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ClientHandshakePayload.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ClientHandshakePayload.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2e58089ad12706e927771e2485380a5bf5e6482
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ClientHandshakePayload.java
@@ -0,0 +1,36 @@
+package org.leavesmc.leaves.protocol.jade.payload;
+
+
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.MinecraftServer;
+import org.leavesmc.leaves.protocol.core.LeavesCustomPayload;
+import org.leavesmc.leaves.protocol.jade.JadeProtocol;
+
+public record ClientHandshakePayload(String protocolVersion) implements LeavesCustomPayload<ClientHandshakePayload> {
+
+ private static final ResourceLocation PACKET_CLIENT_HANDSHAKE = JadeProtocol.id("client_handshake");
+
+ private static final StreamCodec<RegistryFriendlyByteBuf, ClientHandshakePayload> CODEC = StreamCodec.composite(
+ ByteBufCodecs.STRING_UTF8,
+ ClientHandshakePayload::protocolVersion,
+ ClientHandshakePayload::new);
+
+ @Override
+ public void write(FriendlyByteBuf buf) {
+ CODEC.encode(new RegistryFriendlyByteBuf(buf, MinecraftServer.getServer().registryAccess()), this);
+ }
+
+ @Override
+ public ResourceLocation id() {
+ return PACKET_CLIENT_HANDSHAKE;
+ }
+
+ @New
+ public static ClientHandshakePayload create(ResourceLocation location, FriendlyByteBuf buf) {
+ return CODEC.decode(new RegistryFriendlyByteBuf(buf, MinecraftServer.getServer().registryAccess()));
+ }
+}
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ReceiveDataPayload.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ReceiveDataPayload.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b474ea8c1075b3dbaa7cd27e5bd95aa904fbe97
Expand Down Expand Up @@ -1635,11 +1567,38 @@ index 0000000000000000000000000000000000000000..b398176d0375784c2eff1db48fbaadcc
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerHandshakePayload.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerHandshakePayload.java
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPayloadContext.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPayloadContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a552665cfda2eafe9b66486445832284250ab88
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPayloadContext.java
@@ -0,0 +1,20 @@
+package org.leavesmc.leaves.protocol.jade.payload;
+
+
+import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
+import net.minecraft.server.level.ServerPlayer;
+
+import java.util.Objects;
+
+public interface ServerPayloadContext {
+ default void execute(Runnable runnable) {
+ Objects.requireNonNull(player().getServer()).execute(runnable);
+ }
+
+ default void sendPacket(CustomPacketPayload payload) {
+ player().connection.send(new ClientboundCustomPayloadPacket(payload));
+ }
+
+ ServerPlayer player();
+}
\ No newline at end of file
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPingPayload.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPingPayload.java
new file mode 100644
index 0000000000000000000000000000000000000000..c2eb61a7556130e5186dc1bba71329fefef8446f
index 0000000000000000000000000000000000000000..8e5ea16f09dc33fb21820dcc9caeb54c62f7ba25
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerHandshakePayload.java
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPingPayload.java
@@ -0,0 +1,50 @@
+package org.leavesmc.leaves.protocol.jade.payload;
+
Expand All @@ -1662,23 +1621,23 @@ index 0000000000000000000000000000000000000000..c2eb61a7556130e5186dc1bba71329fe
+
+import static org.leavesmc.leaves.protocol.jade.JadeProtocol.PRIMITIVE_STREAM_CODEC;
+
+public record ServerHandshakePayload(
+public record ServerPingPayload(
+ Map<ResourceLocation, Object> serverConfig,
+ List<Block> shearableBlocks,
+ List<ResourceLocation> blockProviderIds,
+ List<ResourceLocation> entityProviderIds) implements LeavesCustomPayload<ServerHandshakePayload> {
+ List<ResourceLocation> entityProviderIds) implements LeavesCustomPayload<ServerPingPayload> {
+
+ private static final ResourceLocation PACKET_SERVER_HANDSHAKE = JadeProtocol.id("server_handshake");
+ private static final StreamCodec<RegistryFriendlyByteBuf, ServerHandshakePayload> CODEC = StreamCodec.composite(
+ private static final ResourceLocation PACKET_SERVER_HANDSHAKE = JadeProtocol.id("server_ping_v1");
+ private static final StreamCodec<RegistryFriendlyByteBuf, ServerPingPayload> CODEC = StreamCodec.composite(
+ ByteBufCodecs.map(Maps::newHashMapWithExpectedSize, ResourceLocation.STREAM_CODEC, PRIMITIVE_STREAM_CODEC),
+ ServerHandshakePayload::serverConfig,
+ ServerPingPayload::serverConfig,
+ ByteBufCodecs.registry(Registries.BLOCK).apply(ByteBufCodecs.list()),
+ ServerHandshakePayload::shearableBlocks,
+ ServerPingPayload::shearableBlocks,
+ ByteBufCodecs.<ByteBuf, ResourceLocation>list().apply(ResourceLocation.STREAM_CODEC),
+ ServerHandshakePayload::blockProviderIds,
+ ServerPingPayload::blockProviderIds,
+ ByteBufCodecs.<ByteBuf, ResourceLocation>list().apply(ResourceLocation.STREAM_CODEC),
+ ServerHandshakePayload::entityProviderIds,
+ ServerHandshakePayload::new);
+ ServerPingPayload::entityProviderIds,
+ ServerPingPayload::new);
+
+ @Override
+ public void write(FriendlyByteBuf buf) {
Expand All @@ -1691,33 +1650,6 @@ index 0000000000000000000000000000000000000000..c2eb61a7556130e5186dc1bba71329fe
+ }
+}
+
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPayloadContext.java b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPayloadContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a552665cfda2eafe9b66486445832284250ab88
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/protocol/jade/payload/ServerPayloadContext.java
@@ -0,0 +1,20 @@
+package org.leavesmc.leaves.protocol.jade.payload;
+
+
+import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
+import net.minecraft.server.level.ServerPlayer;
+
+import java.util.Objects;
+
+public interface ServerPayloadContext {
+ default void execute(Runnable runnable) {
+ Objects.requireNonNull(player().getServer()).execute(runnable);
+ }
+
+ default void sendPacket(CustomPacketPayload payload) {
+ player().connection.send(new ClientboundCustomPayloadPacket(payload));
+ }
+
+ ServerPlayer player();
+}
\ No newline at end of file
diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/provider/IJadeProvider.java b/src/main/java/org/leavesmc/leaves/protocol/jade/provider/IJadeProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d62fc8f96fcdee7dbb0204d2460ff6fee4074e1a
Expand Down

0 comments on commit 0b9883d

Please sign in to comment.