Skip to content

Commit

Permalink
Finish up v5 migration
Browse files Browse the repository at this point in the history
Also:
- Reduces the amount of anonymous classes
- Removes usages of PacketWrapper#create with raw ids
  • Loading branch information
FlorianMichael committed May 22, 2024
1 parent b1d6804 commit 740a6d9
Show file tree
Hide file tree
Showing 24 changed files with 1,083 additions and 1,291 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@

import java.util.List;

/**
* Safe to use before protocol loading
*/
public class RewindTypes {

public static final Type<int[]> INT_ARRAY = new IntArrayType(); // Integer array with byte as length indicator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,25 @@ public EntityDataListType(Type<EntityData> type) {

@Override
public List<EntityData> read(ByteBuf buffer) {
ArrayList<EntityData> list = new ArrayList<>();
ArrayList<EntityData> entityData = new ArrayList<>();

EntityData data;
do {
data = type.read(buffer);
if (data != null) {
list.add(data);
entityData.add(data);
}
} while (data != null);

return list;
return entityData;
}

@Override
public void write(ByteBuf buffer, List<EntityData> metadata) {
for (EntityData meta : metadata) {
public void write(ByteBuf buffer, List<EntityData> entityData) {
for (EntityData meta : entityData) {
type.write(buffer, meta);
}
if (metadata.isEmpty()) {
if (entityData.isEmpty()) {
type.write(buffer, new EntityData(0, EntityDataTypes1_7_6_10.BYTE, (byte) 0));
}
buffer.writeByte(127);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public void register() {
map(Types.BYTE); // Yaw
map(Types.BYTE); // Pitch
map(Types.SHORT); // Item in hand
map(Types1_7_6_10.ENTITY_DATA_LIST); // Metadata
map(Types1_7_6_10.ENTITY_DATA_LIST); // Entity data
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@ public enum EntityDataIndex1_7_6_10 {
ENTITY_NAME_TAG_VISIBILITY(ENTITY, -1, null, 3, EntityDataTypes1_8.BYTE),
ENTITY_SILENT(ENTITY, -1, null, 4, EntityDataTypes1_8.BYTE),

ENTITY_LIVING_HEALTH(LIVING_ENTITY_BASE, 6, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),
ENTITY_LIVING_POTION_EFFECT_COLOR(LIVING_ENTITY_BASE, 7, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
ENTITY_LIVING_IS_POTION_EFFECT_AMBIENT(LIVING_ENTITY_BASE, 8, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
ENTITY_LIVING_ARROWS(LIVING_ENTITY_BASE, 9, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
ENTITY_LIVING_NAME_TAG(LIVING_ENTITY_BASE, 10, EntityDataTypes1_7_6_10.STRING, 2, EntityDataTypes1_8.STRING),
ENTITY_LIVING_NAME_TAG_VISIBILITY(LIVING_ENTITY_BASE, 11, EntityDataTypes1_7_6_10.BYTE, 3, EntityDataTypes1_8.BYTE),
LIVING_ENTITY_BASE_HEALTH(LIVING_ENTITY_BASE, 6, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),
LIVING_ENTITY_BASE_POTION_EFFECT_COLOR(LIVING_ENTITY_BASE, 7, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
LIVING_ENTITY_BASE_IS_POTION_EFFECT_AMBIENT(LIVING_ENTITY_BASE, 8, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
LIVING_ENTITY_BASE_ARROWS(LIVING_ENTITY_BASE, 9, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
LIVING_ENTITY_BASE_NAME_TAG(LIVING_ENTITY_BASE, 10, EntityDataTypes1_7_6_10.STRING, 2, EntityDataTypes1_8.STRING),
LIVING_ENTITY_BASE_NAME_TAG_VISIBILITY(LIVING_ENTITY_BASE, 11, EntityDataTypes1_7_6_10.BYTE, 3, EntityDataTypes1_8.BYTE),

ENTITY_LIVING_AI(LIVING_ENTITY, -1, null, 15, EntityDataTypes1_8.BYTE),
LIVING_ENTITY_AI(LIVING_ENTITY, -1, null, 15, EntityDataTypes1_8.BYTE),

ENTITY_AGEABLE_AGE(ABSTRACT_AGEABLE, 12, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.BYTE),
ABSTRACT_AGEABLE_AGE(ABSTRACT_AGEABLE, 12, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.BYTE),

ARMOR_STAND_FLAGS(ARMOR_STAND, -1, null, 10, EntityDataTypes1_8.BYTE),
ARMOR_STAND_HEAD_POSITION(ARMOR_STAND, -1, null, 11, EntityDataTypes1_8.ROTATIONS),
Expand All @@ -55,10 +55,10 @@ public enum EntityDataIndex1_7_6_10 {
ARMOR_STAND_LEFT_LEG_POSITION(ARMOR_STAND, -1, null, 15, EntityDataTypes1_8.ROTATIONS),
ARMOR_STAND_RIGHT_LEG_POSITION(ARMOR_STAND, -1, null, 16, EntityDataTypes1_8.ROTATIONS),

HUMAN_SKIN_FLAGS(PLAYER, 16, EntityDataTypes1_7_6_10.BYTE, 10, EntityDataTypes1_8.BYTE),
HUMAN_UNUSED(PLAYER, -1, null, 16, EntityDataTypes1_8.BYTE),
HUMAN_ABSORPTION_HEATS(PLAYER, 17, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),
HUMAN_SCORE(PLAYER, 18, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
PLAYER_SKIN_FLAGS(PLAYER, 16, EntityDataTypes1_7_6_10.BYTE, 10, EntityDataTypes1_8.BYTE),
PLAYER_UNUSED(PLAYER, -1, null, 16, EntityDataTypes1_8.BYTE),
PLAYER_ABSORPTION_HEATS(PLAYER, 17, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),
PLAYER_SCORE(PLAYER, 18, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),

HORSE_FLAGS(HORSE, 16, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
HORSE_TYPE(HORSE, 19, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
Expand All @@ -68,8 +68,8 @@ public enum EntityDataIndex1_7_6_10 {

BAT_HANGING(BAT, 16, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),

TAMEABLE_FLAGS(TAMABLE_ANIMAL, 16, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
TAMEABLE_OWNER(TAMABLE_ANIMAL, 17, EntityDataTypes1_7_6_10.STRING, EntityDataTypes1_8.STRING),
TAMABLE_ANIMAL_FLAGS(TAMABLE_ANIMAL, 16, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
TAMABLE_ANIMAL_OWNER(TAMABLE_ANIMAL, 17, EntityDataTypes1_7_6_10.STRING, EntityDataTypes1_8.STRING),

OCELOT_TYPE(OCELOT, 18, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),

Expand Down Expand Up @@ -123,31 +123,31 @@ public enum EntityDataIndex1_7_6_10 {
BOAT_FORWARD_DIRECTION(BOAT, 18, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
BOAT_DAMAGE_TAKEN(BOAT, 19, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),

MINECART_SHAKING_POWER(ABSTRACT_MINECART, 17, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
MINECART_SHAKING_DIRECTION(ABSTRACT_MINECART, 18, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
MINECART_DAMAGE_TAKEN(ABSTRACT_MINECART, 19, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),
MINECART_BLOCK_INSIDE(ABSTRACT_MINECART, 20, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
MINECART_BLOCK_Y(ABSTRACT_MINECART, 21, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
MINECART_SHOW_BLOCK(ABSTRACT_MINECART, 22, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),
ABSTRACT_MINECART_SHAKING_POWER(ABSTRACT_MINECART, 17, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
ABSTRACT_MINECART_SHAKING_DIRECTION(ABSTRACT_MINECART, 18, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
ABSTRACT_MINECART_DAMAGE_TAKEN(ABSTRACT_MINECART, 19, EntityDataTypes1_7_6_10.FLOAT, EntityDataTypes1_8.FLOAT),
ABSTRACT_MINECART_BLOCK_INSIDE(ABSTRACT_MINECART, 20, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
ABSTRACT_MINECART_BLOCK_Y(ABSTRACT_MINECART, 21, EntityDataTypes1_7_6_10.INT, EntityDataTypes1_8.INT),
ABSTRACT_MINECART_SHOW_BLOCK(ABSTRACT_MINECART, 22, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),

FURNACE_MINECART_IS_POWERED(FURNACE_MINECART, 16, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),

ITEM_ITEM(ITEM, 10, EntityDataTypes1_7_6_10.ITEM, EntityDataTypes1_8.ITEM),

ARROW_IS_CRITICAL(ARROW, 16, EntityDataTypes1_7_6_10.BYTE, EntityDataTypes1_8.BYTE),

FIREWORK_INFO(FIREWORK_ROCKET, 8, EntityDataTypes1_7_6_10.ITEM, EntityDataTypes1_8.ITEM),
FIREWORK_ROCKET_INFO(FIREWORK_ROCKET, 8, EntityDataTypes1_7_6_10.ITEM, EntityDataTypes1_8.ITEM),

ITEM_FRAME_ITEM(ITEM_FRAME, 2, EntityDataTypes1_7_6_10.ITEM, 8, EntityDataTypes1_8.ITEM),
ITEM_FRAME_ROTATION(ITEM_FRAME, 3, EntityDataTypes1_7_6_10.BYTE, 9, EntityDataTypes1_8.BYTE),

ENDER_CRYSTAL_HEALTH(END_CRYSTAL, 8, EntityDataTypes1_7_6_10.INT, 9, EntityDataTypes1_8.INT);
END_CRYSTAL_HEALTH(END_CRYSTAL, 8, EntityDataTypes1_7_6_10.INT, 9, EntityDataTypes1_8.INT);

private static final HashMap<Pair<EntityTypes1_8.EntityType, Integer>, EntityDataIndex1_7_6_10> metadataRewrites = new HashMap<>();
private static final HashMap<Pair<EntityTypes1_8.EntityType, Integer>, EntityDataIndex1_7_6_10> ENTITY_DATA_REWRITES = new HashMap<>();

static {
for (EntityDataIndex1_7_6_10 index : EntityDataIndex1_7_6_10.values()) {
metadataRewrites.put(new Pair<>(index.getClazz(), index.getNewIndex()), index);
ENTITY_DATA_REWRITES.put(new Pair<>(index.getClazz(), index.getNewIndex()), index);
}
}

Expand Down Expand Up @@ -175,8 +175,8 @@ public enum EntityDataIndex1_7_6_10 {

private static Optional<EntityDataIndex1_7_6_10> getIndex(EntityType type, int index) {
Pair<EntityType, Integer> pair = new Pair<>(type, index);
if (metadataRewrites.containsKey(pair)) {
return Optional.of(metadataRewrites.get(pair));
if (ENTITY_DATA_REWRITES.containsKey(pair)) {
return Optional.of(ENTITY_DATA_REWRITES.get(pair));
}

return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import java.util.List;

public class VirtualHologramEntity {
private final List<EntityData> metadataTracker = new ArrayList<>();
private final List<EntityData> entityDataTracker = new ArrayList<>();
private double locX, locY, locZ;

private final UserConnection user;
Expand Down Expand Up @@ -91,24 +91,24 @@ public void setHeadYaw(float yaw) {
updateLocation(false);
}

public void syncState(final EntityPacketRewriter1_8 entityRewriter, final List<EntityData> metadataList) {
// Merge metadata updates into current tracker
for (EntityData metadata : metadataList) {
metadataTracker.removeIf(m -> m.id() == metadata.id());
metadataTracker.add(metadata);
public void syncState(final EntityPacketRewriter1_8 entityRewriter, final List<EntityData> entityDataList) {
// Merge entity data updates into current tracker
for (EntityData entityData : entityDataList) {
entityDataTracker.removeIf(m -> m.id() == entityData.id());
entityDataTracker.add(entityData);
}

// Filter armor stand data to calculate emulation
byte flags = 0;
byte armorStandFlags = 0;
for (EntityData metadata : metadataTracker) {
if (metadata.id() == 0 && metadata.dataType() == EntityDataTypes1_8.BYTE) {
flags = ((Number) metadata.getValue()).byteValue();
} else if (metadata.id() == 2 && metadata.dataType() == EntityDataTypes1_8.STRING) {
name = metadata.getValue().toString();
for (EntityData entityData : entityDataTracker) {
if (entityData.id() == 0 && entityData.dataType() == EntityDataTypes1_8.BYTE) {
flags = ((Number) entityData.getValue()).byteValue();
} else if (entityData.id() == 2 && entityData.dataType() == EntityDataTypes1_8.STRING) {
name = entityData.getValue().toString();
if (name != null && name.isEmpty()) name = null;
} else if (metadata.id() == 10 && metadata.dataType() == EntityDataTypes1_8.BYTE) {
armorStandFlags = ((Number) metadata.getValue()).byteValue();
} else if (entityData.id() == 10 && entityData.dataType() == EntityDataTypes1_8.BYTE) {
armorStandFlags = ((Number) entityData.getValue()).byteValue();
}
}
final boolean invisible = (flags & 0x20) != 0;
Expand All @@ -126,7 +126,7 @@ public void syncState(final EntityPacketRewriter1_8 entityRewriter, final List<E
deleteEntity();
sendSpawnPacket(entityRewriter);
} else {
sendMetadataUpdate(entityRewriter);
sendEntityDataUpdate(entityRewriter);
updateLocation(false);
}
}
Expand Down Expand Up @@ -182,83 +182,83 @@ protected void teleportEntity(final int entityId, final double x, final double y
}

protected void spawnEntity(final int entityId, final int type, final double locX, final double locY, final double locZ) {
final PacketWrapper spawnMob = PacketWrapper.create(ClientboundPackets1_7_2_5.ADD_MOB, null, user);

spawnMob.write(Types.VAR_INT, entityId); // entity id
spawnMob.write(Types.UNSIGNED_BYTE, (short) type); // type
spawnMob.write(Types.INT, (int) (locX * 32.0)); // x
spawnMob.write(Types.INT, (int) (locY * 32.0)); // y
spawnMob.write(Types.INT, (int) (locZ * 32.0)); // z
spawnMob.write(Types.BYTE, (byte) 0); // yaw
spawnMob.write(Types.BYTE, (byte) 0); // pitch
spawnMob.write(Types.BYTE, (byte) 0); // head pitch
spawnMob.write(Types.SHORT, (short) 0); // velocity x
spawnMob.write(Types.SHORT, (short) 0); // velocity y
spawnMob.write(Types.SHORT, (short) 0); // velocity z
spawnMob.write(Types1_7_6_10.ENTITY_DATA_LIST, new ArrayList<>()); // metadata

spawnMob.send(Protocol1_8To1_7_6_10.class);
final PacketWrapper addMob = PacketWrapper.create(ClientboundPackets1_7_2_5.ADD_MOB, user);

addMob.write(Types.VAR_INT, entityId); // Entity id
addMob.write(Types.UNSIGNED_BYTE, (short) type); // Entity type
addMob.write(Types.INT, (int) (locX * 32.0)); // X
addMob.write(Types.INT, (int) (locY * 32.0)); // Y
addMob.write(Types.INT, (int) (locZ * 32.0)); // Z
addMob.write(Types.BYTE, (byte) 0); // Yaw
addMob.write(Types.BYTE, (byte) 0); // Pitch
addMob.write(Types.BYTE, (byte) 0); // Head pitch
addMob.write(Types.SHORT, (short) 0); // Velocity x
addMob.write(Types.SHORT, (short) 0); // Velocity y
addMob.write(Types.SHORT, (short) 0); // Velocity z
addMob.write(Types1_7_6_10.ENTITY_DATA_LIST, new ArrayList<>()); // Entity data

addMob.send(Protocol1_8To1_7_6_10.class);
}

public void sendMetadataUpdate(final EntityPacketRewriter1_8 entityRewriter) {
public void sendEntityDataUpdate(final EntityPacketRewriter1_8 entityRewriter) {
if (entityIds == null) {
return;
}
final PacketWrapper metadataPacket = PacketWrapper.create(ClientboundPackets1_7_2_5.SET_ENTITY_DATA, user);
final PacketWrapper setEntityData = PacketWrapper.create(ClientboundPackets1_7_2_5.SET_ENTITY_DATA, user);

if (currentState == State.ZOMBIE) {
writeZombieMeta(entityRewriter, metadataPacket);
writeZombieMeta(entityRewriter, setEntityData);
} else if (currentState == State.HOLOGRAM) {
writeHologramMeta(metadataPacket);
writeHologramMeta(setEntityData);
} else {
return;
}
metadataPacket.send(Protocol1_8To1_7_6_10.class);
setEntityData.send(Protocol1_8To1_7_6_10.class);
}

private void writeZombieMeta(final EntityPacketRewriter1_8 entityRewriter, PacketWrapper wrapper) {
wrapper.write(Types.INT, entityIds[0]);

// Filter metadata sent by the server and convert them together with our custom metadata
final List<EntityData> metadataList = new ArrayList<>();
for (EntityData metadata : metadataTracker) {
// Remove non existent metadata
if (metadata.id() < 0 || metadata.id() > 9) {
// Filter entity data sent by the server and convert them together with our custom entity data
final List<EntityData> entityDataList = new ArrayList<>();
for (EntityData entityData : entityDataTracker) {
// Remove non existent entityData
if (entityData.id() < 0 || entityData.id() > 9) {
continue;
}
metadataList.add(new EntityData(metadata.id(), metadata.dataType(), metadata.getValue()));
entityDataList.add(new EntityData(entityData.id(), entityData.dataType(), entityData.getValue()));
}
if (small) {
metadataList.add(new EntityData(12, EntityDataTypes1_8.BYTE, (byte) 1));
entityDataList.add(new EntityData(12, EntityDataTypes1_8.BYTE, (byte) 1));
}

// Push metadata from the server through metadata conversion 1.7->1.8
for (EntityData metadata : metadataList.toArray(new EntityData[0])) {
final EntityDataHandlerEvent event = new EntityDataHandlerEventImpl(wrapper.user(), new TrackedEntityImpl(EntityTypes1_8.EntityType.ZOMBIE), -1, metadata, metadataList);
// Push entity data from the server through entity data conversion 1.7->1.8
for (EntityData entityData : entityDataList.toArray(new EntityData[0])) {
final EntityDataHandlerEvent event = new EntityDataHandlerEventImpl(wrapper.user(), new TrackedEntityImpl(EntityTypes1_8.EntityType.ZOMBIE), -1, entityData, entityDataList);
try {
entityRewriter.handleMetadata(event, metadata);
entityRewriter.handleEntityData(event, entityData);
} catch (Exception e) {
metadataList.remove(metadata);
entityDataList.remove(entityData);
break;
}
if (event.cancelled()) {
metadataList.remove(metadata);
entityDataList.remove(entityData);
break;
}
}
wrapper.write(Types1_7_6_10.ENTITY_DATA_LIST, metadataList);
wrapper.write(Types1_7_6_10.ENTITY_DATA_LIST, entityDataList);
}

private void writeHologramMeta(PacketWrapper wrapper) {
wrapper.write(Types.INT, entityIds[1]);

// Directly write 1.7 metadata here since we are making them up
final List<EntityData> metadataList = new ArrayList<>();
metadataList.add(new EntityData(EntityDataIndex1_7_6_10.ENTITY_AGEABLE_AGE.getIndex(), EntityDataTypes1_7_6_10.INT, -1700000));
metadataList.add(new EntityData(EntityDataIndex1_7_6_10.ENTITY_LIVING_NAME_TAG.getIndex(), EntityDataTypes1_7_6_10.STRING, name));
metadataList.add(new EntityData(EntityDataIndex1_7_6_10.ENTITY_LIVING_NAME_TAG_VISIBILITY.getIndex(), EntityDataTypes1_7_6_10.BYTE, (byte) 1));
// Directly write 1.7 entity data here since we are making them up
final List<EntityData> entityDataList = new ArrayList<>();
entityDataList.add(new EntityData(EntityDataIndex1_7_6_10.ABSTRACT_AGEABLE_AGE.getIndex(), EntityDataTypes1_7_6_10.INT, -1700000));
entityDataList.add(new EntityData(EntityDataIndex1_7_6_10.LIVING_ENTITY_BASE_NAME_TAG.getIndex(), EntityDataTypes1_7_6_10.STRING, name));
entityDataList.add(new EntityData(EntityDataIndex1_7_6_10.LIVING_ENTITY_BASE_NAME_TAG_VISIBILITY.getIndex(), EntityDataTypes1_7_6_10.BYTE, (byte) 1));

wrapper.write(Types1_7_6_10.ENTITY_DATA_LIST, metadataList);
wrapper.write(Types1_7_6_10.ENTITY_DATA_LIST, entityDataList);
}

public void sendSpawnPacket(final EntityPacketRewriter1_8 entityRewriter) {
Expand Down Expand Up @@ -288,7 +288,7 @@ public void sendSpawnPacket(final EntityPacketRewriter1_8 entityRewriter) {
this.entityIds = entityIds;
}

sendMetadataUpdate(entityRewriter);
sendEntityDataUpdate(entityRewriter);
updateLocation(true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;

// TODO I believe this should be a storage?
public abstract class TitleRenderProvider implements Provider {
protected Map<UUID, Integer> fadeIn = new HashMap<>();
protected Map<UUID, Integer> stay = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import java.util.List;
import java.util.zip.Inflater;

// https://github.com/Gerrygames/ClientViaVersion/blob/master/src/main/java/de/gerrygames/the5zig/clientviaversion/netty/CompressionDecoder.java
public class CompressionDecoder extends MessageToMessageDecoder<ByteBuf> {
private final Inflater inflater = new Inflater();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@

import java.util.zip.Deflater;

// https://github.com/Gerrygames/ClientViaVersion/blob/master/src/main/java/de/gerrygames/the5zig/clientviaversion/netty/CompressionEncoder.java
public class CompressionEncoder extends MessageToByteEncoder<ByteBuf> {
private final Deflater deflater = new Deflater();

Expand Down
Loading

0 comments on commit 740a6d9

Please sign in to comment.