diff --git a/MinecraftClient/Mapping/EntityPalettes/EntityPalette112.cs b/MinecraftClient/Mapping/EntityPalettes/EntityPalette112.cs
new file mode 100644
index 00000000..b2394f87
--- /dev/null
+++ b/MinecraftClient/Mapping/EntityPalettes/EntityPalette112.cs
@@ -0,0 +1,142 @@
+using System;
+using System.Collections.Generic;
+
+namespace MinecraftClient.Mapping.EntityPalettes
+{
+ ///
+ /// Defines mappings of entitiy IDs for 1.12.2 and below
+ /// Generated by ReinforceZwei using custom script
+ /// Data source: https://github.com/PrismarineJS/minecraft-data
+ ///
+ public class EntityPalette112 : EntityPalette
+ {
+ private static Dictionary mappingsObjects = new Dictionary()
+ {
+ // https://wiki.vg/Entity_metadata#Objects
+ { 1, EntityType.Boat },
+ { 2, EntityType.Item },
+ { 3, EntityType.AreaEffectCloud },
+ { 10, EntityType.Minecart },
+ { 50, EntityType.Tnt },
+ { 51, EntityType.EndCrystal },
+ { 60, EntityType.Arrow },
+ { 61, EntityType.Snowball },
+ { 62, EntityType.Egg },
+ { 63, EntityType.Fireball },
+ { 64, EntityType.SmallFireball },
+ { 65, EntityType.EnderPearl },
+ { 66, EntityType.WitherSkull },
+ { 67, EntityType.ShulkerBullet },
+ { 68, EntityType.LlamaSpit },
+ { 70, EntityType.FallingBlock },
+ { 71, EntityType.ItemFrame },
+ { 72, EntityType.EyeOfEnder },
+ { 73, EntityType.Egg },
+ { 75, EntityType.Snowball },
+ { 76, EntityType.FireworkRocket },
+ { 77, EntityType.LeashKnot },
+ { 78, EntityType.ArmorStand },
+ { 79, EntityType.EvokerFangs },
+ { 90, EntityType.FishingBobber },
+ { 91, EntityType.SpectralArrow },
+ { 93, EntityType.DragonFireball },
+ };
+
+ private static Dictionary mappingsMobs = new Dictionary()
+ {
+ { 1, EntityType.Item },
+ { 2, EntityType.ExperienceOrb },
+ { 3, EntityType.AreaEffectCloud },
+ { 4, EntityType.ElderGuardian },
+ { 5, EntityType.WitherSkeleton },
+ { 6, EntityType.Stray },
+ { 7, EntityType.Egg },
+ { 8, EntityType.LeashKnot },
+ { 9, EntityType.Painting },
+ { 10, EntityType.Arrow },
+ { 11, EntityType.Snowball },
+ { 12, EntityType.Fireball },
+ { 13, EntityType.SmallFireball },
+ { 14, EntityType.EnderPearl },
+ { 15, EntityType.EyeOfEnder },
+ { 16, EntityType.Potion },
+ { 17, EntityType.ExperienceBottle },
+ { 18, EntityType.ItemFrame },
+ { 19, EntityType.WitherSkull },
+ { 20, EntityType.Tnt },
+ { 21, EntityType.FallingBlock },
+ { 22, EntityType.FireworkRocket },
+ { 23, EntityType.Husk },
+ { 24, EntityType.SpectralArrow },
+ { 25, EntityType.ShulkerBullet },
+ { 26, EntityType.DragonFireball },
+ { 27, EntityType.ZombieVillager },
+ { 28, EntityType.SkeletonHorse },
+ { 29, EntityType.ZombieHorse },
+ { 30, EntityType.ArmorStand },
+ { 31, EntityType.Donkey },
+ { 32, EntityType.Mule },
+ { 33, EntityType.EvokerFangs },
+ { 34, EntityType.Evoker },
+ { 35, EntityType.Vex },
+ { 36, EntityType.Vindicator },
+ { 37, EntityType.Illusioner },
+ { 40, EntityType.CommandBlockMinecart },
+ { 41, EntityType.Boat },
+ { 42, EntityType.Minecart },
+ { 43, EntityType.ChestMinecart },
+ { 44, EntityType.FurnaceMinecart },
+ { 45, EntityType.TntMinecart },
+ { 46, EntityType.HopperMinecart },
+ { 47, EntityType.SpawnerMinecart },
+ { 50, EntityType.Creeper },
+ { 51, EntityType.Skeleton },
+ { 52, EntityType.Spider },
+ { 53, EntityType.Giant },
+ { 54, EntityType.Zombie },
+ { 55, EntityType.Slime },
+ { 56, EntityType.Ghast },
+ { 57, EntityType.ZombiePigman },
+ { 58, EntityType.Enderman },
+ { 59, EntityType.CaveSpider },
+ { 60, EntityType.Silverfish },
+ { 61, EntityType.Blaze },
+ { 62, EntityType.MagmaCube },
+ { 63, EntityType.EnderDragon },
+ { 64, EntityType.Wither },
+ { 65, EntityType.Bat },
+ { 66, EntityType.Witch },
+ { 67, EntityType.Endermite },
+ { 68, EntityType.Guardian },
+ { 69, EntityType.Shulker },
+ { 90, EntityType.Pig },
+ { 91, EntityType.Sheep },
+ { 92, EntityType.Cow },
+ { 93, EntityType.Chicken },
+ { 94, EntityType.Squid },
+ { 95, EntityType.Wolf },
+ { 96, EntityType.Mooshroom },
+ { 97, EntityType.SnowGolem },
+ { 98, EntityType.Ocelot },
+ { 99, EntityType.IronGolem },
+ { 100, EntityType.Horse },
+ { 101, EntityType.Rabbit },
+ { 102, EntityType.PolarBear },
+ { 103, EntityType.Llama },
+ { 104, EntityType.LlamaSpit },
+ { 105, EntityType.Parrot },
+ { 120, EntityType.Villager },
+ { 200, EntityType.EndCrystal },
+ };
+
+ protected override Dictionary GetDict()
+ {
+ return mappingsMobs;
+ }
+
+ protected override Dictionary GetDictNonLiving()
+ {
+ return mappingsObjects;
+ }
+ }
+}
diff --git a/MinecraftClient/Mapping/EntityPalettes/EntityPalette113.cs b/MinecraftClient/Mapping/EntityPalettes/EntityPalette113.cs
index b0253b06..1c7bffe1 100644
--- a/MinecraftClient/Mapping/EntityPalettes/EntityPalette113.cs
+++ b/MinecraftClient/Mapping/EntityPalettes/EntityPalette113.cs
@@ -4,9 +4,9 @@ using System.Collections.Generic;
namespace MinecraftClient.Mapping.EntityPalettes
{
///
- /// Defines mappings for pre-1.14 entitiy IDs
- /// Pre-1.14 Minecraft has 2 set of ids: One for non-living objects and one for living mobs
- /// 1.14+ Minecraft has only one set of ids for all types of entities
+ /// Defines mappings for Minecraft 1.13.
+ /// 1.13 and lower has 2 set of ids: One for non-living objects and one for living mobs
+ /// 1.14+ has only one set of ids for all types of entities
///
public class EntityPalette113 : EntityPalette
{
diff --git a/MinecraftClient/MinecraftClient.csproj b/MinecraftClient/MinecraftClient.csproj
index b3f84dac..a866b7fb 100644
--- a/MinecraftClient/MinecraftClient.csproj
+++ b/MinecraftClient/MinecraftClient.csproj
@@ -132,6 +132,7 @@
+
diff --git a/MinecraftClient/Protocol/Handlers/DataTypes.cs b/MinecraftClient/Protocol/Handlers/DataTypes.cs
index 8f7ee837..c66d3a17 100644
--- a/MinecraftClient/Protocol/Handlers/DataTypes.cs
+++ b/MinecraftClient/Protocol/Handlers/DataTypes.cs
@@ -370,7 +370,17 @@ namespace MinecraftClient.Protocol.Handlers
entityUUID = ReadNextUUID(cache);
}
- EntityType entityType = entityPalette.FromId(ReadNextVarInt(cache), living);
+ EntityType entityType;
+ // Entity type data type change from byte to varint after 1.14
+ if (protocolversion > Protocol18Handler.MC113Version)
+ {
+ entityType = entityPalette.FromId(ReadNextVarInt(cache), living);
+ }
+ else
+ {
+ entityType = entityPalette.FromId(ReadNextByte(cache), living);
+ }
+
Double entityX = ReadNextDouble(cache);
Double entityY = ReadNextDouble(cache);
Double entityZ = ReadNextDouble(cache);
diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs
index aae34d65..3589d7c9 100644
--- a/MinecraftClient/Protocol/Handlers/Protocol18.cs
+++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs
@@ -84,7 +84,7 @@ namespace MinecraftClient.Protocol.Handlers
handler.SetInventoryEnabled(false);
}
- if (handler.GetEntityHandlingEnabled() && (protocolversion <= MC1122Version || protocolversion > MC1161Version))
+ if (handler.GetEntityHandlingEnabled() && (protocolversion < MC110Version || protocolversion > MC1161Version))
{
ConsoleIO.WriteLineFormatted("§8Entities are currently not handled for that MC version.");
handler.SetEntityHandlingEnabled(false);
@@ -102,7 +102,7 @@ namespace MinecraftClient.Protocol.Handlers
}
else Block.Palette = new Palette112();
- if (protocolversion >= MC114Version)
+ if (protocolversion >= MC113Version)
{
if (protocolversion > MC1161Version && handler.GetEntityHandlingEnabled())
throw new NotImplementedException("Please update entity types handling for this Minecraft version. See EntityType.cs");
@@ -110,9 +110,11 @@ namespace MinecraftClient.Protocol.Handlers
entityPalette = new EntityPalette116();
else if (protocolversion >= MC115Version)
entityPalette = new EntityPalette115();
- else entityPalette = new EntityPalette114();
+ else if (protocolVersion >= MC114Version)
+ entityPalette = new EntityPalette114();
+ else entityPalette = new EntityPalette113();
}
- else entityPalette = new EntityPalette113();
+ else entityPalette = new EntityPalette112();
}
///