mirror of
https://github.com/ViaVersion/ViaLegacy.git
synced 2025-01-10 19:48:09 +01:00
Updated Via API usage
* Update chunk system to work with latest Via again * Move Chunk type instances into protocol versioned type classes * Deleted unused type instances and cleaned up some protocols
This commit is contained in:
parent
6d2ae22ff9
commit
8828e45afe
@ -19,11 +19,9 @@ package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.types;
|
|||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ItemArrayType;
|
|
||||||
|
|
||||||
public class Typesb1_8_0_1 {
|
public class Typesb1_8_0_1 {
|
||||||
|
|
||||||
public static final Type<Item> CREATIVE_ITEM = new NbtLessItemType();
|
public static final Type<Item> CREATIVE_ITEM = new NbtLessItemType();
|
||||||
public static final Type<Item[]> CREATIVE_ITEM_ARRAY = new ItemArrayType<>(CREATIVE_ITEM);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ import com.viaversion.viaversion.api.platform.providers.ViaProviders;
|
|||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.api.type.types.CustomByteType;
|
import com.viaversion.viaversion.api.type.types.FixedByteArrayType;
|
||||||
import net.raphimc.vialegacy.ViaLegacy;
|
import net.raphimc.vialegacy.ViaLegacy;
|
||||||
import net.raphimc.vialegacy.api.data.BlockList1_6;
|
import net.raphimc.vialegacy.api.data.BlockList1_6;
|
||||||
import net.raphimc.vialegacy.api.model.ChunkCoord;
|
import net.raphimc.vialegacy.api.model.ChunkCoord;
|
||||||
@ -220,8 +220,8 @@ public class Protocolc0_30toc0_30cpe extends StatelessProtocol<ClientboundPacket
|
|||||||
final ClassicLevel level = levelStorage.getClassicLevel();
|
final ClassicLevel level = levelStorage.getClassicLevel();
|
||||||
|
|
||||||
final int count = wrapper.read(Type.UNSIGNED_BYTE) + 1; // count
|
final int count = wrapper.read(Type.UNSIGNED_BYTE) + 1; // count
|
||||||
final byte[] indices = wrapper.read(new CustomByteType(1024)); // indices
|
final byte[] indices = wrapper.read(new FixedByteArrayType(1024)); // indices
|
||||||
final byte[] blocks = wrapper.read(new CustomByteType(256)); // blocks
|
final byte[] blocks = wrapper.read(new FixedByteArrayType(256)); // blocks
|
||||||
|
|
||||||
if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocola1_0_16_2toa1_0_15.class)) {
|
if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocola1_0_16_2toa1_0_15.class)) {
|
||||||
final Map<ChunkCoord, List<BlockChangeRecord>> records = new HashMap<>();
|
final Map<ChunkCoord, List<BlockChangeRecord>> records = new HashMap<>();
|
||||||
|
@ -20,8 +20,7 @@ package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types;
|
|||||||
import com.viaversion.viaversion.api.minecraft.Position;
|
import com.viaversion.viaversion.api.minecraft.Position;
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.*;
|
import com.viaversion.viaversion.api.minecraft.chunks.*;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.api.type.types.CustomByteType;
|
import com.viaversion.viaversion.api.type.types.FixedByteArrayType;
|
||||||
import com.viaversion.viaversion.api.type.types.chunk.BaseChunkType;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.raphimc.vialegacy.api.model.IdAndData;
|
import net.raphimc.vialegacy.api.model.IdAndData;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks.NibbleArray1_1;
|
import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks.NibbleArray1_1;
|
||||||
@ -38,11 +37,6 @@ public class ChunkType1_1 extends Type<Chunk> {
|
|||||||
super(Chunk.class);
|
super(Chunk.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<? extends Type> getBaseClass() {
|
|
||||||
return BaseChunkType.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Chunk read(ByteBuf byteBuf) throws Exception {
|
public Chunk read(ByteBuf byteBuf) throws Exception {
|
||||||
final int xPosition = byteBuf.readInt();
|
final int xPosition = byteBuf.readInt();
|
||||||
@ -52,7 +46,7 @@ public class ChunkType1_1 extends Type<Chunk> {
|
|||||||
final int ySize = byteBuf.readUnsignedByte() + 1;
|
final int ySize = byteBuf.readUnsignedByte() + 1;
|
||||||
final int zSize = byteBuf.readUnsignedByte() + 1;
|
final int zSize = byteBuf.readUnsignedByte() + 1;
|
||||||
final int chunkSize = byteBuf.readInt();
|
final int chunkSize = byteBuf.readInt();
|
||||||
final byte[] compressedData = new CustomByteType(chunkSize).read(byteBuf);
|
final byte[] compressedData = new FixedByteArrayType(chunkSize).read(byteBuf);
|
||||||
final byte[] uncompressedData = new byte[(xSize * ySize * zSize * 5) / 2];
|
final byte[] uncompressedData = new byte[(xSize * ySize * zSize * 5) / 2];
|
||||||
final Inflater inflater = new Inflater();
|
final Inflater inflater = new Inflater();
|
||||||
inflater.setInput(compressedData);
|
inflater.setInput(compressedData);
|
||||||
|
@ -459,7 +459,7 @@ public class Protocol1_3_1_2to1_2_4_5 extends StatelessProtocol<ClientboundPacke
|
|||||||
|
|
||||||
if (!load) {
|
if (!load) {
|
||||||
final Chunk chunk = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], null, new ArrayList<>());
|
final Chunk chunk = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], null, new ArrayList<>());
|
||||||
wrapper.write(new ChunkType1_7_6(wrapper.user().get(ClientWorld.class)), chunk);
|
wrapper.write(Types1_7_6.getChunk(wrapper.user().get(ClientWorld.class).getEnvironment()), chunk);
|
||||||
} else {
|
} else {
|
||||||
wrapper.cancel();
|
wrapper.cancel();
|
||||||
}
|
}
|
||||||
@ -470,7 +470,7 @@ public class Protocol1_3_1_2to1_2_4_5 extends StatelessProtocol<ClientboundPacke
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
final ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
|
final Environment environment = wrapper.user().get(ClientWorld.class).getEnvironment();
|
||||||
Chunk chunk = wrapper.read(Types1_2_4.CHUNK);
|
Chunk chunk = wrapper.read(Types1_2_4.CHUNK);
|
||||||
|
|
||||||
wrapper.user().get(ChestStateTracker.class).unload(chunk.getX(), chunk.getZ());
|
wrapper.user().get(ChestStateTracker.class).unload(chunk.getX(), chunk.getZ());
|
||||||
@ -481,7 +481,7 @@ public class Protocol1_3_1_2to1_2_4_5 extends StatelessProtocol<ClientboundPacke
|
|||||||
for (int i = 0; i < chunk.getSections().length; i++) {
|
for (int i = 0; i < chunk.getSections().length; i++) {
|
||||||
final ChunkSection section = chunk.getSections()[i] = new ChunkSectionImpl(true);
|
final ChunkSection section = chunk.getSections()[i] = new ChunkSectionImpl(true);
|
||||||
section.palette(PaletteType.BLOCKS).addId(0);
|
section.palette(PaletteType.BLOCKS).addId(0);
|
||||||
if (clientWorld.getEnvironment() == Environment.NORMAL) {
|
if (environment == Environment.NORMAL) {
|
||||||
final byte[] skyLight = new byte[2048];
|
final byte[] skyLight = new byte[2048];
|
||||||
Arrays.fill(skyLight, (byte) 255);
|
Arrays.fill(skyLight, (byte) 255);
|
||||||
section.getLight().setSkyLight(skyLight);
|
section.getLight().setSkyLight(skyLight);
|
||||||
@ -489,14 +489,14 @@ public class Protocol1_3_1_2to1_2_4_5 extends StatelessProtocol<ClientboundPacke
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clientWorld.getEnvironment() != Environment.NORMAL) {
|
if (environment != Environment.NORMAL) {
|
||||||
for (ChunkSection section : chunk.getSections()) {
|
for (ChunkSection section : chunk.getSections()) {
|
||||||
if (section != null) {
|
if (section != null) {
|
||||||
section.getLight().setSkyLight(null);
|
section.getLight().setSkyLight(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wrapper.write(new ChunkType1_7_6(clientWorld), chunk);
|
wrapper.write(Types1_7_6.getChunk(environment), chunk);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types;
|
package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.Environment;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
|
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@ -26,35 +24,29 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Chunk
|
|||||||
|
|
||||||
public class ChunkType1_2_4 extends ChunkType1_7_6 {
|
public class ChunkType1_2_4 extends ChunkType1_7_6 {
|
||||||
|
|
||||||
private static final ClientWorld OVERWORLD = new ClientWorld(null);
|
|
||||||
|
|
||||||
static {
|
|
||||||
OVERWORLD.setEnvironment(Environment.NORMAL.id());
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChunkType1_2_4() {
|
public ChunkType1_2_4() {
|
||||||
super(OVERWORLD);
|
super(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void readUnusedInt(ByteBuf byteBuf, ClientWorld clientWorld) {
|
protected void readUnusedInt(ByteBuf byteBuf) {
|
||||||
byteBuf.readInt();
|
byteBuf.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void writeUnusedInt(ByteBuf byteBuf, ClientWorld clientWorld, Chunk chunk) {
|
protected void writeUnusedInt(ByteBuf byteBuf, Chunk chunk) {
|
||||||
byteBuf.writeInt(0);
|
byteBuf.writeInt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(ByteBuf byteBuf, ClientWorld clientWorld, Chunk chunk) throws Exception {
|
public void write(ByteBuf byteBuf, Chunk chunk) throws Exception {
|
||||||
for (ChunkSection section : chunk.getSections()) {
|
for (ChunkSection section : chunk.getSections()) {
|
||||||
if (section != null && !section.getLight().hasSkyLight()) {
|
if (section != null && !section.getLight().hasSkyLight()) {
|
||||||
throw new IllegalStateException("Chunk section does not have skylight");
|
throw new IllegalStateException("Chunk section does not have skylight");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.write(byteBuf, clientWorld, chunk);
|
super.write(byteBuf, chunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,11 +26,8 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types
|
|||||||
|
|
||||||
public class ItemType extends Type<Item> {
|
public class ItemType extends Type<Item> {
|
||||||
|
|
||||||
private final boolean compressed;
|
public ItemType() {
|
||||||
|
|
||||||
public ItemType(boolean compressed) {
|
|
||||||
super(Item.class);
|
super(Item.class);
|
||||||
this.compressed = compressed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Item read(ByteBuf buffer) throws Exception {
|
public Item read(ByteBuf buffer) throws Exception {
|
||||||
@ -43,7 +40,7 @@ public class ItemType extends Type<Item> {
|
|||||||
item.setAmount(buffer.readByte());
|
item.setAmount(buffer.readByte());
|
||||||
item.setData(buffer.readShort());
|
item.setData(buffer.readShort());
|
||||||
if (NbtItemList.hasNbt(id)) {
|
if (NbtItemList.hasNbt(id)) {
|
||||||
item.setTag((this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).read(buffer));
|
item.setTag(Types1_7_6.COMPRESSED_NBT.read(buffer));
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@ -57,7 +54,7 @@ public class ItemType extends Type<Item> {
|
|||||||
buffer.writeByte(item.amount());
|
buffer.writeByte(item.amount());
|
||||||
buffer.writeShort(item.data());
|
buffer.writeShort(item.data());
|
||||||
if (NbtItemList.hasNbt(item.identifier())) {
|
if (NbtItemList.hasNbt(item.identifier())) {
|
||||||
(this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).write(buffer, item.tag());
|
Types1_7_6.COMPRESSED_NBT.write(buffer, item.tag());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ItemA
|
|||||||
|
|
||||||
public class Types1_2_4 {
|
public class Types1_2_4 {
|
||||||
|
|
||||||
public static final Type<Item> ITEM = new ItemType(false);
|
public static final Type<Item> COMPRESSED_NBT_ITEM = new ItemType();
|
||||||
public static final Type<Item> COMPRESSED_NBT_ITEM = new ItemType(true);
|
|
||||||
|
|
||||||
public static final Type<Item[]> ITEM_ARRAY = new ItemArrayType<>(ITEM);
|
|
||||||
public static final Type<Item[]> COMPRESSED_NBT_ITEM_ARRAY = new ItemArrayType<>(COMPRESSED_NBT_ITEM);
|
public static final Type<Item[]> COMPRESSED_NBT_ITEM_ARRAY = new ItemArrayType<>(COMPRESSED_NBT_ITEM);
|
||||||
|
|
||||||
public static final Type<Chunk> CHUNK = new ChunkType1_2_4();
|
public static final Type<Chunk> CHUNK = new ChunkType1_2_4();
|
||||||
|
@ -28,7 +28,6 @@ import java.util.List;
|
|||||||
public class Types1_3_1 {
|
public class Types1_3_1 {
|
||||||
|
|
||||||
public static final Type<Item> NBTLESS_ITEM = new NbtLessItemType();
|
public static final Type<Item> NBTLESS_ITEM = new NbtLessItemType();
|
||||||
public static final Type<Item[]> NBTLESS_ITEM_ARRAY = new ItemArrayType<>(NBTLESS_ITEM);
|
|
||||||
|
|
||||||
public static final Type<Metadata> METADATA = new MetadataType();
|
public static final Type<Metadata> METADATA = new MetadataType();
|
||||||
public static final Type<List<Metadata>> METADATA_LIST = new MetaListType(METADATA);
|
public static final Type<List<Metadata>> METADATA_LIST = new MetaListType(METADATA);
|
||||||
|
@ -20,6 +20,7 @@ package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Environment;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10;
|
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10;
|
||||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||||
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||||
@ -30,13 +31,14 @@ import net.raphimc.vialegacy.api.protocol.StatelessProtocol;
|
|||||||
import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter;
|
import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter;
|
||||||
import net.raphimc.vialegacy.api.splitter.PreNettySplitter;
|
import net.raphimc.vialegacy.api.splitter.PreNettySplitter;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.rewriter.ItemRewriter;
|
import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.rewriter.ItemRewriter;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types.ChunkBulkType1_4_4;
|
import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types.BulkChunkType1_4_4;
|
||||||
|
import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types.Types1_4_4;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7.ClientboundPackets1_4_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7.ClientboundPackets1_4_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2;
|
import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.MetaType1_6_4;
|
import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.MetaType1_6_4;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4;
|
import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulkType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.BulkChunkType1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6;
|
||||||
|
|
||||||
public class Protocol1_4_6_7to1_4_4_5 extends StatelessProtocol<ClientboundPackets1_4_4, ClientboundPackets1_4_6, ServerboundPackets1_5_2, ServerboundPackets1_5_2> {
|
public class Protocol1_4_6_7to1_4_4_5 extends StatelessProtocol<ClientboundPackets1_4_4, ClientboundPackets1_4_6, ServerboundPackets1_5_2, ServerboundPackets1_5_2> {
|
||||||
@ -127,10 +129,7 @@ public class Protocol1_4_6_7to1_4_4_5 extends StatelessProtocol<ClientboundPacke
|
|||||||
this.registerClientbound(ClientboundPackets1_4_4.MAP_BULK_CHUNK, new PacketHandlers() {
|
this.registerClientbound(ClientboundPackets1_4_4.MAP_BULK_CHUNK, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
handler(wrapper -> {
|
map(Types1_7_6.CHUNK_BULK, Types1_4_4.CHUNK_BULK);
|
||||||
final ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
|
|
||||||
wrapper.write(new ChunkBulkType1_7_6(clientWorld), wrapper.read(new ChunkBulkType1_4_4(clientWorld)));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -17,23 +17,18 @@
|
|||||||
*/
|
*/
|
||||||
package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types;
|
package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulkType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.BulkChunkType1_7_6;
|
||||||
|
|
||||||
public class ChunkBulkType1_4_4 extends ChunkBulkType1_7_6 {
|
public class BulkChunkType1_4_4 extends BulkChunkType1_7_6 {
|
||||||
|
|
||||||
public ChunkBulkType1_4_4(ClientWorld clientWorld) {
|
|
||||||
super(clientWorld);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean readHasSkyLight(ByteBuf byteBuf, ClientWorld clientWorld) {
|
protected boolean readHasSkyLight(ByteBuf byteBuf) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void writeHasSkyLight(ByteBuf byteBuf, ClientWorld clientWorld, boolean hasSkyLight) {
|
protected void writeHasSkyLight(ByteBuf byteBuf, boolean hasSkyLight) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaLegacy - https://github.com/RaphiMC/ViaLegacy
|
||||||
|
* Copyright (C) 2023 RK_01/RaphiMC and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types;
|
||||||
|
|
||||||
|
public class Types1_4_4 {
|
||||||
|
|
||||||
|
public static final BulkChunkType1_4_4 CHUNK_BULK = new BulkChunkType1_4_4();
|
||||||
|
|
||||||
|
}
|
@ -67,7 +67,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8
|
|||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.GameProfile;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.GameProfile;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers.GameProfileFetcher;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers.GameProfileFetcher;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkType1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulkType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.BulkChunkType1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.MetaType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.MetaType1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6;
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
final Chunk chunk = wrapper.passthrough(new ChunkType1_7_6(wrapper.user().get(ClientWorld.class)));
|
final Chunk chunk = wrapper.passthrough(Types1_7_6.getChunk(wrapper.user().get(ClientWorld.class).getEnvironment()));
|
||||||
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -486,7 +486,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
final Chunk[] chunks = wrapper.passthrough(new ChunkBulkType1_7_6(wrapper.user().get(ClientWorld.class)));
|
final Chunk[] chunks = wrapper.passthrough(Types1_7_6.CHUNK_BULK);
|
||||||
for (Chunk chunk : chunks) {
|
for (Chunk chunk : chunks) {
|
||||||
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
|||||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||||
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
|
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Environment;
|
||||||
import com.viaversion.viaversion.api.minecraft.Position;
|
import com.viaversion.viaversion.api.minecraft.Position;
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10;
|
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10;
|
||||||
@ -63,7 +64,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter.Ch
|
|||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter.ItemRewriter;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter.ItemRewriter;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter.TranslationRewriter;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter.TranslationRewriter;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage.*;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage.*;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulkType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.BulkChunkType1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkType1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkType1_7_6;
|
||||||
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6;
|
import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6;
|
||||||
|
|
||||||
@ -633,9 +634,11 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
final Chunk chunk = wrapper.read(new ChunkType1_7_6(wrapper.user().get(ClientWorld.class)));
|
final Environment environment = wrapper.user().get(ClientWorld.class).getEnvironment();
|
||||||
|
|
||||||
|
final Chunk chunk = wrapper.read(Types1_7_6.getChunk(environment));
|
||||||
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
||||||
wrapper.write(new ChunkType1_8(wrapper.user().get(ClientWorld.class)), chunk);
|
wrapper.write(ChunkType1_8.forEnvironment(environment), chunk);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -696,11 +699,11 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
final Chunk[] chunks = wrapper.read(new ChunkBulkType1_7_6(wrapper.user().get(ClientWorld.class)));
|
final Chunk[] chunks = wrapper.read(Types1_7_6.CHUNK_BULK);
|
||||||
for (Chunk chunk : chunks) {
|
for (Chunk chunk : chunks) {
|
||||||
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk);
|
||||||
}
|
}
|
||||||
wrapper.write(new BulkChunkType1_8(wrapper.user().get(ClientWorld.class)), chunks);
|
wrapper.write(BulkChunkType1_8.TYPE, chunks);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -17,12 +17,9 @@
|
|||||||
*/
|
*/
|
||||||
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types;
|
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
||||||
import com.viaversion.viaversion.api.type.PartialType;
|
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.api.type.types.CustomByteType;
|
import com.viaversion.viaversion.api.type.types.FixedByteArrayType;
|
||||||
import com.viaversion.viaversion.api.type.types.chunk.BaseChunkBulkType;
|
|
||||||
import com.viaversion.viaversion.util.Pair;
|
import com.viaversion.viaversion.util.Pair;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
@ -32,25 +29,19 @@ import java.util.zip.DataFormatException;
|
|||||||
import java.util.zip.Deflater;
|
import java.util.zip.Deflater;
|
||||||
import java.util.zip.Inflater;
|
import java.util.zip.Inflater;
|
||||||
|
|
||||||
public class ChunkBulkType1_7_6 extends PartialType<Chunk[], ClientWorld> {
|
public class BulkChunkType1_7_6 extends Type<Chunk[]> {
|
||||||
|
|
||||||
public ChunkBulkType1_7_6(final ClientWorld clientWorld) {
|
public BulkChunkType1_7_6() {
|
||||||
super(clientWorld, Chunk[].class);
|
super(Chunk[].class);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<? extends Type> getBaseClass() {
|
|
||||||
return BaseChunkBulkType.class;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is here to allow overriding the code for 1.4.5 -{@literal >} 1.4.7
|
* This method is here to allow overriding the code for 1.4.5 -{@literal >} 1.4.7
|
||||||
*
|
*
|
||||||
* @param byteBuf The buffer
|
* @param byteBuf The buffer
|
||||||
* @param clientWorld The ClientWorld
|
|
||||||
* @return Read skylight array or not
|
* @return Read skylight array or not
|
||||||
*/
|
*/
|
||||||
protected boolean readHasSkyLight(final ByteBuf byteBuf, final ClientWorld clientWorld) {
|
protected boolean readHasSkyLight(final ByteBuf byteBuf) {
|
||||||
return byteBuf.readBoolean();
|
return byteBuf.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,19 +49,18 @@ public class ChunkBulkType1_7_6 extends PartialType<Chunk[], ClientWorld> {
|
|||||||
* This method is here to allow overriding the code for 1.4.5 -{@literal >} 1.4.7
|
* This method is here to allow overriding the code for 1.4.5 -{@literal >} 1.4.7
|
||||||
*
|
*
|
||||||
* @param byteBuf The buffer
|
* @param byteBuf The buffer
|
||||||
* @param clientWorld The ClientWorld
|
|
||||||
* @param hasSkyLight Has skylight
|
* @param hasSkyLight Has skylight
|
||||||
*/
|
*/
|
||||||
protected void writeHasSkyLight(final ByteBuf byteBuf, final ClientWorld clientWorld, final boolean hasSkyLight) {
|
protected void writeHasSkyLight(final ByteBuf byteBuf, final boolean hasSkyLight) {
|
||||||
byteBuf.writeBoolean(hasSkyLight);
|
byteBuf.writeBoolean(hasSkyLight);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Chunk[] read(ByteBuf byteBuf, ClientWorld clientWorld) throws Exception {
|
public Chunk[] read(ByteBuf byteBuf) throws Exception {
|
||||||
final short chunkCount = byteBuf.readShort();
|
final short chunkCount = byteBuf.readShort();
|
||||||
final int compressedSize = byteBuf.readInt();
|
final int compressedSize = byteBuf.readInt();
|
||||||
final boolean hasSkyLight = this.readHasSkyLight(byteBuf, clientWorld);
|
final boolean hasSkyLight = this.readHasSkyLight(byteBuf);
|
||||||
final byte[] data = new CustomByteType(compressedSize).read(byteBuf);
|
final byte[] data = new FixedByteArrayType(compressedSize).read(byteBuf);
|
||||||
final int[] chunkX = new int[chunkCount];
|
final int[] chunkX = new int[chunkCount];
|
||||||
final int[] chunkZ = new int[chunkCount];
|
final int[] chunkZ = new int[chunkCount];
|
||||||
final short[] primaryBitMask = new short[chunkCount];
|
final short[] primaryBitMask = new short[chunkCount];
|
||||||
@ -106,7 +96,7 @@ public class ChunkBulkType1_7_6 extends PartialType<Chunk[], ClientWorld> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(ByteBuf byteBuf, ClientWorld clientWorld, Chunk[] chunks) throws Exception {
|
public void write(ByteBuf byteBuf, Chunk[] chunks) throws Exception {
|
||||||
final int chunkCount = chunks.length;
|
final int chunkCount = chunks.length;
|
||||||
final ByteArrayOutputStream output = new ByteArrayOutputStream();
|
final ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||||
final int[] chunkX = new int[chunkCount];
|
final int[] chunkX = new int[chunkCount];
|
||||||
@ -139,7 +129,7 @@ public class ChunkBulkType1_7_6 extends PartialType<Chunk[], ClientWorld> {
|
|||||||
|
|
||||||
byteBuf.writeShort(chunkCount);
|
byteBuf.writeShort(chunkCount);
|
||||||
byteBuf.writeInt(compressedSize);
|
byteBuf.writeInt(compressedSize);
|
||||||
this.writeHasSkyLight(byteBuf, clientWorld, true);
|
this.writeHasSkyLight(byteBuf, true);
|
||||||
byteBuf.writeBytes(compressedData, 0, compressedSize);
|
byteBuf.writeBytes(compressedData, 0, compressedSize);
|
||||||
|
|
||||||
for (int i = 0; i < chunkCount; i++) {
|
for (int i = 0; i < chunkCount; i++) {
|
@ -17,13 +17,9 @@
|
|||||||
*/
|
*/
|
||||||
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types;
|
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.Environment;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.*;
|
import com.viaversion.viaversion.api.minecraft.chunks.*;
|
||||||
import com.viaversion.viaversion.api.type.PartialType;
|
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.api.type.types.CustomByteType;
|
import com.viaversion.viaversion.api.type.types.FixedByteArrayType;
|
||||||
import com.viaversion.viaversion.api.type.types.chunk.BaseChunkType;
|
|
||||||
import com.viaversion.viaversion.util.Pair;
|
import com.viaversion.viaversion.util.Pair;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.raphimc.vialegacy.api.model.IdAndData;
|
import net.raphimc.vialegacy.api.model.IdAndData;
|
||||||
@ -36,48 +32,44 @@ import java.util.zip.DataFormatException;
|
|||||||
import java.util.zip.Deflater;
|
import java.util.zip.Deflater;
|
||||||
import java.util.zip.Inflater;
|
import java.util.zip.Inflater;
|
||||||
|
|
||||||
public class ChunkType1_7_6 extends PartialType<Chunk, ClientWorld> {
|
public class ChunkType1_7_6 extends Type<Chunk> {
|
||||||
|
|
||||||
public ChunkType1_7_6(final ClientWorld clientWorld) {
|
private final boolean hasSkyLight;
|
||||||
super(clientWorld, Chunk.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public ChunkType1_7_6(boolean hasSkyLight) {
|
||||||
public Class<? extends Type> getBaseClass() {
|
super(Chunk.class);
|
||||||
return BaseChunkType.class;
|
this.hasSkyLight = hasSkyLight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is here to allow overriding the code for 1.2.5 -{@literal >} 1.3.2 because it introduced an unused int
|
* This method is here to allow overriding the code for 1.2.5 -{@literal >} 1.3.2 because it introduced an unused int
|
||||||
*
|
*
|
||||||
* @param byteBuf The buffer
|
* @param byteBuf The buffer
|
||||||
* @param clientWorld The ClientWorld
|
|
||||||
*/
|
*/
|
||||||
protected void readUnusedInt(final ByteBuf byteBuf, final ClientWorld clientWorld) {
|
protected void readUnusedInt(final ByteBuf byteBuf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is here to allow overriding the code for 1.2.5 -{@literal >} 1.3.2 because it introduced an unused int
|
* This method is here to allow overriding the code for 1.2.5 -{@literal >} 1.3.2 because it introduced an unused int
|
||||||
*
|
*
|
||||||
* @param byteBuf The buffer
|
* @param byteBuf The buffer
|
||||||
* @param clientWorld The ClientWorld
|
|
||||||
* @param chunk The Chunk
|
* @param chunk The Chunk
|
||||||
*/
|
*/
|
||||||
protected void writeUnusedInt(final ByteBuf byteBuf, final ClientWorld clientWorld, final Chunk chunk) {
|
protected void writeUnusedInt(final ByteBuf byteBuf, final Chunk chunk) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Chunk read(ByteBuf byteBuf, ClientWorld clientWorld) throws Exception {
|
public Chunk read(ByteBuf byteBuf) throws Exception {
|
||||||
final int chunkX = byteBuf.readInt();
|
final int chunkX = byteBuf.readInt();
|
||||||
final int chunkZ = byteBuf.readInt();
|
final int chunkZ = byteBuf.readInt();
|
||||||
final boolean fullChunk = byteBuf.readBoolean();
|
final boolean fullChunk = byteBuf.readBoolean();
|
||||||
final short primaryBitMask = byteBuf.readShort();
|
final short primaryBitMask = byteBuf.readShort();
|
||||||
final short additionalBitMask = byteBuf.readShort();
|
final short additionalBitMask = byteBuf.readShort();
|
||||||
final int compressedSize = byteBuf.readInt();
|
final int compressedSize = byteBuf.readInt();
|
||||||
this.readUnusedInt(byteBuf, clientWorld);
|
this.readUnusedInt(byteBuf);
|
||||||
final byte[] data = new CustomByteType(compressedSize).read(byteBuf);
|
final byte[] data = new FixedByteArrayType(compressedSize).read(byteBuf);
|
||||||
|
|
||||||
final byte[] uncompressedData = new byte[getSize(primaryBitMask, additionalBitMask, fullChunk, clientWorld.getEnvironment() == Environment.NORMAL)];
|
final byte[] uncompressedData = new byte[getSize(primaryBitMask, additionalBitMask, fullChunk, this.hasSkyLight)];
|
||||||
final Inflater inflater = new Inflater();
|
final Inflater inflater = new Inflater();
|
||||||
try {
|
try {
|
||||||
inflater.setInput(data, 0, compressedSize);
|
inflater.setInput(data, 0, compressedSize);
|
||||||
@ -93,11 +85,11 @@ public class ChunkType1_7_6 extends PartialType<Chunk, ClientWorld> {
|
|||||||
return new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], null, new ArrayList<>());
|
return new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], null, new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
return deserialize(chunkX, chunkZ, fullChunk, clientWorld.getEnvironment() == Environment.NORMAL, primaryBitMask, additionalBitMask, uncompressedData);
|
return deserialize(chunkX, chunkZ, fullChunk, this.hasSkyLight, primaryBitMask, additionalBitMask, uncompressedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(ByteBuf byteBuf, ClientWorld clientWorld, Chunk chunk) throws Exception {
|
public void write(ByteBuf byteBuf, Chunk chunk) throws Exception {
|
||||||
final Pair<byte[], Short> chunkData = serialize(chunk);
|
final Pair<byte[], Short> chunkData = serialize(chunk);
|
||||||
final byte[] data = chunkData.key();
|
final byte[] data = chunkData.key();
|
||||||
final short additionalBitMask = chunkData.value();
|
final short additionalBitMask = chunkData.value();
|
||||||
@ -120,7 +112,7 @@ public class ChunkType1_7_6 extends PartialType<Chunk, ClientWorld> {
|
|||||||
byteBuf.writeShort(chunk.getBitmask());
|
byteBuf.writeShort(chunk.getBitmask());
|
||||||
byteBuf.writeShort(additionalBitMask);
|
byteBuf.writeShort(additionalBitMask);
|
||||||
byteBuf.writeInt(compressedSize);
|
byteBuf.writeInt(compressedSize);
|
||||||
this.writeUnusedInt(byteBuf, clientWorld, chunk);
|
this.writeUnusedInt(byteBuf, chunk);
|
||||||
byteBuf.writeBytes(compressedData, 0, compressedSize);
|
byteBuf.writeBytes(compressedData, 0, compressedSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,11 +24,8 @@ import io.netty.buffer.ByteBuf;
|
|||||||
|
|
||||||
public class ItemType extends Type<Item> {
|
public class ItemType extends Type<Item> {
|
||||||
|
|
||||||
private final boolean compressed;
|
public ItemType() {
|
||||||
|
|
||||||
public ItemType(boolean compressed) {
|
|
||||||
super(Item.class);
|
super(Item.class);
|
||||||
this.compressed = compressed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -42,7 +39,7 @@ public class ItemType extends Type<Item> {
|
|||||||
item.setIdentifier(id);
|
item.setIdentifier(id);
|
||||||
item.setAmount(buffer.readByte());
|
item.setAmount(buffer.readByte());
|
||||||
item.setData(buffer.readShort());
|
item.setData(buffer.readShort());
|
||||||
item.setTag((this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).read(buffer));
|
item.setTag(Types1_7_6.COMPRESSED_NBT.read(buffer));
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +51,7 @@ public class ItemType extends Type<Item> {
|
|||||||
buffer.writeShort(item.identifier());
|
buffer.writeShort(item.identifier());
|
||||||
buffer.writeByte(item.amount());
|
buffer.writeByte(item.amount());
|
||||||
buffer.writeShort(item.data());
|
buffer.writeShort(item.data());
|
||||||
(this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).write(buffer, item.tag());
|
Types1_7_6.COMPRESSED_NBT.write(buffer, item.tag());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types;
|
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
|
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Environment;
|
||||||
import com.viaversion.viaversion.api.minecraft.Position;
|
import com.viaversion.viaversion.api.minecraft.Position;
|
||||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||||
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||||
@ -34,10 +35,7 @@ public class Types1_7_6 {
|
|||||||
public static final Type<CompoundTag> NBT = new NBTType(false);
|
public static final Type<CompoundTag> NBT = new NBTType(false);
|
||||||
public static final Type<CompoundTag> COMPRESSED_NBT = new NBTType(true);
|
public static final Type<CompoundTag> COMPRESSED_NBT = new NBTType(true);
|
||||||
|
|
||||||
public static final Type<Item> ITEM = new ItemType(false);
|
public static final Type<Item> COMPRESSED_ITEM = new ItemType();
|
||||||
public static final Type<Item> COMPRESSED_ITEM = new ItemType(true);
|
|
||||||
|
|
||||||
public static final Type<Item[]> ITEM_ARRAY = new ItemArrayType<>(ITEM);
|
|
||||||
public static final Type<Item[]> COMPRESSED_ITEM_ARRAY = new ItemArrayType<>(COMPRESSED_ITEM);
|
public static final Type<Item[]> COMPRESSED_ITEM_ARRAY = new ItemArrayType<>(COMPRESSED_ITEM);
|
||||||
|
|
||||||
public static final Type<Metadata> METADATA = new MetadataType();
|
public static final Type<Metadata> METADATA = new MetadataType();
|
||||||
@ -50,4 +48,13 @@ public class Types1_7_6 {
|
|||||||
public static final Type<Position> POSITION_SHORT = new PositionVarYType<>(Type.SHORT, i -> (short) i);
|
public static final Type<Position> POSITION_SHORT = new PositionVarYType<>(Type.SHORT, i -> (short) i);
|
||||||
public static final Type<Position> POSITION_INT = new PositionVarYType<>(Type.INT, i -> i);
|
public static final Type<Position> POSITION_INT = new PositionVarYType<>(Type.INT, i -> i);
|
||||||
|
|
||||||
|
private static final ChunkType1_7_6 CHUNK_WITH_SKYLIGHT = new ChunkType1_7_6(true);
|
||||||
|
private static final ChunkType1_7_6 CHUNK_WITHOUT_SKYLIGHT = new ChunkType1_7_6(false);
|
||||||
|
|
||||||
|
public static final BulkChunkType1_7_6 CHUNK_BULK = new BulkChunkType1_7_6();
|
||||||
|
|
||||||
|
public static ChunkType1_7_6 getChunk(Environment environment) {
|
||||||
|
return environment == Environment.NORMAL ? CHUNK_WITH_SKYLIGHT : CHUNK_WITHOUT_SKYLIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user