mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 16:24:11 +00:00
# Conflicts: # Minecraft.Client/Network/PlayerChunkMap.cpp # Minecraft.Client/Network/PlayerList.cpp # Minecraft.Client/Network/ServerChunkCache.cpp # Minecraft.Client/Platform/Common/Consoles_App.cpp # Minecraft.Client/Platform/Common/DLC/DLCManager.cpp # Minecraft.Client/Platform/Common/GameRules/LevelGenerationOptions.cpp # Minecraft.Client/Platform/Common/GameRules/LevelRuleset.cpp # Minecraft.Client/Platform/Common/Tutorial/Tutorial.cpp # Minecraft.Client/Platform/Common/Tutorial/TutorialTask.cpp # Minecraft.Client/Platform/Common/UI/IUIScene_CreativeMenu.cpp # Minecraft.Client/Platform/Common/UI/UIComponent_Panorama.cpp # Minecraft.Client/Platform/Common/UI/UIController.cpp # Minecraft.Client/Platform/Common/UI/UIController.h # Minecraft.Client/Platform/Extrax64Stubs.cpp # Minecraft.Client/Platform/Windows64/4JLibs/inc/4J_Input.h # Minecraft.Client/Platform/Windows64/4JLibs/inc/4J_Storage.h # Minecraft.Client/Player/EntityTracker.cpp # Minecraft.Client/Player/ServerPlayer.cpp # Minecraft.Client/Rendering/EntityRenderers/PlayerRenderer.cpp # Minecraft.Client/Textures/Packs/DLCTexturePack.cpp # Minecraft.Client/Textures/Stitching/StitchedTexture.cpp # Minecraft.Client/Textures/Stitching/TextureMap.cpp # Minecraft.Client/Textures/Textures.cpp # Minecraft.World/Blocks/NotGateTile.cpp # Minecraft.World/Blocks/PressurePlateTile.cpp # Minecraft.World/Blocks/TileEntities/PotionBrewing.cpp # Minecraft.World/Enchantments/EnchantmentHelper.cpp # Minecraft.World/Entities/HangingEntity.cpp # Minecraft.World/Entities/LeashFenceKnotEntity.cpp # Minecraft.World/Entities/LivingEntity.cpp # Minecraft.World/Entities/Mobs/Boat.cpp # Minecraft.World/Entities/Mobs/Minecart.cpp # Minecraft.World/Entities/Mobs/Witch.cpp # Minecraft.World/Entities/SyncedEntityData.cpp # Minecraft.World/Items/LeashItem.cpp # Minecraft.World/Items/PotionItem.cpp # Minecraft.World/Level/BaseMobSpawner.cpp # Minecraft.World/Level/CustomLevelSource.cpp # Minecraft.World/Level/Level.cpp # Minecraft.World/Level/Storage/DirectoryLevelStorage.cpp # Minecraft.World/Level/Storage/McRegionLevelStorage.cpp # Minecraft.World/Level/Storage/RegionFileCache.cpp # Minecraft.World/Player/Player.cpp # Minecraft.World/WorldGen/Biomes/BiomeCache.cpp # Minecraft.World/WorldGen/Features/RandomScatteredLargeFeature.cpp # Minecraft.World/WorldGen/Layers/BiomeOverrideLayer.cpp
412 lines
17 KiB
C++
412 lines
17 KiB
C++
#include "../../Platform/stdafx.h"
|
|
#include "../../Util/Class.h"
|
|
#include "../../Entities/Mobs/Painting.h"
|
|
#include "../../Platform/System.h"
|
|
#include "../../Entities/Entity.h"
|
|
#include "../../Entities/Mobs/WitherBoss.h"
|
|
#include "../../Headers/net.minecraft.world.entity.ambient.h"
|
|
#include "../../Headers/net.minecraft.world.entity.animal.h"
|
|
#include "../../Headers/net.minecraft.world.entity.item.h"
|
|
#include "../../Headers/net.minecraft.world.entity.monster.h"
|
|
#include "../../Headers/net.minecraft.world.entity.projectile.h"
|
|
#include "../../Headers/net.minecraft.world.entity.boss.enderdragon.h"
|
|
#include "../../Headers/net.minecraft.world.entity.npc.h"
|
|
#include "../../Headers/net.minecraft.world.entity.h"
|
|
#include "../../Headers/net.minecraft.world.level.h"
|
|
#include "../../Headers/com.mojang.nbt.h"
|
|
#include "EntityIO.h"
|
|
|
|
std::unordered_map<std::wstring, entityCreateFn>* EntityIO::idCreateMap =
|
|
new std::unordered_map<std::wstring, entityCreateFn>;
|
|
std::unordered_map<eINSTANCEOF, std::wstring, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>* EntityIO::classIdMap =
|
|
new std::unordered_map<eINSTANCEOF, std::wstring, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>;
|
|
std::unordered_map<int, entityCreateFn>* EntityIO::numCreateMap =
|
|
new std::unordered_map<int, entityCreateFn>;
|
|
std::unordered_map<int, eINSTANCEOF>* EntityIO::numClassMap =
|
|
new std::unordered_map<int, eINSTANCEOF>;
|
|
std::unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash, eINSTANCEOFKeyEq>*
|
|
EntityIO::classNumMap =
|
|
new std::unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>;
|
|
std::unordered_map<std::wstring, int>* EntityIO::idNumMap =
|
|
new std::unordered_map<std::wstring, int>;
|
|
std::unordered_map<int, EntityIO::SpawnableMobInfo*>
|
|
EntityIO::idsSpawnableInCreative;
|
|
|
|
void EntityIO::setId(entityCreateFn createFn, eINSTANCEOF clas,
|
|
const std::wstring& id, int idNum) {
|
|
idCreateMap->insert(
|
|
std::unordered_map<std::wstring, entityCreateFn>::value_type(id,
|
|
createFn));
|
|
classIdMap->insert(
|
|
std::unordered_map<eINSTANCEOF, std::wstring, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::value_type(clas, id));
|
|
numCreateMap->insert(
|
|
std::unordered_map<int, entityCreateFn>::value_type(idNum, createFn));
|
|
numClassMap->insert(
|
|
std::unordered_map<int, eINSTANCEOF>::value_type(idNum, clas));
|
|
classNumMap->insert(
|
|
std::unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::value_type(clas, idNum));
|
|
idNumMap->insert(
|
|
std::unordered_map<std::wstring, int>::value_type(id, idNum));
|
|
}
|
|
|
|
void EntityIO::setId(entityCreateFn createFn, eINSTANCEOF clas,
|
|
const std::wstring& id, int idNum, eMinecraftColour color1,
|
|
eMinecraftColour color2, int nameId) {
|
|
setId(createFn, clas, id, idNum);
|
|
|
|
idsSpawnableInCreative.insert(
|
|
std::unordered_map<int, SpawnableMobInfo*>::value_type(
|
|
idNum, new SpawnableMobInfo(idNum, color1, color2, nameId)));
|
|
}
|
|
|
|
void EntityIO::staticCtor() {
|
|
setId(ItemEntity::create, eTYPE_ITEMENTITY, L"Item", 1);
|
|
setId(ExperienceOrb::create, eTYPE_EXPERIENCEORB, L"XPOrb", 2);
|
|
|
|
setId(LeashFenceKnotEntity::create, eTYPE_LEASHFENCEKNOT, L"LeashKnot", 8);
|
|
setId(Painting::create, eTYPE_PAINTING, L"Painting", 9);
|
|
setId(Arrow::create, eTYPE_ARROW, L"Arrow", 10);
|
|
setId(Snowball::create, eTYPE_SNOWBALL, L"Snowball", 11);
|
|
setId(LargeFireball::create, eTYPE_FIREBALL, L"Fireball", 12);
|
|
setId(SmallFireball::create, eTYPE_SMALL_FIREBALL, L"SmallFireball", 13);
|
|
setId(ThrownEnderpearl::create, eTYPE_THROWNENDERPEARL, L"ThrownEnderpearl",
|
|
14);
|
|
setId(EyeOfEnderSignal::create, eTYPE_EYEOFENDERSIGNAL, L"EyeOfEnderSignal",
|
|
15);
|
|
setId(ThrownPotion::create, eTYPE_THROWNPOTION, L"ThrownPotion", 16);
|
|
setId(ThrownExpBottle::create, eTYPE_THROWNEXPBOTTLE, L"ThrownExpBottle",
|
|
17);
|
|
setId(ItemFrame::create, eTYPE_ITEM_FRAME, L"ItemFrame", 18);
|
|
setId(WitherSkull::create, eTYPE_WITHER_SKULL, L"WitherSkull", 19);
|
|
|
|
setId(PrimedTnt::create, eTYPE_PRIMEDTNT, L"PrimedTnt", 20);
|
|
setId(FallingTile::create, eTYPE_FALLINGTILE, L"FallingSand", 21);
|
|
|
|
setId(FireworksRocketEntity::create, eTYPE_FIREWORKS_ROCKET,
|
|
L"FireworksRocketEntity", 22);
|
|
|
|
setId(Boat::create, eTYPE_BOAT, L"Boat", 41);
|
|
setId(MinecartRideable::create, eTYPE_MINECART_RIDEABLE,
|
|
L"MinecartRideable", 42);
|
|
setId(MinecartChest::create, eTYPE_MINECART_CHEST, L"MinecartChest", 43);
|
|
setId(MinecartFurnace::create, eTYPE_MINECART_FURNACE, L"MinecartFurnace",
|
|
44);
|
|
setId(MinecartTNT::create, eTYPE_MINECART_TNT, L"MinecartTNT", 45);
|
|
setId(MinecartHopper::create, eTYPE_MINECART_HOPPER, L"MinecartHopper", 46);
|
|
setId(MinecartSpawner::create, eTYPE_MINECART_SPAWNER, L"MinecartSpawner",
|
|
47);
|
|
|
|
setId(Mob::create, eTYPE_MOB, L"Mob", 48);
|
|
setId(Monster::create, eTYPE_MONSTER, L"Monster", 49);
|
|
|
|
setId(Creeper::create, eTYPE_CREEPER, L"Creeper", 50,
|
|
eMinecraftColour_Mob_Creeper_Colour1,
|
|
eMinecraftColour_Mob_Creeper_Colour2, IDS_CREEPER);
|
|
setId(Skeleton::create, eTYPE_SKELETON, L"Skeleton", 51,
|
|
eMinecraftColour_Mob_Skeleton_Colour1,
|
|
eMinecraftColour_Mob_Skeleton_Colour2, IDS_SKELETON);
|
|
setId(Spider::create, eTYPE_SPIDER, L"Spider", 52,
|
|
eMinecraftColour_Mob_Spider_Colour1,
|
|
eMinecraftColour_Mob_Spider_Colour2, IDS_SPIDER);
|
|
setId(Giant::create, eTYPE_GIANT, L"Giant", 53);
|
|
setId(Zombie::create, eTYPE_ZOMBIE, L"Zombie", 54,
|
|
eMinecraftColour_Mob_Zombie_Colour1,
|
|
eMinecraftColour_Mob_Zombie_Colour2, IDS_ZOMBIE);
|
|
setId(Slime::create, eTYPE_SLIME, L"Slime", 55,
|
|
eMinecraftColour_Mob_Slime_Colour1,
|
|
eMinecraftColour_Mob_Slime_Colour2, IDS_SLIME);
|
|
setId(Ghast::create, eTYPE_GHAST, L"Ghast", 56,
|
|
eMinecraftColour_Mob_Ghast_Colour1,
|
|
eMinecraftColour_Mob_Ghast_Colour2, IDS_GHAST);
|
|
setId(PigZombie::create, eTYPE_PIGZOMBIE, L"PigZombie", 57,
|
|
eMinecraftColour_Mob_PigZombie_Colour1,
|
|
eMinecraftColour_Mob_PigZombie_Colour2, IDS_PIGZOMBIE);
|
|
setId(EnderMan::create, eTYPE_ENDERMAN, L"Enderman", 58,
|
|
eMinecraftColour_Mob_Enderman_Colour1,
|
|
eMinecraftColour_Mob_Enderman_Colour2, IDS_ENDERMAN);
|
|
setId(CaveSpider::create, eTYPE_CAVESPIDER, L"CaveSpider", 59,
|
|
eMinecraftColour_Mob_CaveSpider_Colour1,
|
|
eMinecraftColour_Mob_CaveSpider_Colour2, IDS_CAVE_SPIDER);
|
|
setId(Silverfish::create, eTYPE_SILVERFISH, L"Silverfish", 60,
|
|
eMinecraftColour_Mob_Silverfish_Colour1,
|
|
eMinecraftColour_Mob_Silverfish_Colour2, IDS_SILVERFISH);
|
|
setId(Blaze::create, eTYPE_BLAZE, L"Blaze", 61,
|
|
eMinecraftColour_Mob_Blaze_Colour1,
|
|
eMinecraftColour_Mob_Blaze_Colour2, IDS_BLAZE);
|
|
setId(LavaSlime::create, eTYPE_LAVASLIME, L"LavaSlime", 62,
|
|
eMinecraftColour_Mob_LavaSlime_Colour1,
|
|
eMinecraftColour_Mob_LavaSlime_Colour2, IDS_LAVA_SLIME);
|
|
setId(EnderDragon::create, eTYPE_ENDERDRAGON, L"EnderDragon", 63,
|
|
eMinecraftColour_Mob_Enderman_Colour1,
|
|
eMinecraftColour_Mob_Enderman_Colour1, IDS_ENDERDRAGON);
|
|
setId(WitherBoss::create, eTYPE_WITHERBOSS, L"WitherBoss", 64);
|
|
setId(Bat::create, eTYPE_BAT, L"Bat", 65, eMinecraftColour_Mob_Bat_Colour1,
|
|
eMinecraftColour_Mob_Bat_Colour2, IDS_BAT);
|
|
setId(Witch::create, eTYPE_WITCH, L"Witch", 66,
|
|
eMinecraftColour_Mob_Witch_Colour1,
|
|
eMinecraftColour_Mob_Witch_Colour2, IDS_WITCH);
|
|
|
|
setId(Pig::create, eTYPE_PIG, L"Pig", 90, eMinecraftColour_Mob_Pig_Colour1,
|
|
eMinecraftColour_Mob_Pig_Colour2, IDS_PIG);
|
|
setId(Sheep::create, eTYPE_SHEEP, L"Sheep", 91,
|
|
eMinecraftColour_Mob_Sheep_Colour1,
|
|
eMinecraftColour_Mob_Sheep_Colour2, IDS_SHEEP);
|
|
setId(Cow::create, eTYPE_COW, L"Cow", 92, eMinecraftColour_Mob_Cow_Colour1,
|
|
eMinecraftColour_Mob_Cow_Colour2, IDS_COW);
|
|
setId(Chicken::create, eTYPE_CHICKEN, L"Chicken", 93,
|
|
eMinecraftColour_Mob_Chicken_Colour1,
|
|
eMinecraftColour_Mob_Chicken_Colour2, IDS_CHICKEN);
|
|
setId(Squid::create, eTYPE_SQUID, L"Squid", 94,
|
|
eMinecraftColour_Mob_Squid_Colour1,
|
|
eMinecraftColour_Mob_Squid_Colour2, IDS_SQUID);
|
|
setId(Wolf::create, eTYPE_WOLF, L"Wolf", 95,
|
|
eMinecraftColour_Mob_Wolf_Colour1, eMinecraftColour_Mob_Wolf_Colour2,
|
|
IDS_WOLF);
|
|
setId(MushroomCow::create, eTYPE_MUSHROOMCOW, L"MushroomCow", 96,
|
|
eMinecraftColour_Mob_MushroomCow_Colour1,
|
|
eMinecraftColour_Mob_MushroomCow_Colour2, IDS_MUSHROOM_COW);
|
|
setId(SnowMan::create, eTYPE_SNOWMAN, L"SnowMan", 97);
|
|
setId(Ocelot::create, eTYPE_OCELOT, L"Ozelot", 98,
|
|
eMinecraftColour_Mob_Ocelot_Colour1,
|
|
eMinecraftColour_Mob_Ocelot_Colour2, IDS_OZELOT);
|
|
setId(VillagerGolem::create, eTYPE_VILLAGERGOLEM, L"VillagerGolem", 99);
|
|
setId(EntityHorse::create, eTYPE_HORSE, L"EntityHorse", 100,
|
|
eMinecraftColour_Mob_Horse_Colour1,
|
|
eMinecraftColour_Mob_Horse_Colour2, IDS_HORSE);
|
|
|
|
setId(Villager::create, eTYPE_VILLAGER, L"Villager", 120,
|
|
eMinecraftColour_Mob_Villager_Colour1,
|
|
eMinecraftColour_Mob_Villager_Colour2, IDS_VILLAGER);
|
|
|
|
setId(EnderCrystal::create, eTYPE_ENDER_CRYSTAL, L"EnderCrystal", 200);
|
|
|
|
// 4J Added
|
|
setId(DragonFireball::create, eTYPE_DRAGON_FIREBALL, L"DragonFireball",
|
|
1000);
|
|
|
|
// 4J-PB - moved to allow the eggs to be named and coloured in the Creative
|
|
// Mode menu 4J Added for custom spawn eggs
|
|
setId(EntityHorse::create, eTYPE_HORSE, L"EntityHorse",
|
|
100 | ((EntityHorse::TYPE_DONKEY + 1) << 12),
|
|
eMinecraftColour_Mob_Horse_Colour1,
|
|
eMinecraftColour_Mob_Horse_Colour2, IDS_DONKEY);
|
|
setId(EntityHorse::create, eTYPE_HORSE, L"EntityHorse",
|
|
100 | ((EntityHorse::TYPE_MULE + 1) << 12),
|
|
eMinecraftColour_Mob_Horse_Colour1,
|
|
eMinecraftColour_Mob_Horse_Colour2, IDS_MULE);
|
|
|
|
#ifndef _CONTENT_PACKAGE
|
|
setId(EntityHorse::create, eTYPE_HORSE, L"EntityHorse",
|
|
100 | ((EntityHorse::TYPE_SKELETON + 1) << 12),
|
|
eMinecraftColour_Mob_Horse_Colour1,
|
|
eMinecraftColour_Mob_Horse_Colour2, IDS_SKELETON_HORSE);
|
|
setId(EntityHorse::create, eTYPE_HORSE, L"EntityHorse",
|
|
100 | ((EntityHorse::TYPE_UNDEAD + 1) << 12),
|
|
eMinecraftColour_Mob_Horse_Colour1,
|
|
eMinecraftColour_Mob_Horse_Colour2, IDS_ZOMBIE_HORSE);
|
|
setId(Ocelot::create, eTYPE_OCELOT, L"Ozelot",
|
|
98 | ((Ocelot::TYPE_BLACK + 1) << 12),
|
|
eMinecraftColour_Mob_Ocelot_Colour1,
|
|
eMinecraftColour_Mob_Ocelot_Colour2, IDS_OZELOT);
|
|
setId(Ocelot::create, eTYPE_OCELOT, L"Ozelot",
|
|
98 | ((Ocelot::TYPE_RED + 1) << 12),
|
|
eMinecraftColour_Mob_Ocelot_Colour1,
|
|
eMinecraftColour_Mob_Ocelot_Colour2, IDS_OZELOT);
|
|
setId(Ocelot::create, eTYPE_OCELOT, L"Ozelot",
|
|
98 | ((Ocelot::TYPE_SIAMESE + 1) << 12),
|
|
eMinecraftColour_Mob_Ocelot_Colour1,
|
|
eMinecraftColour_Mob_Ocelot_Colour2, IDS_OZELOT);
|
|
setId(Spider::create, eTYPE_SPIDER, L"Spider", 52 | (2 << 12),
|
|
eMinecraftColour_Mob_Spider_Colour1,
|
|
eMinecraftColour_Mob_Spider_Colour2, IDS_SKELETON);
|
|
#endif
|
|
}
|
|
|
|
std::shared_ptr<Entity> EntityIO::newEntity(const std::wstring& id,
|
|
Level* level) {
|
|
std::shared_ptr<Entity> entity;
|
|
|
|
auto it = idCreateMap->find(id);
|
|
if (it != idCreateMap->end()) {
|
|
entityCreateFn create = it->second;
|
|
if (create != nullptr) entity = std::shared_ptr<Entity>(create(level));
|
|
if ((entity != nullptr) && entity->GetType() == eTYPE_ENDERDRAGON) {
|
|
std::dynamic_pointer_cast<EnderDragon>(entity)
|
|
->AddParts(); // 4J added to finalise creation
|
|
}
|
|
}
|
|
|
|
return entity;
|
|
}
|
|
|
|
std::shared_ptr<Entity> EntityIO::loadStatic(CompoundTag* tag, Level* level) {
|
|
std::shared_ptr<Entity> entity;
|
|
|
|
if (tag->getString(L"id").compare(L"Minecart") == 0) {
|
|
// I don't like this any more than you do. Sadly, compatibility...
|
|
|
|
switch (tag->getInt(L"Type")) {
|
|
case Minecart::TYPE_CHEST:
|
|
tag->putString(L"id", L"MinecartChest");
|
|
break;
|
|
case Minecart::TYPE_FURNACE:
|
|
tag->putString(L"id", L"MinecartFurnace");
|
|
break;
|
|
case Minecart::TYPE_RIDEABLE:
|
|
tag->putString(L"id", L"MinecartRideable");
|
|
break;
|
|
}
|
|
|
|
tag->remove(L"Type");
|
|
}
|
|
|
|
auto it = idCreateMap->find(tag->getString(L"id"));
|
|
if (it != idCreateMap->end()) {
|
|
entityCreateFn create = it->second;
|
|
if (create != nullptr) entity = std::shared_ptr<Entity>(create(level));
|
|
if ((entity != nullptr) && entity->GetType() == eTYPE_ENDERDRAGON) {
|
|
std::dynamic_pointer_cast<EnderDragon>(entity)
|
|
->AddParts(); // 4J added to finalise creation
|
|
}
|
|
}
|
|
|
|
if (entity != nullptr) {
|
|
entity->load(tag);
|
|
} else {
|
|
#ifdef _DEBUG
|
|
app.DebugPrintf("Skipping Entity with id %ls\n",
|
|
tag->getString(L"id").c_str());
|
|
#endif
|
|
}
|
|
return entity;
|
|
}
|
|
|
|
std::shared_ptr<Entity> EntityIO::newById(int id, Level* level) {
|
|
std::shared_ptr<Entity> entity;
|
|
|
|
auto it = numCreateMap->find(id);
|
|
if (it != numCreateMap->end()) {
|
|
entityCreateFn create = it->second;
|
|
if (create != nullptr) entity = std::shared_ptr<Entity>(create(level));
|
|
if ((entity != nullptr) && entity->GetType() == eTYPE_ENDERDRAGON) {
|
|
std::dynamic_pointer_cast<EnderDragon>(entity)
|
|
->AddParts(); // 4J added to finalise creation
|
|
}
|
|
}
|
|
|
|
if (entity != nullptr) {
|
|
} else {
|
|
// printf("Skipping Entity with id %d\n", id ) ;
|
|
}
|
|
return entity;
|
|
}
|
|
|
|
std::shared_ptr<Entity> EntityIO::newByEnumType(eINSTANCEOF eType,
|
|
Level* level) {
|
|
std::shared_ptr<Entity> entity;
|
|
|
|
std::unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::iterator it =
|
|
classNumMap->find(eType);
|
|
if (it != classNumMap->end()) {
|
|
auto it2 = numCreateMap->find(it->second);
|
|
if (it2 != numCreateMap->end()) {
|
|
entityCreateFn create = it2->second;
|
|
if (create != nullptr) entity = std::shared_ptr<Entity>(create(level));
|
|
if ((entity != nullptr) && entity->GetType() == eTYPE_ENDERDRAGON) {
|
|
std::dynamic_pointer_cast<EnderDragon>(entity)
|
|
->AddParts(); // 4J added to finalise creation
|
|
}
|
|
}
|
|
}
|
|
|
|
return entity;
|
|
}
|
|
|
|
int EntityIO::getId(std::shared_ptr<Entity> entity) {
|
|
std::unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::iterator it =
|
|
classNumMap->find(entity->GetType());
|
|
return (*it).second;
|
|
}
|
|
|
|
std::wstring EntityIO::getEncodeId(std::shared_ptr<Entity> entity) {
|
|
std::unordered_map<eINSTANCEOF, std::wstring, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::iterator it =
|
|
classIdMap->find(entity->GetType());
|
|
if (it != classIdMap->end())
|
|
return (*it).second;
|
|
else
|
|
return L"";
|
|
}
|
|
|
|
int EntityIO::getId(const std::wstring& encodeId) {
|
|
auto it = idNumMap->find(encodeId);
|
|
if (it == idNumMap->end()) {
|
|
// defaults to pig...
|
|
return 90;
|
|
}
|
|
return it->second;
|
|
}
|
|
|
|
std::wstring EntityIO::getEncodeId(int entityIoValue) {
|
|
// Class<? extends Entity> class1 = numClassMap.get(entityIoValue);
|
|
// if (class1 != null)
|
|
//{
|
|
// return classIdMap.get(class1);
|
|
// }
|
|
|
|
auto it = numClassMap->find(entityIoValue);
|
|
if (it != numClassMap->end()) {
|
|
std::unordered_map<eINSTANCEOF, std::wstring, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::iterator classIdIt =
|
|
classIdMap->find(it->second);
|
|
if (classIdIt != classIdMap->end())
|
|
return (*classIdIt).second;
|
|
else
|
|
return L"";
|
|
}
|
|
|
|
return L"";
|
|
}
|
|
|
|
int EntityIO::getNameId(int entityIoValue) {
|
|
int id = -1;
|
|
|
|
auto it = idsSpawnableInCreative.find(entityIoValue);
|
|
if (it != idsSpawnableInCreative.end()) {
|
|
id = it->second->nameId;
|
|
}
|
|
|
|
return id;
|
|
}
|
|
|
|
eINSTANCEOF EntityIO::getType(const std::wstring& idString) {
|
|
auto it = numClassMap->find(getId(idString));
|
|
if (it != numClassMap->end()) {
|
|
return it->second;
|
|
}
|
|
return eTYPE_NOTSET;
|
|
}
|
|
|
|
eINSTANCEOF EntityIO::getClass(int id) {
|
|
auto it = numClassMap->find(id);
|
|
if (it != numClassMap->end()) {
|
|
return it->second;
|
|
}
|
|
return eTYPE_NOTSET;
|
|
}
|
|
|
|
int EntityIO::eTypeToIoid(eINSTANCEOF eType) {
|
|
std::unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash,
|
|
eINSTANCEOFKeyEq>::iterator it =
|
|
classNumMap->find(eType);
|
|
if (it != classNumMap->end()) return it->second;
|
|
return -1;
|
|
}
|