Load entities from old and new names
This commit is contained in:
parent
8484d05d65
commit
cc3a67b9df
@ -1474,226 +1474,119 @@ cBlockEntity * cWSSAnvil::LoadSignFromNBT(const cParsedNBT & a_NBT, int a_TagIdx
|
|||||||
|
|
||||||
void cWSSAnvil::LoadEntityFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_EntityTagIdx, const char * a_IDTag, size_t a_IDTagLength)
|
void cWSSAnvil::LoadEntityFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_EntityTagIdx, const char * a_IDTag, size_t a_IDTagLength)
|
||||||
{
|
{
|
||||||
if (strncmp(a_IDTag, "Boat", a_IDTagLength) == 0)
|
typedef void (cWSSAnvil::*EntityLoaderFunc)(cEntityList &, const cParsedNBT &, int a_EntityTagIdx);
|
||||||
|
typedef std::map<AString, EntityLoaderFunc> EntityLoaderMap;
|
||||||
|
static const EntityLoaderMap EntityTypeToFunction
|
||||||
{
|
{
|
||||||
LoadBoatFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
{ "Boat", &cWSSAnvil::LoadBoatFromNBT },
|
||||||
}
|
{ "minecraft:boat", &cWSSAnvil::LoadBoatFromNBT },
|
||||||
else if (strncmp(a_IDTag, "EnderCrystal", a_IDTagLength) == 0)
|
{ "EnderCrystal", &cWSSAnvil::LoadEnderCrystalFromNBT },
|
||||||
|
{ "minecraft:ender_crystal", &cWSSAnvil::LoadEnderCrystalFromNBT },
|
||||||
|
{ "FallingBlock", &cWSSAnvil::LoadFallingBlockFromNBT },
|
||||||
|
{ "minecraft:falling_block", &cWSSAnvil::LoadFallingBlockFromNBT },
|
||||||
|
{ "Minecart", &cWSSAnvil::LoadOldMinecartFromNBT },
|
||||||
|
{ "MinecartChest", &cWSSAnvil::LoadMinecartCFromNBT },
|
||||||
|
{ "minecraft:chest_minecart", &cWSSAnvil::LoadMinecartCFromNBT },
|
||||||
|
{ "MinecartFurnace", &cWSSAnvil::LoadMinecartFFromNBT },
|
||||||
|
{ "minecraft:furnace_minecart", &cWSSAnvil::LoadMinecartFFromNBT },
|
||||||
|
{ "MinecartTNT", &cWSSAnvil::LoadMinecartTFromNBT },
|
||||||
|
{ "minecraft:tnt_minecart", &cWSSAnvil::LoadMinecartTFromNBT },
|
||||||
|
{ "MinecartHopper", &cWSSAnvil::LoadMinecartHFromNBT },
|
||||||
|
{ "minecraft:hopper_minecart", &cWSSAnvil::LoadMinecartHFromNBT },
|
||||||
|
{ "MinecartRideable", &cWSSAnvil::LoadMinecartRFromNBT },
|
||||||
|
{ "minecraft:minecart", &cWSSAnvil::LoadMinecartRFromNBT },
|
||||||
|
{ "Item", &cWSSAnvil::LoadPickupFromNBT },
|
||||||
|
{ "minecraft:item", &cWSSAnvil::LoadPickupFromNBT },
|
||||||
|
{ "Painting", &cWSSAnvil::LoadPaintingFromNBT },
|
||||||
|
{ "minecraft:painting", &cWSSAnvil::LoadPaintingFromNBT },
|
||||||
|
{ "PrimedTnt", &cWSSAnvil::LoadTNTFromNBT },
|
||||||
|
{ "minecraft:tnt", &cWSSAnvil::LoadTNTFromNBT },
|
||||||
|
{ "XPOrb", &cWSSAnvil::LoadExpOrbFromNBT },
|
||||||
|
{ "minecraft:xp_orb", &cWSSAnvil::LoadExpOrbFromNBT },
|
||||||
|
{ "ItemFrame", &cWSSAnvil::LoadItemFrameFromNBT },
|
||||||
|
{ "minecraft:item_frame", &cWSSAnvil::LoadItemFrameFromNBT },
|
||||||
|
{ "Arrow", &cWSSAnvil::LoadArrowFromNBT },
|
||||||
|
{ "minecraft:arrow", &cWSSAnvil::LoadArrowFromNBT },
|
||||||
|
{ "SplashPotion", &cWSSAnvil::LoadSplashPotionFromNBT },
|
||||||
|
{ "minecraft:potion", &cWSSAnvil::LoadSplashPotionFromNBT },
|
||||||
|
{ "Snowball", &cWSSAnvil::LoadSnowballFromNBT },
|
||||||
|
{ "minecraft:snowball", &cWSSAnvil::LoadSnowballFromNBT },
|
||||||
|
{ "Egg", &cWSSAnvil::LoadEggFromNBT },
|
||||||
|
{ "minecraft:egg", &cWSSAnvil::LoadEggFromNBT },
|
||||||
|
{ "Fireball", &cWSSAnvil::LoadFireballFromNBT },
|
||||||
|
{ "minecraft:fireball", &cWSSAnvil::LoadFireballFromNBT },
|
||||||
|
{ "SmallFireball", &cWSSAnvil::LoadFireChargeFromNBT },
|
||||||
|
{ "minecraft:small_fireball", &cWSSAnvil::LoadFireChargeFromNBT },
|
||||||
|
{ "ThrownEnderpearl", &cWSSAnvil::LoadThrownEnderpearlFromNBT },
|
||||||
|
{ "minecraft:ender_pearl", &cWSSAnvil::LoadThrownEnderpearlFromNBT },
|
||||||
|
{ "Bat", &cWSSAnvil::LoadBatFromNBT },
|
||||||
|
{ "minecraft:bat", &cWSSAnvil::LoadBatFromNBT },
|
||||||
|
{ "Blaze", &cWSSAnvil::LoadBlazeFromNBT },
|
||||||
|
{ "minecraft:blaze", &cWSSAnvil::LoadBlazeFromNBT },
|
||||||
|
{ "CaveSpider", &cWSSAnvil::LoadCaveSpiderFromNBT },
|
||||||
|
{ "minecraft:cave_spider", &cWSSAnvil::LoadCaveSpiderFromNBT },
|
||||||
|
{ "Chicken", &cWSSAnvil::LoadChickenFromNBT },
|
||||||
|
{ "minecraft:chicken", &cWSSAnvil::LoadChickenFromNBT },
|
||||||
|
{ "Cow", &cWSSAnvil::LoadCowFromNBT },
|
||||||
|
{ "minecraft:cow", &cWSSAnvil::LoadCowFromNBT },
|
||||||
|
{ "Creeper", &cWSSAnvil::LoadCreeperFromNBT },
|
||||||
|
{ "minecraft:creeper", &cWSSAnvil::LoadCreeperFromNBT },
|
||||||
|
{ "EnderDragon", &cWSSAnvil::LoadEnderDragonFromNBT },
|
||||||
|
{ "minecraft:ender_dragon", &cWSSAnvil::LoadEnderDragonFromNBT },
|
||||||
|
{ "Enderman", &cWSSAnvil::LoadEndermanFromNBT },
|
||||||
|
{ "minecraft:enderman", &cWSSAnvil::LoadEndermanFromNBT },
|
||||||
|
{ "Ghast", &cWSSAnvil::LoadGhastFromNBT },
|
||||||
|
{ "minecraft:ghast", &cWSSAnvil::LoadGhastFromNBT },
|
||||||
|
{ "Giant", &cWSSAnvil::LoadGiantFromNBT },
|
||||||
|
{ "minecraft:giant", &cWSSAnvil::LoadGiantFromNBT },
|
||||||
|
{ "Guardian", &cWSSAnvil::LoadGuardianFromNBT },
|
||||||
|
{ "minecraft:guardian", &cWSSAnvil::LoadGuardianFromNBT },
|
||||||
|
{ "Horse", &cWSSAnvil::LoadHorseFromNBT },
|
||||||
|
{ "minecraft:horse", &cWSSAnvil::LoadHorseFromNBT },
|
||||||
|
{ "Villager", &cWSSAnvil::LoadVillagerFromNBT },
|
||||||
|
{ "minecraft:villager", &cWSSAnvil::LoadVillagerFromNBT },
|
||||||
|
{ "VillagerGolem", &cWSSAnvil::LoadIronGolemFromNBT },
|
||||||
|
{ "minecraft:villager_golem", &cWSSAnvil::LoadIronGolemFromNBT },
|
||||||
|
{ "LavaSlime", &cWSSAnvil::LoadMagmaCubeFromNBT },
|
||||||
|
{ "minecraft:magma_cube", &cWSSAnvil::LoadMagmaCubeFromNBT },
|
||||||
|
{ "MushroomCow", &cWSSAnvil::LoadMooshroomFromNBT },
|
||||||
|
{ "minecraft:mooshroom", &cWSSAnvil::LoadMooshroomFromNBT },
|
||||||
|
{ "Ozelot", &cWSSAnvil::LoadOcelotFromNBT },
|
||||||
|
{ "minecraft:ocelot", &cWSSAnvil::LoadOcelotFromNBT },
|
||||||
|
{ "Pig", &cWSSAnvil::LoadPigFromNBT },
|
||||||
|
{ "minecraft:pig", &cWSSAnvil::LoadPigFromNBT },
|
||||||
|
{ "Rabbit", &cWSSAnvil::LoadRabbitFromNBT },
|
||||||
|
{ "minecraft:rabbit", &cWSSAnvil::LoadRabbitFromNBT },
|
||||||
|
{ "Sheep", &cWSSAnvil::LoadSheepFromNBT },
|
||||||
|
{ "minecraft:sheep", &cWSSAnvil::LoadSheepFromNBT },
|
||||||
|
{ "Silverfish", &cWSSAnvil::LoadSilverfishFromNBT },
|
||||||
|
{ "minecraft:silverfish", &cWSSAnvil::LoadSilverfishFromNBT },
|
||||||
|
{ "Skeleton", &cWSSAnvil::LoadSkeletonFromNBT },
|
||||||
|
{ "minecraft:skeleton", &cWSSAnvil::LoadSkeletonFromNBT },
|
||||||
|
{ "Slime", &cWSSAnvil::LoadSlimeFromNBT },
|
||||||
|
{ "minecraft:slime", &cWSSAnvil::LoadSlimeFromNBT },
|
||||||
|
{ "SnowMan", &cWSSAnvil::LoadSnowGolemFromNBT },
|
||||||
|
{ "minecraft:snowman", &cWSSAnvil::LoadSnowGolemFromNBT },
|
||||||
|
{ "Spider", &cWSSAnvil::LoadSpiderFromNBT },
|
||||||
|
{ "minecraft:spider", &cWSSAnvil::LoadSpiderFromNBT },
|
||||||
|
{ "Squid", &cWSSAnvil::LoadSquidFromNBT },
|
||||||
|
{ "minecraft:squid", &cWSSAnvil::LoadSquidFromNBT },
|
||||||
|
{ "Witch", &cWSSAnvil::LoadWitchFromNBT },
|
||||||
|
{ "minecraft:witch", &cWSSAnvil::LoadWitchFromNBT },
|
||||||
|
{ "WitherBoss", &cWSSAnvil::LoadWitherFromNBT },
|
||||||
|
{ "minecraft:wither", &cWSSAnvil::LoadWitherFromNBT },
|
||||||
|
{ "Wolf", &cWSSAnvil::LoadWolfFromNBT },
|
||||||
|
{ "minecraft:wolf", &cWSSAnvil::LoadWolfFromNBT },
|
||||||
|
{ "Zombie", &cWSSAnvil::LoadZombieFromNBT },
|
||||||
|
{ "minecraft:zombie", &cWSSAnvil::LoadZombieFromNBT },
|
||||||
|
{ "PigZombie", &cWSSAnvil::LoadPigZombieFromNBT },
|
||||||
|
{ "minecraft:zombie_pigman", &cWSSAnvil::LoadPigZombieFromNBT },
|
||||||
|
};
|
||||||
|
|
||||||
|
auto it = EntityTypeToFunction.find(AString(a_IDTag, a_IDTagLength));
|
||||||
|
if (it != EntityTypeToFunction.end())
|
||||||
{
|
{
|
||||||
LoadEnderCrystalFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
(this->*it->second)(a_Entities, a_NBT, a_EntityTagIdx);
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "FallingBlock", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadFallingBlockFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Minecart", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
// It is a minecart, old style, find out the type:
|
|
||||||
int TypeTag = a_NBT.FindChildByName(a_EntityTagIdx, "Type");
|
|
||||||
if ((TypeTag < 0) || (a_NBT.GetType(TypeTag) != TAG_Int))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (a_NBT.GetInt(TypeTag))
|
|
||||||
{
|
|
||||||
case 0: LoadMinecartRFromNBT(a_Entities, a_NBT, a_EntityTagIdx); break; // Rideable minecart
|
|
||||||
case 1: LoadMinecartCFromNBT(a_Entities, a_NBT, a_EntityTagIdx); break; // Minecart with chest
|
|
||||||
case 2: LoadMinecartFFromNBT(a_Entities, a_NBT, a_EntityTagIdx); break; // Minecart with furnace
|
|
||||||
case 3: LoadMinecartTFromNBT(a_Entities, a_NBT, a_EntityTagIdx); break; // Minecart with TNT
|
|
||||||
case 4: LoadMinecartHFromNBT(a_Entities, a_NBT, a_EntityTagIdx); break; // Minecart with Hopper
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "MinecartRideable", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMinecartRFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "MinecartChest", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMinecartCFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "MinecartFurnace", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMinecartFFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "MinecartTNT", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMinecartTFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "MinecartHopper", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMinecartHFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Item", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadPickupFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Painting", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadPaintingFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "PrimedTnt", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadTNTFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "XPOrb", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadExpOrbFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "ItemFrame", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadItemFrameFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Arrow", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadArrowFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "SplashPotion", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSplashPotionFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Snowball", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSnowballFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Egg", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadEggFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Fireball", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadFireballFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "SmallFireball", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadFireChargeFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "ThrownEnderpearl", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadThrownEnderpearlFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Bat", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadBatFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Blaze", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadBlazeFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "CaveSpider", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadCaveSpiderFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Chicken", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadChickenFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Cow", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadCowFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Creeper", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadCreeperFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "EnderDragon", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadEnderDragonFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Enderman", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadEndermanFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Ghast", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadGhastFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Giant", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadGiantFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Guardian", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadGuardianFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Horse", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadHorseFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Villager", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadVillagerFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "VillagerGolem", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadIronGolemFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "LavaSlime", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMagmaCubeFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "MushroomCow", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadMooshroomFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Ozelot", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadOcelotFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Pig", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadPigFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Rabbit", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadRabbitFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Sheep", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSheepFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Silverfish", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSilverfishFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Skeleton", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSkeletonFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Slime", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSlimeFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "SnowMan", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSnowGolemFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Spider", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSpiderFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Squid", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadSquidFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Witch", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadWitchFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "WitherBoss", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadWitherFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Wolf", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadWolfFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "Zombie", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadZombieFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
|
||||||
else if (strncmp(a_IDTag, "PigZombie", a_IDTagLength) == 0)
|
|
||||||
{
|
|
||||||
LoadPigZombieFromNBT(a_Entities, a_NBT, a_EntityTagIdx);
|
|
||||||
}
|
}
|
||||||
// TODO: other entities
|
// TODO: other entities
|
||||||
}
|
}
|
||||||
@ -1702,6 +1595,28 @@ void cWSSAnvil::LoadEntityFromNBT(cEntityList & a_Entities, const cParsedNBT & a
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cWSSAnvil::LoadOldMinecartFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx)
|
||||||
|
{
|
||||||
|
// It is a minecart, old style, find out the type:
|
||||||
|
int TypeTag = a_NBT.FindChildByName(a_TagIdx, "Type");
|
||||||
|
if ((TypeTag < 0) || (a_NBT.GetType(TypeTag) != TAG_Int))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (a_NBT.GetInt(TypeTag))
|
||||||
|
{
|
||||||
|
case 0: LoadMinecartRFromNBT(a_Entities, a_NBT, a_TagIdx); break; // Rideable minecart
|
||||||
|
case 1: LoadMinecartCFromNBT(a_Entities, a_NBT, a_TagIdx); break; // Minecart with chest
|
||||||
|
case 2: LoadMinecartFFromNBT(a_Entities, a_NBT, a_TagIdx); break; // Minecart with furnace
|
||||||
|
case 3: LoadMinecartTFromNBT(a_Entities, a_NBT, a_TagIdx); break; // Minecart with TNT
|
||||||
|
case 4: LoadMinecartHFromNBT(a_Entities, a_NBT, a_TagIdx); break; // Minecart with Hopper
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cWSSAnvil::LoadBoatFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx)
|
void cWSSAnvil::LoadBoatFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx)
|
||||||
{
|
{
|
||||||
std::unique_ptr<cBoat> Boat = cpp14::make_unique<cBoat>(0, 0, 0, cBoat::bmOak);
|
std::unique_ptr<cBoat> Boat = cpp14::make_unique<cBoat>(0, 0, 0, cBoat::bmOak);
|
||||||
@ -3167,15 +3082,25 @@ bool cWSSAnvil::LoadEntityBaseFromNBT(cEntity & a_Entity, const cParsedNBT & a_N
|
|||||||
bool cWSSAnvil::LoadMonsterBaseFromNBT(cMonster & a_Monster, const cParsedNBT & a_NBT, int a_TagIdx)
|
bool cWSSAnvil::LoadMonsterBaseFromNBT(cMonster & a_Monster, const cParsedNBT & a_NBT, int a_TagIdx)
|
||||||
{
|
{
|
||||||
float DropChance[5];
|
float DropChance[5];
|
||||||
if (!LoadFloatsListFromNBT(DropChance, 5, a_NBT, a_NBT.FindChildByName(a_TagIdx, "DropChances")))
|
if (LoadFloatsListFromNBT(DropChance, 5, a_NBT, a_NBT.FindChildByName(a_TagIdx, "DropChances")))
|
||||||
{
|
{
|
||||||
return false;
|
a_Monster.SetDropChanceWeapon(DropChance[0]);
|
||||||
|
a_Monster.SetDropChanceHelmet(DropChance[1]);
|
||||||
|
a_Monster.SetDropChanceChestplate(DropChance[2]);
|
||||||
|
a_Monster.SetDropChanceLeggings(DropChance[3]);
|
||||||
|
a_Monster.SetDropChanceBoots(DropChance[4]);
|
||||||
|
}
|
||||||
|
if (LoadFloatsListFromNBT(DropChance, 2, a_NBT, a_NBT.FindChildByName(a_TagIdx, "HandDropChances")))
|
||||||
|
{
|
||||||
|
a_Monster.SetDropChanceWeapon(DropChance[0]);
|
||||||
|
}
|
||||||
|
if (LoadFloatsListFromNBT(DropChance, 4, a_NBT, a_NBT.FindChildByName(a_TagIdx, "ArmorDropChances")))
|
||||||
|
{
|
||||||
|
a_Monster.SetDropChanceHelmet(DropChance[0]);
|
||||||
|
a_Monster.SetDropChanceChestplate(DropChance[1]);
|
||||||
|
a_Monster.SetDropChanceLeggings(DropChance[2]);
|
||||||
|
a_Monster.SetDropChanceBoots(DropChance[3]);
|
||||||
}
|
}
|
||||||
a_Monster.SetDropChanceWeapon(DropChance[0]);
|
|
||||||
a_Monster.SetDropChanceHelmet(DropChance[1]);
|
|
||||||
a_Monster.SetDropChanceChestplate(DropChance[2]);
|
|
||||||
a_Monster.SetDropChanceLeggings(DropChance[3]);
|
|
||||||
a_Monster.SetDropChanceBoots(DropChance[4]);
|
|
||||||
|
|
||||||
int LootTag = a_NBT.FindChildByName(a_TagIdx, "CanPickUpLoot");
|
int LootTag = a_NBT.FindChildByName(a_TagIdx, "CanPickUpLoot");
|
||||||
if (LootTag > 0)
|
if (LootTag > 0)
|
||||||
|
@ -182,6 +182,7 @@ protected:
|
|||||||
void LoadItemFrameFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
void LoadItemFrameFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
||||||
void LoadPaintingFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
void LoadPaintingFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
||||||
|
|
||||||
|
void LoadOldMinecartFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
||||||
void LoadMinecartRFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
void LoadMinecartRFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
||||||
void LoadMinecartCFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
void LoadMinecartCFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
||||||
void LoadMinecartFFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
void LoadMinecartFFromNBT (cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user