9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-29 20:09:23 +00:00

Protocol core finish

This commit is contained in:
Lumine1909
2025-07-03 00:30:27 -07:00
parent c968c19ee5
commit 2b8ce7389e
10 changed files with 77 additions and 60 deletions

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Sun, 2 Feb 2025 13:08:32 +0800
Subject: [PATCH] NOT_FINISH Leaves Protocol Core
Subject: [PATCH] Leaves Protocol Core
diff --git a/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java b/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java
@@ -32,25 +32,6 @@ index fb263fa1f30a7dfcb7ec2656abfb38e5fe88eac9..56fd1ed7ccaf96e7eedea60fbdbf7f93
}
};
}
diff --git a/net/minecraft/network/protocol/common/custom/DiscardedPayload.java b/net/minecraft/network/protocol/common/custom/DiscardedPayload.java
index 62b9d9486c15a1ec6527f786df4e9fc483390bcb..5384bbc6bb3dbe5481f9d8cb10282551a0f78ec1 100644
--- a/net/minecraft/network/protocol/common/custom/DiscardedPayload.java
+++ b/net/minecraft/network/protocol/common/custom/DiscardedPayload.java
@@ -4,12 +4,12 @@ import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.resources.ResourceLocation;
-public record DiscardedPayload(ResourceLocation id, byte[] data) implements CustomPacketPayload { // Paper - store data
+public record DiscardedPayload(ResourceLocation id, byte @org.jetbrains.annotations.Nullable [] data) implements CustomPacketPayload { // Paper - store data // Leaves - nullable
public static <T extends FriendlyByteBuf> StreamCodec<T, DiscardedPayload> codec(ResourceLocation id, int maxSize) {
return CustomPacketPayload.codec((value, output) -> {
// Paper start
// Always write data
- output.writeBytes(value.data);
+ if (value.data != null) output.writeBytes(value.data); // Leaves - nullable
}, buffer -> {
int i = buffer.readableBytes();
if (i >= 0 && i <= maxSize) {
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 53c435238465c6f628874b64f0fa275bbb50ab73..95f5d078019ebd4fde9bf65748d866b51cfeabc6 100644
--- a/net/minecraft/server/MinecraftServer.java
@@ -64,34 +45,37 @@ index 53c435238465c6f628874b64f0fa275bbb50ab73..95f5d078019ebd4fde9bf65748d866b5
for (int i = 0; i < this.tickables.size(); i++) {
this.tickables.get(i).run();
}
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..4f054851848297bd0337b874370759259dcd7ad6 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -434,6 +434,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
private final ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.ViewDistanceHolder viewDistanceHolder = new ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.ViewDistanceHolder();
+ public net.minecraft.network.Connection internalConnection; // Leaves - protocol core
+
@Override
public final boolean moonrise$isRealPlayer() {
return this.isRealPlayer;
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 2e7c4c74818befd25e296b58ef9f20319544c2fb..00892ee4bbdb540017b6f7f4c288beeafb2bf6c0 100644
index 2e7c4c74818befd25e296b58ef9f20319544c2fb..dd377f2f85da6c3b86dad7c577887c128b63004b 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -143,6 +143,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -57,6 +57,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
public @Nullable String playerBrand;
public final java.util.Set<String> pluginMessagerChannels;
// Paper end - retain certain values
+ public final GameProfile profile; // Leaves - protocol core
public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie) {
this.server = server;
@@ -70,6 +71,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
this.pluginMessagerChannels = cookie.channels();
this.keepAlive = cookie.keepAlive();
// Paper end
+ this.profile = cookie.gameProfile(); // Leaves - protocol core
}
private void close() {
@@ -143,6 +145,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
+ // Leaves start - protocol
+ if (packet.payload() instanceof org.leavesmc.leaves.protocol.core.LeavesCustomPayload leavesPayload) {
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePayload(player, leavesPayload);
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePayload(org.leavesmc.leaves.protocol.core.ProtocolUtils.createSelector(this), leavesPayload);
+ return;
+ }
+ if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.DiscardedPayload(net.minecraft.resources.ResourceLocation id, byte[] data)) {
+ if (org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleBytebuf(player, id, io.netty.buffer.Unpooled.wrappedBuffer(data))) {
+ if (org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleBytebuf(org.leavesmc.leaves.protocol.core.ProtocolUtils.createSelector(this), id, io.netty.buffer.Unpooled.wrappedBuffer(data))) {
+ return;
+ }
+ }
@@ -100,14 +84,47 @@ index 2e7c4c74818befd25e296b58ef9f20319544c2fb..00892ee4bbdb540017b6f7f4c288beea
// Paper start
if (!(packet.payload() instanceof final net.minecraft.network.protocol.common.custom.DiscardedPayload discardedPayload)) {
return;
@@ -202,6 +214,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -202,10 +216,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
final String channel = new String(data, from, length, java.nio.charset.StandardCharsets.US_ASCII);
if (register) {
bridge.addChannel(channel);
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleMinecraftRegister(channel, player); // Leaves - protocol
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleMinecraftRegister(channel, org.leavesmc.leaves.protocol.core.ProtocolUtils.createSelector(this)); // Leaves - protocol
} else {
bridge.removeChannel(channel);
}
- // Paper end
+ // Paper end
}
@Override
@@ -367,9 +382,9 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
net.minecraft.server.level.ServerPlayer player = serverGamePacketListener.player;
org.bukkit.event.player.PlayerKickEvent.Cause cause = disconnectionDetails.disconnectionReason().orElseThrow().game().orElse(org.bukkit.event.player.PlayerKickEvent.Cause.UNKNOWN);
org.bukkit.event.player.PlayerKickEvent event = new org.bukkit.event.player.PlayerKickEvent(
- player.getBukkitEntity(),
- io.papermc.paper.adventure.PaperAdventure.asAdventure(disconnectionDetails.reason()),
- rawLeaveMessage, cause
+ player.getBukkitEntity(),
+ io.papermc.paper.adventure.PaperAdventure.asAdventure(disconnectionDetails.reason()),
+ rawLeaveMessage, cause
);
@@ -402,10 +417,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
private void disconnect0(DisconnectionDetails disconnectionDetails) {
this.connection
- .send(
- new ClientboundDisconnectPacket(disconnectionDetails.reason()),
- PacketSendListener.thenRun(() -> this.connection.disconnect(disconnectionDetails))
- );
+ .send(
+ new ClientboundDisconnectPacket(disconnectionDetails.reason()),
+ PacketSendListener.thenRun(() -> this.connection.disconnect(disconnectionDetails))
+ );
this.onDisconnect(disconnectionDetails);
this.connection.setReadOnly();
// CraftBukkit - Don't wait
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index dea72819f2933e5a806bb3a0603e4ebdf7f99456..91f505c9d84aba773d237664c2aaaf9750cadadf 100644
--- a/net/minecraft/server/players/PlayerList.java

View File

@@ -188,7 +188,7 @@ index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f0
ServerLevel.this.updateSleepingPlayerList();
}
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 4f054851848297bd0337b874370759259dcd7ad6..6626a175376df9b549ed7eaf13d0ed21d4fc8153 100644
index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..6ce8772bbec5f20b38ba991e8f7b1da46e4e3493 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -219,7 +219,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -200,7 +200,7 @@ index 4f054851848297bd0337b874370759259dcd7ad6..6626a175376df9b549ed7eaf13d0ed21
private final PlayerAdvancements advancements;
private final ServerStatsCounter stats;
private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE;
@@ -1443,6 +1443,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1441,6 +1441,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.lastSentHealth = -1.0F;
this.lastSentFood = -1;
this.teleportSpectators(teleportTransition, serverLevel);

View File

@@ -104,10 +104,10 @@ index d0971352de582c3d3bda544f08578d0c4c3618eb..9112c203c7cf31b2ce1789ea97ab17ce
}
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 00892ee4bbdb540017b6f7f4c288beeafb2bf6c0..a904bb17a31a8e33714f4bef02aef43db5a4ee21 100644
index dd377f2f85da6c3b86dad7c577887c128b63004b..8786c9436c5acc59221fa713a00314a48cda9603 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -308,10 +308,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -310,10 +310,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
public void send(Packet<?> packet) {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Player operation limiter
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 6626a175376df9b549ed7eaf13d0ed21d4fc8153..1379333fcb04451a1f1000dc18c7dae224a8d33c 100644
index 6ce8772bbec5f20b38ba991e8f7b1da46e4e3493..945de2e76e47af1fd87c0fec981cbb60546c91d2 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -429,6 +429,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -20,7 +20,7 @@ index 6626a175376df9b549ed7eaf13d0ed21d4fc8153..1379333fcb04451a1f1000dc18c7dae2
// Paper start - rewrite chunk system
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -747,6 +751,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -745,6 +749,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
// CraftBukkit end
this.tickClientLoadTimeout();
@@ -28,7 +28,7 @@ index 6626a175376df9b549ed7eaf13d0ed21d4fc8153..1379333fcb04451a1f1000dc18c7dae2
this.gameMode.tick();
this.wardenSpawnTracker.tick();
if (this.invulnerableTime > 0) {
@@ -2970,4 +2975,31 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2968,4 +2973,31 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
}
// CraftBukkit end

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] MC Technical Survival Mode
Will automatically overwrite some configuration after startup
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 1379333fcb04451a1f1000dc18c7dae224a8d33c..f014846d0ac231e7a44f546df7aaab3b74f38218 100644
index 945de2e76e47af1fd87c0fec981cbb60546c91d2..6e2dca4ab18dcc0a24f6c33987cd2af086a350ff 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1643,7 +1643,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1641,7 +1641,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public boolean isInvulnerableTo(ServerLevel level, DamageSource damageSource) {
return (super.isInvulnerableTo(level, damageSource) // Paper - disable player cramming;
|| this.isChangingDimension() && !damageSource.is(DamageTypes.ENDER_PEARL)

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Return nether portal fix
This patch is powered by NetherPortalFix(https://github.com/TwelveIterationMods/NetherPortalFix)
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index f014846d0ac231e7a44f546df7aaab3b74f38218..27144ab479a840dc092862223fd4d0fc460a21dc 100644
index 6e2dca4ab18dcc0a24f6c33987cd2af086a350ff..fe478f90e3ada46548692962a2d2a1e5e63bb4b6 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1457,6 +1457,21 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1455,6 +1455,21 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), serverLevel.getWorld());
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
// CraftBukkit end

View File

@@ -35,10 +35,10 @@ index 7e339cb26a132487ac0ab91d3db7e4885bacd545..44079b08d2abd53c12cea3441a38b0b6
CrashReport crashReport = CrashReport.forThrowable(var7, "Exception ticking world");
serverLevel.fillReportDetails(crashReport);
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 27144ab479a840dc092862223fd4d0fc460a21dc..f618619124fad4c432adb171513a73ca8aa9c4d4 100644
index fe478f90e3ada46548692962a2d2a1e5e63bb4b6..5e74fdf09d5063b955d9c5ed63775b38f562687e 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -903,6 +903,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -901,6 +901,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
((org.bukkit.craftbukkit.CraftWorldBorder) this.getBukkitEntity().getWorldBorder()).getHandle().tick();
}
// CraftBukkit end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Vanilla player display name
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index f618619124fad4c432adb171513a73ca8aa9c4d4..4cded55b91031ae9f801d26dd385d661f719ed5e 100644
index 5e74fdf09d5063b955d9c5ed63775b38f562687e..d92c018de29cc377cc8e7188fc2d316e96b1f369 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -478,7 +478,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -476,7 +476,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.object = null;
// CraftBukkit start
this.displayName = this.getScoreboardName();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix SculkCatalyst exp skip
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 4cded55b91031ae9f801d26dd385d661f719ed5e..e183131afca79d468f83d6230164e2cac304e98b 100644
index d92c018de29cc377cc8e7188fc2d316e96b1f369..cd7dd412ab714fe0dc3f180a2dee1b3547292a81 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1103,7 +1103,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1101,7 +1101,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
// SPIGOT-5478 must be called manually now
@@ -17,7 +17,7 @@ index 4cded55b91031ae9f801d26dd385d661f719ed5e..e183131afca79d468f83d6230164e2ca
// we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory.
if (!event.getKeepInventory()) {
// Paper start - PlayerDeathEvent#getItemsToKeep
@@ -1150,6 +1150,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1148,6 +1148,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.setClientLoaded(false);
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Spawn invulnerable time
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index e183131afca79d468f83d6230164e2cac304e98b..00d0206fe9e3717ba423e3daf730b082b755716f 100644
index cd7dd412ab714fe0dc3f180a2dee1b3547292a81..18de3e99b83a7e2ecf018456ee51361b06d6451b 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -232,6 +232,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -16,7 +16,7 @@ index e183131afca79d468f83d6230164e2cac304e98b..00d0206fe9e3717ba423e3daf730b082
private ChatVisiblity chatVisibility = ChatVisiblity.FULL;
public ParticleStatus particleStatus = ParticleStatus.ALL;
private boolean canChatColor = true;
@@ -754,6 +755,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -752,6 +753,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.resetOperationCountPerTick(); // Leaves - player operation limiter
this.gameMode.tick();
this.wardenSpawnTracker.tick();
@@ -24,7 +24,7 @@ index e183131afca79d468f83d6230164e2cac304e98b..00d0206fe9e3717ba423e3daf730b082
if (this.invulnerableTime > 0) {
this.invulnerableTime--;
}
@@ -1201,6 +1203,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1199,6 +1201,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
if (this.isInvulnerableTo(level, damageSource)) {
return false;
} else {