diff --git a/all/pom.xml b/all/pom.xml index f578e90e..a3c0ada5 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-all diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 2a79f6c1..2e96670a 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-bukkit diff --git a/bungee/pom.xml b/bungee/pom.xml index 124490dd..125a3424 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-bungee diff --git a/core/pom.xml b/core/pom.xml index 7ba0e852..8343d4f2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-core diff --git a/core/src/main/java/nl/matsv/viabackwards/api/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/api/data/BackwardsMappings.java index b88ff900..09ba45a6 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/data/BackwardsMappings.java @@ -35,7 +35,7 @@ public class BackwardsMappings extends MappingData { if (diffMappings != null) { JsonObject diffItems = diffMappings.getAsJsonObject("items"); if (diffItems != null) { - backwardsItemMappings = VBMappingDataLoader.loadItemMappings(oldMappings.getAsJsonObject("items"), newMappings.getAsJsonObject("items"), diffItems); + backwardsItemMappings = VBMappingDataLoader.loadItemMappings(oldMappings.getAsJsonObject("items"), newMappings.getAsJsonObject("items"), diffItems, true); } JsonObject diffSounds = diffMappings.getAsJsonObject("sounds"); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java index ea5d6233..7646c474 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java @@ -2,8 +2,11 @@ package nl.matsv.viabackwards.protocol.protocol1_16_4to1_17; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.data.BackwardsMappings; +import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.api.rewriters.SoundRewriter; import nl.matsv.viabackwards.protocol.protocol1_16_4to1_17.packets.BlockItemPackets1_17; +import nl.matsv.viabackwards.protocol.protocol1_16_4to1_17.packets.EntityPackets1_17; +import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.rewriters.StatisticsRewriter; import us.myles.ViaVersion.api.rewriters.TagRewriter; @@ -15,6 +18,7 @@ import us.myles.ViaVersion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4; public class Protocol1_16_4To1_17 extends BackwardsProtocol { public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.17", "1.16.2", Protocol1_17To1_16_4.class, true); + private BlockItemPackets1_17 blockItemPackets; public Protocol1_16_4To1_17() { super(ClientboundPackets1_16_2.class, ClientboundPackets1_16_2.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16_2.class); @@ -24,7 +28,10 @@ public class Protocol1_16_4To1_17 extends BackwardsProtocol { + wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.BYTE); + wrapper.write(Type.BOOLEAN, true); // Tracking position + wrapper.passthrough(Type.BOOLEAN); + + boolean hasMarkers = wrapper.read(Type.BOOLEAN); + if (!hasMarkers) { + wrapper.write(Type.VAR_INT, 0); // Array size + } + }); + } + }); + } + + @Override + public void init(UserConnection user) { + if (!user.has(EntityTracker.class)) { + user.put(new EntityTracker(user)); + } + user.get(EntityTracker.class).initProtocol(this); + } + + public BlockItemPackets1_17 getBlockItemPackets() { + return blockItemPackets; } @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java new file mode 100644 index 00000000..b83d8ddb --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java @@ -0,0 +1,75 @@ +package nl.matsv.viabackwards.protocol.protocol1_16_4to1_17.packets; + +import nl.matsv.viabackwards.api.rewriters.EntityRewriter; +import nl.matsv.viabackwards.protocol.protocol1_16_4to1_17.Protocol1_16_4To1_17; +import us.myles.ViaVersion.api.entities.Entity1_16_2Types; +import us.myles.ViaVersion.api.entities.EntityType; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.MetaType; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.Particle; +import us.myles.ViaVersion.api.type.types.version.Types1_14; +import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; +import us.myles.viaversion.libs.gson.JsonElement; + +public class EntityPackets1_17 extends EntityRewriter { + + public EntityPackets1_17(Protocol1_16_4To1_17 protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + registerSpawnTrackerWithData(ClientboundPackets1_16_2.SPAWN_ENTITY, Entity1_16_2Types.EntityType.FALLING_BLOCK); + registerSpawnTracker(ClientboundPackets1_16_2.SPAWN_MOB); + registerExtraTracker(ClientboundPackets1_16_2.SPAWN_EXPERIENCE_ORB, Entity1_16_2Types.EntityType.EXPERIENCE_ORB); + registerExtraTracker(ClientboundPackets1_16_2.SPAWN_PAINTING, Entity1_16_2Types.EntityType.PAINTING); + registerExtraTracker(ClientboundPackets1_16_2.SPAWN_PLAYER, Entity1_16_2Types.EntityType.PLAYER); + registerEntityDestroy(ClientboundPackets1_16_2.DESTROY_ENTITIES); + registerMetadataRewriter(ClientboundPackets1_16_2.ENTITY_METADATA, Types1_14.METADATA_LIST); + protocol.registerOutgoing(ClientboundPackets1_16_2.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // Entity ID + handler(getTrackerHandler(Entity1_16_2Types.EntityType.PLAYER, Type.INT)); + } + }); + } + + @Override + protected void registerRewrites() { + registerMetaHandler().handle(e -> { + Metadata meta = e.getData(); + MetaType type = meta.getMetaType(); + if (type == MetaType1_14.Slot) { + meta.setValue(protocol.getBlockItemPackets().handleItemToClient((Item) meta.getValue())); + } else if (type == MetaType1_14.BlockID) { + meta.setValue(protocol.getMappingData().getNewBlockStateId((int) meta.getValue())); + } else if (type == MetaType1_14.OptChat) { + JsonElement text = meta.getCastedValue(); + if (text != null) { + //protocol.getTranslatableRewriter().processText(text); //TODO + } + } else if (type == MetaType1_14.PARTICLE) { + rewriteParticle((Particle) meta.getValue()); + } + return meta; + }); + + registerMetaHandler().filter(7).removed(); // Ticks frozen + registerMetaHandler().handle(meta -> { + if (meta.getIndex() > 7) { + meta.getData().setId(meta.getIndex() - 1); + } + return meta.getData(); + }); + } + + @Override + protected EntityType getTypeFromId(int typeId) { + return Entity1_16_2Types.getTypeFromId(typeId); + } +} diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.16.2to1.17.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.16.2to1.17.json index b7a0b225..566efcb3 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.16.2to1.17.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.16.2to1.17.json @@ -2,6 +2,10 @@ "blockstates": { "minecraft:dirt_path": "minecraft:grass_path", "minecraft:cauldron": "minecraft:cauldron[level=0]", + "minecraft:powder_snow_cauldron[level=1]": "minecraft:cauldron[level=1]", + "minecraft:powder_snow_cauldron[level=2]": "minecraft:cauldron[level=2]", + "minecraft:powder_snow_cauldron[level=3]": "minecraft:cauldron[level=3]", + "minecraft:powder_snow": "minecraft:snow_block", "minecraft:water_cauldron[level=1]": "minecraft:cauldron[level=1]", "minecraft:water_cauldron[level=2]": "minecraft:cauldron[level=2]", "minecraft:water_cauldron[level=3]": "minecraft:cauldron[level=3]", @@ -791,6 +795,10 @@ "minecraft:lightning_rod": { "id": "minecraft:end_rod", "name": "1.17 Lightning Rod" + }, + "minecraft:powder_snow_bucket": { + "id": "minecraft:milk_bucket", + "name": "1.17 Powder Snow Bucket" } }, "sounds": { @@ -837,9 +845,17 @@ "block.tuff.place": "", "block.tuff.hit": "", "block.tuff.fall": "", - "small_flame": "" + "item.bucket.empty_powder_snow": "", + "item.bucket.fill_powder_snow": "", + "entity.player.hurt_freeze": "", + "block.powder_snow.break": "", + "block.powder_snow.fall": "", + "block.powder_snow.hit": "", + "block.powder_snow.place": "", + "block.powder_snow.step": "" }, "particles": { - "small_flame": "flame" + "small_flame": "flame", + "snowflake": "cloud" } } \ No newline at end of file diff --git a/fabric/pom.xml b/fabric/pom.xml index 8ed5e90b..0ccede87 100644 --- a/fabric/pom.xml +++ b/fabric/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-fabric diff --git a/pom.xml b/pom.xml index dfee87ce..b2f6bab7 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ nl.matsv viabackwards-parent - 3.3.0-20w45a + 3.3.0-20w46a pom Allow older clients to join newer server versions. diff --git a/sponge/pom.xml b/sponge/pom.xml index a992b2b5..79b7339a 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-sponge diff --git a/velocity/pom.xml b/velocity/pom.xml index 20213bf4..612ef3fd 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -16,7 +16,7 @@ viabackwards-parent nl.matsv - 3.3.0-20w45a + 3.3.0-20w46a viabackwards-velocity