82 lines
3.7 KiB
Java
82 lines
3.7 KiB
Java
package us.myles.ViaVersion.protocols.protocol1_13_1to1_13.packets;
|
|
|
|
import us.myles.ViaVersion.api.PacketWrapper;
|
|
import us.myles.ViaVersion.api.minecraft.chunks.Chunk;
|
|
import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection;
|
|
import us.myles.ViaVersion.api.protocol.Protocol;
|
|
import us.myles.ViaVersion.api.remapper.PacketHandler;
|
|
import us.myles.ViaVersion.api.remapper.PacketRemapper;
|
|
import us.myles.ViaVersion.api.rewriters.BlockRewriter;
|
|
import us.myles.ViaVersion.api.type.Type;
|
|
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
|
|
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type;
|
|
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
|
|
|
|
public class WorldPackets {
|
|
|
|
public static void register(Protocol protocol) {
|
|
BlockRewriter blockRewriter = new BlockRewriter(protocol, Type.POSITION);
|
|
|
|
protocol.registerOutgoing(ClientboundPackets1_13.CHUNK_DATA, new PacketRemapper() {
|
|
@Override
|
|
public void registerMap() {
|
|
handler(new PacketHandler() {
|
|
@Override
|
|
public void handle(PacketWrapper wrapper) throws Exception {
|
|
ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
|
|
Chunk chunk = wrapper.passthrough(new Chunk1_13Type(clientWorld));
|
|
|
|
for (ChunkSection section : chunk.getSections()) {
|
|
if (section == null) continue;
|
|
for (int i = 0; i < section.getPaletteSize(); i++) {
|
|
section.setPaletteEntry(i, protocol.getMappingData().getNewBlockStateId(section.getPaletteEntry(i)));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
blockRewriter.registerBlockAction(ClientboundPackets1_13.BLOCK_ACTION);
|
|
blockRewriter.registerBlockChange(ClientboundPackets1_13.BLOCK_CHANGE);
|
|
blockRewriter.registerMultiBlockChange(ClientboundPackets1_13.MULTI_BLOCK_CHANGE);
|
|
blockRewriter.registerEffect(ClientboundPackets1_13.EFFECT, 1010, 2001);
|
|
|
|
protocol.registerOutgoing(ClientboundPackets1_13.JOIN_GAME, new PacketRemapper() {
|
|
@Override
|
|
public void registerMap() {
|
|
map(Type.INT); // 0 - Entity ID
|
|
map(Type.UNSIGNED_BYTE); // 1 - Gamemode
|
|
map(Type.INT); // 2 - Dimension
|
|
|
|
handler(new PacketHandler() {
|
|
@Override
|
|
public void handle(PacketWrapper wrapper) throws Exception {
|
|
// Store the player
|
|
ClientWorld clientChunks = wrapper.user().get(ClientWorld.class);
|
|
int dimensionId = wrapper.get(Type.INT, 1);
|
|
clientChunks.setEnvironment(dimensionId);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
protocol.registerOutgoing(ClientboundPackets1_13.RESPAWN, new PacketRemapper() {
|
|
@Override
|
|
public void registerMap() {
|
|
map(Type.INT); // 0 - Dimension ID
|
|
handler(new PacketHandler() {
|
|
@Override
|
|
public void handle(PacketWrapper wrapper) throws Exception {
|
|
ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
|
|
int dimensionId = wrapper.get(Type.INT, 0);
|
|
clientWorld.setEnvironment(dimensionId);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
blockRewriter.registerSpawnParticle(ClientboundPackets1_13.SPAWN_PARTICLE, 3, 20, 27, InventoryPackets::toClient, Type.FLAT_ITEM, Type.FLOAT);
|
|
}
|
|
}
|