diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 0b12f94b4..6ca316f2a 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 75320896d..3a8fd3567 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0 diff --git a/common/pom.xml b/common/pom.xml index 514951258..479d5bf03 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0 diff --git a/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java b/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java index 11bf5ebf8..175093948 100644 --- a/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java +++ b/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java @@ -243,6 +243,11 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf return getBoolean("fix-non-full-blocklight", false); } + @Override + public boolean is1_14HealthNaNFix() { + return getBoolean("fix-1_14-health-nan", true); + } + @Override public boolean is1_15InstantRespawn() { return getBoolean("use-1_15-instant-respawn", false); diff --git a/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java index d0e3f099c..d84d180f0 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java +++ b/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -329,6 +329,15 @@ public interface ViaVersionConfig { */ boolean isNonFullBlockLightFix(); + boolean is1_14HealthNaNFix(); + + /** + * Fixes non full blocks having 0 light for 1.14+ clients on sub 1.14 servers. + * + * @return True if enabled + */ + boolean isNonFullBlockLightFix(); + /** * Should 1.15 clients respawn instantly / without showing the death screen * diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java index 317d9f934..4e156c956 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java @@ -77,7 +77,7 @@ public class ProtocolVersion { register(v1_14_2 = new ProtocolVersion(485, "1.14.2")); register(v1_14_3 = new ProtocolVersion(490, "1.14.3")); register(v1_14_4 = new ProtocolVersion(498, "1.14.4")); - register(v1_15 = new ProtocolVersion(555, "1.15")); + register(v1_15 = new ProtocolVersion(556, "1.15")); register(unknown = new ProtocolVersion(-1, "UNKNOWN")); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java index acbcb13d8..27f7b7940 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java @@ -350,34 +350,33 @@ public class Protocol1_11To1_10 extends Protocol { }); } - private int getNewSoundId(int id) { //TODO Make it better, suggestions are welcome. It's ugly and hardcoded now. + private int getNewSoundId(int id) { if (id == 196) // Experience orb sound got removed return -1; - int newId = id; - if (id >= 85) // Hello shulker boxes - newId += 2; - if (id >= 174) // Hello Guardian flop - newId += 1; - if (id >= 194) // Hello evocation things - newId += 8; + if (id >= 85) // Shulker boxes + id += 2; + if (id >= 176) // Guardian flop + id += 1; + if (id >= 197) // evocation things + id += 8; if (id >= 196) // Rip the Experience orb touch sound :'( - newId -= 1; - if (id >= 269) // Hello Liama's - newId += 9; - if (id >= 277) // Hello Mule chest - newId += 1; - if (id >= 370) // Hello Vex - newId += 4; - if (id >= 376) // Hello vindication - newId += 3; - if (id >= 423) // Equip Elytra - newId += 1; - if (id >= 427) // Hello empty bottle - newId += 1; - if (id >= 441) // Hello item totem use - newId += 1; - return newId; + id -= 1; + if (id >= 279) // Liama's + id += 9; + if (id >= 296) // Mule chest + id += 1; + if (id >= 390) // Vex + id += 4; + if (id >= 400) // vindication + id += 3; + if (id >= 450) // Elytra + id += 1; + if (id >= 455) // Empty bottle + id += 1; + if (id >= 470) // Totem use + id += 1; + return id; } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java index 891181295..8ece466d4 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java @@ -119,7 +119,7 @@ public class InventoryPackets { if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { Via.getPlatform().getLogger().info("Could not handle unknown sound source " + originalSource + " falling back to default: master"); } - finalSource = java.util.Optional.of(SoundSource.MASTER); + finalSource = Optional.of(SoundSource.MASTER); } @@ -509,9 +509,9 @@ public class InventoryPackets { case "bungeecord:main": return null; case "FML|MP": - return "fml:mp"; + return "fml:mp"; case "FML|HS": - return "fml:hs"; + return "fml:hs"; default: return old.matches("([0-9a-z_.-]+):([0-9a-z_/.-]+)") // Identifier regex ? old : null; @@ -754,9 +754,9 @@ public class InventoryPackets { case "wdl:request": return "WDL|REQUEST"; case "fml:hs": - return "FML|HS"; + return "FML|HS"; case "fml:mp": - return "FML:MP"; + return "FML:MP"; default: return newId.length() > 20 ? newId.substring(0, 20) : newId; } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14_1to1_14/packets/EntityPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14_1to1_14/packets/EntityPackets.java index bc7e68d12..56b4ef20d 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14_1to1_14/packets/EntityPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14_1to1_14/packets/EntityPackets.java @@ -51,6 +51,22 @@ public class EntityPackets { } }); + // Destroy entities + protocol.registerOutgoing(State.PLAY, 0x37, 0x37, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT_ARRAY); // 0 - Entity ids + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (int entity : wrapper.get(Type.VAR_INT_ARRAY, 0)) { + wrapper.user().get(EntityTracker.class).removeEntity(entity); + } + } + }); + } + }); + // Spawn Player protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { @Override diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java index fb877e5e2..2483cb29e 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_14to1_13_2.metadata; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.entities.Entity1_14Types; import us.myles.ViaVersion.api.entities.EntityType; @@ -43,6 +44,12 @@ public class MetadataRewriter1_14To1_13_2 extends MetadataRewriter 5) { metadata.setId(metadata.getId() + 1); } + if (metadata.getId() == 8 && type.isOrHasParent(Entity1_14Types.EntityType.LIVINGENTITY)) { + final float v = ((Number) metadata.getValue()).floatValue(); + if (Float.isNaN(v) && Via.getConfig().is1_14HealthNaNFix()) { + metadata.setValue(1F); + } + } //Metadata 12 added to living_entity if (metadata.getId() > 11 && type.isOrHasParent(Entity1_14Types.EntityType.LIVINGENTITY)) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java index 85dffc247..6f8a2dd5f 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java @@ -15,7 +15,7 @@ public enum SoundEffect { DIG_GRAVEL("dig.gravel", "block.gravel.place", SoundCategory.BLOCK), RANDOM_BOWHIT("random.bowhit", "block.tripwire.detach", SoundCategory.NEUTRAL), DIG_GLASS("dig.glass", "block.glass.break", SoundCategory.BLOCK), - MOB_ZOMBIE_SAY("mob.zombie.say", "entity.zombie_villager.ambient", SoundCategory.HOSTILE), + MOB_ZOMBIE_SAY("mob.zombie.say", "entity.zombie.ambient", SoundCategory.HOSTILE), MOB_PIG_DEATH("mob.pig.death", "entity.pig.death", SoundCategory.NEUTRAL), MOB_HORSE_DONKEY_HIT("mob.horse.donkey.hit", "entity.donkey.hurt", SoundCategory.NEUTRAL), GAME_NEUTRAL_SWIM("game.neutral.swim", "entity.player.swim", SoundCategory.NEUTRAL), @@ -207,7 +207,7 @@ public enum SoundEffect { MOB_MAGMACUBE_SMALL("mob.magmacube.small", "entity.small_magmacube.squish", SoundCategory.HOSTILE), FIRE_IGNITE("fire.ignite", "item.flintandsteel.use", SoundCategory.BLOCK, true), MOB_ENDERDRAGON_HIT("mob.enderdragon.hit", "entity.enderdragon.hurt", SoundCategory.HOSTILE), - MOB_ZOMBIE_HURT("mob.zombie.hurt", "entity.zombie_villager.hurt", SoundCategory.HOSTILE), + MOB_ZOMBIE_HURT("mob.zombie.hurt", "entity.zombie.hurt", SoundCategory.HOSTILE), RANDOM_EXPLODE("random.explode", "block.end_gateway.spawn", SoundCategory.BLOCK), MOB_SLIME_ATTACK("mob.slime.attack", "entity.slime.attack", SoundCategory.HOSTILE), MOB_MAGMACUBE_JUMP("mob.magmacube.jump", "entity.magmacube.jump", SoundCategory.HOSTILE), diff --git a/common/src/main/resources/assets/viaversion/config.yml b/common/src/main/resources/assets/viaversion/config.yml index d5d3994b6..5394a40f7 100644 --- a/common/src/main/resources/assets/viaversion/config.yml +++ b/common/src/main/resources/assets/viaversion/config.yml @@ -128,6 +128,8 @@ change-1_9-hitbox: false change-1_14-hitbox: false # Fixes 1.14+ clients on sub 1.14 servers having a light value of 0 for non full blocks. fix-non-full-blocklight: true +# Fixes walk animation not shown when health is set to Float.NaN +fix-1_14-health-nan: true # Should 1.15+ clients respawn instantly / without showing a death screen? use-1_15-instant-respawn: false # diff --git a/jar/pom.xml b/jar/pom.xml index a65389d51..f36b49d54 100644 --- a/jar/pom.xml +++ b/jar/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0 viaversion-jar diff --git a/pom.xml b/pom.xml index 02dfd6418..980ec6275 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ us.myles viaversion-parent - 2.1.4-19w38b + 2.1.4-19w39a pom viaversion-parent diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml index a15ad9820..f87ca79ed 100644 --- a/sponge-legacy/pom.xml +++ b/sponge-legacy/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0 diff --git a/sponge/pom.xml b/sponge/pom.xml index 976ad19b8..3861228c6 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0 diff --git a/velocity/pom.xml b/velocity/pom.xml index 4595e9ebb..8e96035e1 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 2.1.4-19w38b + 2.1.4-19w39a 4.0.0