From 0d0237ea9480e1e1843dedf0bb191f48e1968478 Mon Sep 17 00:00:00 2001 From: Bagietas <121623949+Bagietas@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:40:12 +0100 Subject: [PATCH] Implement `PathfinderMob` & `AgableMob` --- data/mcswitch_functions.csv | 441 +++++++++--------- src/DecompUtils.h | 5 + .../net/minecraft/client/Minecraft.cpp | 2 +- .../client/particle/ParticleType.cpp | 43 +- .../minecraft/client/particle/ParticleType.h | 17 +- .../minecraft/client/particle/ParticleTypes.h | 23 + .../net/minecraft/core/Vec3i.h | 1 + .../minecraft/core/particles/ParticleType.h | 6 - .../minecraft/core/particles/ParticleTypes.h | 10 - .../network/syncher/EntityDataAccessor.h | 5 +- .../network/syncher/SynchedEntityData.h | 6 + .../net/minecraft/world/MinecraftWorld.cpp | 10 +- .../net/minecraft/world/eINSTANCEOF.h | 6 +- .../net/minecraft/world/entity/Entity.h | 8 +- .../minecraft/world/entity/LivingEntity.cpp | 1 + .../net/minecraft/world/entity/LivingEntity.h | 2 + .../net/minecraft/world/entity/ai/Path.h | 6 + .../world/entity/ai/PathNavigation.h | 29 ++ .../world/entity/ai/goal/GoalSelector.h | 4 + .../minecraft/world/entity/mob/AgableMob.cpp | 168 +++++++ .../minecraft/world/entity/mob/AgableMob.h | 30 ++ .../net/minecraft/world/entity/mob/Mob.h | 14 +- .../world/entity/mob/PathfinderMob.cpp | 119 +++++ .../world/entity/mob/PathfinderMob.h | 31 +- .../world/entity/mob/TamableAnimal.h | 11 + .../world/entity/monster/Silverfish.h | 3 +- .../minecraft/world/entity/player/Player.h | 2 +- .../world/level/block/FallingBlock.cpp | 2 +- .../minecraft/world/level/block/FireBlock.cpp | 2 +- .../world/level/pathfinder/BlockPathTypes.cpp | 19 + .../world/level/pathfinder/BlockPathTypes.h | 31 +- .../net/minecraft/world/phys/Vec3.h | 2 + 32 files changed, 768 insertions(+), 291 deletions(-) create mode 100644 src/Minecraft.Client/net/minecraft/client/particle/ParticleTypes.h delete mode 100644 src/Minecraft.Client/net/minecraft/core/particles/ParticleType.h delete mode 100644 src/Minecraft.Client/net/minecraft/core/particles/ParticleTypes.h create mode 100644 src/Minecraft.World/net/minecraft/world/entity/ai/Path.h create mode 100644 src/Minecraft.World/net/minecraft/world/entity/ai/PathNavigation.h create mode 100644 src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.cpp diff --git a/data/mcswitch_functions.csv b/data/mcswitch_functions.csv index 902ac4b2..54970f55 100644 --- a/data/mcswitch_functions.csv +++ b/data/mcswitch_functions.csv @@ -505,7 +505,8 @@ Address,Quality,Size,Name 0x0000007100010a9c,U,000084, 0x0000007100010af0,U,000196, 0x0000007100010bb4,U,000008, -0x0000007100010bbc,U,000084, +0x0000007100010bbc,U,000060, +0x0000007100010bf8,O,000024,_ZN9AgableMob15internalSetSizeEf 0x0000007100010c10,U,000008, 0x0000007100010c18,U,000012, 0x0000007100010c24,U,000012, @@ -712,27 +713,27 @@ Address,Quality,Size,Name 0x000000710001a564,O,000520,_ZN22AddMushroomIslandLayer7getAreaEiiii 0x000000710001a76c,O,000128,_ZN12AddSnowLayerC1ExNSt3__110shared_ptrI5LayerEE 0x000000710001a7ec,M,000416,_ZN12AddSnowLayer7getAreaEiiii -0x000000710001a98c,U,000104,_ZN9AgableMob10staticCtorEv -0x000000710001a9f4,U,000072,_ZN9AgableMobC_gen -0x000000710001aa3c,U,000728, +0x000000710001a98c,O,000104,_ZN9AgableMob10staticCtorEv +0x000000710001a9f4,O,000072,_ZN9AgableMobC2EP5Level +0x000000710001aa3c,U,000728,_ZN9AgableMob11mobInteractERKNSt3__110shared_ptrI6PlayerEEN15InteractionHand16EInteractionHandE 0x000000710001ad14,M,000072,_ZN14SimpleRegistryI16ResourceLocation11eINSTANCEOFNSt3__14hashIS0_EENS2_8equal_toIS0_EEE3getES0_ 0x000000710001ad5c,U,000028, 0x000000710001ad78,U,000016, 0x000000710001ad88,U,000144, -0x000000710001ae18,U,000076, -0x000000710001ae64,U,000108, -0x000000710001aed0,U,000208, -0x000000710001afa0,U,000016, -0x000000710001afb0,U,000156, -0x000000710001b04c,U,000196, -0x000000710001b110,U,000196, -0x000000710001b1d4,U,000096, -0x000000710001b234,U,000044, -0x000000710001b260,U,000420, -0x000000710001b404,U,000004, -0x000000710001b408,U,000032, -0x000000710001b428,U,000020, -0x000000710001b43c,U,000032, +0x000000710001ae18,O,000076,_ZN9AgableMob17defineSynchedDataEv +0x000000710001ae64,O,000108,_ZN9AgableMob6getAgeEv +0x000000710001aed0,O,000208,_ZN9AgableMob5ageUpEib +0x000000710001afa0,O,000016,_ZN9AgableMob5ageUpEi +0x000000710001afb0,O,000156,_ZN9AgableMob6setAgeEi +0x000000710001b04c,O,000196,_ZN9AgableMob20addAdditonalSaveDataEP11CompoundTag +0x000000710001b110,O,000196,_ZN9AgableMob22readAdditionalSaveDataEP11CompoundTag +0x000000710001b1d4,O,000096,_ZN9AgableMob19onSyncedDataUpdatedEPK23EntityDataAccessor_Base +0x000000710001b234,U,000044,_ZNK23EntityDataAccessor_Base2isEPKS_ +0x000000710001b260,O,000420,_ZN9AgableMob6aiStepEv +0x000000710001b404,O,000004,_ZN9AgableMob6grewUpEv +0x000000710001b408,O,000032,_ZN9AgableMob6isBabyEv +0x000000710001b428,O,000020,_ZN9AgableMob10updateSizeEb +0x000000710001b43c,O,000032,_ZN9AgableMob7setSizeEff 0x000000710001b45c,O,000064,_ZN8AirBlockC1Ev 0x000000710001b49c,O,000076,_ZN5BlockC2EP8Material 0x000000710001b4e8,O,000008,_ZN8AirBlock14getRenderShapeEPK10BlockState @@ -1111,7 +1112,7 @@ Address,Quality,Size,Name 0x000000710002a42c,U,000048, 0x000000710002a45c,U,000560, 0x000000710002a68c,U,000052,_ZN29AvoidEntityGoalEntitySelectorC_gen -0x000000710002a6c0,U,000020,_ZN9PredicateINSt3__110shared_ptrI6EntityEEEC1Ev +0x000000710002a6c0,U,000020,_ZN9PredicateINSt3__110shared_ptrI6EntityEEEC2Ev 0x000000710002a6d4,U,000224, 0x000000710002a7b4,U,000168, 0x000000710002a85c,O,000016,_ZNSt3__18weak_ptrI6EntityED2Ev @@ -2221,7 +2222,7 @@ Address,Quality,Size,Name 0x000000710006015c,U,000116,_ZN9BlockItem13registerIconsEP12IconRegister 0x00000071000601d0,U,000028, 0x00000071000601ec,U,000052,_ZN22BlockMaterialPredicateC_gen -0x0000007100060220,U,000020,_ZN9PredicateIPK10BlockStateEC1Ev +0x0000007100060220,U,000020,_ZN9PredicateIPK10BlockStateEC2Ev 0x0000007100060234,U,000052, 0x0000007100060268,U,000068, 0x00000071000602ac,U,000012, @@ -2544,7 +2545,7 @@ Address,Quality,Size,Name 0x000000710006e594,U,000096, 0x000000710006e5f4,U,000008, 0x000000710006e5fc,U,000052, -0x000000710006e630,U,000040, +0x000000710006e630,O,000040,_ZNKSt3__16vectorIP5BoxedNS_9allocatorIS2_EEE2atEm 0x000000710006e658,U,000120, 0x000000710006e6d0,O,000008,_ZN12BorderStatusC1Ei 0x000000710006e6d8,U,000124,_ZN9BossEventC_gen @@ -3057,7 +3058,7 @@ Address,Quality,Size,Name 0x000000710009e274,U,000016, 0x000000710009e284,U,000260,_ZN18CarrotOnAStickItem7TestUseEP5LevelNSt3__110shared_ptrI6PlayerEEN15InteractionHand16EInteractionHandE 0x000000710009e388,U,000024,_ZN18CarrotOnAStickItem13GetUseTooltipERK21ItemToolTipDataHolder -0x000000710009e3a0,U,000124,_ZN13CauldronBlockC_gen +0x000000710009e3a0,U,000124,_ZN13CauldronBlockC1Ev 0x000000710009e41c,U,000240,_ZN13CauldronBlock17addCollisionAABBsEPK10BlockStateP5LevelRK8BlockPosPK4AABBPSt6vectorIP4AABBSt9allocatorIP4AABBEENSt3__110shared_ptrI6EntityEEb 0x000000710009e50c,U,000016,_ZN13CauldronBlock8getShapeEPK10BlockStateP11LevelSourceRK8BlockPos 0x000000710009e51c,U,000008,_ZNK13CauldronBlock13isSolidRenderEPK10BlockState @@ -3769,7 +3770,7 @@ Address,Quality,Size,Name 0x00000071000b12f8,U,000008, 0x00000071000b1300,U,000008, 0x00000071000b1308,U,000008, -0x00000071000b1310,U,000036,_ZN9AgableMobD0Ev +0x00000071000b1310,O,000036,_ZN9AgableMobD0Ev 0x00000071000b1334,U,000008,_ZN3Mob7GetTypeEv 0x00000071000b133c,U,000036,_ZN6AnimalD0Ev 0x00000071000b1360,U,000036, @@ -4687,7 +4688,7 @@ Address,Quality,Size,Name 0x00000071000c07c8,U,000060, 0x00000071000c0804,U,000060, 0x00000071000c0840,U,000048, -0x00000071000c0870,U,000020,_ZN9PredicateIPKN8BedBlock4PartEEC1Ev +0x00000071000c0870,U,000020,_ZN9PredicateIPKN8BedBlock4PartEEC2Ev 0x00000071000c0884,U,000008, 0x00000071000c088c,U,000052, 0x00000071000c08c0,U,000004, @@ -6931,7 +6932,7 @@ Address,Quality,Size,Name 0x00000071000f9090,U,000052, 0x00000071000f90c4,U,000168,_ZN17DesertWellFeatureC_gen 0x00000071000f916c,U,000096, -0x00000071000f91cc,U,000096, +0x00000071000f91cc,U,000096,_ZNK10BlockState8setValueIPN13HalfSlabBlock4HalfEEEPKS_P8PropertyT_ 0x00000071000f922c,U,000004,_ZN9Direction5Plane8iteratorEv 0x00000071000f9230,U,000128,_ZN17DetectorRailBlock15blockStaticCtorEv 0x00000071000f92b0,U,000664, @@ -7094,7 +7095,7 @@ Address,Quality,Size,Name 0x00000071000fd414,U,000752, 0x00000071000fd704,U,000012, 0x00000071000fd710,U,000108,_ZN9Direction4AxisE_0C_gen -0x00000071000fd77c,U,000020,_ZN9PredicateIPK9DirectionEC1Ev +0x00000071000fd77c,U,000020,_ZN9PredicateIPK9DirectionEC2Ev 0x00000071000fd790,U,000028, 0x00000071000fd7ac,U,000012, 0x00000071000fd7b8,U,000008, @@ -8564,7 +8565,7 @@ Address,Quality,Size,Name 0x000000710012cba4,U,000004, 0x000000710012cba8,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEED2Ev 0x000000710012cbe4,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE -0x000000710012cc20,U,000004, +0x000000710012cc20,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisEED2Ev 0x000000710012cc24,U,000036, 0x000000710012cc48,U,000060, 0x000000710012cc84,U,000048, @@ -8597,7 +8598,7 @@ Address,Quality,Size,Name 0x000000710012d474,U,000472, 0x000000710012d64c,U,000056, 0x000000710012d684,U,000008, -0x000000710012d68c,U,000020,_ZN9PredicateINSt3__110shared_ptrI6PlayerEEEC1Ev +0x000000710012d68c,U,000020,_ZN9PredicateINSt3__110shared_ptrI6PlayerEEEC2Ev 0x000000710012d6a0,U,000160, 0x000000710012d740,U,000008, 0x000000710012d748,U,000036,_ZN14PlayerSelectorD0Ev @@ -8831,7 +8832,7 @@ Address,Quality,Size,Name 0x00000071001331b4,U,000060, 0x00000071001331f0,U,000060, 0x000000710013322c,U,000048, -0x000000710013325c,U,000020,_ZN9PredicateIPK8DyeColorEC1Ev +0x000000710013325c,U,000020,_ZN9PredicateIPK8DyeColorEC2Ev 0x0000007100133270,U,000008, 0x0000007100133278,U,000052, 0x00000071001332ac,U,000036,_ZN10PredicatesIPK8DyeColorE17ConstantPredicateD0Ev @@ -8897,7 +8898,7 @@ Address,Quality,Size,Name 0x00000071001357ec,U,000060, 0x0000007100135828,U,000060, 0x0000007100135864,U,000048, -0x0000007100135894,U,000020,_ZN9PredicateIPN15ComparatorBlock14ComparatorModeEEC1Ev +0x0000007100135894,U,000020,_ZN9PredicateIPN15ComparatorBlock14ComparatorModeEEC2Ev 0x00000071001358a8,U,000008, 0x00000071001358b0,U,000052, 0x00000071001358e4,U,000004, @@ -8988,14 +8989,14 @@ Address,Quality,Size,Name 0x00000071001381f8,U,000004,_ZNSt3__120__shared_ptr_pointerIP16PlayerInfoPacketNS_14default_deleteIS1_EENS_9allocatorIS1_EEE21__on_zero_shared_weakEv 0x00000071001381fc,U,000016,_ZNSt3__18weak_ptrI16PlayerInfoPacketED2Ev 0x000000710013820c,U,000052,_ZN10PredicatesIPN9SandBlock7VariantEE21EqualToValuePredicateC_gen -0x0000007100138240,U,000020,_ZN9PredicateIPN9SandBlock7VariantEEC1Ev +0x0000007100138240,O,000020,_ZN9PredicateIPN9SandBlock7VariantEEC2Ev 0x0000007100138254,U,000016, 0x0000007100138264,O,000008,_ZNK9PredicateIPN9SandBlock7VariantEE4copyEv 0x000000710013826c,U,000036,_ZN10PredicatesIPN9SandBlock7VariantEE21EqualToValuePredicateD0Ev 0x0000007100138290,O,000004,_ZN9PredicateIPN9SandBlock7VariantEED2Ev 0x0000007100138294,O,000036,_ZN9PredicateIPN9SandBlock7VariantEED0Ev 0x00000071001382b8,U,000052,_ZN19BlockStatePredicate19PredicateConversionIPN9SandBlock7VariantEEC_gen -0x00000071001382ec,U,000020,_ZN9PredicateIP5BoxedEC1Ev +0x00000071001382ec,U,000020,_ZN9PredicateIP5BoxedEC2Ev 0x0000007100138300,U,000064, 0x0000007100138340,U,000008, 0x0000007100138348,U,000004, @@ -9012,17 +9013,17 @@ Address,Quality,Size,Name 0x00000071001384fc,U,000056, 0x0000007100138534,U,000008, 0x000000710013853c,U,000092, -0x0000007100138598,U,000068,_ZN10TypedBoxedIPN13HalfSlabBlock4HalfEEC_gen +0x0000007100138598,U,000068,_ZN10TypedBoxedIPN13HalfSlabBlock4HalfEEC2EPS2_ 0x00000071001385dc,U,000036,_ZN10TypedBoxedIPN13HalfSlabBlock4HalfEED0Ev -0x0000007100138600,U,000048, -0x0000007100138630,U,000088, -0x0000007100138688,U,000048, -0x00000071001386b8,U,000008, -0x00000071001386c0,U,000056, -0x00000071001386f8,U,000008, +0x0000007100138600,U,000048,_ZNK10TypedBoxedIPN13HalfSlabBlock4HalfEE6hashOfEv +0x0000007100138630,U,000088,_ZNK10TypedBoxedIPN13HalfSlabBlock4HalfEEeqEPK5Boxed +0x0000007100138688,U,000048,_ZN10TypedBoxedIPN13HalfSlabBlock4HalfEE8setValueEPK5Boxed +0x00000071001386b8,U,000008,_ZNK10TypedBoxedIPN13HalfSlabBlock4HalfEE8toStringEv +0x00000071001386c0,U,000056,_ZNK5Boxed10tryGetTypeIPN13HalfSlabBlock4HalfEEEPK10TypedBoxedIT_Ev +0x00000071001386f8,U,000008,_ZN10TypedBoxedIPN13HalfSlabBlock4HalfEE8getValueEv 0x0000007100138700,U,000092, 0x000000710013875c,U,000052,_ZN10PredicatesIPN13BaseRailBlock9RailShapeEE17FunctionPredicateC_gen -0x0000007100138790,U,000020,_ZN9PredicateIPN13BaseRailBlock9RailShapeEEC1Ev +0x0000007100138790,U,000020,_ZN9PredicateIPN13BaseRailBlock9RailShapeEEC2Ev 0x00000071001387a4,U,000012, 0x00000071001387b0,U,000008, 0x00000071001387b8,U,000004, @@ -9145,7 +9146,7 @@ Address,Quality,Size,Name 0x000000710013e4c4,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x000000710013e530,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x000000710013e614,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x000000710013e924,U,000004, +0x000000710013e924,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEED2Ev 0x000000710013e928,O,000036,_ZN10TypedBoxedIPN9DirtBlock7VariantEED0Ev 0x000000710013e94c,U,000048, 0x000000710013e97c,U,000088, @@ -9154,21 +9155,23 @@ Address,Quality,Size,Name 0x000000710013ea0c,O,000056,_ZNK5Boxed10tryGetTypeIPN9DirtBlock7VariantEEEPK10TypedBoxedIT_Ev 0x000000710013ea44,O,000008,_ZN10TypedBoxedIPN9DirtBlock7VariantEE8getValueEv 0x000000710013ea4c,U,000092, -0x000000710013eaa8,U,000216, -0x000000710013eb80,U,000456, +0x000000710013eaa8,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x000000710013eb80,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ 0x000000710013ed48,U,000124,_ZN16AbstractPropertyIPN9DirtBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x000000710013edc4,U,000056, -0x000000710013edfc,U,000084,_ZN16AbstractPropertyIPN9DirtBlock7VariantEEC_gen2 -0x000000710013ee50,U,000060, +0x000000710013edfc,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev +0x000000710013ee00,O,000020,_ZN16AbstractPropertyIPN9DirtBlock7VariantEED2Ev +0x000000710013ee14,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEED2Ev +0x000000710013ee50,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9DirtBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x000000710013ee8c,O,000060,_ZNSt3__112__hash_tableIPN9DirtBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x000000710013eec8,O,000048,_ZNSt3__112__hash_tableIPN9DirtBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x000000710013eef8,U,000020,_ZN9PredicateIPN9DirtBlock7VariantEEC1Ev -0x000000710013ef0c,U,000008, -0x000000710013ef14,U,000052, -0x000000710013ef48,U,000004, +0x000000710013eef8,O,000020,_ZN9PredicateIPN9DirtBlock7VariantEEC2Ev +0x000000710013ef0c,O,000008,_ZNK10PredicatesIPN9DirtBlock7VariantEE17ConstantPredicate5applyES2_ +0x000000710013ef14,O,000052,_ZNK10PredicatesIPN9DirtBlock7VariantEE17ConstantPredicate4copyEv +0x000000710013ef48,O,000004,_ZN9PredicateIPN9DirtBlock7VariantEED2Ev 0x000000710013ef4c,O,000036,_ZN10PredicatesIPN9DirtBlock7VariantEE17ConstantPredicateD0Ev -0x000000710013ef70,U,000008, -0x000000710013ef78,U,000036, +0x000000710013ef70,O,000008,_ZNK9PredicateIPN9DirtBlock7VariantEE4copyEv +0x000000710013ef78,O,000036,_ZN9PredicateIPN9DirtBlock7VariantEED0Ev 0x000000710013ef9c,O,000064,_ZNSt3__110shared_ptrI16DisconnectPacketEC2IS1_EERKNS_8weak_ptrIT_EENS_9enable_ifIXsr14is_convertibleIPS5_PS1_EE5valueENS2_5__natEE4typeE 0x000000710013efdc,U,000036,_ZNSt3__120__shared_ptr_pointerIP20DispenserBlockEntityNS_14default_deleteIS1_EENS_9allocatorIS1_EEED0Ev 0x000000710013f000,U,000024,_ZNSt3__120__shared_ptr_pointerIP20DispenserBlockEntityNS_14default_deleteIS1_EENS_9allocatorIS1_EEE16__on_zero_sharedEv @@ -9227,7 +9230,7 @@ Address,Quality,Size,Name 0x0000007100140b94,U,000060, 0x0000007100140bd0,U,000060, 0x0000007100140c0c,U,000048, -0x0000007100140c3c,U,000020,_ZN9PredicateIPN9DoorBlock9HingeSideEEC1Ev +0x0000007100140c3c,U,000020,_ZN9PredicateIPN9DoorBlock9HingeSideEEC2Ev 0x0000007100140c50,U,000008, 0x0000007100140c58,U,000052, 0x0000007100140c8c,U,000004, @@ -9279,7 +9282,7 @@ Address,Quality,Size,Name 0x0000007100142784,U,000060, 0x00000071001427c0,U,000060, 0x00000071001427fc,U,000048, -0x000000710014282c,U,000020,_ZN9PredicateIPN9DoorBlock8DoorHalfEEC1Ev +0x000000710014282c,U,000020,_ZN9PredicateIPN9DoorBlock8DoorHalfEEC2Ev 0x0000007100142840,U,000008, 0x0000007100142848,U,000052, 0x000000710014287c,U,000004, @@ -9331,7 +9334,7 @@ Address,Quality,Size,Name 0x0000007100144374,U,000060, 0x00000071001443b0,U,000060, 0x00000071001443ec,U,000048, -0x000000710014441c,U,000020,_ZN9PredicateIPN16DoublePlantBlock7VariantEEC1Ev +0x000000710014441c,U,000020,_ZN9PredicateIPN16DoublePlantBlock7VariantEEC2Ev 0x0000007100144430,U,000008, 0x0000007100144438,U,000052, 0x000000710014446c,U,000004, @@ -9383,7 +9386,7 @@ Address,Quality,Size,Name 0x0000007100145f64,U,000060, 0x0000007100145fa0,U,000060, 0x0000007100145fdc,U,000048, -0x000000710014600c,U,000020,_ZN9PredicateIPN16DoublePlantBlock4HalfEEC1Ev +0x000000710014600c,U,000020,_ZN9PredicateIPN16DoublePlantBlock4HalfEEC2Ev 0x0000007100146020,U,000008, 0x0000007100146028,U,000052, 0x000000710014605c,U,000004, @@ -9915,7 +9918,7 @@ Address,Quality,Size,Name 0x00000071001551cc,U,000132, 0x0000007100155250,U,000144, 0x00000071001552e0,U,000056,_ZN6Entity6moveToEdddff -0x0000007100155318,U,000120, +0x0000007100155318,U,000120,_ZN6Entity10distanceToENSt3__110shared_ptrIS_EE 0x0000007100155390,U,000044, 0x00000071001553bc,U,000016, 0x00000071001553cc,U,000184, @@ -10674,7 +10677,7 @@ Address,Quality,Size,Name 0x0000007100170c20,U,000132,_ZN13FindMountGoalC_gen 0x0000007100170ca4,U,000024,_ZN4GoalC_gen 0x0000007100170cbc,U,001232, -0x000000710017118c,U,000016, +0x000000710017118c,O,000016,_ZNSt3__110shared_ptrI13TamableAnimalED2Ev 0x000000710017119c,U,000216, 0x0000007100171274,U,000004, 0x0000007100171278,U,000092, @@ -10797,9 +10800,9 @@ Address,Quality,Size,Name 0x0000007100177a54,U,000112,_ZN21FireworksRocketEntityC_gen 0x0000007100177ac4,U,000124, 0x0000007100177b40,U,000096, -0x0000007100177ba0,U,000056, +0x0000007100177ba0,U,000056,_ZN21FireworksRocketEntity25shouldRenderAtSqrDistanceEd 0x0000007100177bd8,U,000044, -0x0000007100177c04,U,000060, +0x0000007100177c04,U,000060,_ZN21FireworksRocketEntity12shouldRenderEddd 0x0000007100177c40,U,000504, 0x0000007100177e38,U,000196, 0x0000007100177efc,U,000176,_ZN21FireworksRocketEntityC_gen2 @@ -10807,20 +10810,20 @@ Address,Quality,Size,Name 0x00000071001780d4,U,000032, 0x00000071001780f4,U,000264,_ZN21FireworksRocketEntityC_gen4 0x00000071001781fc,U,000260,_ZN21FireworksRocketEntityC_gen5 -0x0000007100178300,U,000184, +0x0000007100178300,U,000184,_ZN21FireworksRocketEntity10lerpMotionEddd 0x00000071001783b8,U,000092, -0x0000007100178414,U,002108, +0x0000007100178414,U,002108,_ZN21FireworksRocketEntity4tickEv 0x0000007100178c50,U,000804, -0x0000007100178f74,U,000176, +0x0000007100178f74,U,000176,_ZN21FireworksRocketEntity20updateDeltaAfterMoveEP5BlockdddRdS2_S2_ 0x0000007100179024,U,000036, 0x0000007100179048,U,000080, -0x0000007100179098,U,000204, +0x0000007100179098,U,000204,_ZN21FireworksRocketEntity17handleEntityEventEhi 0x0000007100179164,U,000172, 0x0000007100179210,U,000140,_ZN21FireworksRocketEntity14addDataWalkersEP14DataFixerUpper 0x000000710017929c,U,000312, 0x00000071001793d4,U,000380,_ZN12ItemInstance4saveEP11CompoundTag 0x0000007100179550,U,000348, -0x00000071001796ac,U,000008, +0x00000071001796ac,U,000008,_ZN21FireworksRocketEntity12isAttackableEv 0x00000071001796b4,U,000028,_ZNK21FireworksRocketEntity8getOwnerEv 0x00000071001796d0,U,000068,_ZN12FishFoodItemC_gen 0x0000007100179714,U,000092,_ZN8FoodItemC_gen @@ -11124,7 +11127,7 @@ Address,Quality,Size,Name 0x00000071001835ac,O,000012,_ZN8FloatTag11getAsDoubleEv 0x00000071001835b8,O,000008,_ZN8FloatTag10getAsFloatEv 0x00000071001835c0,U,000052,_ZN11FlowerBlock23FlowerCategoryPredicateC_gen -0x00000071001835f4,U,000020,_ZN9PredicateIPN11FlowerBlock6FlowerEEC1Ev +0x00000071001835f4,U,000020,_ZN9PredicateIPN11FlowerBlock6FlowerEEC2Ev 0x0000007100183608,U,000064, 0x0000007100183648,U,000008, 0x0000007100183650,U,000148,_ZN11FlowerBlock11DerivedInitEv @@ -12157,27 +12160,27 @@ Address,Quality,Size,Name 0x000000710019f620,U,000052,_ZN21HalfNewStoneSlabBlockC_gen 0x000000710019f654,U,000008, 0x000000710019f65c,U,000124,_ZN13HalfSlabBlock15blockStaticCtorEv -0x000000710019f6d8,U,000664, +0x000000710019f6d8,U,000664,_ZN12EnumPropertyIPN13HalfSlabBlock4HalfEE6createILi2EEEPS3_RKNSt3__112basic_stringIwNS6_11char_traitsIwEENS6_9allocatorIwEEEERKSt9type_infoRAT__S2_P9PredicateIS2_E 0x000000710019f970,U,000072,_ZN13HalfSlabBlock11DerivedInitEv -0x000000710019f9b8,U,000024, -0x000000710019f9d0,U,000052,_ZN13HalfSlabBlockC_gen -0x000000710019fa04,U,000052,_ZN13HalfSlabBlockC_gen2 -0x000000710019fa38,U,000008,_ZN13WoodSlabBlock15isSilkTouchableEv -0x000000710019fa40,U,000116,_ZN13WoodSlabBlock8getShapeEPK10BlockStateP11LevelSourceRK8BlockPos -0x000000710019fab4,U,000040, -0x000000710019fadc,U,000108, -0x000000710019fb48,U,000204,_ZN13WoodSlabBlock17getBlockFaceShapeEP11LevelSourcePK10BlockStateRK8BlockPosPK9Direction -0x000000710019fc14,U,000012,_ZNK13WoodSlabBlock13isSolidRenderEPK10BlockState -0x000000710019fc20,U,000304,_ZN13WoodSlabBlock20getStateForPlacementEP5LevelRK8BlockPosPK9DirectionfffiSt10shared_ptrI12LivingEntityE -0x000000710019fd50,U,000040,_ZN13WoodSlabBlock16getResourceCountEP6Random -0x000000710019fd78,U,000012,_ZN13WoodSlabBlock12isCubeShapedEPK10BlockState -0x000000710019fd84,U,000532,_ZN13WoodSlabBlock16shouldRenderFaceEPK10BlockStateP11LevelSourceRK8BlockPosPK9Direction -0x000000710019ff98,U,000028, -0x000000710019ffb4,U,000160,_ZN13WoodSlabBlock14isPathfindableEP11LevelSourceRK8BlockPos -0x00000071001a0054,U,000084, -0x00000071001a00a8,U,000068,_ZN13HalfSlabBlock4HalfE_0C_gen -0x00000071001a00ec,U,000012, -0x00000071001a00f8,U,000012, +0x000000710019f9b8,U,000024,_ZN13HalfSlabBlock5_initEv +0x000000710019f9d0,U,000052,_ZN13HalfSlabBlockC2EP8Material +0x000000710019fa04,U,000052,_ZN13HalfSlabBlockC2EP8MaterialPK13MaterialColor +0x000000710019fa38,U,000008,_ZN13HalfSlabBlock15isSilkTouchableEv +0x000000710019fa40,U,000116,_ZN13HalfSlabBlock8getShapeEPK10BlockStateP11LevelSourceRK8BlockPos +0x000000710019fab4,U,000040,_ZNK10BlockState8getValueIPN13HalfSlabBlock4HalfEEET_P8Property +0x000000710019fadc,U,000108,_ZN13HalfSlabBlock18isTopSolidBlockingEPK10BlockState +0x000000710019fb48,U,000204,_ZN13HalfSlabBlock17getBlockFaceShapeEP11LevelSourcePK10BlockStateRK8BlockPosPK9Direction +0x000000710019fc14,U,000012,_ZNK13HalfSlabBlock13isSolidRenderEPK10BlockState +0x000000710019fc20,U,000304,_ZN13HalfSlabBlock20getStateForPlacementEP5LevelRK8BlockPosPK9DirectionfffiNSt3__110shared_ptrI12LivingEntityEE +0x000000710019fd50,U,000040,_ZN13HalfSlabBlock16getResourceCountEP6Random +0x000000710019fd78,U,000012,_ZN13HalfSlabBlock12isCubeShapedEPK10BlockState +0x000000710019fd84,U,000532,_ZN13HalfSlabBlock16shouldRenderFaceEPK10BlockStateP11LevelSourceRK8BlockPosPK9Direction +0x000000710019ff98,U,000028,_ZN13HalfSlabBlock10isHalfSlabEPK10BlockState +0x000000710019ffb4,U,000160,_ZN13HalfSlabBlock14isPathfindableEP11LevelSourceRK8BlockPos +0x00000071001a0054,U,000084,_ZN13HalfSlabBlock10isHalfSlabEP5Block +0x00000071001a00a8,U,000068,_ZN13HalfSlabBlock4HalfC2ERKNSt3__112basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE +0x00000071001a00ec,U,000012,_ZNK13HalfSlabBlock4Half8toStringEv +0x00000071001a00f8,U,000012,_ZNK13HalfSlabBlock4Half17getSerializedNameEv 0x00000071001a0104,U,000052,_ZN18HalfStoneSlabBlockC_gen 0x00000071001a0138,U,000008, 0x00000071001a0140,O,000092,_ZN20HalfTransparentBlockC1ERKNSt3__112basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEP8MaterialbPK13MaterialColor @@ -12345,7 +12348,7 @@ Address,Quality,Size,Name 0x00000071001a57e8,U,000104, 0x00000071001a5850,U,000236, 0x00000071001a593c,U,000160, -0x00000071001a59dc,U,000076, +0x00000071001a59dc,U,000076,_ZN10ItemEntity7getItemEv 0x00000071001a5a28,U,000160, 0x00000071001a5ac8,U,000576, 0x00000071001a5d08,U,000220, @@ -13873,7 +13876,7 @@ Address,Quality,Size,Name 0x00000071001e4a00,U,000060, 0x00000071001e4a3c,U,000060, 0x00000071001e4a78,U,000048, -0x00000071001e4aa8,U,000020,_ZN9PredicateIPKN14FlowerPotBlock8ContentsEEC1Ev +0x00000071001e4aa8,U,000020,_ZN9PredicateIPKN14FlowerPotBlock8ContentsEEC2Ev 0x00000071001e4abc,U,000008, 0x00000071001e4ac4,U,000052, 0x00000071001e4af8,U,000004, @@ -13943,49 +13946,53 @@ Address,Quality,Size,Name 0x00000071001e65c0,U,000008, 0x00000071001e65c8,U,000056, 0x00000071001e6600,U,000092, -0x00000071001e665c,U,000688, -0x00000071001e690c,U,000004, -0x00000071001e6910,U,000088, -0x00000071001e6968,U,000820, -0x00000071001e6c9c,U,000268,_ZN12EnumPropertyIPN13HalfSlabBlock4HalfEEC_gen -0x00000071001e6da8,U,000076,_ZN16AbstractPropertyIPN13HalfSlabBlock4HalfEEC_gen -0x00000071001e6df4,U,000752, -0x00000071001e70e4,U,000012, -0x00000071001e70f0,U,000008, -0x00000071001e70f8,U,000008, -0x00000071001e7100,U,000092, -0x00000071001e715c,U,000080, -0x00000071001e71ac,U,000064, -0x00000071001e71ec,U,000204, -0x00000071001e72b8,U,000052, -0x00000071001e72ec,U,000016, -0x00000071001e72fc,U,000032, -0x00000071001e731c,U,000108, -0x00000071001e7388,U,000032, -0x00000071001e73a8,U,000016, +0x00000071001e665c,U,000688,_ZN12EnumPropertyIPN13HalfSlabBlock4HalfEE6createERKNSt3__112basic_stringIwNS4_11char_traitsIwEENS4_9allocatorIwEEEERKSt9type_infoRKNS4_13unordered_setIS2_NS4_4hashIS2_EENS4_8equal_toIS2_EENS8_IS2_EEEEPK9PredicateIS2_E +0x00000071001e690c,U,000004,_ZNSt3__113unordered_setIPN13HalfSlabBlock4HalfENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev +0x00000071001e6910,U,000088,_ZNSt3__112__hash_tableIPN13HalfSlabBlock4HalfENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE21__construct_node_hashIRS3_JEEENS_10unique_ptrINS_11__hash_nodeIS3_PvEENS_22__hash_node_destructorINS8_ISG_EEEEEEmOT_DpOT0_ +0x00000071001e6968,U,000228,_ZNSt3__112__hash_tableIPN13HalfSlabBlock4HalfENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE6rehashEm +0x00000071001e6a4c,U,000592,_ZNSt3__112__hash_tableIPN13HalfSlabBlock4HalfENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE8__rehashEm +0x00000071001e6c9c,U,000268,_ZN12EnumPropertyIPN13HalfSlabBlock4HalfEEC2ERKNSt3__112basic_stringIwNS4_11char_traitsIwEENS4_9allocatorIwEEEERKSt9type_infoRKNS4_13unordered_setIS2_NS4_4hashIS2_EENS4_8equal_toIS2_EENS8_IS2_EEEE +0x00000071001e6da8,U,000076,_ZN16AbstractPropertyIPN13HalfSlabBlock4HalfEEC2ERKNSt3__112basic_stringIwNS4_11char_traitsIwEENS4_9allocatorIwEEEERKSt9type_info +0x00000071001e6df4,U,000752,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEixERSF_ +0x00000071001e70e4,U,000012,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE7getNameEv +0x00000071001e70f0,U,000008,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE17getPossibleValuesEv +0x00000071001e70f8,U,000008,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE13getValueClassEv +0x00000071001e7100,U,000092,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE8getValueERKNSt3__112basic_stringIwNS4_11char_traitsIwEENS4_9allocatorIwEEEE +0x00000071001e715c,U,000080,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE7getNameEPK5Boxed +0x00000071001e71ac,U,000064,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE8toStringEv +0x00000071001e71ec,U,000204,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE6equalsEPK8Property +0x00000071001e72b8,U,000052,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE8hashCodeEv +0x00000071001e72ec,U,000016,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE13getValueCountEv +0x00000071001e72fc,U,000032,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE15getValueAtIndexEj +0x00000071001e731c,U,000108,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE16getIndexForValueEP5Boxed +0x00000071001e7388,U,000032,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE15getUnboxedValueERKNSt3__112basic_stringIwNS4_11char_traitsIwEENS4_9allocatorIwEEEE +0x00000071001e73a8,U,000016,_ZNK12EnumPropertyIPN13HalfSlabBlock4HalfEE7getNameERKS2_ 0x00000071001e73b8,U,000136,_ZN12EnumPropertyIPN13HalfSlabBlock4HalfEED2Ev 0x00000071001e7440,U,000036,_ZN12EnumPropertyIPN13HalfSlabBlock4HalfEED0Ev -0x00000071001e7464,U,000212, -0x00000071001e7538,U,000048, -0x00000071001e7568,U,000456, -0x00000071001e7730,U,000108, -0x00000071001e779c,U,001012, -0x00000071001e7b90,U,000004, -0x00000071001e7b94,U,000216, -0x00000071001e7c6c,U,000456, -0x00000071001e7e34,U,000124, +0x00000071001e7464,U,000212,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE6equalsEPK8Property +0x00000071001e7538,U,000048,_ZNK16AbstractPropertyIPN13HalfSlabBlock4HalfEE8hashCodeEv +0x00000071001e7568,U,000456,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_15__hash_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071001e7730,U,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ +0x00000071001e779c,U,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm +0x00000071001e7880,U,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm +0x00000071001e7b90,U,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEED2Ev +0x00000071001e7b94,U,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071001e7c6c,U,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071001e7e34,U,000124,_ZN16AbstractPropertyIPN13HalfSlabBlock4HalfEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071001e7eb0,U,000056, -0x00000071001e7ee8,U,000084,_ZN16AbstractPropertyIPN13HalfSlabBlock4HalfEEC_gen2 -0x00000071001e7f3c,U,000060, -0x00000071001e7f78,U,000060, -0x00000071001e7fb4,U,000048, -0x00000071001e7fe4,U,000020,_ZN9PredicateIPN13HalfSlabBlock4HalfEEC1Ev -0x00000071001e7ff8,U,000008, -0x00000071001e8000,U,000052, +0x00000071001e7ee8,U,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev +0x00000071001e7eec,U,000020,_ZN16AbstractPropertyIPN13HalfSlabBlock4HalfEED2Ev +0x00000071001e7f00,U,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEED2Ev +0x00000071001e7f3c,U,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN13HalfSlabBlock4HalfEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE +0x00000071001e7f78,U,000060,_ZNSt3__112__hash_tableIPN13HalfSlabBlock4HalfENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev +0x00000071001e7fb4,U,000048,_ZNSt3__112__hash_tableIPN13HalfSlabBlock4HalfENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE +0x00000071001e7fe4,U,000020,_ZN9PredicateIPN13HalfSlabBlock4HalfEEC2Ev +0x00000071001e7ff8,U,000008,_ZNK10PredicatesIPN13HalfSlabBlock4HalfEE17ConstantPredicate5applyES2_ +0x00000071001e8000,U,000052,_ZNK10PredicatesIPN13HalfSlabBlock4HalfEE17ConstantPredicate4copyEv 0x00000071001e8034,U,000036,_ZN10PredicatesIPN13HalfSlabBlock4HalfEE17ConstantPredicateD0Ev -0x00000071001e8058,U,000008, -0x00000071001e8060,U,000004, -0x00000071001e8064,U,000036, +0x00000071001e8058,U,000008,_ZNK9PredicateIPN13HalfSlabBlock4HalfEE4copyEv +0x00000071001e8060,U,000004,_ZN9PredicateIPN13HalfSlabBlock4HalfEED2Ev +0x00000071001e8064,U,000036,_ZN9PredicateIPN13HalfSlabBlock4HalfEED0Ev 0x00000071001e8088,U,000036,_ZNSt3__120__shared_ptr_pointerIP8PaintingNS_14default_deleteIS1_EENS_9allocatorIS1_EEED0Ev 0x00000071001e80ac,U,000024,_ZNSt3__120__shared_ptr_pointerIP8PaintingNS_14default_deleteIS1_EENS_9allocatorIS1_EEE16__on_zero_sharedEv 0x00000071001e80c4,U,000028,_ZNKSt3__120__shared_ptr_pointerIP8PaintingNS_14default_deleteIS1_EENS_9allocatorIS1_EEE13__get_deleterERKSt9type_info @@ -14048,7 +14055,7 @@ Address,Quality,Size,Name 0x00000071001e9ef4,U,000060, 0x00000071001e9f30,U,000060, 0x00000071001e9f6c,U,000048, -0x00000071001e9f9c,U,000020,_ZN9PredicateIPN17HugeMushroomBlock7VariantEEC1Ev +0x00000071001e9f9c,U,000020,_ZN9PredicateIPN17HugeMushroomBlock7VariantEEC2Ev 0x00000071001e9fb0,U,000008, 0x00000071001e9fb8,U,000052, 0x00000071001e9fec,U,000004, @@ -16345,9 +16352,9 @@ Address,Quality,Size,Name 0x000000710024f8f0,U,000008,_ZN3Mob22getMaxSpawnClusterSizeEv 0x000000710024f8f8,U,000176,_ZN3Mob18getMaxFallDistanceEv 0x000000710024f9a8,U,000012,_ZN3Mob12getHandSlotsEv -0x000000710024f9b4,U,000012, -0x000000710024f9c0,U,000152, -0x000000710024fa58,U,000100, +0x000000710024f9b4,U,000012,_ZN3Mob13getArmorSlotsEv +0x000000710024f9c0,U,000152,_ZN3Mob11getItemSlotEPK13EquipmentSlot +0x000000710024fa58,U,000100,_ZN3Mob11setItemSlotEPK13EquipmentSlot12not_null_ptrI12ItemInstanceE 0x000000710024fabc,U,000700,_ZN3Mob13dropEquipmentEbi 0x000000710024fd78,U,000448,_ZN3Mob29populateDefaultEquipmentSlotsERK18DifficultyInstance 0x000000710024ff38,U,000568, @@ -16381,11 +16388,11 @@ Address,Quality,Size,Name 0x00000071002514a8,U,000096,_ZN3Mob7setNoAiEb 0x0000007100251508,U,000100,_ZN3Mob13setLeftHandedEb 0x000000710025156c,U,000040,_ZN3Mob6isNoAiEv -0x0000007100251594,U,000048, +0x0000007100251594,U,000048,_ZN3Mob10getMainArmEv 0x00000071002515c4,U,000300,_ZN3Mob12shouldRenderEd 0x00000071002516f0,U,000068,_ZN3Mob8setLevelEP5Level 0x0000007100251734,U,000008, -0x000000710025173c,U,000004, +0x000000710025173c,U,000004,_ZN3Mob7getNameEv 0x0000007100251740,U,000068,arrayWithLength__MobCategory 0x0000007100251784,O,000012,_ZN15arrayWithLengthIP11MobCategoryEixEj 0x0000007100251790,U,000040,_ZN11MobCategoryC1EiP8Materialbb11eINSTANCEOFbj @@ -16527,7 +16534,7 @@ Address,Quality,Size,Name 0x0000007100255c7c,U,000056, 0x0000007100255cb4,U,000068, 0x0000007100255cf8,U,000076,_ZN7MonsterC1EP5Level -0x0000007100255d44,U,000180,_ZN7MonsterC1Ev +0x0000007100255d44,O,000180,_ZN13PathfinderMobC1EP5Level 0x0000007100255df8,U,000008,_ZN7Monster14getSoundSourceEv 0x0000007100255e00,U,000084,_ZN7Monster6aiStepEv 0x0000007100255e54,U,000140,_ZN7Monster4tickEv @@ -16541,7 +16548,7 @@ Address,Quality,Size,Name 0x0000007100256308,U,000040, 0x0000007100256330,U,000248, 0x0000007100256428,U,000096, -0x0000007100256488,U,000124, +0x0000007100256488,O,000124,_ZN13PathfinderMob15checkSpawnRulesEv 0x0000007100256504,U,000068, 0x0000007100256548,U,000008, 0x0000007100256550,U,000008, @@ -17725,7 +17732,7 @@ Address,Quality,Size,Name 0x000000710029240c,U,000008, 0x0000007100292414,U,000048, 0x0000007100292444,U,000576, -0x0000007100292684,U,000216, +0x0000007100292684,U,000216,_ZN4PathD2Ev 0x000000710029275c,U,000212, 0x0000007100292830,U,000016, 0x0000007100292840,U,000016,_ZN4Path6isDoneEv @@ -17747,20 +17754,20 @@ Address,Quality,Size,Name 0x0000007100292c34,U,000492, 0x0000007100292e20,U,000156, 0x0000007100292ebc,U,000644, -0x0000007100293140,U,000036,_ZN13PathfinderMobD0Ev -0x0000007100293164,U,000008, -0x000000710029316c,U,000032, -0x000000710029318c,U,000100, -0x00000071002931f0,U,000080, -0x0000007100293240,U,000028, -0x000000710029325c,U,000016, -0x000000710029326c,U,000008, -0x0000007100293274,U,000012, -0x0000007100293280,U,000020, -0x0000007100293294,U,000920, -0x000000710029362c,U,000008, -0x0000007100293634,U,000004, -0x0000007100293638,U,000024, +0x0000007100293140,O,000036,_ZN13PathfinderMobD0Ev +0x0000007100293164,O,000008,_ZN13PathfinderMob18getWalkTargetValueERK8BlockPos +0x000000710029316c,O,000032,_ZN13PathfinderMob13isPathFindingEv +0x000000710029318c,O,000100,_ZN13PathfinderMob19isWithinRestrictionEv +0x00000071002931f0,O,000080,_ZN13PathfinderMob19isWithinRestrictionERK8BlockPos +0x0000007100293240,O,000028,_ZN13PathfinderMob10restrictToERK8BlockPosi +0x000000710029325c,O,000016,_ZN13PathfinderMob17getRestrictCenterEv +0x000000710029326c,O,000008,_ZN13PathfinderMob17getRestrictRadiusEv +0x0000007100293274,O,000012,_ZN13PathfinderMob16clearRestrictionEv +0x0000007100293280,O,000020,_ZN13PathfinderMob14hasRestrictionEv +0x0000007100293294,O,000920,_ZN13PathfinderMob9tickLeashEv +0x000000710029362c,O,000008,_ZN13PathfinderMob16followLeashSpeedEv +0x0000007100293634,O,000004,_ZN13PathfinderMob15onLeashDistanceEf +0x0000007100293638,O,000024,_ZN13PathfinderMob11couldWanderEv 0x0000007100293650,U,000168,_ZN14PathNavigationC_gen 0x00000071002936f8,U,000136,_ZN14PathNavigationC_gen2 0x0000007100293780,U,000036,_ZN14PathNavigationD0Ev @@ -17869,7 +17876,7 @@ Address,Quality,Size,Name 0x0000007100295170,U,000064, 0x00000071002951b0,O,000036,_ZN20LootBonusEnchantmentD0Ev 0x00000071002951d4,U,000036,_ZN10MagmaBlockD0Ev -0x00000071002951f8,U,000340,_ZN3MobC_gen +0x00000071002951f8,M,000340,_ZN3MobD2Ev 0x000000710029534c,U,000036,_ZN9MagmaCubeD0Ev 0x0000007100295370,U,000012, 0x000000710029537c,U,000068,_ZN12MakeLoveGoalD2Ev @@ -17953,7 +17960,7 @@ Address,Quality,Size,Name 0x0000007100295c50,U,000008,_ZN18MockedLevelStorage9getFolderEv 0x0000007100295c58,U,000008, 0x0000007100295c60,U,000008, -0x0000007100295c68,U,000080,_ZN13PathfinderMobC_gen +0x0000007100295c68,O,000080,_ZN13PathfinderMobD2Ev 0x0000007100295cb8,U,000036,_ZN7MonsterD0Ev 0x0000007100295cdc,O,000036,_ZN15MonsterEggBlockD0Ev 0x0000007100295d00,U,000036,_ZN18MonsterRoomFeatureD0Ev @@ -18896,7 +18903,7 @@ Address,Quality,Size,Name 0x00000071002a263c,U,000008, 0x00000071002a2644,U,000008, 0x00000071002a264c,U,000060,_ZN18CanAttackPredicateC_gen2 -0x00000071002a2688,U,000020,_ZN9PredicateINSt3__110shared_ptrI6EntityEEECC1Ev +0x00000071002a2688,U,000020,_ZN9PredicateINSt3__110shared_ptrI6EntityEEECC2Ev 0x00000071002a269c,U,000016, 0x00000071002a26ac,U,000056, 0x00000071002a26e4,O,000036,_ZNSt3__120__shared_ptr_pointerIP11IslandLayerNS_14default_deleteIS1_EENS_9allocatorIS1_EEED0Ev @@ -19077,7 +19084,7 @@ Address,Quality,Size,Name 0x00000071002a69e4,U,000060, 0x00000071002a6a20,U,000060, 0x00000071002a6a5c,U,000048, -0x00000071002a6a8c,U,000020,_ZN9PredicateIPN10LeverBlock14LeverDirectionEEC1Ev +0x00000071002a6a8c,U,000020,_ZN9PredicateIPN10LeverBlock14LeverDirectionEEC2Ev 0x00000071002a6aa0,U,000008, 0x00000071002a6aa8,U,000052, 0x00000071002a6adc,U,000004, @@ -19139,10 +19146,10 @@ Address,Quality,Size,Name 0x00000071002a8440,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x00000071002a84ac,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x00000071002a8590,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x00000071002a88a0,U,000004, -0x00000071002a88a4,U,000216, -0x00000071002a897c,U,000456, -0x00000071002a8b44,U,000124, +0x00000071002a88a0,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisEED2Ev +0x00000071002a88a4,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071002a897c,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071002a8b44,U,000124,_ZN16AbstractPropertyIPN8LogBlock7LogAxisEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071002a8bc0,U,000056, 0x00000071002a8bf8,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x00000071002a8bfc,O,000020,_ZN16AbstractPropertyIPN8LogBlock7LogAxisEED2Ev @@ -19150,7 +19157,7 @@ Address,Quality,Size,Name 0x00000071002a8c4c,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN8LogBlock7LogAxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x00000071002a8c88,O,000060,_ZNSt3__112__hash_tableIPN8LogBlock7LogAxisENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x00000071002a8cc4,O,000048,_ZNSt3__112__hash_tableIPN8LogBlock7LogAxisENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x00000071002a8cf4,U,000020,_ZN9PredicateIPN8LogBlock7LogAxisEEC1Ev +0x00000071002a8cf4,O,000020,_ZN9PredicateIPN8LogBlock7LogAxisEEC2Ev 0x00000071002a8d08,O,000008,_ZNK10PredicatesIPN8LogBlock7LogAxisEE17ConstantPredicate5applyES2_ 0x00000071002a8d10,O,000052,_ZNK10PredicatesIPN8LogBlock7LogAxisEE17ConstantPredicate4copyEv 0x00000071002a8d44,O,000036,_ZN10PredicatesIPN8LogBlock7LogAxisEE17ConstantPredicateD0Ev @@ -19365,10 +19372,10 @@ Address,Quality,Size,Name 0x00000071002b0f30,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x00000071002b0f9c,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x00000071002b1080,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x00000071002b1390,U,000004, -0x00000071002b1394,U,000216, -0x00000071002b146c,U,000456, -0x00000071002b1634,U,000124, +0x00000071002b1390,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantEED2Ev +0x00000071002b1394,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071002b146c,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071002b1634,U,000124,_ZN16AbstractPropertyIPN15MonsterEggBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071002b16b0,U,000056, 0x00000071002b16e8,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x00000071002b16ec,O,000020,_ZN16AbstractPropertyIPN15MonsterEggBlock7VariantEED2Ev @@ -19376,7 +19383,7 @@ Address,Quality,Size,Name 0x00000071002b173c,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15MonsterEggBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x00000071002b1778,O,000060,_ZNSt3__112__hash_tableIPN15MonsterEggBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x00000071002b17b4,O,000048,_ZNSt3__112__hash_tableIPN15MonsterEggBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x00000071002b17e4,U,000020,_ZN9PredicateIPN15MonsterEggBlock7VariantEEC1Ev +0x00000071002b17e4,O,000020,_ZN9PredicateIPN15MonsterEggBlock7VariantEEC2Ev 0x00000071002b17f8,O,000008,_ZNK10PredicatesIPN15MonsterEggBlock7VariantEE17ConstantPredicate5applyES2_ 0x00000071002b1800,O,000052,_ZNK10PredicatesIPN15MonsterEggBlock7VariantEE17ConstantPredicate4copyEv 0x00000071002b1834,O,000004,_ZN9PredicateIPN15MonsterEggBlock7VariantEED2Ev @@ -19416,7 +19423,7 @@ Address,Quality,Size,Name 0x00000071002b2728,U,000100, 0x00000071002b278c,U,000184, 0x00000071002b2844,O,000052,_ZN10PredicatesIPN11PlanksBlock7VariantEE17FunctionPredicateC2EPFbS2_E -0x00000071002b2878,U,000020,_ZN9PredicateIPN11PlanksBlock7VariantEEC1Ev +0x00000071002b2878,O,000020,_ZN9PredicateIPN11PlanksBlock7VariantEEC2Ev 0x00000071002b288c,O,000012,_ZNK10PredicatesIPN11PlanksBlock7VariantEE17FunctionPredicate5applyES2_ 0x00000071002b2898,O,000008,_ZNK9PredicateIPN11PlanksBlock7VariantEE4copyEv 0x00000071002b28a0,O,000004,_ZN9PredicateIPN11PlanksBlock7VariantEED2Ev @@ -19451,10 +19458,10 @@ Address,Quality,Size,Name 0x00000071002b39c0,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x00000071002b3a2c,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x00000071002b3b10,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x00000071002b3e20,U,000004, -0x00000071002b3e24,U,000216, -0x00000071002b3efc,U,000456, -0x00000071002b40c4,U,000124, +0x00000071002b3e20,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantEED2Ev +0x00000071002b3e24,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071002b3efc,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071002b40c4,U,000124,_ZN16AbstractPropertyIPN11PlanksBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071002b4140,U,000056, 0x00000071002b4178,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11PlanksBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x00000071002b417c,O,000020,_ZN16AbstractPropertyIPN11PlanksBlock7VariantEED2Ev @@ -19500,7 +19507,7 @@ Address,Quality,Size,Name 0x00000071002b5b94,U,000060, 0x00000071002b5bd0,U,000060, 0x00000071002b5c0c,U,000048, -0x00000071002b5c3c,U,000020,_ZN9PredicateIPN17NewStoneSlabBlock7VariantEEC1Ev +0x00000071002b5c3c,U,000020,_ZN9PredicateIPN17NewStoneSlabBlock7VariantEEC2Ev 0x00000071002b5c50,U,000008, 0x00000071002b5c58,U,000052, 0x00000071002b5c8c,U,000036,_ZN10PredicatesIPN17NewStoneSlabBlock7VariantEE17ConstantPredicateD0Ev @@ -20454,7 +20461,7 @@ Address,Quality,Size,Name 0x00000071002dacc0,U,000048,_ZN13PotionBrewing21PredicateItemInstanceC_gen 0x00000071002dacf0,U,000148, 0x00000071002dad84,U,000060,_ZN13PotionBrewing21ItemInstancePredicateC_gen -0x00000071002dadc0,U,000020,_ZN9PredicateI12not_null_ptrI12ItemInstanceEEC1Ev +0x00000071002dadc0,U,000020,_ZN9PredicateI12not_null_ptrI12ItemInstanceEEC2Ev 0x00000071002dadd4,U,000068,_ZN13PotionBrewing21ItemInstancePredicateC_gen2 0x00000071002dae18,U,000096, 0x00000071002dae78,U,000112, @@ -22725,7 +22732,7 @@ Address,Quality,Size,Name 0x000000710032a6e4,U,000060, 0x000000710032a720,U,000060, 0x000000710032a75c,U,000048, -0x000000710032a78c,U,000020,_ZN9PredicateIPN15PistonHeadBlock10PistonTypeEEC1Ev +0x000000710032a78c,U,000020,_ZN9PredicateIPN15PistonHeadBlock10PistonTypeEEC2Ev 0x000000710032a7a0,U,000008, 0x000000710032a7a8,U,000052, 0x000000710032a7dc,U,000036,_ZN10PredicatesIPN15PistonHeadBlock10PistonTypeEE17ConstantPredicateD0Ev @@ -22794,14 +22801,14 @@ Address,Quality,Size,Name 0x000000710032be00,O,000048,_ZNK16AbstractPropertyIPN9Direction4AxisEE8hashCodeEv 0x000000710032be30,O,000456,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_15__hash_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ 0x000000710032bff8,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ -0x000000710032c064,U,000216, -0x000000710032c13c,U,000456, -0x000000710032c304,U,000124, +0x000000710032c064,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x000000710032c13c,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9Direction4AxisEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x000000710032c304,U,000124,_ZN16AbstractPropertyIPN9Direction4AxisEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x000000710032c380,U,000056, 0x000000710032c3b8,O,000020,_ZN16AbstractPropertyIPN9Direction4AxisEED2Ev 0x000000710032c3cc,O,000060,_ZNSt3__112__hash_tableIPN9Direction4AxisENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x000000710032c408,O,000048,_ZNSt3__112__hash_tableIPN9Direction4AxisENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x000000710032c438,U,000020,_ZN9PredicateIPN9Direction4AxisEEC1Ev +0x000000710032c438,O,000020,_ZN9PredicateIPN9Direction4AxisEEC2Ev 0x000000710032c44c,O,000008,_ZNK10PredicatesIPN9Direction4AxisEE17ConstantPredicate5applyES2_ 0x000000710032c454,O,000052,_ZNK10PredicatesIPN9Direction4AxisEE17ConstantPredicate4copyEv 0x000000710032c488,O,000004,_ZN9PredicateIPN9Direction4AxisEED2Ev @@ -22925,7 +22932,7 @@ Address,Quality,Size,Name 0x0000007100330a50,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x0000007100330abc,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x0000007100330ba0,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x0000007100330eb0,U,000004, +0x0000007100330eb0,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantEED2Ev 0x0000007100330eb4,O,000036,_ZN10TypedBoxedIPN15PrismarineBlock7VariantEED0Ev 0x0000007100330ed8,O,000048,_ZNK10TypedBoxedIPN15PrismarineBlock7VariantEE6hashOfEv 0x0000007100330f08,O,000088,_ZNK10TypedBoxedIPN15PrismarineBlock7VariantEEeqEPK5Boxed @@ -22934,9 +22941,9 @@ Address,Quality,Size,Name 0x0000007100330f98,O,000056,_ZNK5Boxed10tryGetTypeIPN15PrismarineBlock7VariantEEEPK10TypedBoxedIT_Ev 0x0000007100330fd0,O,000008,_ZN10TypedBoxedIPN15PrismarineBlock7VariantEE8getValueEv 0x0000007100330fd8,U,000092, -0x0000007100331034,U,000216, -0x000000710033110c,U,000456, -0x00000071003312d4,U,000124, +0x0000007100331034,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x000000710033110c,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071003312d4,U,000124,_ZN16AbstractPropertyIPN15PrismarineBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x0000007100331350,U,000056, 0x0000007100331388,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x000000710033138c,O,000020,_ZN16AbstractPropertyIPN15PrismarineBlock7VariantEED2Ev @@ -22944,7 +22951,7 @@ Address,Quality,Size,Name 0x00000071003313dc,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15PrismarineBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x0000007100331418,O,000060,_ZNSt3__112__hash_tableIPN15PrismarineBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x0000007100331454,O,000048,_ZNSt3__112__hash_tableIPN15PrismarineBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x0000007100331484,U,000020,_ZN9PredicateIPN15PrismarineBlock7VariantEEC1Ev +0x0000007100331484,O,000020,_ZN9PredicateIPN15PrismarineBlock7VariantEEC2Ev 0x0000007100331498,O,000008,_ZNK10PredicatesIPN15PrismarineBlock7VariantEE17ConstantPredicate5applyES2_ 0x00000071003314a0,O,000052,_ZNK10PredicatesIPN15PrismarineBlock7VariantEE17ConstantPredicate4copyEv 0x00000071003314d4,O,000004,_ZN9PredicateIPN15PrismarineBlock7VariantEED2Ev @@ -23000,7 +23007,7 @@ Address,Quality,Size,Name 0x0000007100332f64,U,000060, 0x0000007100332fa0,U,000060, 0x0000007100332fdc,U,000048, -0x000000710033300c,U,000020,_ZN9PredicateIPN15PurpurSlabBlock7VariantEEC1Ev +0x000000710033300c,U,000020,_ZN9PredicateIPN15PurpurSlabBlock7VariantEEC2Ev 0x0000007100333020,U,000008, 0x0000007100333028,U,000052, 0x000000710033305c,U,000036,_ZN10PredicatesIPN15PurpurSlabBlock7VariantEE17ConstantPredicateD0Ev @@ -23041,10 +23048,10 @@ Address,Quality,Size,Name 0x00000071003342c4,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x0000007100334330,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x0000007100334414,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x0000007100334724,U,000004, -0x0000007100334728,U,000216, -0x0000007100334800,U,000456, -0x00000071003349c8,U,000124, +0x0000007100334724,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantEED2Ev +0x0000007100334728,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x0000007100334800,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071003349c8,U,000124,_ZN16AbstractPropertyIPN11QuartzBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x0000007100334a44,U,000056, 0x0000007100334a7c,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x0000007100334a80,O,000020,_ZN16AbstractPropertyIPN11QuartzBlock7VariantEED2Ev @@ -23052,7 +23059,7 @@ Address,Quality,Size,Name 0x0000007100334ad0,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN11QuartzBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x0000007100334b0c,O,000060,_ZNSt3__112__hash_tableIPN11QuartzBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x0000007100334b48,O,000048,_ZNSt3__112__hash_tableIPN11QuartzBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x0000007100334b78,U,000020,_ZN9PredicateIPN11QuartzBlock7VariantEEC1Ev +0x0000007100334b78,O,000020,_ZN9PredicateIPN11QuartzBlock7VariantEEC2Ev 0x0000007100334b8c,O,000008,_ZNK10PredicatesIPN11QuartzBlock7VariantEE17ConstantPredicate5applyES2_ 0x0000007100334b94,O,000052,_ZNK10PredicatesIPN11QuartzBlock7VariantEE17ConstantPredicate4copyEv 0x0000007100334bc8,O,000004,_ZN9PredicateIPN11QuartzBlock7VariantEED2Ev @@ -23114,10 +23121,10 @@ Address,Quality,Size,Name 0x0000007100336c64,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x0000007100336cd0,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x0000007100336db4,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x00000071003370c4,U,000004, -0x00000071003370c8,U,000216, -0x00000071003371a0,U,000456, -0x0000007100337368,U,000124, +0x00000071003370c4,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantEED2Ev +0x00000071003370c8,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071003371a0,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x0000007100337368,U,000124,_ZN16AbstractPropertyIPN17RedSandStoneBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071003373e4,U,000056, 0x000000710033741c,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x0000007100337420,O,000020,_ZN16AbstractPropertyIPN17RedSandStoneBlock7VariantEED2Ev @@ -23125,7 +23132,7 @@ Address,Quality,Size,Name 0x0000007100337470,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN17RedSandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x00000071003374ac,O,000060,_ZNSt3__112__hash_tableIPN17RedSandStoneBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x00000071003374e8,O,000048,_ZNSt3__112__hash_tableIPN17RedSandStoneBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x0000007100337518,U,000020,_ZN9PredicateIPN17RedSandStoneBlock7VariantEEC1Ev +0x0000007100337518,O,000020,_ZN9PredicateIPN17RedSandStoneBlock7VariantEEC2Ev 0x000000710033752c,O,000008,_ZNK10PredicatesIPN17RedSandStoneBlock7VariantEE17ConstantPredicate5applyES2_ 0x0000007100337534,O,000052,_ZNK10PredicatesIPN17RedSandStoneBlock7VariantEE17ConstantPredicate4copyEv 0x0000007100337568,O,000004,_ZN9PredicateIPN17RedSandStoneBlock7VariantEED2Ev @@ -23191,7 +23198,7 @@ Address,Quality,Size,Name 0x0000007100339e80,U,000060, 0x0000007100339ebc,U,000060, 0x0000007100339ef8,U,000048, -0x0000007100339f28,U,000020,_ZN9PredicateIPN17RedStoneWireBlock14ConnectingSideEEC1Ev +0x0000007100339f28,U,000020,_ZN9PredicateIPN17RedStoneWireBlock14ConnectingSideEEC2Ev 0x0000007100339f3c,U,000008, 0x0000007100339f44,U,000052, 0x0000007100339f78,U,000004, @@ -23249,10 +23256,10 @@ Address,Quality,Size,Name 0x000000710033c59c,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x000000710033c608,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x000000710033c6ec,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x000000710033c9fc,U,000004, -0x000000710033ca00,U,000216, -0x000000710033cad8,U,000456, -0x000000710033cca0,U,000124, +0x000000710033c9fc,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantEED2Ev +0x000000710033ca00,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x000000710033cad8,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x000000710033cca0,U,000124,_ZN16AbstractPropertyIPN9SandBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x000000710033cd1c,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x000000710033cd20,O,000020,_ZN16AbstractPropertyIPN9SandBlock7VariantEED2Ev 0x000000710033cd34,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN9SandBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEED2Ev @@ -23291,10 +23298,10 @@ Address,Quality,Size,Name 0x000000710033df4c,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x000000710033dfb8,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x000000710033e09c,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x000000710033e3ac,U,000004, +0x000000710033e3ac,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantEED2Ev 0x000000710033e3b0,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ 0x000000710033e488,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ -0x000000710033e650,U,000124, +0x000000710033e650,U,000124,_ZN16AbstractPropertyIPN14SandStoneBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x000000710033e6cc,U,000056, 0x000000710033e704,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x000000710033e708,O,000020,_ZN16AbstractPropertyIPN14SandStoneBlock7VariantEED2Ev @@ -23302,7 +23309,7 @@ Address,Quality,Size,Name 0x000000710033e758,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN14SandStoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x000000710033e794,O,000060,_ZNSt3__112__hash_tableIPN14SandStoneBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x000000710033e7d0,O,000048,_ZNSt3__112__hash_tableIPN14SandStoneBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x000000710033e800,U,000020,_ZN9PredicateIPN14SandStoneBlock7VariantEEC1Ev +0x000000710033e800,O,000020,_ZN9PredicateIPN14SandStoneBlock7VariantEEC2Ev 0x000000710033e814,O,000008,_ZNK10PredicatesIPN14SandStoneBlock7VariantEE17ConstantPredicate5applyES2_ 0x000000710033e81c,O,000052,_ZNK10PredicatesIPN14SandStoneBlock7VariantEE17ConstantPredicate4copyEv 0x000000710033e850,O,000004,_ZN9PredicateIPN14SandStoneBlock7VariantEED2Ev @@ -24410,7 +24417,7 @@ Address,Quality,Size,Name 0x000000710036c63c,U,000012, 0x000000710036c648,U,000008, 0x000000710036c650,U,000160,_ZN14StoneSlabBlock11DerivedInitEv -0x000000710036c6f0,U,000060,_ZN14StoneSlabBlockC_gen +0x000000710036c6f0,U,000060,_ZN14StoneSlabBlockC1Ev 0x000000710036c72c,U,000016,_ZN14StoneSlabBlock11getResourceEPK10BlockStateP6Randomi 0x000000710036c73c,U,000116,_ZN14StoneSlabBlock20getCloneItemInstanceEP5LevelRK8BlockPosPK10BlockState 0x000000710036c7b0,U,000040, @@ -24482,7 +24489,7 @@ Address,Quality,Size,Name 0x000000710036e958,U,000016,vtbl_71010C4E18_func_4 0x000000710036e968,U,000308,vtbl_71010C4E18_func_8 0x000000710036ea9c,U,000636, -0x000000710036ed18,U,000088, +0x000000710036ed18,U,000088,distSqr(vec3i) 0x000000710036ed70,U,000192,vtbl_71010C4E18_func_12 0x000000710036ee30,U,000104, 0x000000710036ee98,U,000184,vtbl_71010C4E18_func_9 @@ -27200,7 +27207,7 @@ Address,Quality,Size,Name 0x00000071003e05c8,U,000060, 0x00000071003e0604,U,000060, 0x00000071003e0640,U,000048, -0x00000071003e0670,U,000020,_ZN9PredicateIPN10StairBlock4HalfEEC1Ev +0x00000071003e0670,U,000020,_ZN9PredicateIPN10StairBlock4HalfEEC2Ev 0x00000071003e0684,U,000008, 0x00000071003e068c,U,000052, 0x00000071003e06c0,U,000036,_ZN10PredicatesIPN10StairBlock4HalfEE17ConstantPredicateD0Ev @@ -27252,7 +27259,7 @@ Address,Quality,Size,Name 0x00000071003e21b8,U,000060, 0x00000071003e21f4,U,000060, 0x00000071003e2230,U,000048, -0x00000071003e2260,U,000020,_ZN9PredicateIPN10StairBlock5ShapeEEC1Ev +0x00000071003e2260,U,000020,_ZN9PredicateIPN10StairBlock5ShapeEEC2Ev 0x00000071003e2274,U,000008, 0x00000071003e227c,U,000052, 0x00000071003e22b0,U,000004, @@ -27302,10 +27309,10 @@ Address,Quality,Size,Name 0x00000071003e3c74,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x00000071003e3ce0,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x00000071003e3dc4,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x00000071003e40d4,U,000004, -0x00000071003e40d8,U,000216, -0x00000071003e41b0,U,000456, -0x00000071003e4378,U,000124, +0x00000071003e40d4,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantEED2Ev +0x00000071003e40d8,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071003e41b0,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071003e4378,U,000124,_ZN16AbstractPropertyIPN10StoneBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071003e43f4,U,000056, 0x00000071003e442c,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x00000071003e4430,O,000020,_ZN16AbstractPropertyIPN10StoneBlock7VariantEED2Ev @@ -27313,7 +27320,7 @@ Address,Quality,Size,Name 0x00000071003e4480,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN10StoneBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x00000071003e44bc,O,000060,_ZNSt3__112__hash_tableIPN10StoneBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x00000071003e44f8,O,000048,_ZNSt3__112__hash_tableIPN10StoneBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x00000071003e4528,U,000020,_ZN9PredicateIPN10StoneBlock7VariantEEC1Ev +0x00000071003e4528,O,000020,_ZN9PredicateIPN10StoneBlock7VariantEEC2Ev 0x00000071003e453c,O,000008,_ZNK10PredicatesIPN10StoneBlock7VariantEE17ConstantPredicate5applyES2_ 0x00000071003e4544,O,000052,_ZNK10PredicatesIPN10StoneBlock7VariantEE17ConstantPredicate4copyEv 0x00000071003e4578,O,000004,_ZN9PredicateIPN10StoneBlock7VariantEED2Ev @@ -27349,10 +27356,10 @@ Address,Quality,Size,Name 0x00000071003e56a0,O,000108,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSQ_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISB_PvEENS_22__hash_node_destructorINS5_ISY_EEEEEEmOT_DpOT0_ 0x00000071003e570c,O,000228,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE6rehashEm 0x00000071003e57f0,O,000784,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE8__rehashEm -0x00000071003e5b00,U,000004, -0x00000071003e5b04,U,000216, -0x00000071003e5bdc,U,000456, -0x00000071003e5da4,U,000124, +0x00000071003e5b00,O,000004,_ZNSt3__14pairIKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantEED2Ev +0x00000071003e5b04,O,000216,_ZNSt3__1eqINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEEEbRKNS_13unordered_mapIT_T0_T1_T2_T3_EESQ_ +0x00000071003e5bdc,O,000456,_ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEERKT_ +0x00000071003e5da4,U,000124,_ZN16AbstractPropertyIPN15StoneBrickBlock7VariantEE12hashBoxedSetERKNSt3__16vectorIP5BoxedNS4_9allocatorIS7_EEEE 0x00000071003e5e20,U,000056, 0x00000071003e5e58,O,000004,_ZNSt3__113unordered_mapINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantENS_4hashIS6_EENS_8equal_toIS6_EENS4_INS_4pairIKS6_S9_EEEEED2Ev 0x00000071003e5e5c,O,000020,_ZN16AbstractPropertyIPN15StoneBrickBlock7VariantEED2Ev @@ -27360,7 +27367,7 @@ Address,Quality,Size,Name 0x00000071003e5eac,O,000060,_ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPN15StoneBrickBlock7VariantEEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_NS_8equal_toIS7_EELb1EEENS5_ISB_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeISB_PvEEEE 0x00000071003e5ee8,O,000060,_ZNSt3__112__hash_tableIPN15StoneBrickBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEED2Ev 0x00000071003e5f24,O,000048,_ZNSt3__112__hash_tableIPN15StoneBrickBlock7VariantENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorIS3_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS3_PvEEEE -0x00000071003e5f54,U,000020,_ZN9PredicateIPN15StoneBrickBlock7VariantEEC1Ev +0x00000071003e5f54,O,000020,_ZN9PredicateIPN15StoneBrickBlock7VariantEEC2Ev 0x00000071003e5f68,O,000008,_ZNK10PredicatesIPN15StoneBrickBlock7VariantEE17ConstantPredicate5applyES2_ 0x00000071003e5f70,O,000052,_ZNK10PredicatesIPN15StoneBrickBlock7VariantEE17ConstantPredicate4copyEv 0x00000071003e5fa4,O,000036,_ZN10PredicatesIPN15StoneBrickBlock7VariantEE17ConstantPredicateD0Ev @@ -27403,7 +27410,7 @@ Address,Quality,Size,Name 0x00000071003e78d8,U,000060, 0x00000071003e7914,U,000060, 0x00000071003e7950,U,000048, -0x00000071003e7980,U,000020,_ZN9PredicateIPN14StoneSlabBlock7VariantEEC1Ev +0x00000071003e7980,U,000020,_ZN9PredicateIPN14StoneSlabBlock7VariantEEC2Ev 0x00000071003e7994,U,000008, 0x00000071003e799c,U,000052, 0x00000071003e79d0,U,000004, @@ -27528,7 +27535,7 @@ Address,Quality,Size,Name 0x00000071003ec2a4,U,000060, 0x00000071003ec2e0,U,000060, 0x00000071003ec31c,U,000048, -0x00000071003ec34c,U,000020,_ZN9PredicateIPN14TallGrassBlock7VariantEEC1Ev +0x00000071003ec34c,U,000020,_ZN9PredicateIPN14TallGrassBlock7VariantEEC2Ev 0x00000071003ec360,U,000008, 0x00000071003ec368,U,000052, 0x00000071003ec39c,U,000004, @@ -27591,7 +27598,7 @@ Address,Quality,Size,Name 0x00000071003ee18c,U,000060, 0x00000071003ee1c8,U,000060, 0x00000071003ee204,U,000048, -0x00000071003ee234,U,000020,_ZN9PredicateIPN13TrapDoorBlock4HalfEEC1Ev +0x00000071003ee234,U,000020,_ZN9PredicateIPN13TrapDoorBlock4HalfEEC2Ev 0x00000071003ee248,U,000008, 0x00000071003ee250,U,000052, 0x00000071003ee284,U,000004, @@ -27707,7 +27714,7 @@ Address,Quality,Size,Name 0x00000071003f121c,U,000060, 0x00000071003f1258,U,000060, 0x00000071003f1294,U,000048, -0x00000071003f12c4,U,000020,_ZN9PredicateIPN9WallBlock7VariantEEC1Ev +0x00000071003f12c4,U,000020,_ZN9PredicateIPN9WallBlock7VariantEEC2Ev 0x00000071003f12d8,U,000008, 0x00000071003f12e0,U,000052, 0x00000071003f1314,U,000004, diff --git a/src/DecompUtils.h b/src/DecompUtils.h index 3471421e..ae1e85b9 100644 --- a/src/DecompUtils.h +++ b/src/DecompUtils.h @@ -2,6 +2,11 @@ // this can be depracated if musl is fixed +inline __attribute__((__always_inline__)) float decomp_fmax1(float x, float y) { + __asm__("fmax %s0, %s1, %s2" : "=w"(x) : "w"(x), "w"(y)); + return x; +} + inline __attribute__((__always_inline__)) float decomp_fmax(float x, float y) { __asm__("fmaxnm %s0, %s1, %s2" : "=w"(x) : "w"(x), "w"(y)); return x; diff --git a/src/Minecraft.Client/net/minecraft/client/Minecraft.cpp b/src/Minecraft.Client/net/minecraft/client/Minecraft.cpp index a30cb7b2..c4737417 100644 --- a/src/Minecraft.Client/net/minecraft/client/Minecraft.cpp +++ b/src/Minecraft.Client/net/minecraft/client/Minecraft.cpp @@ -17,6 +17,7 @@ #include "net/minecraft/client/gui/screens/TitleScreen.h" #include "net/minecraft/client/multiplayer/ClientPacketListener.h" #include "net/minecraft/client/particle/ParticleEngine.h" +#include "net/minecraft/client/particle/ParticleType.h" #include "net/minecraft/client/renderer/GameRenderer.h" #include "net/minecraft/client/renderer/LevelRenderer.h" #include "net/minecraft/client/renderer/ProgressRenderer.h" @@ -35,7 +36,6 @@ #include "net/minecraft/client/ui/scene/scenes/UIScene_CreativeMenu.h" #include "net/minecraft/client/ui/scene/scenes/UIScene_LeaderboardsMenu.h" #include "net/minecraft/core/System.h" -#include "net/minecraft/core/particles/ParticleType.h" #include "net/minecraft/stats/Stats.h" #include "net/minecraft/stats/StatsCounter.h" #include "net/minecraft/util/datafix/DataFixers.h" diff --git a/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.cpp b/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.cpp index b7117626..bfd7899e 100644 --- a/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.cpp +++ b/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.cpp @@ -1,30 +1,33 @@ #include "net/minecraft/client/particle/ParticleType.h" +#include "net/minecraft/client/particle/ParticleTypes.h" #include "net/minecraft/world/level/LevelListener.h" -ParticleType ParticleType::EXPLODE = ParticleType("explode", ePARTICLE_TYPE_Explode, true, 0); -ParticleType ParticleType::SPIT = ParticleType("spit", ePARTICLE_TYPE_Spit, true, 0); -ParticleType ParticleType::BUBBLE = ParticleType("bubble", ePARTICLE_TYPE_Bubble, false, 0); -ParticleType ParticleType::SPLASH = ParticleType("splash", ePARTICLE_TYPE_Splash, false, 0); -ParticleType ParticleType::WAKE = ParticleType("wake", ePARTICLE_TYPE_Wake, false, 0); -ParticleType ParticleType::DROPLET = ParticleType("droplet", ePARTICLE_TYPE_Droplet, false, 0); -ParticleType ParticleType::SUSPENDED = ParticleType("suspended", ePARTICLE_TYPE_Suspended, false, 0); -ParticleType ParticleType::DEPTHSUSPEND = ParticleType("depthsuspend", ePARTICLE_TYPE_Depthsuspend, false, 0); -ParticleType ParticleType::CRIT = ParticleType("crit", ePARTICLE_TYPE_Crit, false, 0); -ParticleType ParticleType::MAGIC_CRIT = ParticleType("magicCrit", ePARTICLE_TYPE_MagicCrit, false, 0); -ParticleType ParticleType::SMOKE = ParticleType("smoke", ePARTICLE_TYPE_Smoke, false, 0); -ParticleType ParticleType::LARGE_SMOKE = ParticleType("largesmoke", ePARTICLE_TYPE_LargeSmoke, false, 0); -ParticleType ParticleType::SPELL = ParticleType("spell", ePARTICLE_TYPE_Spell, false, 0); -ParticleType ParticleType::INSTANT_SPELL - = ParticleType("instantSpell", ePARTICLE_TYPE_InstantSpell, false, 0); +ParticleType* ParticleTypes::EXPLODE = new ParticleType("explode", ePARTICLE_TYPE_Explode, true, 0); +ParticleType* ParticleTypes::SPIT = new ParticleType("spit", ePARTICLE_TYPE_Spit, true, 0); +ParticleType* ParticleTypes::BUBBLE = new ParticleType("bubble", ePARTICLE_TYPE_Bubble, false, 0); +ParticleType* ParticleTypes::SPLASH = new ParticleType("splash", ePARTICLE_TYPE_Splash, false, 0); +ParticleType* ParticleTypes::WAKE = new ParticleType("wake", ePARTICLE_TYPE_Wake, false, 0); +ParticleType* ParticleTypes::DROPLET = new ParticleType("droplet", ePARTICLE_TYPE_Droplet, false, 0); +ParticleType* ParticleTypes::SUSPENDED = new ParticleType("suspended", ePARTICLE_TYPE_Suspended, false, 0); +ParticleType* ParticleTypes::DEPTHSUSPEND + = new ParticleType("depthsuspend", ePARTICLE_TYPE_Depthsuspend, false, 0); +ParticleType* ParticleTypes::CRIT = new ParticleType("crit", ePARTICLE_TYPE_Crit, false, 0); +ParticleType* ParticleTypes::MAGIC_CRIT = new ParticleType("magicCrit", ePARTICLE_TYPE_MagicCrit, false, 0); +ParticleType* ParticleTypes::SMOKE = new ParticleType("smoke", ePARTICLE_TYPE_Smoke, false, 0); +ParticleType* ParticleTypes::LARGE_SMOKE + = new ParticleType("largesmoke", ePARTICLE_TYPE_LargeSmoke, false, 0); +ParticleType* ParticleTypes::SPELL = new ParticleType("spell", ePARTICLE_TYPE_Spell, false, 0); +ParticleType* ParticleTypes::INSTANT_SPELL + = new ParticleType("instantSpell", ePARTICLE_TYPE_InstantSpell, false, 0); ParticleType::ParticleType(const std::string name, ePARTICLE_TYPE id, bool unk1, int unk2) { - mName = name; - mId = id; - mUnk1 = unk1; - mUnk2 = unk2; + this->mName = name; + this->mId = id; + this->mUnk1 = unk1; + this->mUnk2 = unk2; } ePARTICLE_TYPE ParticleType::getId() const { - return mId; + return this->mId; } diff --git a/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.h b/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.h index 636b6b84..f277548f 100644 --- a/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.h +++ b/src/Minecraft.Client/net/minecraft/client/particle/ParticleType.h @@ -7,6 +7,8 @@ class ParticleType { public: ParticleType(const std::string, ePARTICLE_TYPE, bool, int); + static void staticCtor(); + ePARTICLE_TYPE getId() const; std::string mName; @@ -14,19 +16,4 @@ class ParticleType { bool mUnk1; char idk[3]; int mUnk2; - - static ParticleType EXPLODE; - static ParticleType SPIT; - static ParticleType BUBBLE; - static ParticleType SPLASH; - static ParticleType WAKE; - static ParticleType DROPLET; - static ParticleType SUSPENDED; - static ParticleType DEPTHSUSPEND; - static ParticleType CRIT; - static ParticleType MAGIC_CRIT; - static ParticleType SMOKE; - static ParticleType LARGE_SMOKE; - static ParticleType SPELL; - static ParticleType INSTANT_SPELL; }; diff --git a/src/Minecraft.Client/net/minecraft/client/particle/ParticleTypes.h b/src/Minecraft.Client/net/minecraft/client/particle/ParticleTypes.h new file mode 100644 index 00000000..d2649307 --- /dev/null +++ b/src/Minecraft.Client/net/minecraft/client/particle/ParticleTypes.h @@ -0,0 +1,23 @@ +#pragma once + +#include "net/minecraft/client/particle/ParticleType.h" + +class ParticleTypes { +public: + static ParticleType* SMOKE; + static ParticleType* LARGE_SMOKE; + static ParticleType* FALLING_DUST; + static ParticleType* HAPPY_VILLAGER; + static ParticleType* EXPLODE; + static ParticleType* SPIT; + static ParticleType* BUBBLE; + static ParticleType* SPLASH; + static ParticleType* WAKE; + static ParticleType* DROPLET; + static ParticleType* SUSPENDED; + static ParticleType* DEPTHSUSPEND; + static ParticleType* CRIT; + static ParticleType* MAGIC_CRIT; + static ParticleType* SPELL; + static ParticleType* INSTANT_SPELL; +}; diff --git a/src/Minecraft.Client/net/minecraft/core/Vec3i.h b/src/Minecraft.Client/net/minecraft/core/Vec3i.h index 007f5941..7f423a03 100644 --- a/src/Minecraft.Client/net/minecraft/core/Vec3i.h +++ b/src/Minecraft.Client/net/minecraft/core/Vec3i.h @@ -9,6 +9,7 @@ class Vec3i { int getX() const; int getY() const; int getZ() const; + double distSqr(const Vec3i&) const; int x; int y; diff --git a/src/Minecraft.Client/net/minecraft/core/particles/ParticleType.h b/src/Minecraft.Client/net/minecraft/core/particles/ParticleType.h deleted file mode 100644 index 98e51b8e..00000000 --- a/src/Minecraft.Client/net/minecraft/core/particles/ParticleType.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -class ParticleType { -public: - static void staticCtor(); -}; diff --git a/src/Minecraft.Client/net/minecraft/core/particles/ParticleTypes.h b/src/Minecraft.Client/net/minecraft/core/particles/ParticleTypes.h deleted file mode 100644 index a4e9fcc4..00000000 --- a/src/Minecraft.Client/net/minecraft/core/particles/ParticleTypes.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "net/minecraft/core/particles/ParticleType.h" - -class ParticleTypes { -public: - static ParticleType* SMOKE; - static ParticleType* LARGE_SMOKE; - static ParticleType* FALLING_DUST; -}; diff --git a/src/Minecraft.Client/net/minecraft/network/syncher/EntityDataAccessor.h b/src/Minecraft.Client/net/minecraft/network/syncher/EntityDataAccessor.h index d75e9830..9327706f 100644 --- a/src/Minecraft.Client/net/minecraft/network/syncher/EntityDataAccessor.h +++ b/src/Minecraft.Client/net/minecraft/network/syncher/EntityDataAccessor.h @@ -3,7 +3,10 @@ template class EntityDataSerializer; -class EntityDataAccessor_Base {}; +class EntityDataAccessor_Base { +public: + bool is(const EntityDataAccessor_Base*) const; +}; template class EntityDataAccessor : public EntityDataAccessor_Base { diff --git a/src/Minecraft.Client/net/minecraft/network/syncher/SynchedEntityData.h b/src/Minecraft.Client/net/minecraft/network/syncher/SynchedEntityData.h index e8409231..8d1005ef 100644 --- a/src/Minecraft.Client/net/minecraft/network/syncher/SynchedEntityData.h +++ b/src/Minecraft.Client/net/minecraft/network/syncher/SynchedEntityData.h @@ -39,5 +39,11 @@ class SynchedEntityData { // defineId(a1, a2, nullptr); } + template + void set(const EntityDataAccessor*, T, bool); + + template + T get(const EntityDataAccessor*); + void* padding[0x101]; }; diff --git a/src/Minecraft.World/net/minecraft/world/MinecraftWorld.cpp b/src/Minecraft.World/net/minecraft/world/MinecraftWorld.cpp index 36b805b0..d3e57324 100644 --- a/src/Minecraft.World/net/minecraft/world/MinecraftWorld.cpp +++ b/src/Minecraft.World/net/minecraft/world/MinecraftWorld.cpp @@ -13,6 +13,7 @@ #include "net/minecraft/util/datafix/walker/ItemInstanceBlockEntityTagWalker.h" #include "net/minecraft/world/DefaultVertexFormat.h" #include "net/minecraft/world/DispenserBootstrap.h" +#include "net/minecraft/world/eINSTANCEOF.h" #include "net/minecraft/world/effect/MobEffect.h" #include "net/minecraft/world/effect/MobEffects.h" #include "net/minecraft/world/entity/EntityIO.h" @@ -177,7 +178,8 @@ void MinecraftWorld_RunStaticCtors() { LivingEntity::staticCtor(); ArmorStand::staticCtor(); Mob::staticCtor(); - SynchedEntityData::defineId(eMob, eUnknownMob); // I wonder if these just register categories or whatever + SynchedEntityData::defineId(eMob, + ePathfinderMob); // I wonder if these just register categories or whatever AgableMob::staticCtor(); Animal::staticCtor(); Villager::staticCtor(); @@ -190,18 +192,18 @@ void MinecraftWorld_RunStaticCtors() { AbstractChestedHorse::staticCtor(); Horse::staticCtor(); Llama::staticCtor(); - SynchedEntityData::defineId(eAnimal, eUnknownAnimal); + SynchedEntityData::defineId(eAnimal, eTamableAnimal); Parrot::staticCtor(); Sheep::staticCtor(); Pig::staticCtor(); Chicken::staticCtor(); Rabbit::staticCtor(); PolarBear::staticCtor(); - SynchedEntityData::defineId(eUnknownMob, eGolem); + SynchedEntityData::defineId(ePathfinderMob, eGolem); SnowMan::staticCtor(); VillagerGolem::staticCtor(); Shulker::staticCtor(); - SynchedEntityData::defineId(eUnknownMob, eMonster); + SynchedEntityData::defineId(ePathfinderMob, eMonster); Spider::staticCtor(); Zombie::staticCtor(); ZombieVillager::staticCtor(); diff --git a/src/Minecraft.World/net/minecraft/world/eINSTANCEOF.h b/src/Minecraft.World/net/minecraft/world/eINSTANCEOF.h index 11aafcd8..041cebc5 100644 --- a/src/Minecraft.World/net/minecraft/world/eINSTANCEOF.h +++ b/src/Minecraft.World/net/minecraft/world/eINSTANCEOF.h @@ -127,8 +127,8 @@ enum eINSTANCEOF { eAmbientCreature = 0x0D004000, eWaterCreature = 0x0D102000, eSquid = 0x0D102001, - eUnknownMob = 0x0D400000, - eGolem = 0x0D580000, // GUESSED + ePathfinderMob = 0x0D400000, // GUESSED + eGolem = 0x0D580000, // GUESSED eVillagerGolem = 0x0D580002, eAgableMob = 0x0D600000, eVillager = 0x0D600001, @@ -136,7 +136,7 @@ enum eINSTANCEOF { eChicken = 0x0D680004, eAbstractHorse = 0x0D690000, eAbstractChestedHorse = 0x0D698000, - eUnknownAnimal = 0x0D6C0000, + eTamableAnimal = 0x0D6C0000, eWolf = 0x0D6C0002, eBat = 0x1D004001, eCreature = 0x20000000, diff --git a/src/Minecraft.World/net/minecraft/world/entity/Entity.h b/src/Minecraft.World/net/minecraft/world/entity/Entity.h index 3d8e6899..dc9fab10 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/Entity.h +++ b/src/Minecraft.World/net/minecraft/world/entity/Entity.h @@ -178,8 +178,8 @@ class Entity : public std::enable_shared_from_this, public CommandSender virtual void handleEntityEvent(unsigned char, int); virtual void animateHurt(); virtual void getHandSlots(); - virtual void getArmorSlots(); - virtual void getAllSlots(); + virtual NonNullList> getArmorSlots(); + virtual NonNullList> getAllSlots(); virtual void setItemSlot(const EquipmentSlot*, not_null_ptr); virtual bool isOnFire(); virtual bool isPassenger(); @@ -276,7 +276,7 @@ class Entity : public std::enable_shared_from_this, public CommandSender virtual bool isCreative(); virtual bool isDespawnProtected(); virtual void setDespawnProtected(); - virtual void couldWander(); + virtual bool couldWander(); virtual void canCreateParticles(); virtual void stopCurrentLerp(); virtual bool PositionLocked(); @@ -302,6 +302,8 @@ class Entity : public std::enable_shared_from_this, public CommandSender void moveRelative(float, float, float, float); bool isFree(double, double, double); void fjCheckDerivedConstruction(); + bool isExtraWanderingEnabled(); + float distanceTo(std::shared_ptr); int mId; bool mBlocksBuilding; diff --git a/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.cpp b/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.cpp index 28cc3e43..b925ba15 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.cpp +++ b/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.cpp @@ -68,6 +68,7 @@ void LivingEntity::dropDeathLoot(bool, int) {} void LivingEntity::hurtArmor(float) {} void LivingEntity::hurtCurrentlyUsedShield(float) {} +// NON_MATCHING: a lot of stuff void LivingEntity::travel(float x, float y, float z) { Player* player = this->isType(ePlayer) ? (Player*)this : nullptr; if (this->PositionLocked()) { diff --git a/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.h b/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.h index 402d0cab..f6ab2dfe 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.h +++ b/src/Minecraft.World/net/minecraft/world/entity/LivingEntity.h @@ -47,6 +47,8 @@ class LivingEntity : public Entity { void lerpTo(double, double, double, float, float, int, bool) override; void handleEntityEvent(unsigned char, int) override; void animateHurt() override; + virtual NonNullList> getArmorSlots() = 0; + virtual void setItemSlot(const EquipmentSlot*, not_null_ptr) = 0; void setSprinting(bool) override; Team* getTeam() override; void spawnEatParticles(const ItemInstance&, int) override; diff --git a/src/Minecraft.World/net/minecraft/world/entity/ai/Path.h b/src/Minecraft.World/net/minecraft/world/entity/ai/Path.h new file mode 100644 index 00000000..b9cdf8eb --- /dev/null +++ b/src/Minecraft.World/net/minecraft/world/entity/ai/Path.h @@ -0,0 +1,6 @@ +#pragma once + +class Path { +public: + ~Path(); +}; diff --git a/src/Minecraft.World/net/minecraft/world/entity/ai/PathNavigation.h b/src/Minecraft.World/net/minecraft/world/entity/ai/PathNavigation.h new file mode 100644 index 00000000..07cee7d6 --- /dev/null +++ b/src/Minecraft.World/net/minecraft/world/entity/ai/PathNavigation.h @@ -0,0 +1,29 @@ +#pragma once + +#include + +class Path; +class Entity; +class BlockPos; + +class PathNavigation { +public: + virtual ~PathNavigation(); + virtual void pure_virt1() = 0; + virtual void createPath(const BlockPos& pos); + virtual void createPath(std::shared_ptr entity); + virtual void moveTo(double x, double y, double z, double speed); + virtual void moveTo(std::shared_ptr entity, double speed); + virtual void moveTo(Path* path, double speed); + virtual void tick(); + virtual bool shouldAvoidSun() const; + virtual void updatePath(); + virtual void pure_virt2() = 0; + virtual void pure_virt3() = 0; + virtual void trimPath(); + virtual void pure_virt4() = 0; + virtual void getNodeEvaluator(); + virtual bool isStableDestination(const BlockPos& pos); + + bool isDone(); +}; diff --git a/src/Minecraft.World/net/minecraft/world/entity/ai/goal/GoalSelector.h b/src/Minecraft.World/net/minecraft/world/entity/ai/goal/GoalSelector.h index d5538c92..523fc33c 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/ai/goal/GoalSelector.h +++ b/src/Minecraft.World/net/minecraft/world/entity/ai/goal/GoalSelector.h @@ -5,6 +5,10 @@ class GoalSelector { public: class InternalGoal {}; + + void disableControlFlag(int); + void enableControlFlag(int); + std::vector internalGoals1; std::vector internalGoals2; void* qword30; diff --git a/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.cpp b/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.cpp index 51bb0ab4..2b4a056f 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.cpp +++ b/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.cpp @@ -1 +1,169 @@ #include "net/minecraft/world/entity/mob/AgableMob.h" + +#include "com/mojang/nbt/CompoundTag.h" +#include "net/minecraft/client/particle/ParticleTypes.h" +#include "net/minecraft/network/syncher/EntityDataSerializers.h" +#include "net/minecraft/network/syncher/SynchedEntityData.h" +#include "net/minecraft/world/ArrayWithLength.h" +#include "net/minecraft/world/eINSTANCEOF.h" +#include "net/minecraft/world/entity/mob/PathfinderMob.h" +#include "net/minecraft/world/entity/player/Player.h" +#include "net/minecraft/world/item/Items.h" +#include "types.h" + +EntityDataAccessor* AgableMob::BABY; +EntityDataAccessor* AgableMob::ADULT; + +void AgableMob::staticCtor() { + AgableMob::BABY = SynchedEntityData::defineId(eAgableMob, ePathfinderMob, + EntityDataSerializers::sBOOLEAN_EntityDataSerializer); + AgableMob::ADULT = SynchedEntityData::defineId(eAgableMob, ePathfinderMob, + EntityDataSerializers::sBOOLEAN_EntityDataSerializer); +} + +AgableMob::AgableMob(Level* level) : PathfinderMob(level) { + this->mHeightRatio = 0; + this->mForcedAgeTimer = 0; + this->mWidthRatio = -1.0f; + this->mAge = 0; + this->mForcedAge = 0; +} + +void AgableMob::defineSynchedData() { + Mob::defineSynchedData(); + this->mEntityData->createDateItem(AgableMob::BABY, false); + this->mEntityData->createDateItem(AgableMob::ADULT, false); +} + +void AgableMob::setSize(float width, float height) { + bool e = this->mWidthRatio > 0.0f; + this->mWidthRatio = width; + this->mHeightRatio = height; + if (!e) + this->internalSetSize(1.0); +} + +void AgableMob::readAdditionalSaveData(CompoundTag* tag) { + Mob::readAdditionalSaveData(tag); + this->setAge(tag->getInt(L"Age")); + this->mForcedAge = tag->getInt(L"ForcedAge"); +} + +void AgableMob::addAdditonalSaveData(CompoundTag* tag) { + Mob::addAdditonalSaveData(tag); + tag->putInt(L"Age", this->getAge()); + tag->putInt(L"ForcedAge", this->mForcedAge); +} + +void AgableMob::onSyncedDataUpdated(const EntityDataAccessor_Base* accessor) { + if (AgableMob::BABY->is(accessor)) { + this->updateSize(this->isBaby()); + } +} + +bool AgableMob::isBaby() { + return this->getAge() < 0; +} + +void AgableMob::aiStep() { + Mob::aiStep(); + if (this->mLevel->mIsLocal) { + if (this->mForcedAgeTimer > 0) { + if (this->mForcedAgeTimer % 4 == 0) { + this->mLevel->addParticle( + ParticleTypes::HAPPY_VILLAGER, + this->mX + (this->mRand->nextFloat() * this->mWidth * 2.0F) - this->mWidth, + this->mY + 0.5 + (this->mRand->nextFloat() * this->mHeight), + this->mZ + (this->mRand->nextFloat() * this->mWidth * 2.0F) - this->mWidth, 0.0, 0.0, 0.0, + arrayWithLength()); + } + + --this->mForcedAgeTimer; + } + } else { + int age = this->getAge(); + if (age < 0) { + ++age; + this->setAge(age); + if (!age) { + this->grewUp(); + } + } else if (age > 0) { + --age; + this->setAge(age); + } + } +} + +/* + +TODO: implement SpawnEggItem then get to this! + +bool AgableMob::mobInteract(const std::shared_ptr& player, InteractionHand::EInteractionHand hand) { + not_null_ptr itemInst = player->getItemInHand(hand); + Item* item = itemInst->getItem(); + if (item == Items::SPAWN_EGG + } +} +*/ + +int AgableMob::getAge() { + if (this->mLevel && !this->mLevel->mIsLocal) { + return this->mAge; + } + + if (this->mEntityData->get(ADULT)) { + return 1; + } + + return this->mEntityData->get(BABY) ? -1 : 0; +} + +void AgableMob::ageUp(int seconds, bool forced) { + int age = this->getAge(); + int oldAge = age; + age += seconds * 20; + if (age > 0) { + if (oldAge < 0) { + this->grewUp(); + } + age = 0; + } + + this->setAge(age); + + if (forced) { + this->mForcedAge += age - oldAge; + if (this->mForcedAgeTimer == 0) { + this->mForcedAgeTimer = 40; + } + } + + if (this->getAge() == 0) { + this->setAge(this->mForcedAge); + } +} + +void AgableMob::ageUp(int seconds) { + this->ageUp(seconds, false); +} + +void AgableMob::setAge(int age) { + if (!this->mLevel || !this->mLevel->mIsLocal) { + this->mEntityData->set(BABY, age < 0, true); + this->mEntityData->set(ADULT, age > 0, true); + } + + this->mAge = age; + this->updateSize(this->isBaby()); +} + +void AgableMob::grewUp() {} + +void AgableMob::updateSize(bool baby) { + this->internalSetSize(baby ? 0.5f : 1.0f); +} + +void AgableMob::internalSetSize(float scale) { + Entity::setSize(this->mWidthRatio * scale, this->mHeightRatio * scale); +} diff --git a/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.h b/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.h index d3157a5e..cdbf554b 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.h +++ b/src/Minecraft.World/net/minecraft/world/entity/mob/AgableMob.h @@ -1,8 +1,38 @@ #pragma once #include "net/minecraft/world/entity/mob/PathfinderMob.h" +#include class AgableMob : public PathfinderMob { public: + static EntityDataAccessor* BABY; + static EntityDataAccessor* ADULT; // why this adult shit + static void staticCtor(); + + AgableMob(Level*); + + void defineSynchedData() override; + void setSize(float, float) override; + void readAdditionalSaveData(CompoundTag*) override; + void addAdditonalSaveData(CompoundTag*) override; + void onSyncedDataUpdated(const EntityDataAccessor_Base*) override; + bool isBaby() override; + void aiStep() override; + bool mobInteract(const std::shared_ptr&, InteractionHand::EInteractionHand) override; + virtual std::shared_ptr createChild() = 0; + virtual int getAge(); + virtual void ageUp(int, bool); + virtual void ageUp(int); + virtual void setAge(int); + virtual void grewUp(); + virtual void updateSize(bool); + + void internalSetSize(float scale); + + int mAge; + int mForcedAge; + int mForcedAgeTimer; + float mWidthRatio; + float mHeightRatio; }; diff --git a/src/Minecraft.World/net/minecraft/world/entity/mob/Mob.h b/src/Minecraft.World/net/minecraft/world/entity/mob/Mob.h index 48af0c91..3ace5778 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/mob/Mob.h +++ b/src/Minecraft.World/net/minecraft/world/entity/mob/Mob.h @@ -28,6 +28,10 @@ class Mob : public LivingEntity { static EquipmentSlot* getEquipmentSlotForItem(not_null_ptr); + NonNullList> getArmorSlots() override; + void setItemSlot(const EquipmentSlot*, not_null_ptr) override; + not_null_ptr getItemSlot(const EquipmentSlot*) override; + HumanoidArm* getMainArm() override; virtual void registerGoals(); virtual void createNavigation(Level*); virtual void getPathfindingMalus(const BlockPathTypes*); @@ -36,7 +40,7 @@ class Mob : public LivingEntity { virtual void getLookControl(); virtual void getMoveControl(); virtual void getJumpControl(); - virtual void getNavigation(); + virtual PathNavigation* getNavigation(); virtual void getSensing(); virtual void getTarget(); virtual void setTarget(std::shared_ptr); @@ -59,7 +63,7 @@ class Mob : public LivingEntity { virtual void customServerAiStep(); virtual void getMaxHeadXRot(); virtual void getMaxHeadYRot(); - virtual void checkSpawnRules(); + virtual bool checkSpawnRules(); virtual void checkSpawnObstruction(); virtual void getSizeScale(); virtual void getHeadSizeScale(); @@ -73,12 +77,12 @@ class Mob : public LivingEntity { virtual void canPickUpLoot(); virtual void setCanPickUpLoot(bool); virtual bool isPersistenceRequired(); - virtual void mobInteract(const std::shared_ptr&, InteractionHand::EInteractionHand); + virtual bool mobInteract(const std::shared_ptr&, InteractionHand::EInteractionHand); virtual void tickLeash(); virtual void dropLeash(bool, bool); virtual void canBeLeashed(const std::shared_ptr&); - virtual void isLeashed(); - virtual void getLeashHolder(); + virtual bool isLeashed(); + virtual std::shared_ptr getLeashHolder(); virtual void isLeashedToPlayer(const std::shared_ptr&); virtual void setLeashedTo(std::shared_ptr, bool); virtual void restoreLeashFromSave(); diff --git a/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.cpp b/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.cpp index c1c41cb7..ca63ecd5 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.cpp +++ b/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.cpp @@ -1 +1,120 @@ #include "net/minecraft/world/entity/mob/PathfinderMob.h" + +#include "DecompUtils.h" +#include "net/minecraft/world/entity/ai/Path.h" +#include "net/minecraft/world/entity/ai/PathNavigation.h" +#include "net/minecraft/world/entity/mob/TamableAnimal.h" +#include "net/minecraft/world/level/pathfinder/BlockPathTypes.h" +#include + +PathfinderMob::PathfinderMob(Level* level) : Mob(level) { + this->mPath = nullptr; + this->someEnt = nullptr; + this->byte790 = 0; + this->dword794 = 0; + this->mRestrictRadius = -1.0; + this->mRestrictCenter = BlockPos::zero; + this->mPathfindingMalus = BlockPathTypes::WATER->getMaulus(); +} + +PathfinderMob::~PathfinderMob() { + delete this->mPath; +} + +bool PathfinderMob::couldWander() { + return this->mNoActionTime < 100 ? true : this->isExtraWanderingEnabled(); +} + +bool PathfinderMob::checkSpawnRules() { + if (!Mob::checkSpawnRules()) + return false; + + return this->getWalkTargetValue(BlockPos(this->mX, this->getBoundingBox()->minY, this->mZ)) >= 0.0f; +} + +void PathfinderMob::tickLeash() { + Mob::tickLeash(); + if (this->isLeashed()) { + if (this->getLeashHolder() != nullptr && this->getLeashHolder()->mLevel == this->mLevel) { + std::shared_ptr ent = this->getLeashHolder(); + this->restrictTo(BlockPos((int)ent->mX, (int)ent->mY, (int)ent->mZ), 5); + float dist = this->distanceTo(ent); + + // figuring out this shit below took me huge amount of hours + std::shared_ptr e + = shared_from_this()->isType(eTamableAnimal) ? + std::dynamic_pointer_cast(shared_from_this()) : + nullptr; + if (e && e->isSitting()) { + if (dist > 10.0f) { + this->dropLeash(true, true); + } + return; + } + + this->onLeashDistance(dist); + if (dist > 10.0f) { + this->dropLeash(true, true); + this->mGoalSelector.disableControlFlag(1); + } else if (dist > 6.0f) { + double deltX = (ent->mX - this->mX) / dist; + double deltY = (ent->mY - this->mY) / dist; + double deltZ = (ent->mZ - this->mZ) / dist; + this->mDeltaMovementX += deltX * fabs(deltX) * 0.4; + this->mDeltaMovementY += deltY * fabs(deltY) * 0.4; + this->mDeltaMovementZ += deltZ * fabs(deltZ) * 0.4; + } else { + this->mGoalSelector.enableControlFlag(1); + Vec3* vec = Vec3::newTemp(ent->mX - this->mX, ent->mY - this->mY, ent->mZ - this->mZ) + ->normalize() + ->scale(decomp_fmax1(dist - 2.0f, 0.0f)); + this->getNavigation()->moveTo(this->mX + vec->x, this->mY + vec->y, this->mZ + vec->z, + this->followLeashSpeed()); + } + } + } +} + +float PathfinderMob::getWalkTargetValue(const BlockPos&) { + return 0.0f; +} + +bool PathfinderMob::isPathFinding() { + return !this->mPathNavigation->isDone(); +} + +bool PathfinderMob::isWithinRestriction() { + return this->isWithinRestriction(BlockPos(shared_from_this())); +} + +bool PathfinderMob::isWithinRestriction(const BlockPos& pos) { + return this->mRestrictRadius == -1.0f + || this->mRestrictCenter.distSqr(pos) < this->mRestrictRadius * this->mRestrictRadius; +} + +void PathfinderMob::restrictTo(const BlockPos& pos, int radius) { + this->mRestrictCenter = pos; + this->mRestrictRadius = radius; +} + +BlockPos PathfinderMob::getRestrictCenter() { + return this->mRestrictCenter; +} + +float PathfinderMob::getRestrictRadius() { + return this->mRestrictRadius; +} + +void PathfinderMob::clearRestriction() { + this->mRestrictRadius = -1.0f; +} + +bool PathfinderMob::hasRestriction() { + return this->mRestrictRadius != -1.0f; +} + +void PathfinderMob::onLeashDistance(float) {} + +double PathfinderMob::followLeashSpeed() { + return 1.0; +} diff --git a/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.h b/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.h index 4b4ba1e7..ff91d325 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.h +++ b/src/Minecraft.World/net/minecraft/world/entity/mob/PathfinderMob.h @@ -2,4 +2,33 @@ #include "net/minecraft/world/entity/mob/Mob.h" -class PathfinderMob : public Mob {}; +class Path; + +class PathfinderMob : public Mob { +public: + PathfinderMob(Level* level); + + ~PathfinderMob() override; + bool couldWander() override; + bool checkSpawnRules() override; + void tickLeash() override; + virtual float getWalkTargetValue(const BlockPos&); + virtual bool isPathFinding(); + virtual bool isWithinRestriction(); + virtual bool isWithinRestriction(const BlockPos&); + virtual void restrictTo(const BlockPos&, int); + virtual BlockPos getRestrictCenter(); + virtual float getRestrictRadius(); + virtual void clearRestriction(); + virtual bool hasRestriction(); + virtual void onLeashDistance(float); + virtual double followLeashSpeed(); + + Path* mPath; + std::shared_ptr someEnt; + char byte790; + int dword794; + BlockPos mRestrictCenter; + float mRestrictRadius; + float mPathfindingMalus; +}; diff --git a/src/Minecraft.World/net/minecraft/world/entity/mob/TamableAnimal.h b/src/Minecraft.World/net/minecraft/world/entity/mob/TamableAnimal.h index 227c43a5..a1a0a7a0 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/mob/TamableAnimal.h +++ b/src/Minecraft.World/net/minecraft/world/entity/mob/TamableAnimal.h @@ -1,10 +1,21 @@ #pragma once #include "net/minecraft/world/entity/OwnableEntity.h" +#include "net/minecraft/world/entity/mob/Animal.h" #include "net/minecraft/world/entity/mob/FlyingAnimal.h" // ENTITY STUB class TamableAnimal : public Animal, public OwnableEntity { public: static void staticCtor(); + + // create proper virtuals later, and possibly move those stubs down to Animal + virtual void virtual_1(); + virtual void virtual_2(); + virtual void virtual_3(); + virtual void virtual_4(); + virtual void virtual_5(); + virtual void virtual_6(); + virtual void virtual_7(); + virtual bool isSitting(); }; diff --git a/src/Minecraft.World/net/minecraft/world/entity/monster/Silverfish.h b/src/Minecraft.World/net/minecraft/world/entity/monster/Silverfish.h index d7300c12..1d1bbda4 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/monster/Silverfish.h +++ b/src/Minecraft.World/net/minecraft/world/entity/monster/Silverfish.h @@ -7,8 +7,9 @@ class Silverfish : public Monster { Silverfish(Level*); // possibly move this down the inheritance (Monster or lower) + void setItemSlot(const EquipmentSlot*, not_null_ptr) override; not_null_ptr getItemSlot(const EquipmentSlot*) override; HumanoidArm* getMainArm() override; - char fill[82]; // correct that in the future as part of this probably should go to Monster + char fill[0x24]; // correct that in the future as part of this probably should go to Monster }; diff --git a/src/Minecraft.World/net/minecraft/world/entity/player/Player.h b/src/Minecraft.World/net/minecraft/world/entity/player/Player.h index 25bae78e..d04f1796 100644 --- a/src/Minecraft.World/net/minecraft/world/entity/player/Player.h +++ b/src/Minecraft.World/net/minecraft/world/entity/player/Player.h @@ -69,7 +69,7 @@ class Player : public LivingEntity { void getDimensionChangingDelay() override; void handleEntityEvent(unsigned char, int) override; void getHandSlots() override; - void getArmorSlots() override; + NonNullList> getArmorSlots() override; void setItemSlot(const EquipmentSlot*, not_null_ptr) override; bool isInvisibleTo(std::shared_ptr) override; Team* getTeam() override; diff --git a/src/Minecraft.World/net/minecraft/world/level/block/FallingBlock.cpp b/src/Minecraft.World/net/minecraft/world/level/block/FallingBlock.cpp index 8b80111c..8a81a11c 100644 --- a/src/Minecraft.World/net/minecraft/world/level/block/FallingBlock.cpp +++ b/src/Minecraft.World/net/minecraft/world/level/block/FallingBlock.cpp @@ -1,6 +1,6 @@ #include "net/minecraft/world/level/block/FallingBlock.h" -#include "net/minecraft/core/particles/ParticleTypes.h" +#include "net/minecraft/client/particle/ParticleTypes.h" #include "net/minecraft/world/ArrayWithLength.h" #include "net/minecraft/world/entity/item/FallingBlockEntity.h" #include "net/minecraft/world/level/Level.h" diff --git a/src/Minecraft.World/net/minecraft/world/level/block/FireBlock.cpp b/src/Minecraft.World/net/minecraft/world/level/block/FireBlock.cpp index 5e3b2016..f45efa77 100644 --- a/src/Minecraft.World/net/minecraft/world/level/block/FireBlock.cpp +++ b/src/Minecraft.World/net/minecraft/world/level/block/FireBlock.cpp @@ -2,11 +2,11 @@ #include "net/minecraft/client/CMinecraftApp.h" #include "net/minecraft/client/eGameHostOption.h" +#include "net/minecraft/client/particle/ParticleTypes.h" #include "net/minecraft/client/renderer/texture/IconRegister.h" #include "net/minecraft/client/renderer/texture/TextureAtlasSprite.h" #include "net/minecraft/core/BlockPos.h" #include "net/minecraft/core/Direction.h" -#include "net/minecraft/core/particles/ParticleTypes.h" #include "net/minecraft/server/MinecraftServer.h" #include "net/minecraft/server/players/PlayerList.h" #include "net/minecraft/sounds/SoundEvents.h" diff --git a/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.cpp b/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.cpp new file mode 100644 index 00000000..88464c6c --- /dev/null +++ b/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.cpp @@ -0,0 +1,19 @@ +#include "net/minecraft/world/level/pathfinder/BlockPathTypes.h" + +const BlockPathTypes* BlockPathTypes::BLOCKED = new BlockPathTypes(0, -1.0f); +const BlockPathTypes* BlockPathTypes::OPEN = new BlockPathTypes(1, 0.0f); +const BlockPathTypes* BlockPathTypes::WALKABLE = new BlockPathTypes(2, 0.0f); +const BlockPathTypes* BlockPathTypes::TRAPDOR = new BlockPathTypes(3, 0.0f); +const BlockPathTypes* BlockPathTypes::FENCE = new BlockPathTypes(4, -1.0f); +const BlockPathTypes* BlockPathTypes::LAVA = new BlockPathTypes(5, -1.0f); +const BlockPathTypes* BlockPathTypes::WATER = new BlockPathTypes(6, 8.0f); +const BlockPathTypes* BlockPathTypes::RAIL = new BlockPathTypes(7, 0.0f); +const BlockPathTypes* BlockPathTypes::DANGER_FIRE = new BlockPathTypes(8, 8.0f); +const BlockPathTypes* BlockPathTypes::DAMAGE_FIRE = new BlockPathTypes(9, 16.0f); +const BlockPathTypes* BlockPathTypes::DANGER_CACTUS = new BlockPathTypes(10, 8.0f); +const BlockPathTypes* BlockPathTypes::DAMAGE_CACTUS = new BlockPathTypes(11, -1.0f); +const BlockPathTypes* BlockPathTypes::DANGER_OTHER = new BlockPathTypes(12, 8.0f); +const BlockPathTypes* BlockPathTypes::DAMAGE_OTHER = new BlockPathTypes(13, -1.0f); +const BlockPathTypes* BlockPathTypes::DOOR_OPEN = new BlockPathTypes(14, 0.0f); +const BlockPathTypes* BlockPathTypes::DOOR_WOOD_CLOSED = new BlockPathTypes(15, -1.0f); +const BlockPathTypes* BlockPathTypes::DOOR_IRON_CLOSED = new BlockPathTypes(16, -1.0f); diff --git a/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.h b/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.h index 847cca34..d53bf960 100644 --- a/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.h +++ b/src/Minecraft.World/net/minecraft/world/level/pathfinder/BlockPathTypes.h @@ -1,5 +1,34 @@ #pragma once class BlockPathTypes { - BlockPathTypes(int, float); +public: + static const BlockPathTypes* BLOCKED; + static const BlockPathTypes* OPEN; + static const BlockPathTypes* WALKABLE; + static const BlockPathTypes* TRAPDOR; + static const BlockPathTypes* FENCE; + static const BlockPathTypes* LAVA; + static const BlockPathTypes* WATER; + static const BlockPathTypes* RAIL; + static const BlockPathTypes* DANGER_FIRE; + static const BlockPathTypes* DAMAGE_FIRE; + static const BlockPathTypes* DANGER_CACTUS; + static const BlockPathTypes* DAMAGE_CACTUS; + static const BlockPathTypes* DANGER_OTHER; + static const BlockPathTypes* DAMAGE_OTHER; + static const BlockPathTypes* DOOR_OPEN; + static const BlockPathTypes* DOOR_WOOD_CLOSED; + static const BlockPathTypes* DOOR_IRON_CLOSED; + + BlockPathTypes(int ordinal, float maulus) { + this->mOrdinal = ordinal; + this->mMaulus = maulus; + } + + int ordinal() const { return this->mOrdinal; } + int getFlag() const { return 1 << this->mOrdinal; } + float getMaulus() const { return this->mMaulus; } + + int mOrdinal; + float mMaulus; }; diff --git a/src/Minecraft.World/net/minecraft/world/phys/Vec3.h b/src/Minecraft.World/net/minecraft/world/phys/Vec3.h index 98d0d51f..426957c9 100644 --- a/src/Minecraft.World/net/minecraft/world/phys/Vec3.h +++ b/src/Minecraft.World/net/minecraft/world/phys/Vec3.h @@ -38,6 +38,8 @@ class Vec3 { double distanceTo(AABB* aabb); Vec3* subtract(double, double, double); Vec3* add(double, double, double); + Vec3* normalize(); + Vec3* scale(double); Vec3* closestPointOnSegment(Vec3* segStart, Vec3* segEnd); // made up name double distanceToSegment(Vec3* segStart, Vec3* segEnd); // made up name