9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-28 19:39:11 +00:00

rename methods

This commit is contained in:
XiaoMoMi
2025-03-24 19:39:22 +08:00
parent ad332d5ec9
commit a8725bb789
7 changed files with 60 additions and 52 deletions

View File

@@ -161,16 +161,17 @@ public class BukkitNetworkManager implements NetworkManager, Listener {
this.onlineUsers.remove(player.getUniqueId());
}
// for mod
@EventHandler
public void onPlayerRegisterChannel(PlayerRegisterChannelEvent event) {
if (!event.getChannel().equals("craftengine:payload")) return;
if (!event.getChannel().equals(MOD_CHANNEL)) return;
Player player = event.getPlayer();
NetWorkUser user = getUser(player);
if (user == null) return;
user.setUsingClientMod(true);
user.setClientModState(true);
int blockRegistrySize = RegistryUtils.currentBlockRegistrySize();
byte[] payload = ("cp:" + blockRegistrySize).getBytes(StandardCharsets.UTF_8);
player.sendPluginMessage(plugin.bootstrap(), "craftengine:payload", payload);
player.sendPluginMessage(plugin.bootstrap(), MOD_CHANNEL, payload);
}
@Override

View File

@@ -69,37 +69,7 @@ public class PacketConsumers {
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> LEVEL_CHUNK_WITH_LIGHT = (user, event, packet) -> {
try {
if (!user.usingClientMod()) {
BukkitServerPlayer player = (BukkitServerPlayer) user;
Object chunkData = Reflections.field$ClientboundLevelChunkWithLightPacket$chunkData.get(packet);
byte[] buffer = (byte[]) Reflections.field$ClientboundLevelChunkPacketData$buffer.get(chunkData);
ByteBuf buf = Unpooled.copiedBuffer(buffer);
FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(buf);
FriendlyByteBuf newBuf = new FriendlyByteBuf(Unpooled.buffer());
for (int i = 0, count = player.clientSideSectionCount(); i < count; i++) {
try {
MCSection mcSection = new MCSection(BLOCK_LIST, BIOME_LIST);
mcSection.readPacket(friendlyByteBuf);
PalettedContainer<Integer> container = mcSection.blockStateContainer();
Palette<Integer> palette = container.data().palette();
if (palette.canRemap()) {
palette.remap(PacketConsumers::remap);
} else {
for (int j = 0; j < 4096; j++) {
int state = container.get(j);
int newState = remap(state);
if (newState != state) {
container.set(j, newState);
}
}
}
mcSection.writePacket(newBuf);
} catch (Exception e) {
break;
}
}
Reflections.field$ClientboundLevelChunkPacketData$buffer.set(chunkData, newBuf.array());
} else {
if (user.clientModEnabled()) {
BukkitServerPlayer player = (BukkitServerPlayer) user;
Object chunkData = Reflections.field$ClientboundLevelChunkWithLightPacket$chunkData.get(packet);
byte[] buffer = (byte[]) Reflections.field$ClientboundLevelChunkPacketData$buffer.get(chunkData);
@@ -129,6 +99,36 @@ public class PacketConsumers {
}
}
Reflections.field$ClientboundLevelChunkPacketData$buffer.set(chunkData, newBuf.array());
} else {
BukkitServerPlayer player = (BukkitServerPlayer) user;
Object chunkData = Reflections.field$ClientboundLevelChunkWithLightPacket$chunkData.get(packet);
byte[] buffer = (byte[]) Reflections.field$ClientboundLevelChunkPacketData$buffer.get(chunkData);
ByteBuf buf = Unpooled.copiedBuffer(buffer);
FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(buf);
FriendlyByteBuf newBuf = new FriendlyByteBuf(Unpooled.buffer());
for (int i = 0, count = player.clientSideSectionCount(); i < count; i++) {
try {
MCSection mcSection = new MCSection(BLOCK_LIST, BIOME_LIST);
mcSection.readPacket(friendlyByteBuf);
PalettedContainer<Integer> container = mcSection.blockStateContainer();
Palette<Integer> palette = container.data().palette();
if (palette.canRemap()) {
palette.remap(PacketConsumers::remap);
} else {
for (int j = 0; j < 4096; j++) {
int state = container.get(j);
int newState = remap(state);
if (newState != state) {
container.set(j, newState);
}
}
}
mcSection.writePacket(newBuf);
} catch (Exception e) {
break;
}
}
Reflections.field$ClientboundLevelChunkPacketData$buffer.set(chunkData, newBuf.array());
}
} catch (Exception e) {
CraftEngine.instance().logger().warn("Failed to handle ClientboundLevelChunkWithLightPacket", e);
@@ -137,7 +137,7 @@ public class PacketConsumers {
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SECTION_BLOCK_UPDATE = (user, event) -> {
try {
if (!user.usingClientMod()) {
if (user.clientModEnabled()) {
FriendlyByteBuf buf = event.getBuffer();
long pos = buf.readLong();
int blocks = buf.readVarInt();
@@ -146,7 +146,7 @@ public class PacketConsumers {
for (int i = 0; i < blocks; i++) {
long k = buf.readVarLong();
positions[i] = (short) ((int) (k & 4095L));
states[i] = remap((int) (k >>> 12));
states[i] = remapMOD((int) (k >>> 12));
}
buf.clear();
buf.writeVarInt(event.packetID());
@@ -165,7 +165,7 @@ public class PacketConsumers {
for (int i = 0; i < blocks; i++) {
long k = buf.readVarLong();
positions[i] = (short) ((int) (k & 4095L));
states[i] = remapMOD((int) (k >>> 12));
states[i] = remap((int) (k >>> 12));
}
buf.clear();
buf.writeVarInt(event.packetID());
@@ -186,7 +186,7 @@ public class PacketConsumers {
FriendlyByteBuf buf = event.getBuffer();
BlockPos pos = buf.readBlockPos(buf);
int before = buf.readVarInt();
if (user.usingClientMod() && !BlockStateUtils.isVanillaBlock(before)) {
if (user.clientModEnabled() && !BlockStateUtils.isVanillaBlock(before)) {
return;
}
int state = remap(before);

View File

@@ -63,9 +63,9 @@ public class BukkitServerPlayer extends Player {
private Key lastUsedRecipe = null;
private boolean usingClientMod = false;
private Map<Integer, List<Integer>> furnitureView = new ConcurrentHashMap<>();
private boolean hasClientMod = false;
// for better fake furniture visual sync
private final Map<Integer, List<Integer>> furnitureView = new ConcurrentHashMap<>();
public BukkitServerPlayer(BukkitCraftEngine plugin, Channel channel) {
this.channel = channel;
@@ -619,11 +619,11 @@ public class BukkitServerPlayer extends Player {
this.lastUsedRecipe = lastUsedRecipe;
}
public boolean usingClientMod() {
return this.usingClientMod;
public boolean clientModEnabled() {
return this.hasClientMod;
}
public void setUsingClientMod(boolean usingClientMod) {
this.usingClientMod = usingClientMod;
public void setClientModState(boolean enable) {
this.hasClientMod = enable;
}
}