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