chore: much better tracked_data impl
This commit is contained in:
parent
5b833274d4
commit
ab60adb239
@ -1,178 +0,0 @@
|
|||||||
{
|
|
||||||
"LEFT_PADDLE_MOVING": 11,
|
|
||||||
"RIGHT_PADDLE_MOVING": 12,
|
|
||||||
"BUBBLE_WOBBLE_TICKS": 13,
|
|
||||||
"DAMAGE_WOBBLE_TICKS": 8,
|
|
||||||
"DAMAGE_WOBBLE_SIDE": 9,
|
|
||||||
"DAMAGE_WOBBLE_STRENGTH": 10,
|
|
||||||
"FLAGS": 0,
|
|
||||||
"AIR": 1,
|
|
||||||
"CUSTOM_NAME": 2,
|
|
||||||
"NAME_VISIBLE": 3,
|
|
||||||
"SILENT": 4,
|
|
||||||
"NO_GRAVITY": 5,
|
|
||||||
"POSE": 6,
|
|
||||||
"FROZEN_TICKS": 7,
|
|
||||||
"DANCING": 19,
|
|
||||||
"CAN_DUPLICATE": 17,
|
|
||||||
"MOB_FLAGS": 15,
|
|
||||||
"LIVING_FLAGS": 8,
|
|
||||||
"HEALTH": 9,
|
|
||||||
"POTION_SWIRLS": 10,
|
|
||||||
"POTION_SWIRLS_AMBIENT": 11,
|
|
||||||
"STUCK_ARROW_COUNT": 12,
|
|
||||||
"STINGER_COUNT": 13,
|
|
||||||
"SLEEPING_POSITION": 14,
|
|
||||||
"RADIUS": 8,
|
|
||||||
"WAITING": 9,
|
|
||||||
"PARTICLE": 10,
|
|
||||||
"STATE": 17,
|
|
||||||
"CHILD": 16,
|
|
||||||
"ARMOR_STAND_FLAGS": 15,
|
|
||||||
"TRACKER_HEAD_ROTATION": 16,
|
|
||||||
"TRACKER_BODY_ROTATION": 17,
|
|
||||||
"TRACKER_LEFT_ARM_ROTATION": 18,
|
|
||||||
"TRACKER_RIGHT_ARM_ROTATION": 19,
|
|
||||||
"TRACKER_LEFT_LEG_ROTATION": 20,
|
|
||||||
"TRACKER_RIGHT_LEG_ROTATION": 21,
|
|
||||||
"COLOR": 18,
|
|
||||||
"PROJECTILE_FLAGS": 8,
|
|
||||||
"PIERCE_LEVEL": 9,
|
|
||||||
"IN_GROUND": 10,
|
|
||||||
"VARIANT": 20,
|
|
||||||
"PLAYING_DEAD": 18,
|
|
||||||
"FROM_BUCKET": 16,
|
|
||||||
"BAT_FLAGS": 16,
|
|
||||||
"BEE_FLAGS": 17,
|
|
||||||
"ANGER_END_TIME": 21,
|
|
||||||
"BLAZE_FLAGS": 16,
|
|
||||||
"BLOCK_STATE": 9,
|
|
||||||
"START_INTERPOLATION": 8,
|
|
||||||
"INTERPOLATION_DURATION": 9,
|
|
||||||
"TELEPORT_DURATION": 10,
|
|
||||||
"TRANSLATION": 11,
|
|
||||||
"SCALE": 12,
|
|
||||||
"LEFT_ROTATION": 13,
|
|
||||||
"RIGHT_ROTATION": 14,
|
|
||||||
"BILLBOARD": 15,
|
|
||||||
"BRIGHTNESS": 16,
|
|
||||||
"VIEW_RANGE": 17,
|
|
||||||
"SHADOW_RADIUS": 18,
|
|
||||||
"SHADOW_STRENGTH": 19,
|
|
||||||
"WIDTH": 20,
|
|
||||||
"HEIGHT": 21,
|
|
||||||
"GLOW_COLOR_OVERRIDE": 22,
|
|
||||||
"SHEARED": 16,
|
|
||||||
"DASHING": 19,
|
|
||||||
"LAST_POSE_TICK": 19,
|
|
||||||
"HORSE_FLAGS": 17,
|
|
||||||
"CAT_VARIANT": 19,
|
|
||||||
"IN_SLEEPING_POSE": 20,
|
|
||||||
"HEAD_DOWN": 21,
|
|
||||||
"COLLAR_COLOR": 20,
|
|
||||||
"TAMEABLE_FLAGS": 17,
|
|
||||||
"OWNER_UUID": 18,
|
|
||||||
"SPIDER_FLAGS": 16,
|
|
||||||
"CUSTOM_BLOCK_STATE": 11,
|
|
||||||
"BLOCK_OFFSET": 12,
|
|
||||||
"OXIDATION_LEVEL": 16,
|
|
||||||
"COPPER_GOLEM_STATE": 17,
|
|
||||||
"COMMAND": 13,
|
|
||||||
"LAST_OUTPUT": 14,
|
|
||||||
"UNROOTED": 16,
|
|
||||||
"ACTIVE": 17,
|
|
||||||
"CRUMBLING": 18,
|
|
||||||
"HOME_POS": 19,
|
|
||||||
"FUSE_SPEED": 16,
|
|
||||||
"CHARGED": 8,
|
|
||||||
"IGNITED": 18,
|
|
||||||
"HAS_FISH": 17,
|
|
||||||
"MOISTNESS": 18,
|
|
||||||
"CHEST": 18,
|
|
||||||
"BABY": 16,
|
|
||||||
"ZOMBIE_TYPE": 17,
|
|
||||||
"CONVERTING_IN_WATER": 18,
|
|
||||||
"ITEM": 8,
|
|
||||||
"SPIKES_RETRACTED": 16,
|
|
||||||
"BEAM_TARGET_ID": 17,
|
|
||||||
"CARRIED_BLOCK": 16,
|
|
||||||
"ANGRY": 17,
|
|
||||||
"PROVOKED": 18,
|
|
||||||
"PHASE_TYPE": 16,
|
|
||||||
"BEAM_TARGET": 8,
|
|
||||||
"SHOW_BOTTOM": 9,
|
|
||||||
"SPELL": 17,
|
|
||||||
"CELEBRATING": 16,
|
|
||||||
"VALUE": 8,
|
|
||||||
"BLOCK_POS": 8,
|
|
||||||
"SHOOTER_ENTITY_ID": 9,
|
|
||||||
"SHOT_AT_ANGLE": 10,
|
|
||||||
"FOX_FLAGS": 18,
|
|
||||||
"OWNER": 19,
|
|
||||||
"OTHER_TRUSTED": 20,
|
|
||||||
"TARGET": 18,
|
|
||||||
"LIT": 13,
|
|
||||||
"SHOOTING": 16,
|
|
||||||
"HAS_ROPES": 17,
|
|
||||||
"STAYING_STILL": 18,
|
|
||||||
"ITEM_STACK": 9,
|
|
||||||
"ROTATION": 10,
|
|
||||||
"FACING": 8,
|
|
||||||
"DARK_TICKS_REMAINING": 17,
|
|
||||||
"SCREAMING": 17,
|
|
||||||
"LEFT_HORN": 18,
|
|
||||||
"RIGHT_HORN": 19,
|
|
||||||
"RESPONSE": 10,
|
|
||||||
"IRON_GOLEM_FLAGS": 16,
|
|
||||||
"STACK": 8,
|
|
||||||
"ITEM_DISPLAY": 24,
|
|
||||||
"STRENGTH": 19,
|
|
||||||
"SLIME_SIZE": 16,
|
|
||||||
"PROFILE": 17,
|
|
||||||
"IMMOVABLE": 18,
|
|
||||||
"DESCRIPTION": 19,
|
|
||||||
"MAIN_ARM_ID": 15,
|
|
||||||
"PLAYER_MODE_CUSTOMIZATION_ID": 16,
|
|
||||||
"TRUSTING": 17,
|
|
||||||
"ASK_FOR_BAMBOO_TICKS": 17,
|
|
||||||
"SNEEZE_PROGRESS": 18,
|
|
||||||
"EATING_TICKS": 19,
|
|
||||||
"MAIN_GENE": 20,
|
|
||||||
"HIDDEN_GENE": 21,
|
|
||||||
"PANDA_FLAGS": 22,
|
|
||||||
"SIZE": 16,
|
|
||||||
"BOOST_TIME": 17,
|
|
||||||
"CHARGING": 17,
|
|
||||||
"IMMUNE_TO_ZOMBIFICATION": 16,
|
|
||||||
"WARNING": 17,
|
|
||||||
"PUFF_STATE": 17,
|
|
||||||
"ATTACHED_FACE": 16,
|
|
||||||
"PEEK_AMOUNT": 17,
|
|
||||||
"CONVERTING": 19,
|
|
||||||
"FINISH_DIG_TIME": 18,
|
|
||||||
"SNOW_GOLEM_FLAGS": 16,
|
|
||||||
"COLD": 18,
|
|
||||||
"TEXT": 23,
|
|
||||||
"LINE_WIDTH": 24,
|
|
||||||
"BACKGROUND": 25,
|
|
||||||
"TEXT_OPACITY": 26,
|
|
||||||
"TEXT_DISPLAY_FLAGS": 27,
|
|
||||||
"FUSE": 8,
|
|
||||||
"LOYALTY": 11,
|
|
||||||
"ENCHANTED": 12,
|
|
||||||
"HAS_EGG": 17,
|
|
||||||
"DIGGING_SAND": 18,
|
|
||||||
"VEX_FLAGS": 16,
|
|
||||||
"VILLAGER_DATA": 20,
|
|
||||||
"HEAD_ROLLING_TIME_LEFT": 17,
|
|
||||||
"ANGER": 16,
|
|
||||||
"DRINKING": 17,
|
|
||||||
"TRACKED_ENTITY_ID_1": 16,
|
|
||||||
"TRACKED_ENTITY_ID_2": 17,
|
|
||||||
"TRACKED_ENTITY_ID_3": 18,
|
|
||||||
"INVUL_TIMER": 19,
|
|
||||||
"BEGGING": 19,
|
|
||||||
"SOUND_VARIANT": 23,
|
|
||||||
"HOOK_ENTITY_ID": 8,
|
|
||||||
"CAUGHT_FISH": 9
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{"LEFT_PADDLE_MOVING":11,"RIGHT_PADDLE_MOVING":12,"BUBBLE_WOBBLE_TICKS":13,"DAMAGE_WOBBLE_TICKS":8,"DAMAGE_WOBBLE_SIDE":9,"DAMAGE_WOBBLE_STRENGTH":10,"FLAGS":0,"AIR":1,"CUSTOM_NAME":2,"NAME_VISIBLE":3,"SILENT":4,"NO_GRAVITY":5,"POSE":6,"FROZEN_TICKS":7,"DANCING":19,"CAN_DUPLICATE":17,"MOB_FLAGS":15,"LIVING_FLAGS":8,"HEALTH":9,"POTION_SWIRLS":10,"POTION_SWIRLS_AMBIENT":11,"STUCK_ARROW_COUNT":12,"STINGER_COUNT":13,"SLEEPING_POSITION":14,"RADIUS":8,"WAITING":9,"PARTICLE_ID":10,"STATE":17,"CHILD":16,"ARMOR_STAND_FLAGS":15,"TRACKER_HEAD_ROTATION":16,"TRACKER_BODY_ROTATION":17,"TRACKER_LEFT_ARM_ROTATION":18,"TRACKER_RIGHT_ARM_ROTATION":19,"TRACKER_LEFT_LEG_ROTATION":20,"TRACKER_RIGHT_LEG_ROTATION":21,"COLOR":18,"PROJECTILE_FLAGS":8,"PIERCE_LEVEL":9,"IN_GROUND":10,"VARIANT":22,"PLAYING_DEAD":18,"FROM_BUCKET":16,"BAT_FLAGS":16,"BEE_FLAGS":17,"ANGER":16,"BLAZE_FLAGS":16,"BLOCK_STATE":9,"START_INTERPOLATION":8,"INTERPOLATION_DURATION":9,"TELEPORT_DURATION":10,"TRANSLATION":11,"SCALE":12,"LEFT_ROTATION":13,"RIGHT_ROTATION":14,"BILLBOARD":15,"BRIGHTNESS":16,"VIEW_RANGE":17,"SHADOW_RADIUS":18,"SHADOW_STRENGTH":19,"WIDTH":20,"HEIGHT":21,"GLOW_COLOR_OVERRIDE":22,"SHEARED":16,"DASHING":18,"LAST_POSE_TICK":19,"HORSE_FLAGS":17,"CAT_VARIANT":19,"IN_SLEEPING_POSE":20,"HEAD_DOWN":21,"COLLAR_COLOR":20,"TAMEABLE_FLAGS":17,"OWNER_UUID":18,"SPIDER_FLAGS":16,"CUSTOM_BLOCK_ID":11,"CUSTOM_BLOCK_OFFSET":12,"CUSTOM_BLOCK_PRESENT":13,"COMMAND":14,"LAST_OUTPUT":15,"FUSE_SPEED":16,"CHARGED":8,"IGNITED":18,"TREASURE_POS":17,"HAS_FISH":18,"MOISTNESS":19,"CHEST":18,"BABY":16,"ZOMBIE_TYPE":17,"CONVERTING_IN_WATER":18,"ITEM":8,"SPIKES_RETRACTED":16,"BEAM_TARGET_ID":17,"CARRIED_BLOCK":16,"ANGRY":17,"PROVOKED":18,"PHASE_TYPE":16,"BEAM_TARGET":8,"SHOW_BOTTOM":9,"SPELL":17,"CELEBRATING":16,"BLOCK_POS":8,"SHOOTER_ENTITY_ID":9,"SHOT_AT_ANGLE":10,"TYPE":17,"FOX_FLAGS":18,"OWNER":19,"OTHER_TRUSTED":20,"TARGET":18,"LIT":14,"SHOOTING":16,"ITEM_STACK":8,"ROTATION":9,"DARK_TICKS_REMAINING":17,"SCREAMING":17,"LEFT_HORN":18,"RIGHT_HORN":19,"RESPONSE":10,"IRON_GOLEM_FLAGS":16,"STACK":8,"ITEM_DISPLAY":24,"STRENGTH":19,"SLIME_SIZE":16,"TRUSTING":17,"ASK_FOR_BAMBOO_TICKS":17,"SNEEZE_PROGRESS":18,"EATING_TICKS":19,"MAIN_GENE":20,"HIDDEN_GENE":21,"PANDA_FLAGS":22,"SIZE":16,"SADDLED":19,"BOOST_TIME":17,"CHARGING":17,"IMMUNE_TO_ZOMBIFICATION":16,"WARNING":17,"PUFF_STATE":17,"RABBIT_TYPE":17,"ATTACHED_FACE":16,"PEEK_AMOUNT":17,"CONVERTING":19,"FINISH_DIG_TIME":18,"SNOW_GOLEM_FLAGS":16,"COLD":18,"TEXT":23,"LINE_WIDTH":24,"BACKGROUND":25,"TEXT_OPACITY":26,"TEXT_DISPLAY_FLAGS":27,"FUSE":8,"LOYALTY":11,"ENCHANTED":12,"HOME_POS":17,"HAS_EGG":18,"DIGGING_SAND":19,"TRAVEL_POS":20,"LAND_BOUND":21,"ACTIVELY_TRAVELING":22,"VEX_FLAGS":16,"VILLAGER_DATA":20,"HEAD_ROLLING_TIME_LEFT":17,"DRINKING":17,"TRACKED_ENTITY_ID_1":16,"TRACKED_ENTITY_ID_2":17,"TRACKED_ENTITY_ID_3":18,"INVUL_TIMER":19,"BEGGING":19,"ANGER_TIME":21,"HOOK_ENTITY_ID":8,"CAUGHT_FISH":9,"PLAYER_MODE_CUSTOMIZATION_ID":17,"MAIN_ARM_ID":18}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{"LEFT_PADDLE_MOVING":11,"RIGHT_PADDLE_MOVING":12,"BUBBLE_WOBBLE_TICKS":13,"DAMAGE_WOBBLE_TICKS":8,"DAMAGE_WOBBLE_SIDE":9,"DAMAGE_WOBBLE_STRENGTH":10,"FLAGS":0,"AIR":1,"CUSTOM_NAME":2,"NAME_VISIBLE":3,"SILENT":4,"NO_GRAVITY":5,"POSE":6,"FROZEN_TICKS":7,"DANCING":19,"CAN_DUPLICATE":17,"MOB_FLAGS":15,"LIVING_FLAGS":8,"HEALTH":9,"POTION_SWIRLS":10,"POTION_SWIRLS_AMBIENT":11,"STUCK_ARROW_COUNT":12,"STINGER_COUNT":13,"SLEEPING_POSITION":14,"RADIUS":8,"WAITING":9,"PARTICLE_ID":10,"STATE":17,"CHILD":16,"ARMOR_STAND_FLAGS":15,"TRACKER_HEAD_ROTATION":16,"TRACKER_BODY_ROTATION":17,"TRACKER_LEFT_ARM_ROTATION":18,"TRACKER_RIGHT_ARM_ROTATION":19,"TRACKER_LEFT_LEG_ROTATION":20,"TRACKER_RIGHT_LEG_ROTATION":21,"COLOR":18,"PROJECTILE_FLAGS":8,"PIERCE_LEVEL":9,"IN_GROUND":10,"VARIANT":22,"PLAYING_DEAD":18,"FROM_BUCKET":16,"BAT_FLAGS":16,"BEE_FLAGS":17,"ANGER":16,"BLAZE_FLAGS":16,"BLOCK_STATE":9,"START_INTERPOLATION":8,"INTERPOLATION_DURATION":9,"TELEPORT_DURATION":10,"TRANSLATION":11,"SCALE":12,"LEFT_ROTATION":13,"RIGHT_ROTATION":14,"BILLBOARD":15,"BRIGHTNESS":16,"VIEW_RANGE":17,"SHADOW_RADIUS":18,"SHADOW_STRENGTH":19,"WIDTH":20,"HEIGHT":21,"GLOW_COLOR_OVERRIDE":22,"SHEARED":16,"DASHING":18,"LAST_POSE_TICK":19,"HORSE_FLAGS":17,"CAT_VARIANT":19,"IN_SLEEPING_POSE":20,"HEAD_DOWN":21,"COLLAR_COLOR":20,"TAMEABLE_FLAGS":17,"OWNER_UUID":18,"SPIDER_FLAGS":16,"CUSTOM_BLOCK_ID":11,"CUSTOM_BLOCK_OFFSET":12,"CUSTOM_BLOCK_PRESENT":13,"COMMAND":14,"LAST_OUTPUT":15,"UNROOTED":16,"ACTIVE":17,"CRUMBLING":18,"HOME_POS":17,"FUSE_SPEED":16,"CHARGED":8,"IGNITED":18,"TREASURE_POS":17,"HAS_FISH":18,"MOISTNESS":19,"CHEST":18,"BABY":16,"ZOMBIE_TYPE":17,"CONVERTING_IN_WATER":18,"ITEM":8,"SPIKES_RETRACTED":16,"BEAM_TARGET_ID":17,"CARRIED_BLOCK":16,"ANGRY":17,"PROVOKED":18,"PHASE_TYPE":16,"BEAM_TARGET":8,"SHOW_BOTTOM":9,"SPELL":17,"CELEBRATING":16,"BLOCK_POS":8,"SHOOTER_ENTITY_ID":9,"SHOT_AT_ANGLE":10,"TYPE":17,"FOX_FLAGS":18,"OWNER":19,"OTHER_TRUSTED":20,"TARGET":18,"LIT":14,"SHOOTING":16,"ITEM_STACK":8,"ROTATION":9,"DARK_TICKS_REMAINING":17,"SCREAMING":17,"LEFT_HORN":18,"RIGHT_HORN":19,"RESPONSE":10,"IRON_GOLEM_FLAGS":16,"STACK":8,"ITEM_DISPLAY":24,"STRENGTH":19,"SLIME_SIZE":16,"TRUSTING":17,"ASK_FOR_BAMBOO_TICKS":17,"SNEEZE_PROGRESS":18,"EATING_TICKS":19,"MAIN_GENE":20,"HIDDEN_GENE":21,"PANDA_FLAGS":22,"SIZE":16,"SADDLED":19,"BOOST_TIME":17,"CHARGING":17,"IMMUNE_TO_ZOMBIFICATION":16,"WARNING":17,"PUFF_STATE":17,"RABBIT_TYPE":17,"ATTACHED_FACE":16,"PEEK_AMOUNT":17,"CONVERTING":19,"FINISH_DIG_TIME":18,"SNOW_GOLEM_FLAGS":16,"COLD":18,"TEXT":23,"LINE_WIDTH":24,"BACKGROUND":25,"TEXT_OPACITY":26,"TEXT_DISPLAY_FLAGS":27,"FUSE":8,"LOYALTY":11,"ENCHANTED":12,"HAS_EGG":18,"DIGGING_SAND":19,"TRAVEL_POS":20,"LAND_BOUND":21,"ACTIVELY_TRAVELING":22,"VEX_FLAGS":16,"VILLAGER_DATA":20,"HEAD_ROLLING_TIME_LEFT":17,"DRINKING":17,"TRACKED_ENTITY_ID_1":16,"TRACKED_ENTITY_ID_2":17,"TRACKED_ENTITY_ID_3":18,"INVUL_TIMER":19,"BEGGING":19,"ANGER_TIME":21,"HOOK_ENTITY_ID":8,"CAUGHT_FISH":9,"PLAYER_MODE_CUSTOMIZATION_ID":17,"MAIN_ARM_ID":18}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{"LEFT_PADDLE_MOVING":11,"RIGHT_PADDLE_MOVING":12,"BUBBLE_WOBBLE_TICKS":13,"DAMAGE_WOBBLE_TICKS":8,"DAMAGE_WOBBLE_SIDE":9,"DAMAGE_WOBBLE_STRENGTH":10,"FLAGS":0,"AIR":1,"CUSTOM_NAME":2,"NAME_VISIBLE":3,"SILENT":4,"NO_GRAVITY":5,"POSE":6,"FROZEN_TICKS":7,"DANCING":19,"CAN_DUPLICATE":17,"MOB_FLAGS":15,"LIVING_FLAGS":8,"HEALTH":9,"POTION_SWIRLS":10,"POTION_SWIRLS_AMBIENT":11,"STUCK_ARROW_COUNT":12,"STINGER_COUNT":13,"SLEEPING_POSITION":14,"RADIUS":8,"WAITING":9,"PARTICLE":10,"STATE":17,"CHILD":16,"ARMOR_STAND_FLAGS":15,"TRACKER_HEAD_ROTATION":16,"TRACKER_BODY_ROTATION":17,"TRACKER_LEFT_ARM_ROTATION":18,"TRACKER_RIGHT_ARM_ROTATION":19,"TRACKER_LEFT_LEG_ROTATION":20,"TRACKER_RIGHT_LEG_ROTATION":21,"COLOR":18,"PROJECTILE_FLAGS":8,"PIERCE_LEVEL":9,"IN_GROUND":10,"VARIANT":22,"PLAYING_DEAD":18,"FROM_BUCKET":16,"BAT_FLAGS":16,"BEE_FLAGS":17,"ANGER":16,"BLAZE_FLAGS":16,"BLOCK_STATE":9,"START_INTERPOLATION":8,"INTERPOLATION_DURATION":9,"TELEPORT_DURATION":10,"TRANSLATION":11,"SCALE":12,"LEFT_ROTATION":13,"RIGHT_ROTATION":14,"BILLBOARD":15,"BRIGHTNESS":16,"VIEW_RANGE":17,"SHADOW_RADIUS":18,"SHADOW_STRENGTH":19,"WIDTH":20,"HEIGHT":21,"GLOW_COLOR_OVERRIDE":22,"SHEARED":16,"DASHING":18,"LAST_POSE_TICK":19,"HORSE_FLAGS":17,"CAT_VARIANT":19,"IN_SLEEPING_POSE":20,"HEAD_DOWN":21,"COLLAR_COLOR":20,"TAMEABLE_FLAGS":17,"OWNER_UUID":18,"SPIDER_FLAGS":16,"CUSTOM_BLOCK_STATE":11,"BLOCK_OFFSET":12,"COMMAND":13,"LAST_OUTPUT":14,"UNROOTED":16,"ACTIVE":17,"CRUMBLING":18,"HOME_POS":19,"FUSE_SPEED":16,"CHARGED":8,"IGNITED":18,"HAS_FISH":17,"MOISTNESS":18,"CHEST":18,"BABY":16,"ZOMBIE_TYPE":17,"CONVERTING_IN_WATER":18,"ITEM":8,"SPIKES_RETRACTED":16,"BEAM_TARGET_ID":17,"CARRIED_BLOCK":16,"ANGRY":17,"PROVOKED":18,"PHASE_TYPE":16,"BEAM_TARGET":8,"SHOW_BOTTOM":9,"SPELL":17,"CELEBRATING":16,"VALUE":8,"BLOCK_POS":8,"SHOOTER_ENTITY_ID":9,"SHOT_AT_ANGLE":10,"FOX_FLAGS":18,"OWNER":19,"OTHER_TRUSTED":20,"TARGET":18,"LIT":13,"SHOOTING":16,"ITEM_STACK":8,"ROTATION":9,"DARK_TICKS_REMAINING":17,"SCREAMING":17,"LEFT_HORN":18,"RIGHT_HORN":19,"RESPONSE":10,"IRON_GOLEM_FLAGS":16,"STACK":8,"ITEM_DISPLAY":24,"STRENGTH":19,"SLIME_SIZE":16,"TRUSTING":17,"ASK_FOR_BAMBOO_TICKS":17,"SNEEZE_PROGRESS":18,"EATING_TICKS":19,"MAIN_GENE":20,"HIDDEN_GENE":21,"PANDA_FLAGS":22,"SIZE":16,"BOOST_TIME":17,"CHARGING":17,"IMMUNE_TO_ZOMBIFICATION":16,"WARNING":17,"PUFF_STATE":17,"ATTACHED_FACE":16,"PEEK_AMOUNT":17,"CONVERTING":19,"FINISH_DIG_TIME":18,"SNOW_GOLEM_FLAGS":16,"COLD":18,"TEXT":23,"LINE_WIDTH":24,"BACKGROUND":25,"TEXT_OPACITY":26,"TEXT_DISPLAY_FLAGS":27,"FUSE":8,"LOYALTY":11,"ENCHANTED":12,"HAS_EGG":17,"DIGGING_SAND":18,"VEX_FLAGS":16,"VILLAGER_DATA":20,"HEAD_ROLLING_TIME_LEFT":17,"DRINKING":17,"TRACKED_ENTITY_ID_1":16,"TRACKED_ENTITY_ID_2":17,"TRACKED_ENTITY_ID_3":18,"INVUL_TIMER":19,"BEGGING":19,"ANGER_TIME":21,"SOUND_VARIANT":23,"HOOK_ENTITY_ID":8,"CAUGHT_FISH":9,"PLAYER_MODE_CUSTOMIZATION_ID":17,"MAIN_ARM_ID":18}
|
|
||||||
@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"LEFT_PADDLE_MOVING": 11,
|
|
||||||
"RIGHT_PADDLE_MOVING": 12,
|
|
||||||
"BUBBLE_WOBBLE_TICKS": 13,
|
|
||||||
"DAMAGE_WOBBLE_TICKS": 8,
|
|
||||||
"DAMAGE_WOBBLE_SIDE": 9,
|
|
||||||
"DAMAGE_WOBBLE_STRENGTH": 10,
|
|
||||||
"FLAGS": 0,
|
|
||||||
"AIR": 1,
|
|
||||||
"CUSTOM_NAME": 2,
|
|
||||||
"NAME_VISIBLE": 3,
|
|
||||||
"SILENT": 4,
|
|
||||||
"NO_GRAVITY": 5,
|
|
||||||
"POSE": 6,
|
|
||||||
"FROZEN_TICKS": 7,
|
|
||||||
"DANCING": 19,
|
|
||||||
"CAN_DUPLICATE": 17,
|
|
||||||
"MOB_FLAGS": 15,
|
|
||||||
"LIVING_FLAGS": 8,
|
|
||||||
"HEALTH": 9,
|
|
||||||
"POTION_SWIRLS": 10,
|
|
||||||
"POTION_SWIRLS_AMBIENT": 11,
|
|
||||||
"STUCK_ARROW_COUNT": 12,
|
|
||||||
"STINGER_COUNT": 13,
|
|
||||||
"SLEEPING_POSITION": 14,
|
|
||||||
"RADIUS": 8,
|
|
||||||
"WAITING": 9,
|
|
||||||
"PARTICLE": 10,
|
|
||||||
"STATE": 17,
|
|
||||||
"CHILD": 16,
|
|
||||||
"ARMOR_STAND_FLAGS": 15,
|
|
||||||
"TRACKER_HEAD_ROTATION": 16,
|
|
||||||
"TRACKER_BODY_ROTATION": 17,
|
|
||||||
"TRACKER_LEFT_ARM_ROTATION": 18,
|
|
||||||
"TRACKER_RIGHT_ARM_ROTATION": 19,
|
|
||||||
"TRACKER_LEFT_LEG_ROTATION": 20,
|
|
||||||
"TRACKER_RIGHT_LEG_ROTATION": 21,
|
|
||||||
"COLOR": 18,
|
|
||||||
"PROJECTILE_FLAGS": 8,
|
|
||||||
"PIERCE_LEVEL": 9,
|
|
||||||
"IN_GROUND": 10,
|
|
||||||
"VARIANT": 22,
|
|
||||||
"PLAYING_DEAD": 18,
|
|
||||||
"FROM_BUCKET": 16,
|
|
||||||
"BAT_FLAGS": 16,
|
|
||||||
"BEE_FLAGS": 17,
|
|
||||||
"ANGER": 16,
|
|
||||||
"BLAZE_FLAGS": 16,
|
|
||||||
"BLOCK_STATE": 9,
|
|
||||||
"START_INTERPOLATION": 8,
|
|
||||||
"INTERPOLATION_DURATION": 9,
|
|
||||||
"TELEPORT_DURATION": 10,
|
|
||||||
"TRANSLATION": 11,
|
|
||||||
"SCALE": 12,
|
|
||||||
"LEFT_ROTATION": 13,
|
|
||||||
"RIGHT_ROTATION": 14,
|
|
||||||
"BILLBOARD": 15,
|
|
||||||
"BRIGHTNESS": 16,
|
|
||||||
"VIEW_RANGE": 17,
|
|
||||||
"SHADOW_RADIUS": 18,
|
|
||||||
"SHADOW_STRENGTH": 19,
|
|
||||||
"WIDTH": 20,
|
|
||||||
"HEIGHT": 21,
|
|
||||||
"GLOW_COLOR_OVERRIDE": 22,
|
|
||||||
"SHEARED": 16,
|
|
||||||
"DASHING": 18,
|
|
||||||
"LAST_POSE_TICK": 19,
|
|
||||||
"HORSE_FLAGS": 17,
|
|
||||||
"CAT_VARIANT": 19,
|
|
||||||
"IN_SLEEPING_POSE": 20,
|
|
||||||
"HEAD_DOWN": 21,
|
|
||||||
"COLLAR_COLOR": 20,
|
|
||||||
"TAMEABLE_FLAGS": 17,
|
|
||||||
"OWNER_UUID": 18,
|
|
||||||
"SPIDER_FLAGS": 16,
|
|
||||||
"CUSTOM_BLOCK_STATE": 11,
|
|
||||||
"BLOCK_OFFSET": 12,
|
|
||||||
"COMMAND": 13,
|
|
||||||
"LAST_OUTPUT": 14,
|
|
||||||
"UNROOTED": 16,
|
|
||||||
"ACTIVE": 17,
|
|
||||||
"CRUMBLING": 18,
|
|
||||||
"HOME_POS": 19,
|
|
||||||
"FUSE_SPEED": 16,
|
|
||||||
"CHARGED": 8,
|
|
||||||
"IGNITED": 18,
|
|
||||||
"HAS_FISH": 17,
|
|
||||||
"MOISTNESS": 18,
|
|
||||||
"CHEST": 18,
|
|
||||||
"BABY": 16,
|
|
||||||
"ZOMBIE_TYPE": 17,
|
|
||||||
"CONVERTING_IN_WATER": 18,
|
|
||||||
"ITEM": 8,
|
|
||||||
"SPIKES_RETRACTED": 16,
|
|
||||||
"BEAM_TARGET_ID": 17,
|
|
||||||
"CARRIED_BLOCK": 16,
|
|
||||||
"ANGRY": 17,
|
|
||||||
"PROVOKED": 18,
|
|
||||||
"PHASE_TYPE": 16,
|
|
||||||
"BEAM_TARGET": 8,
|
|
||||||
"SHOW_BOTTOM": 9,
|
|
||||||
"SPELL": 17,
|
|
||||||
"CELEBRATING": 16,
|
|
||||||
"VALUE": 8,
|
|
||||||
"BLOCK_POS": 8,
|
|
||||||
"SHOOTER_ENTITY_ID": 9,
|
|
||||||
"SHOT_AT_ANGLE": 10,
|
|
||||||
"FOX_FLAGS": 18,
|
|
||||||
"OWNER": 19,
|
|
||||||
"OTHER_TRUSTED": 20,
|
|
||||||
"TARGET": 18,
|
|
||||||
"LIT": 13,
|
|
||||||
"SHOOTING": 16,
|
|
||||||
"HAS_ROPES": 17,
|
|
||||||
"STAYING_STILL": 18,
|
|
||||||
"ITEM_STACK": 9,
|
|
||||||
"ROTATION": 10,
|
|
||||||
"FACING": 8,
|
|
||||||
"DARK_TICKS_REMAINING": 17,
|
|
||||||
"SCREAMING": 17,
|
|
||||||
"LEFT_HORN": 18,
|
|
||||||
"RIGHT_HORN": 19,
|
|
||||||
"RESPONSE": 10,
|
|
||||||
"IRON_GOLEM_FLAGS": 16,
|
|
||||||
"STACK": 8,
|
|
||||||
"ITEM_DISPLAY": 24,
|
|
||||||
"STRENGTH": 19,
|
|
||||||
"SLIME_SIZE": 16,
|
|
||||||
"TRUSTING": 17,
|
|
||||||
"ASK_FOR_BAMBOO_TICKS": 17,
|
|
||||||
"SNEEZE_PROGRESS": 18,
|
|
||||||
"EATING_TICKS": 19,
|
|
||||||
"MAIN_GENE": 20,
|
|
||||||
"HIDDEN_GENE": 21,
|
|
||||||
"PANDA_FLAGS": 22,
|
|
||||||
"SIZE": 16,
|
|
||||||
"BOOST_TIME": 17,
|
|
||||||
"CHARGING": 17,
|
|
||||||
"IMMUNE_TO_ZOMBIFICATION": 16,
|
|
||||||
"WARNING": 17,
|
|
||||||
"PUFF_STATE": 17,
|
|
||||||
"ATTACHED_FACE": 16,
|
|
||||||
"PEEK_AMOUNT": 17,
|
|
||||||
"CONVERTING": 19,
|
|
||||||
"FINISH_DIG_TIME": 18,
|
|
||||||
"SNOW_GOLEM_FLAGS": 16,
|
|
||||||
"COLD": 18,
|
|
||||||
"TEXT": 23,
|
|
||||||
"LINE_WIDTH": 24,
|
|
||||||
"BACKGROUND": 25,
|
|
||||||
"TEXT_OPACITY": 26,
|
|
||||||
"TEXT_DISPLAY_FLAGS": 27,
|
|
||||||
"FUSE": 8,
|
|
||||||
"LOYALTY": 11,
|
|
||||||
"ENCHANTED": 12,
|
|
||||||
"HAS_EGG": 17,
|
|
||||||
"DIGGING_SAND": 18,
|
|
||||||
"VEX_FLAGS": 16,
|
|
||||||
"VILLAGER_DATA": 20,
|
|
||||||
"HEAD_ROLLING_TIME_LEFT": 17,
|
|
||||||
"DRINKING": 17,
|
|
||||||
"TRACKED_ENTITY_ID_1": 16,
|
|
||||||
"TRACKED_ENTITY_ID_2": 17,
|
|
||||||
"TRACKED_ENTITY_ID_3": 18,
|
|
||||||
"INVUL_TIMER": 19,
|
|
||||||
"BEGGING": 19,
|
|
||||||
"ANGER_TIME": 21,
|
|
||||||
"SOUND_VARIANT": 23,
|
|
||||||
"PLAYER_MODE_CUSTOMIZATION_ID": 17,
|
|
||||||
"MAIN_ARM_ID": 18,
|
|
||||||
"HOOK_ENTITY_ID": 8,
|
|
||||||
"CAUGHT_FISH": 9
|
|
||||||
}
|
|
||||||
@ -1,96 +0,0 @@
|
|||||||
{
|
|
||||||
"FLAGS": 0,
|
|
||||||
"AIR": 1,
|
|
||||||
"CUSTOM_NAME": 2,
|
|
||||||
"NAME_VISIBLE": 3,
|
|
||||||
"SILENT": 4,
|
|
||||||
"NO_GRAVITY": 5,
|
|
||||||
"POSE": 6,
|
|
||||||
"FROZEN_TICKS": 7,
|
|
||||||
"LIVING_FLAGS": 8,
|
|
||||||
"HEALTH": 9,
|
|
||||||
"POTION_SWIRLS": 10,
|
|
||||||
"POTION_SWIRLS_AMBIENT": 11,
|
|
||||||
"STUCK_ARROW_COUNT": 12,
|
|
||||||
"STINGER_COUNT": 13,
|
|
||||||
"SLEEPING_POSITION": 14,
|
|
||||||
"MOB_FLAGS": 15,
|
|
||||||
"ITEM_STACK": 8,
|
|
||||||
"ROTATION": 9,
|
|
||||||
"FUSE": 8,
|
|
||||||
"EXPLOSION_RADIUS": 9,
|
|
||||||
"FUSE_SPEED": 16,
|
|
||||||
"IGNITED": 18,
|
|
||||||
"CHARGED": 19,
|
|
||||||
"ARMOR_STAND_FLAGS": 15,
|
|
||||||
"TRACKER_HEAD_ROTATION": 16,
|
|
||||||
"TRACKER_BODY_ROTATION": 17,
|
|
||||||
"TRACKER_LEFT_ARM_ROTATION": 18,
|
|
||||||
"TRACKER_RIGHT_ARM_ROTATION": 19,
|
|
||||||
"TRACKER_LEFT_LEG_ROTATION": 20,
|
|
||||||
"TRACKER_RIGHT_LEG_ROTATION": 21,
|
|
||||||
"BLOCK_STATE": 8,
|
|
||||||
"START_INTERPOLATION": 8,
|
|
||||||
"INTERPOLATION_DURATION": 9,
|
|
||||||
"TELEPORT_DURATION": 10,
|
|
||||||
"TRANSLATION": 11,
|
|
||||||
"SCALE": 12,
|
|
||||||
"LEFT_ROTATION": 13,
|
|
||||||
"RIGHT_ROTATION": 14,
|
|
||||||
"BILLBOARD": 15,
|
|
||||||
"BRIGHTNESS": 16,
|
|
||||||
"VIEW_RANGE": 17,
|
|
||||||
"SHADOW_RADIUS": 18,
|
|
||||||
"SHADOW_STRENGTH": 19,
|
|
||||||
"WIDTH": 20,
|
|
||||||
"HEIGHT": 21,
|
|
||||||
"GLOW_COLOR_OVERRIDE": 22,
|
|
||||||
"TEXT": 23,
|
|
||||||
"LINE_WIDTH": 24,
|
|
||||||
"BACKGROUND": 25,
|
|
||||||
"TEXT_OPACITY": 26,
|
|
||||||
"TEXT_DISPLAY_FLAGS": 27,
|
|
||||||
"ITEM_DISPLAY": 24,
|
|
||||||
"PLAYER_MODE_CUSTOMIZATION_ID": 17,
|
|
||||||
"MAIN_ARM_ID": 18,
|
|
||||||
"LEFT_PADDLE_MOVING": 11,
|
|
||||||
"RIGHT_PADDLE_MOVING": 12,
|
|
||||||
"BUBBLE_WOBBLE_TICKS": 13,
|
|
||||||
"VILLAGER_DATA": 18,
|
|
||||||
"ANGER_END_TIME": 21,
|
|
||||||
"VARIANT": 20,
|
|
||||||
"BABY": 16,
|
|
||||||
"ZOMBIE_TYPE": 17,
|
|
||||||
"CONVERTING_IN_WATER": 18,
|
|
||||||
"VEX_FLAGS": 16,
|
|
||||||
"SHEARED": 16,
|
|
||||||
"PUFF_STATE": 17,
|
|
||||||
"FOX_FLAGS": 18,
|
|
||||||
"CAT_VARIANT": 19,
|
|
||||||
"COLLAR_COLOR": 20,
|
|
||||||
"TAMEABLE_FLAGS": 17,
|
|
||||||
"OWNER_UUID": 18,
|
|
||||||
"BEE_FLAGS": 17,
|
|
||||||
"ANGER": 16,
|
|
||||||
"ATTACHED_FACE": 16,
|
|
||||||
"PEEK_AMOUNT": 17,
|
|
||||||
"CONVERTING": 19,
|
|
||||||
"SNOW_GOLEM_FLAGS": 16,
|
|
||||||
"IRON_GOLEM_FLAGS": 16,
|
|
||||||
"SLIME_SIZE": 16,
|
|
||||||
"PANDA_FLAGS": 22,
|
|
||||||
"MAIN_GENE": 20,
|
|
||||||
"HIDDEN_GENE": 21,
|
|
||||||
"EATING_TICKS": 19,
|
|
||||||
"SNEEZE_PROGRESS": 18,
|
|
||||||
"STRENGTH": 19,
|
|
||||||
"HORSE_FLAGS": 17,
|
|
||||||
"CARRIED_BLOCK": 16,
|
|
||||||
"ANGRY": 17,
|
|
||||||
"PROVOKED": 18,
|
|
||||||
"SPIKES_RETRACTED": 16,
|
|
||||||
"BEAM_TARGET_ID": 17,
|
|
||||||
"PHASE_TYPE": 16,
|
|
||||||
"BEAM_TARGET": 8,
|
|
||||||
"SHOW_BOTTOM": 9
|
|
||||||
}
|
|
||||||
@ -1,178 +0,0 @@
|
|||||||
{
|
|
||||||
"LEFT_PADDLE_MOVING": 11,
|
|
||||||
"RIGHT_PADDLE_MOVING": 12,
|
|
||||||
"BUBBLE_WOBBLE_TICKS": 13,
|
|
||||||
"DAMAGE_WOBBLE_TICKS": 8,
|
|
||||||
"DAMAGE_WOBBLE_SIDE": 9,
|
|
||||||
"DAMAGE_WOBBLE_STRENGTH": 10,
|
|
||||||
"FLAGS": 0,
|
|
||||||
"AIR": 1,
|
|
||||||
"CUSTOM_NAME": 2,
|
|
||||||
"NAME_VISIBLE": 3,
|
|
||||||
"SILENT": 4,
|
|
||||||
"NO_GRAVITY": 5,
|
|
||||||
"POSE": 6,
|
|
||||||
"FROZEN_TICKS": 7,
|
|
||||||
"DANCING": 19,
|
|
||||||
"CAN_DUPLICATE": 17,
|
|
||||||
"MOB_FLAGS": 15,
|
|
||||||
"LIVING_FLAGS": 8,
|
|
||||||
"HEALTH": 9,
|
|
||||||
"POTION_SWIRLS": 10,
|
|
||||||
"POTION_SWIRLS_AMBIENT": 11,
|
|
||||||
"STUCK_ARROW_COUNT": 12,
|
|
||||||
"STINGER_COUNT": 13,
|
|
||||||
"SLEEPING_POSITION": 14,
|
|
||||||
"RADIUS": 8,
|
|
||||||
"WAITING": 9,
|
|
||||||
"PARTICLE": 10,
|
|
||||||
"STATE": 17,
|
|
||||||
"CHILD": 16,
|
|
||||||
"ARMOR_STAND_FLAGS": 15,
|
|
||||||
"TRACKER_HEAD_ROTATION": 16,
|
|
||||||
"TRACKER_BODY_ROTATION": 17,
|
|
||||||
"TRACKER_LEFT_ARM_ROTATION": 18,
|
|
||||||
"TRACKER_RIGHT_ARM_ROTATION": 19,
|
|
||||||
"TRACKER_LEFT_LEG_ROTATION": 20,
|
|
||||||
"TRACKER_RIGHT_LEG_ROTATION": 21,
|
|
||||||
"COLOR": 18,
|
|
||||||
"PROJECTILE_FLAGS": 8,
|
|
||||||
"PIERCE_LEVEL": 9,
|
|
||||||
"IN_GROUND": 10,
|
|
||||||
"VARIANT": 22,
|
|
||||||
"PLAYING_DEAD": 18,
|
|
||||||
"FROM_BUCKET": 16,
|
|
||||||
"BAT_FLAGS": 16,
|
|
||||||
"BEE_FLAGS": 17,
|
|
||||||
"ANGER": 16,
|
|
||||||
"BLAZE_FLAGS": 16,
|
|
||||||
"BLOCK_STATE": 9,
|
|
||||||
"START_INTERPOLATION": 8,
|
|
||||||
"INTERPOLATION_DURATION": 9,
|
|
||||||
"TELEPORT_DURATION": 10,
|
|
||||||
"TRANSLATION": 11,
|
|
||||||
"SCALE": 12,
|
|
||||||
"LEFT_ROTATION": 13,
|
|
||||||
"RIGHT_ROTATION": 14,
|
|
||||||
"BILLBOARD": 15,
|
|
||||||
"BRIGHTNESS": 16,
|
|
||||||
"VIEW_RANGE": 17,
|
|
||||||
"SHADOW_RADIUS": 18,
|
|
||||||
"SHADOW_STRENGTH": 19,
|
|
||||||
"WIDTH": 20,
|
|
||||||
"HEIGHT": 21,
|
|
||||||
"GLOW_COLOR_OVERRIDE": 22,
|
|
||||||
"SHEARED": 16,
|
|
||||||
"DASHING": 18,
|
|
||||||
"LAST_POSE_TICK": 19,
|
|
||||||
"HORSE_FLAGS": 17,
|
|
||||||
"CAT_VARIANT": 19,
|
|
||||||
"IN_SLEEPING_POSE": 20,
|
|
||||||
"HEAD_DOWN": 21,
|
|
||||||
"COLLAR_COLOR": 20,
|
|
||||||
"TAMEABLE_FLAGS": 17,
|
|
||||||
"OWNER_UUID": 18,
|
|
||||||
"SPIDER_FLAGS": 16,
|
|
||||||
"CUSTOM_BLOCK_STATE": 11,
|
|
||||||
"BLOCK_OFFSET": 12,
|
|
||||||
"OXIDATION_LEVEL": 16,
|
|
||||||
"COPPER_GOLEM_STATE": 17,
|
|
||||||
"COMMAND": 13,
|
|
||||||
"LAST_OUTPUT": 14,
|
|
||||||
"UNROOTED": 16,
|
|
||||||
"ACTIVE": 17,
|
|
||||||
"CRUMBLING": 18,
|
|
||||||
"HOME_POS": 19,
|
|
||||||
"FUSE_SPEED": 16,
|
|
||||||
"CHARGED": 8,
|
|
||||||
"IGNITED": 18,
|
|
||||||
"HAS_FISH": 17,
|
|
||||||
"MOISTNESS": 18,
|
|
||||||
"CHEST": 18,
|
|
||||||
"BABY": 16,
|
|
||||||
"ZOMBIE_TYPE": 17,
|
|
||||||
"CONVERTING_IN_WATER": 18,
|
|
||||||
"ITEM": 8,
|
|
||||||
"SPIKES_RETRACTED": 16,
|
|
||||||
"BEAM_TARGET_ID": 17,
|
|
||||||
"CARRIED_BLOCK": 16,
|
|
||||||
"ANGRY": 17,
|
|
||||||
"PROVOKED": 18,
|
|
||||||
"PHASE_TYPE": 16,
|
|
||||||
"BEAM_TARGET": 8,
|
|
||||||
"SHOW_BOTTOM": 9,
|
|
||||||
"SPELL": 17,
|
|
||||||
"CELEBRATING": 16,
|
|
||||||
"VALUE": 8,
|
|
||||||
"BLOCK_POS": 8,
|
|
||||||
"SHOOTER_ENTITY_ID": 9,
|
|
||||||
"SHOT_AT_ANGLE": 10,
|
|
||||||
"FOX_FLAGS": 18,
|
|
||||||
"OWNER": 19,
|
|
||||||
"OTHER_TRUSTED": 20,
|
|
||||||
"TARGET": 18,
|
|
||||||
"LIT": 13,
|
|
||||||
"SHOOTING": 16,
|
|
||||||
"HAS_ROPES": 17,
|
|
||||||
"STAYING_STILL": 18,
|
|
||||||
"ITEM_STACK": 9,
|
|
||||||
"ROTATION": 10,
|
|
||||||
"FACING": 8,
|
|
||||||
"DARK_TICKS_REMAINING": 17,
|
|
||||||
"SCREAMING": 17,
|
|
||||||
"LEFT_HORN": 18,
|
|
||||||
"RIGHT_HORN": 19,
|
|
||||||
"RESPONSE": 10,
|
|
||||||
"IRON_GOLEM_FLAGS": 16,
|
|
||||||
"STACK": 8,
|
|
||||||
"ITEM_DISPLAY": 24,
|
|
||||||
"STRENGTH": 19,
|
|
||||||
"SLIME_SIZE": 16,
|
|
||||||
"PROFILE": 17,
|
|
||||||
"IMMOVABLE": 18,
|
|
||||||
"DESCRIPTION": 19,
|
|
||||||
"MAIN_ARM_ID": 15,
|
|
||||||
"PLAYER_MODE_CUSTOMIZATION_ID": 16,
|
|
||||||
"TRUSTING": 17,
|
|
||||||
"ASK_FOR_BAMBOO_TICKS": 17,
|
|
||||||
"SNEEZE_PROGRESS": 18,
|
|
||||||
"EATING_TICKS": 19,
|
|
||||||
"MAIN_GENE": 20,
|
|
||||||
"HIDDEN_GENE": 21,
|
|
||||||
"PANDA_FLAGS": 22,
|
|
||||||
"SIZE": 16,
|
|
||||||
"BOOST_TIME": 17,
|
|
||||||
"CHARGING": 17,
|
|
||||||
"IMMUNE_TO_ZOMBIFICATION": 16,
|
|
||||||
"WARNING": 17,
|
|
||||||
"PUFF_STATE": 17,
|
|
||||||
"ATTACHED_FACE": 16,
|
|
||||||
"PEEK_AMOUNT": 17,
|
|
||||||
"CONVERTING": 19,
|
|
||||||
"FINISH_DIG_TIME": 18,
|
|
||||||
"SNOW_GOLEM_FLAGS": 16,
|
|
||||||
"COLD": 18,
|
|
||||||
"TEXT": 23,
|
|
||||||
"LINE_WIDTH": 24,
|
|
||||||
"BACKGROUND": 25,
|
|
||||||
"TEXT_OPACITY": 26,
|
|
||||||
"TEXT_DISPLAY_FLAGS": 27,
|
|
||||||
"FUSE": 8,
|
|
||||||
"LOYALTY": 11,
|
|
||||||
"ENCHANTED": 12,
|
|
||||||
"HAS_EGG": 17,
|
|
||||||
"DIGGING_SAND": 18,
|
|
||||||
"VEX_FLAGS": 16,
|
|
||||||
"VILLAGER_DATA": 20,
|
|
||||||
"HEAD_ROLLING_TIME_LEFT": 17,
|
|
||||||
"DRINKING": 17,
|
|
||||||
"TRACKED_ENTITY_ID_1": 16,
|
|
||||||
"TRACKED_ENTITY_ID_2": 17,
|
|
||||||
"TRACKED_ENTITY_ID_3": 18,
|
|
||||||
"INVUL_TIMER": 19,
|
|
||||||
"BEGGING": 19,
|
|
||||||
"ANGER_TIME": 21,
|
|
||||||
"SOUND_VARIANT": 23,
|
|
||||||
"HOOK_ENTITY_ID": 8,
|
|
||||||
"CAUGHT_FISH": 9
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{"DANCING":19,"CAN_DUPLICATE":17,"MOB_FLAGS":15,"LIVING_FLAGS":8,"HEALTH":9,"POTION_SWIRLS":10,"POTION_SWIRLS_AMBIENT":11,"STUCK_ARROW_COUNT":12,"STINGER_COUNT":13,"SLEEPING_POSITION":14,"FLAGS":0,"AIR":1,"CUSTOM_NAME":2,"NAME_VISIBLE":3,"SILENT":4,"NO_GRAVITY":5,"POSE":6,"FROZEN_TICKS":7,"RADIUS":8,"WAITING":9,"PARTICLE_ID":10,"STATE":17,"CHILD":16,"ARMOR_STAND_FLAGS":15,"TRACKER_HEAD_ROTATION":16,"TRACKER_BODY_ROTATION":17,"TRACKER_LEFT_ARM_ROTATION":18,"TRACKER_RIGHT_ARM_ROTATION":19,"TRACKER_LEFT_LEG_ROTATION":20,"TRACKER_RIGHT_LEG_ROTATION":21,"COLOR":18,"PROJECTILE_FLAGS":8,"PIERCE_LEVEL":9,"VARIANT":22,"PLAYING_DEAD":18,"FROM_BUCKET":16,"BAT_FLAGS":16,"BEE_FLAGS":17,"ANGER":16,"BLAZE_FLAGS":16,"BLOCK_STATE":9,"START_INTERPOLATION":8,"INTERPOLATION_DURATION":9,"TELEPORT_DURATION":10,"TRANSLATION":11,"SCALE":12,"LEFT_ROTATION":13,"RIGHT_ROTATION":14,"BILLBOARD":15,"BRIGHTNESS":16,"VIEW_RANGE":17,"SHADOW_RADIUS":18,"SHADOW_STRENGTH":19,"WIDTH":20,"HEIGHT":21,"GLOW_COLOR_OVERRIDE":22,"BOAT_TYPE":11,"LEFT_PADDLE_MOVING":12,"RIGHT_PADDLE_MOVING":13,"BUBBLE_WOBBLE_TICKS":14,"DAMAGE_WOBBLE_TICKS":8,"DAMAGE_WOBBLE_SIDE":9,"DAMAGE_WOBBLE_STRENGTH":10,"SHEARED":16,"DASHING":18,"LAST_POSE_TICK":19,"HORSE_FLAGS":17,"CAT_VARIANT":19,"IN_SLEEPING_POSE":20,"HEAD_DOWN":21,"COLLAR_COLOR":20,"TAMEABLE_FLAGS":17,"OWNER_UUID":18,"SPIDER_FLAGS":16,"CUSTOM_BLOCK_ID":11,"CUSTOM_BLOCK_OFFSET":12,"CUSTOM_BLOCK_PRESENT":13,"COMMAND":14,"LAST_OUTPUT":15,"FUSE_SPEED":16,"CHARGED":8,"IGNITED":18,"TREASURE_POS":16,"HAS_FISH":17,"MOISTNESS":18,"CHEST":18,"BABY":16,"ZOMBIE_TYPE":17,"CONVERTING_IN_WATER":18,"ITEM":8,"SPIKES_RETRACTED":16,"BEAM_TARGET_ID":17,"BEAM_TARGET":8,"SHOW_BOTTOM":9,"PHASE_TYPE":16,"CARRIED_BLOCK":16,"ANGRY":17,"PROVOKED":18,"SPELL":17,"CELEBRATING":16,"BLOCK_POS":8,"SHOOTER_ENTITY_ID":9,"SHOT_AT_ANGLE":10,"TYPE":17,"FOX_FLAGS":18,"OWNER":19,"OTHER_TRUSTED":20,"TARGET":18,"LIT":14,"SHOOTING":16,"ITEM_STACK":8,"ROTATION":9,"DARK_TICKS_REMAINING":16,"SCREAMING":17,"LEFT_HORN":18,"RIGHT_HORN":19,"RESPONSE":10,"IRON_GOLEM_FLAGS":16,"STACK":8,"ITEM_DISPLAY":24,"STRENGTH":19,"SLIME_SIZE":16,"TRUSTING":17,"ASK_FOR_BAMBOO_TICKS":17,"SNEEZE_PROGRESS":18,"EATING_TICKS":19,"MAIN_GENE":20,"HIDDEN_GENE":21,"PANDA_FLAGS":22,"SIZE":16,"SADDLED":19,"BOOST_TIME":17,"CHARGING":17,"IMMUNE_TO_ZOMBIFICATION":16,"WARNING":17,"PUFF_STATE":17,"RABBIT_TYPE":17,"ATTACHED_FACE":16,"PEEK_AMOUNT":17,"CONVERTING":19,"FINISH_DIG_TIME":18,"SNOW_GOLEM_FLAGS":16,"COLD":18,"TEXT":23,"LINE_WIDTH":24,"BACKGROUND":25,"TEXT_OPACITY":26,"TEXT_DISPLAY_FLAGS":27,"FUSE":8,"LOYALTY":10,"ENCHANTED":11,"HOME_POS":17,"HAS_EGG":18,"DIGGING_SAND":19,"TRAVEL_POS":20,"LAND_BOUND":21,"ACTIVELY_TRAVELING":22,"VEX_FLAGS":16,"VILLAGER_DATA":20,"HEAD_ROLLING_TIME_LEFT":17,"DRINKING":17,"TRACKED_ENTITY_ID_1":16,"TRACKED_ENTITY_ID_2":17,"TRACKED_ENTITY_ID_3":18,"INVUL_TIMER":19,"BEGGING":19,"ANGER_TIME":21,"HOOK_ENTITY_ID":8,"CAUGHT_FISH":9,"PLAYER_MODE_CUSTOMIZATION_ID":17,"MAIN_ARM_ID":18}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{"DATA_ID_PADDLE_LEFT":11,"DATA_ID_PADDLE_RIGHT":12,"DATA_ID_BUBBLE_TIME":13,"DATA_ID_HURT":8,"DATA_ID_HURTDIR":9,"DATA_ID_DAMAGE":10,"DATA_SHARED_FLAGS_ID":0,"DATA_AIR_SUPPLY_ID":1,"DATA_CUSTOM_NAME":2,"DATA_CUSTOM_NAME_VISIBLE":3,"DATA_SILENT":4,"DATA_NO_GRAVITY":5,"DATA_POSE":6,"DATA_TICKS_FROZEN":7,"DATA_DANCING":16,"DATA_CAN_DUPLICATE":17,"DATA_MOB_FLAGS_ID":15,"DATA_LIVING_ENTITY_FLAGS":8,"DATA_HEALTH_ID":9,"DATA_EFFECT_PARTICLES":10,"DATA_EFFECT_AMBIENCE_ID":11,"DATA_ARROW_COUNT_ID":12,"DATA_STINGER_COUNT_ID":13,"SLEEPING_POS_ID":14,"DATA_RADIUS":8,"DATA_WAITING":9,"DATA_PARTICLE":10,"ARMADILLO_STATE":18,"DATA_BABY_ID":16,"AGE_LOCKED":17,"DATA_CLIENT_FLAGS":15,"DATA_HEAD_POSE":16,"DATA_BODY_POSE":17,"DATA_LEFT_ARM_POSE":18,"DATA_RIGHT_ARM_POSE":19,"DATA_LEFT_LEG_POSE":20,"DATA_RIGHT_LEG_POSE":21,"ID_EFFECT_COLOR":11,"ID_FLAGS":8,"PIERCE_LEVEL":9,"IN_GROUND":10,"DATA_VARIANT":18,"DATA_PLAYING_DEAD":19,"FROM_BUCKET":16,"DATA_ID_FLAGS":18,"DATA_FLAGS_ID":18,"DATA_ANGER_END_TIME":22,"DATA_BLOCK_STATE_ID":9,"DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID":8,"DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID":9,"DATA_POS_ROT_INTERPOLATION_DURATION_ID":10,"DATA_TRANSLATION_ID":11,"DATA_SCALE_ID":12,"DATA_LEFT_ROTATION_ID":13,"DATA_RIGHT_ROTATION_ID":14,"DATA_BILLBOARD_RENDER_CONSTRAINTS_ID":15,"DATA_BRIGHTNESS_OVERRIDE_ID":16,"DATA_VIEW_RANGE_ID":17,"DATA_SHADOW_RADIUS_ID":18,"DATA_SHADOW_STRENGTH_ID":19,"DATA_WIDTH_ID":20,"DATA_HEIGHT_ID":21,"DATA_GLOW_COLOR_OVERRIDE_ID":22,"DATA_SHEARED":16,"DASH":20,"LAST_POSE_CHANGE_TICK":20,"DATA_VARIANT_ID":21,"IS_LYING":21,"RELAX_STATE_ONE":22,"DATA_COLLAR_COLOR":21,"DATA_SOUND_VARIANT_ID":24,"DATA_OWNERUUID_ID":19,"DATA_ID_CUSTOM_DISPLAY_BLOCK":11,"DATA_ID_DISPLAY_OFFSET":12,"DATA_WEATHER_STATE":16,"COPPER_GOLEM_STATE":17,"DATA_ID_COMMAND_NAME":13,"DATA_ID_LAST_OUTPUT":14,"CAN_MOVE":16,"IS_ACTIVE":17,"IS_TEARING_DOWN":18,"HOME_POS":19,"DATA_SWELL_DIR":16,"DATA_IS_POWERED":17,"DATA_IS_IGNITED":18,"GOT_FISH":18,"MOISTNESS_LEVEL":19,"DATA_ID_CHEST":19,"DATA_SPECIAL_TYPE_ID":17,"DATA_DROWNED_CONVERSION_ID":18,"DATA_ITEM_STACK":8,"DATA_ID_MOVING":16,"DATA_ID_ATTACK_TARGET":17,"DATA_CARRY_STATE":16,"DATA_CREEPY":17,"DATA_STARED_AT":18,"DATA_PHASE":16,"DATA_BEAM_TARGET":8,"DATA_SHOW_BOTTOM":9,"DATA_SPELL_CASTING_ID":17,"IS_CELEBRATING":16,"DATA_VALUE":8,"DATA_START_POS":8,"DATA_ID_FIREWORKS_ITEM":8,"DATA_ATTACHED_TO_TARGET":9,"DATA_SHOT_AT_ANGLE":10,"DATA_TYPE_ID":18,"DATA_TRUSTED_ID_0":20,"DATA_TRUSTED_ID_1":21,"DATA_TONGUE_TARGET_ID":19,"DATA_ID_FUEL":13,"DATA_IS_CHARGING":16,"IS_LEASH_HOLDER":18,"STAYS_STILL":19,"DATA_ITEM":8,"DATA_ROTATION":10,"DATA_DIRECTION":8,"DATA_DARK_TICKS_REMAINING":18,"DATA_IS_SCREAMING_GOAT":18,"DATA_HAS_LEFT_HORN":19,"DATA_HAS_RIGHT_HORN":20,"DATA_IMMUNE_TO_ZOMBIFICATION":16,"DATA_ID_TYPE_VARIANT":17,"DATA_RESPONSE_ID":10,"DATA_ITEM_STACK_ID":23,"DATA_ITEM_DISPLAY_ID":24,"DATA_STRENGTH_ID":20,"ID_SIZE":16,"DATA_PROFILE":17,"DATA_IMMOVABLE":18,"DATA_DESCRIPTION":19,"DATA_PLAYER_MAIN_HAND":15,"DATA_PLAYER_MODE_CUSTOMISATION":16,"DATA_TYPE":17,"DATA_TRUSTING":18,"DATA_PAINTING_VARIANT_ID":9,"UNHAPPY_COUNTER":18,"SNEEZE_COUNTER":19,"EAT_COUNTER":20,"MAIN_GENE_ID":21,"HIDDEN_GENE_ID":22,"DATA_BOOST_TIME":18,"DATA_IS_CHARGING_CROSSBOW":18,"DATA_IS_DANCING":19,"IS_CHARGING_CROSSBOW":17,"DATA_STANDING_ID":18,"PUFF_STATE":17,"DATA_WOOL_ID":18,"DATA_ATTACH_FACE_ID":16,"DATA_PEEK_ID":17,"DATA_COLOR_ID":18,"DATA_STRAY_CONVERSION_ID":16,"DATA_STATE":18,"DATA_DROP_SEED_AT_TICK":19,"DATA_PUMPKIN_ID":16,"DATA_SUFFOCATING":19,"DATA_TEXT_ID":23,"DATA_LINE_WIDTH_ID":24,"DATA_BACKGROUND_COLOR_ID":25,"DATA_TEXT_OPACITY_ID":26,"DATA_STYLE_FLAGS_ID":27,"DATA_FUSE_ID":8,"ID_LOYALTY":11,"ID_FOIL":12,"HAS_EGG":18,"LAYING_EGG":19,"DATA_VILLAGER_DATA":20,"DATA_VILLAGER_DATA_FINALIZED":21,"DATA_UNHAPPY_COUNTER":18,"CLIENT_ANGER_LEVEL":16,"DATA_USING_ITEM":17,"DATA_TARGET_A":16,"DATA_TARGET_B":17,"DATA_TARGET_C":18,"DATA_ID_INV":19,"DATA_DANGEROUS":8,"DATA_INTERESTED_ID":20,"DATA_CONVERTING_ID":19,"DATA_HOOKED_ENTITY":8,"DATA_BITING":9}
|
|
||||||
File diff suppressed because one or more lines are too long
@ -13,18 +13,6 @@ pub struct MetaDataType {
|
|||||||
v26_2: i32,
|
v26_2: i32,
|
||||||
}
|
}
|
||||||
impl MetaDataType {
|
impl MetaDataType {
|
||||||
pub const ARM: MetaDataType = MetaDataType {
|
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: 38i32,
|
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const ARMADILLO_STATE: MetaDataType = MetaDataType {
|
pub const ARMADILLO_STATE: MetaDataType = MetaDataType {
|
||||||
v1_21: 28i32,
|
v1_21: 28i32,
|
||||||
v1_21_2: 28i32,
|
v1_21_2: 28i32,
|
||||||
@ -134,29 +122,17 @@ impl MetaDataType {
|
|||||||
v26_2: 30i32,
|
v26_2: 30i32,
|
||||||
};
|
};
|
||||||
pub const COMPONENT: MetaDataType = MetaDataType {
|
pub const COMPONENT: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: 5i32,
|
||||||
v1_21_2: -1i32,
|
v1_21_2: 5i32,
|
||||||
v1_21_4: -1i32,
|
v1_21_4: 5i32,
|
||||||
v1_21_5: -1i32,
|
v1_21_5: 5i32,
|
||||||
v1_21_6: -1i32,
|
v1_21_6: 5i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: 5i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: 5i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 5i32,
|
||||||
v26_1: 5i32,
|
v26_1: 5i32,
|
||||||
v26_2: 5i32,
|
v26_2: 5i32,
|
||||||
};
|
};
|
||||||
pub const COPPER_GOLEM_STATE: MetaDataType = MetaDataType {
|
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: 32i32,
|
|
||||||
v1_21_11: 33i32,
|
|
||||||
v26_1: 37i32,
|
|
||||||
v26_2: 37i32,
|
|
||||||
};
|
|
||||||
pub const COW_SOUND_VARIANT: MetaDataType = MetaDataType {
|
pub const COW_SOUND_VARIANT: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: -1i32,
|
||||||
v1_21_2: -1i32,
|
v1_21_2: -1i32,
|
||||||
@ -182,30 +158,6 @@ impl MetaDataType {
|
|||||||
v26_2: 23i32,
|
v26_2: 23i32,
|
||||||
};
|
};
|
||||||
pub const DIRECTION: MetaDataType = MetaDataType {
|
pub const DIRECTION: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: -1i32,
|
|
||||||
v26_1: 12i32,
|
|
||||||
v26_2: 12i32,
|
|
||||||
};
|
|
||||||
pub const ENTITY_POSE: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 21i32,
|
|
||||||
v1_21_2: 21i32,
|
|
||||||
v1_21_4: 21i32,
|
|
||||||
v1_21_5: 21i32,
|
|
||||||
v1_21_6: 21i32,
|
|
||||||
v1_21_7: 21i32,
|
|
||||||
v1_21_9: 20i32,
|
|
||||||
v1_21_11: 20i32,
|
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const FACING: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 12i32,
|
v1_21: 12i32,
|
||||||
v1_21_2: 12i32,
|
v1_21_2: 12i32,
|
||||||
v1_21_4: 12i32,
|
v1_21_4: 12i32,
|
||||||
@ -214,8 +166,8 @@ impl MetaDataType {
|
|||||||
v1_21_7: 12i32,
|
v1_21_7: 12i32,
|
||||||
v1_21_9: 12i32,
|
v1_21_9: 12i32,
|
||||||
v1_21_11: 12i32,
|
v1_21_11: 12i32,
|
||||||
v26_1: -1i32,
|
v26_1: 12i32,
|
||||||
v26_2: -1i32,
|
v26_2: 12i32,
|
||||||
};
|
};
|
||||||
pub const FLOAT: MetaDataType = MetaDataType {
|
pub const FLOAT: MetaDataType = MetaDataType {
|
||||||
v1_21: 3i32,
|
v1_21: 3i32,
|
||||||
@ -249,23 +201,11 @@ impl MetaDataType {
|
|||||||
v1_21_6: -1i32,
|
v1_21_6: -1i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: -1i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: -1i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 38i32,
|
||||||
v26_1: 42i32,
|
v26_1: 42i32,
|
||||||
v26_2: 42i32,
|
v26_2: 42i32,
|
||||||
};
|
};
|
||||||
pub const INT: MetaDataType = MetaDataType {
|
pub const INT: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: -1i32,
|
|
||||||
v26_1: 1i32,
|
|
||||||
v26_2: 1i32,
|
|
||||||
};
|
|
||||||
pub const INTEGER: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 1i32,
|
v1_21: 1i32,
|
||||||
v1_21_2: 1i32,
|
v1_21_2: 1i32,
|
||||||
v1_21_4: 1i32,
|
v1_21_4: 1i32,
|
||||||
@ -274,8 +214,8 @@ impl MetaDataType {
|
|||||||
v1_21_7: 1i32,
|
v1_21_7: 1i32,
|
||||||
v1_21_9: 1i32,
|
v1_21_9: 1i32,
|
||||||
v1_21_11: 1i32,
|
v1_21_11: 1i32,
|
||||||
v26_1: -1i32,
|
v26_1: 1i32,
|
||||||
v26_2: -1i32,
|
v26_2: 1i32,
|
||||||
};
|
};
|
||||||
pub const ITEM_STACK: MetaDataType = MetaDataType {
|
pub const ITEM_STACK: MetaDataType = MetaDataType {
|
||||||
v1_21: 7i32,
|
v1_21: 7i32,
|
||||||
@ -350,14 +290,14 @@ impl MetaDataType {
|
|||||||
v26_2: 15i32,
|
v26_2: 15i32,
|
||||||
};
|
};
|
||||||
pub const OPTIONAL_COMPONENT: MetaDataType = MetaDataType {
|
pub const OPTIONAL_COMPONENT: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: 6i32,
|
||||||
v1_21_2: -1i32,
|
v1_21_2: 6i32,
|
||||||
v1_21_4: -1i32,
|
v1_21_4: 6i32,
|
||||||
v1_21_5: -1i32,
|
v1_21_5: 6i32,
|
||||||
v1_21_6: -1i32,
|
v1_21_6: 6i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: 6i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: 6i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 6i32,
|
||||||
v26_1: 6i32,
|
v26_1: 6i32,
|
||||||
v26_2: 6i32,
|
v26_2: 6i32,
|
||||||
};
|
};
|
||||||
@ -373,18 +313,6 @@ impl MetaDataType {
|
|||||||
v26_1: 33i32,
|
v26_1: 33i32,
|
||||||
v26_2: 33i32,
|
v26_2: 33i32,
|
||||||
};
|
};
|
||||||
pub const OPTIONAL_INT: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 20i32,
|
|
||||||
v1_21_2: 20i32,
|
|
||||||
v1_21_4: 20i32,
|
|
||||||
v1_21_5: 20i32,
|
|
||||||
v1_21_6: 20i32,
|
|
||||||
v1_21_7: 20i32,
|
|
||||||
v1_21_9: 19i32,
|
|
||||||
v1_21_11: 19i32,
|
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const OPTIONAL_LIVING_ENTITY_REFERENCE: MetaDataType = MetaDataType {
|
pub const OPTIONAL_LIVING_ENTITY_REFERENCE: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: -1i32,
|
||||||
v1_21_2: -1i32,
|
v1_21_2: -1i32,
|
||||||
@ -397,27 +325,15 @@ impl MetaDataType {
|
|||||||
v26_1: 13i32,
|
v26_1: 13i32,
|
||||||
v26_2: 13i32,
|
v26_2: 13i32,
|
||||||
};
|
};
|
||||||
pub const OPTIONAL_TEXT_COMPONENT: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 6i32,
|
|
||||||
v1_21_2: 6i32,
|
|
||||||
v1_21_4: 6i32,
|
|
||||||
v1_21_5: 6i32,
|
|
||||||
v1_21_6: 6i32,
|
|
||||||
v1_21_7: 6i32,
|
|
||||||
v1_21_9: 6i32,
|
|
||||||
v1_21_11: 6i32,
|
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const OPTIONAL_UNSIGNED_INT: MetaDataType = MetaDataType {
|
pub const OPTIONAL_UNSIGNED_INT: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: 20i32,
|
||||||
v1_21_2: -1i32,
|
v1_21_2: 20i32,
|
||||||
v1_21_4: -1i32,
|
v1_21_4: 20i32,
|
||||||
v1_21_5: -1i32,
|
v1_21_5: 20i32,
|
||||||
v1_21_6: -1i32,
|
v1_21_6: 20i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: 20i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: 19i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 19i32,
|
||||||
v26_1: 19i32,
|
v26_1: 19i32,
|
||||||
v26_2: 19i32,
|
v26_2: 19i32,
|
||||||
};
|
};
|
||||||
@ -469,7 +385,7 @@ impl MetaDataType {
|
|||||||
v26_1: 16i32,
|
v26_1: 16i32,
|
||||||
v26_2: 16i32,
|
v26_2: 16i32,
|
||||||
};
|
};
|
||||||
pub const PARTICLE_LIST: MetaDataType = MetaDataType {
|
pub const PARTICLES: MetaDataType = MetaDataType {
|
||||||
v1_21: 18i32,
|
v1_21: 18i32,
|
||||||
v1_21_2: 18i32,
|
v1_21_2: 18i32,
|
||||||
v1_21_4: 18i32,
|
v1_21_4: 18i32,
|
||||||
@ -478,18 +394,6 @@ impl MetaDataType {
|
|||||||
v1_21_7: 18i32,
|
v1_21_7: 18i32,
|
||||||
v1_21_9: 17i32,
|
v1_21_9: 17i32,
|
||||||
v1_21_11: 17i32,
|
v1_21_11: 17i32,
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const PARTICLES: MetaDataType = MetaDataType {
|
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: -1i32,
|
|
||||||
v26_1: 17i32,
|
v26_1: 17i32,
|
||||||
v26_2: 17i32,
|
v26_2: 17i32,
|
||||||
};
|
};
|
||||||
@ -518,42 +422,18 @@ impl MetaDataType {
|
|||||||
v26_2: 28i32,
|
v26_2: 28i32,
|
||||||
};
|
};
|
||||||
pub const POSE: MetaDataType = MetaDataType {
|
pub const POSE: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: 21i32,
|
||||||
v1_21_2: -1i32,
|
v1_21_2: 21i32,
|
||||||
v1_21_4: -1i32,
|
v1_21_4: 21i32,
|
||||||
v1_21_5: -1i32,
|
v1_21_5: 21i32,
|
||||||
v1_21_6: -1i32,
|
v1_21_6: 21i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: 21i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: 20i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 20i32,
|
||||||
v26_1: 20i32,
|
v26_1: 20i32,
|
||||||
v26_2: 20i32,
|
v26_2: 20i32,
|
||||||
};
|
};
|
||||||
pub const PROFILE: MetaDataType = MetaDataType {
|
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: 36i32,
|
|
||||||
v1_21_11: 37i32,
|
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const QUATERNION: MetaDataType = MetaDataType {
|
pub const QUATERNION: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: -1i32,
|
|
||||||
v26_1: 40i32,
|
|
||||||
v26_2: 40i32,
|
|
||||||
};
|
|
||||||
pub const QUATERNION_F: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 30i32,
|
v1_21: 30i32,
|
||||||
v1_21_2: 30i32,
|
v1_21_2: 30i32,
|
||||||
v1_21_4: 30i32,
|
v1_21_4: 30i32,
|
||||||
@ -562,8 +442,8 @@ impl MetaDataType {
|
|||||||
v1_21_7: 34i32,
|
v1_21_7: 34i32,
|
||||||
v1_21_9: 35i32,
|
v1_21_9: 35i32,
|
||||||
v1_21_11: 36i32,
|
v1_21_11: 36i32,
|
||||||
v26_1: -1i32,
|
v26_1: 40i32,
|
||||||
v26_2: -1i32,
|
v26_2: 40i32,
|
||||||
};
|
};
|
||||||
pub const RESOLVABLE_PROFILE: MetaDataType = MetaDataType {
|
pub const RESOLVABLE_PROFILE: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
v1_21: -1i32,
|
||||||
@ -572,12 +452,12 @@ impl MetaDataType {
|
|||||||
v1_21_5: -1i32,
|
v1_21_5: -1i32,
|
||||||
v1_21_6: -1i32,
|
v1_21_6: -1i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: -1i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: 36i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 37i32,
|
||||||
v26_1: 41i32,
|
v26_1: 41i32,
|
||||||
v26_2: 41i32,
|
v26_2: 41i32,
|
||||||
};
|
};
|
||||||
pub const ROTATION: MetaDataType = MetaDataType {
|
pub const ROTATIONS: MetaDataType = MetaDataType {
|
||||||
v1_21: 9i32,
|
v1_21: 9i32,
|
||||||
v1_21_2: 9i32,
|
v1_21_2: 9i32,
|
||||||
v1_21_4: 9i32,
|
v1_21_4: 9i32,
|
||||||
@ -586,18 +466,6 @@ impl MetaDataType {
|
|||||||
v1_21_7: 9i32,
|
v1_21_7: 9i32,
|
||||||
v1_21_9: 9i32,
|
v1_21_9: 9i32,
|
||||||
v1_21_11: 9i32,
|
v1_21_11: 9i32,
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const ROTATIONS: MetaDataType = MetaDataType {
|
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: -1i32,
|
|
||||||
v26_1: 9i32,
|
v26_1: 9i32,
|
||||||
v26_2: 9i32,
|
v26_2: 9i32,
|
||||||
};
|
};
|
||||||
@ -625,31 +493,7 @@ impl MetaDataType {
|
|||||||
v26_1: 4i32,
|
v26_1: 4i32,
|
||||||
v26_2: 4i32,
|
v26_2: 4i32,
|
||||||
};
|
};
|
||||||
pub const TEXT_COMPONENT: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 5i32,
|
|
||||||
v1_21_2: 5i32,
|
|
||||||
v1_21_4: 5i32,
|
|
||||||
v1_21_5: 5i32,
|
|
||||||
v1_21_6: 5i32,
|
|
||||||
v1_21_7: 5i32,
|
|
||||||
v1_21_9: 5i32,
|
|
||||||
v1_21_11: 5i32,
|
|
||||||
v26_1: -1i32,
|
|
||||||
v26_2: -1i32,
|
|
||||||
};
|
|
||||||
pub const VECTOR3: MetaDataType = MetaDataType {
|
pub const VECTOR3: MetaDataType = MetaDataType {
|
||||||
v1_21: -1i32,
|
|
||||||
v1_21_2: -1i32,
|
|
||||||
v1_21_4: -1i32,
|
|
||||||
v1_21_5: -1i32,
|
|
||||||
v1_21_6: -1i32,
|
|
||||||
v1_21_7: -1i32,
|
|
||||||
v1_21_9: -1i32,
|
|
||||||
v1_21_11: -1i32,
|
|
||||||
v26_1: 39i32,
|
|
||||||
v26_2: 39i32,
|
|
||||||
};
|
|
||||||
pub const VECTOR_3F: MetaDataType = MetaDataType {
|
|
||||||
v1_21: 29i32,
|
v1_21: 29i32,
|
||||||
v1_21_2: 29i32,
|
v1_21_2: 29i32,
|
||||||
v1_21_4: 29i32,
|
v1_21_4: 29i32,
|
||||||
@ -658,8 +502,8 @@ impl MetaDataType {
|
|||||||
v1_21_7: 33i32,
|
v1_21_7: 33i32,
|
||||||
v1_21_9: 34i32,
|
v1_21_9: 34i32,
|
||||||
v1_21_11: 35i32,
|
v1_21_11: 35i32,
|
||||||
v26_1: -1i32,
|
v26_1: 39i32,
|
||||||
v26_2: -1i32,
|
v26_2: 39i32,
|
||||||
};
|
};
|
||||||
pub const VILLAGER_DATA: MetaDataType = MetaDataType {
|
pub const VILLAGER_DATA: MetaDataType = MetaDataType {
|
||||||
v1_21: 19i32,
|
v1_21: 19i32,
|
||||||
@ -680,8 +524,8 @@ impl MetaDataType {
|
|||||||
v1_21_5: -1i32,
|
v1_21_5: -1i32,
|
||||||
v1_21_6: -1i32,
|
v1_21_6: -1i32,
|
||||||
v1_21_7: -1i32,
|
v1_21_7: -1i32,
|
||||||
v1_21_9: -1i32,
|
v1_21_9: 32i32,
|
||||||
v1_21_11: -1i32,
|
v1_21_11: 33i32,
|
||||||
v26_1: 38i32,
|
v26_1: 38i32,
|
||||||
v26_2: 38i32,
|
v26_2: 38i32,
|
||||||
};
|
};
|
||||||
@ -721,6 +565,19 @@ impl MetaDataType {
|
|||||||
v26_1: 32i32,
|
v26_1: 32i32,
|
||||||
v26_2: 32i32,
|
v26_2: 32i32,
|
||||||
};
|
};
|
||||||
|
pub const INTEGER: MetaDataType = Self::INT;
|
||||||
|
pub const ENTITY_POSE: MetaDataType = Self::POSE;
|
||||||
|
pub const FACING: MetaDataType = Self::DIRECTION;
|
||||||
|
pub const TEXT_COMPONENT: MetaDataType = Self::COMPONENT;
|
||||||
|
pub const OPTIONAL_TEXT_COMPONENT: MetaDataType = Self::OPTIONAL_COMPONENT;
|
||||||
|
pub const OPTIONAL_INT: MetaDataType = Self::OPTIONAL_UNSIGNED_INT;
|
||||||
|
pub const VECTOR_3F: MetaDataType = Self::VECTOR3;
|
||||||
|
pub const QUATERNION_F: MetaDataType = Self::QUATERNION;
|
||||||
|
pub const ROTATION: MetaDataType = Self::ROTATIONS;
|
||||||
|
pub const PARTICLE_LIST: MetaDataType = Self::PARTICLES;
|
||||||
|
pub const COPPER_GOLEM_STATE: MetaDataType = Self::WEATHERING_COPPER_STATE;
|
||||||
|
pub const PROFILE: MetaDataType = Self::RESOLVABLE_PROFILE;
|
||||||
|
pub const ARM: MetaDataType = Self::HUMANOID_ARM;
|
||||||
pub const fn id(&self, version: pumpkin_util::version::JavaMinecraftVersion) -> i32 {
|
pub const fn id(&self, version: pumpkin_util::version::JavaMinecraftVersion) -> i32 {
|
||||||
match version {
|
match version {
|
||||||
pumpkin_util::version::JavaMinecraftVersion::V_1_21 => self.v1_21,
|
pumpkin_util::version::JavaMinecraftVersion::V_1_21 => self.v1_21,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,11 @@
|
|||||||
use std::io::{Cursor, Write};
|
use std::io::{Cursor, Write};
|
||||||
|
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{
|
||||||
block_state_remap::remap_block_state_for_version, item_id_remap::remap_item_id_for_version,
|
block_state_remap::remap_block_state_for_version,
|
||||||
meta_data_type::MetaDataType, packet::clientbound::PLAY_SET_ENTITY_DATA,
|
item_id_remap::remap_item_id_for_version,
|
||||||
tracked_data::TrackedId,
|
meta_data_type::MetaDataType,
|
||||||
|
packet::clientbound::PLAY_SET_ENTITY_DATA,
|
||||||
|
tracked_data::{TrackedData, TrackedId},
|
||||||
};
|
};
|
||||||
use pumpkin_macros::java_packet;
|
use pumpkin_macros::java_packet;
|
||||||
use pumpkin_util::version::JavaMinecraftVersion;
|
use pumpkin_util::version::JavaMinecraftVersion;
|
||||||
@ -69,7 +71,15 @@ pub struct Metadata<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<T> Metadata<T> {
|
impl<T> Metadata<T> {
|
||||||
pub const fn new(index: TrackedId, r#type: MetaDataType, value: T) -> Self {
|
pub const fn new(tracked: TrackedData, value: T) -> Self {
|
||||||
|
Self {
|
||||||
|
index: tracked.id,
|
||||||
|
r#type: tracked.r#type,
|
||||||
|
value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub const fn new_raw(index: TrackedId, r#type: MetaDataType, value: T) -> Self {
|
||||||
Self {
|
Self {
|
||||||
index,
|
index,
|
||||||
r#type,
|
r#type,
|
||||||
@ -305,9 +315,7 @@ impl MetadataSerializer for Option<uuid::Uuid> {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use std::io::{Cursor, Read};
|
use std::io::{Cursor, Read};
|
||||||
|
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{meta_data_type::MetaDataType, particle::Particle};
|
||||||
meta_data_type::MetaDataType, particle::Particle, tracked_data::TrackedData,
|
|
||||||
};
|
|
||||||
use pumpkin_util::version::JavaMinecraftVersion;
|
use pumpkin_util::version::JavaMinecraftVersion;
|
||||||
|
|
||||||
use crate::{VarInt, ser::NetworkWriteExt};
|
use crate::{VarInt, ser::NetworkWriteExt};
|
||||||
@ -332,8 +340,7 @@ mod tests {
|
|||||||
fn encoded_particle(version: JavaMinecraftVersion) -> (VarInt, Vec<u8>) {
|
fn encoded_particle(version: JavaMinecraftVersion) -> (VarInt, Vec<u8>) {
|
||||||
let particle_data = [0x12, 0x34, 0x56, 0x78];
|
let particle_data = [0x12, 0x34, 0x56, 0x78];
|
||||||
let metadata = Metadata::new(
|
let metadata = Metadata::new(
|
||||||
TrackedData::PARTICLE,
|
pumpkin_data::tracked_data::area_effect_cloud::DATA_PARTICLE,
|
||||||
MetaDataType::PARTICLE,
|
|
||||||
ParticleMetadata {
|
ParticleMetadata {
|
||||||
particle_id: VarInt(Particle::ExplosionEmitter as i32),
|
particle_id: VarInt(Particle::ExplosionEmitter as i32),
|
||||||
data: particle_data,
|
data: particle_data,
|
||||||
@ -342,7 +349,10 @@ mod tests {
|
|||||||
let mut bytes = Vec::new();
|
let mut bytes = Vec::new();
|
||||||
metadata.write(&mut bytes, &version).unwrap();
|
metadata.write(&mut bytes, &version).unwrap();
|
||||||
|
|
||||||
assert_eq!(bytes[0], TrackedData::PARTICLE.get(&version));
|
assert_eq!(
|
||||||
|
bytes[0],
|
||||||
|
pumpkin_data::tracked_data::area_effect_cloud::DATA_PARTICLE.get(&version)
|
||||||
|
);
|
||||||
assert_eq!(bytes[1], MetaDataType::PARTICLE.id(version) as u8);
|
assert_eq!(bytes[1], MetaDataType::PARTICLE.id(version) as u8);
|
||||||
|
|
||||||
let mut cursor = Cursor::new(&bytes[2..]);
|
let mut cursor = Cursor::new(&bytes[2..]);
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
use pumpkin_data::tracked_data;
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use std::sync::atomic::{AtomicBool, AtomicI32, Ordering::Relaxed};
|
use std::sync::atomic::{AtomicBool, AtomicI32, Ordering::Relaxed};
|
||||||
|
|
||||||
@ -54,8 +53,7 @@ pub trait AgeableMob: Mob {
|
|||||||
let is_baby = new_age < 0;
|
let is_baby = new_age < 0;
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
tracked_data::ageable_mob::DATA_BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
is_baby,
|
is_baby,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -3,9 +3,7 @@ use crate::entity::EntityBase;
|
|||||||
use crate::entity::mob::Mob;
|
use crate::entity::mob::Mob;
|
||||||
use crate::entity::player::Player;
|
use crate::entity::player::Player;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use rand::RngExt;
|
use rand::RngExt;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -49,8 +47,7 @@ impl BegGoal {
|
|||||||
fn set_is_interested(mob: &dyn Mob, value: bool) {
|
fn set_is_interested(mob: &dyn Mob, value: bool) {
|
||||||
mob.get_mob_entity().living_entity.entity.send_meta_data(
|
mob.get_mob_entity().living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::INTERESTED_ID,
|
pumpkin_data::tracked_data::wolf::INTERESTED_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
value,
|
value,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -175,8 +175,7 @@ impl EntityBase for AreaEffectCloudEntity {
|
|||||||
// Send initial particle and radius
|
// Send initial particle and radius
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::PARTICLE,
|
pumpkin_data::tracked_data::area_effect_cloud::PARTICLE,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::PARTICLE,
|
|
||||||
&meta,
|
&meta,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -184,8 +183,7 @@ impl EntityBase for AreaEffectCloudEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::RADIUS,
|
pumpkin_data::tracked_data::area_effect_cloud::RADIUS,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::FLOAT,
|
|
||||||
radius,
|
radius,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -196,8 +194,7 @@ impl EntityBase for AreaEffectCloudEntity {
|
|||||||
let is_waiting = 0 < wait_time;
|
let is_waiting = 0 < wait_time;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::WAITING,
|
pumpkin_data::tracked_data::area_effect_cloud::WAITING,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::BOOLEAN,
|
|
||||||
is_waiting,
|
is_waiting,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -233,8 +230,7 @@ impl EntityBase for AreaEffectCloudEntity {
|
|||||||
if age == wait_time && wait_time > 0 {
|
if age == wait_time && wait_time > 0 {
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::WAITING,
|
pumpkin_data::tracked_data::area_effect_cloud::WAITING,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::BOOLEAN,
|
|
||||||
false,
|
false,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -261,8 +257,7 @@ impl EntityBase for AreaEffectCloudEntity {
|
|||||||
drop(radius);
|
drop(radius);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::RADIUS,
|
pumpkin_data::tracked_data::area_effect_cloud::RADIUS,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::FLOAT,
|
|
||||||
current_radius,
|
current_radius,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -392,8 +387,7 @@ impl EntityBase for AreaEffectCloudEntity {
|
|||||||
// Send updated radius to clients
|
// Send updated radius to clients
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::RADIUS,
|
pumpkin_data::tracked_data::area_effect_cloud::RADIUS,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::FLOAT,
|
|
||||||
current_radius,
|
current_radius,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -2,10 +2,8 @@ use crate::entity::EntityBase;
|
|||||||
use crate::entity::player::Player;
|
use crate::entity::player::Player;
|
||||||
use pumpkin_data::damage::DamageType;
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::effect::StatusEffect;
|
use pumpkin_data::effect::StatusEffect;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag;
|
use pumpkin_data::tag;
|
||||||
use pumpkin_data::tag::Taggable;
|
use pumpkin_data::tag::Taggable;
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::GameMode;
|
use pumpkin_util::GameMode;
|
||||||
@ -176,8 +174,7 @@ impl BreathManager {
|
|||||||
|
|
||||||
player.get_entity().send_meta_data(
|
player.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::AIR_SUPPLY_ID,
|
pumpkin_data::tracked_data::entity::DATA_AIR_SUPPLY_ID,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(air),
|
VarInt(air),
|
||||||
)],
|
)],
|
||||||
Some(&bedrock_meta),
|
Some(&bedrock_meta),
|
||||||
|
|||||||
@ -4,10 +4,7 @@ use std::sync::{
|
|||||||
};
|
};
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{damage::DamageType, item_stack::ItemStack};
|
||||||
damage::DamageType, item_stack::ItemStack, meta_data_type::MetaDataType,
|
|
||||||
tracked_data::TrackedData,
|
|
||||||
};
|
|
||||||
use pumpkin_nbt::{compound::NbtCompound, tag::NbtTag};
|
use pumpkin_nbt::{compound::NbtCompound, tag::NbtTag};
|
||||||
use pumpkin_protocol::{
|
use pumpkin_protocol::{
|
||||||
codec::{item_stack_seralizer::ItemStackSerializer, var_int::VarInt},
|
codec::{item_stack_seralizer::ItemStackSerializer, var_int::VarInt},
|
||||||
@ -95,8 +92,7 @@ impl DisplayEntity {
|
|||||||
.store(ticks, Ordering::Relaxed);
|
.store(ticks, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::START_INTERPOLATION,
|
pumpkin_data::tracked_data::display::START_INTERPOLATION,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(ticks),
|
VarInt(ticks),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -112,8 +108,7 @@ impl DisplayEntity {
|
|||||||
.store(duration, Ordering::Relaxed);
|
.store(duration, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::INTERPOLATION_DURATION,
|
pumpkin_data::tracked_data::display::INTERPOLATION_DURATION,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(duration),
|
VarInt(duration),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -128,8 +123,7 @@ impl DisplayEntity {
|
|||||||
self.teleport_duration.store(duration, Ordering::Relaxed);
|
self.teleport_duration.store(duration, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TELEPORT_DURATION,
|
pumpkin_data::tracked_data::display::TELEPORT_DURATION,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(duration),
|
VarInt(duration),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -144,8 +138,7 @@ impl DisplayEntity {
|
|||||||
*self.translation.lock().await = translation;
|
*self.translation.lock().await = translation;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TRANSLATION,
|
pumpkin_data::tracked_data::display::TRANSLATION,
|
||||||
MetaDataType::VECTOR_3F,
|
|
||||||
Vector3fSerializer(translation.x, translation.y, translation.z),
|
Vector3fSerializer(translation.x, translation.y, translation.z),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -160,8 +153,7 @@ impl DisplayEntity {
|
|||||||
*self.scale.lock().await = scale;
|
*self.scale.lock().await = scale;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SCALE,
|
pumpkin_data::tracked_data::display::SCALE,
|
||||||
MetaDataType::VECTOR_3F,
|
|
||||||
Vector3fSerializer(scale.x, scale.y, scale.z),
|
Vector3fSerializer(scale.x, scale.y, scale.z),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -176,8 +168,7 @@ impl DisplayEntity {
|
|||||||
*self.left_rotation.lock().await = left_rotation;
|
*self.left_rotation.lock().await = left_rotation;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::LEFT_ROTATION,
|
pumpkin_data::tracked_data::display::LEFT_ROTATION,
|
||||||
MetaDataType::QUATERNION_F,
|
|
||||||
QuaternionfSerializer(
|
QuaternionfSerializer(
|
||||||
left_rotation[0],
|
left_rotation[0],
|
||||||
left_rotation[1],
|
left_rotation[1],
|
||||||
@ -197,8 +188,7 @@ impl DisplayEntity {
|
|||||||
*self.right_rotation.lock().await = right_rotation;
|
*self.right_rotation.lock().await = right_rotation;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::RIGHT_ROTATION,
|
pumpkin_data::tracked_data::display::RIGHT_ROTATION,
|
||||||
MetaDataType::QUATERNION_F,
|
|
||||||
QuaternionfSerializer(
|
QuaternionfSerializer(
|
||||||
right_rotation[0],
|
right_rotation[0],
|
||||||
right_rotation[1],
|
right_rotation[1],
|
||||||
@ -218,8 +208,7 @@ impl DisplayEntity {
|
|||||||
self.billboard.store(billboard, Ordering::Relaxed);
|
self.billboard.store(billboard, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BILLBOARD,
|
pumpkin_data::tracked_data::display::BILLBOARD,
|
||||||
MetaDataType::BYTE,
|
|
||||||
billboard,
|
billboard,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -234,8 +223,7 @@ impl DisplayEntity {
|
|||||||
self.brightness.store(brightness, Ordering::Relaxed);
|
self.brightness.store(brightness, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BRIGHTNESS,
|
pumpkin_data::tracked_data::display::BRIGHTNESS,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(brightness),
|
VarInt(brightness),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -250,8 +238,7 @@ impl DisplayEntity {
|
|||||||
*self.view_range.lock().await = view_range;
|
*self.view_range.lock().await = view_range;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::VIEW_RANGE,
|
pumpkin_data::tracked_data::display::VIEW_RANGE,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
view_range,
|
view_range,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -266,8 +253,7 @@ impl DisplayEntity {
|
|||||||
*self.shadow_radius.lock().await = shadow_radius;
|
*self.shadow_radius.lock().await = shadow_radius;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SHADOW_RADIUS,
|
pumpkin_data::tracked_data::display::SHADOW_RADIUS,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
shadow_radius,
|
shadow_radius,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -282,8 +268,7 @@ impl DisplayEntity {
|
|||||||
*self.shadow_strength.lock().await = shadow_strength;
|
*self.shadow_strength.lock().await = shadow_strength;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SHADOW_STRENGTH,
|
pumpkin_data::tracked_data::display::SHADOW_STRENGTH,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
shadow_strength,
|
shadow_strength,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -298,8 +283,7 @@ impl DisplayEntity {
|
|||||||
*self.width.lock().await = width;
|
*self.width.lock().await = width;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WIDTH,
|
pumpkin_data::tracked_data::display::WIDTH,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
width,
|
width,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -314,8 +298,7 @@ impl DisplayEntity {
|
|||||||
*self.height.lock().await = height;
|
*self.height.lock().await = height;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HEIGHT,
|
pumpkin_data::tracked_data::display::HEIGHT,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
height,
|
height,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -330,8 +313,7 @@ impl DisplayEntity {
|
|||||||
self.glow_color_override.store(color, Ordering::Relaxed);
|
self.glow_color_override.store(color, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::GLOW_COLOR_OVERRIDE,
|
pumpkin_data::tracked_data::display::GLOW_COLOR_OVERRIDE,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(color),
|
VarInt(color),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -352,40 +334,35 @@ impl DisplayEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::START_INTERPOLATION,
|
pumpkin_data::tracked_data::display::START_INTERPOLATION,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.interpolation_start_delta_ticks.load(Ordering::Relaxed)),
|
VarInt(self.interpolation_start_delta_ticks.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::INTERPOLATION_DURATION,
|
pumpkin_data::tracked_data::display::INTERPOLATION_DURATION,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.interpolation_duration.load(Ordering::Relaxed)),
|
VarInt(self.interpolation_duration.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TRANSLATION,
|
pumpkin_data::tracked_data::display::TRANSLATION,
|
||||||
MetaDataType::VECTOR_3F,
|
|
||||||
Vector3fSerializer(translation.x, translation.y, translation.z),
|
Vector3fSerializer(translation.x, translation.y, translation.z),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SCALE,
|
pumpkin_data::tracked_data::display::SCALE,
|
||||||
MetaDataType::VECTOR_3F,
|
|
||||||
Vector3fSerializer(scale.x, scale.y, scale.z),
|
Vector3fSerializer(scale.x, scale.y, scale.z),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::LEFT_ROTATION,
|
pumpkin_data::tracked_data::display::LEFT_ROTATION,
|
||||||
MetaDataType::QUATERNION_F,
|
|
||||||
QuaternionfSerializer(
|
QuaternionfSerializer(
|
||||||
left_rotation[0],
|
left_rotation[0],
|
||||||
left_rotation[1],
|
left_rotation[1],
|
||||||
@ -397,8 +374,7 @@ impl DisplayEntity {
|
|||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::RIGHT_ROTATION,
|
pumpkin_data::tracked_data::display::RIGHT_ROTATION,
|
||||||
MetaDataType::QUATERNION_F,
|
|
||||||
QuaternionfSerializer(
|
QuaternionfSerializer(
|
||||||
right_rotation[0],
|
right_rotation[0],
|
||||||
right_rotation[1],
|
right_rotation[1],
|
||||||
@ -410,72 +386,63 @@ impl DisplayEntity {
|
|||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BILLBOARD,
|
pumpkin_data::tracked_data::display::BILLBOARD,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.billboard.load(Ordering::Relaxed),
|
self.billboard.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BRIGHTNESS,
|
pumpkin_data::tracked_data::display::BRIGHTNESS,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.brightness.load(Ordering::Relaxed)),
|
VarInt(self.brightness.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::VIEW_RANGE,
|
pumpkin_data::tracked_data::display::VIEW_RANGE,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
view_range,
|
view_range,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SHADOW_RADIUS,
|
pumpkin_data::tracked_data::display::SHADOW_RADIUS,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
shadow_radius,
|
shadow_radius,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SHADOW_STRENGTH,
|
pumpkin_data::tracked_data::display::SHADOW_STRENGTH,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
shadow_strength,
|
shadow_strength,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WIDTH,
|
pumpkin_data::tracked_data::display::WIDTH,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
width,
|
width,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HEIGHT,
|
pumpkin_data::tracked_data::display::HEIGHT,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
height,
|
height,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TELEPORT_DURATION,
|
pumpkin_data::tracked_data::display::TELEPORT_DURATION,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.teleport_duration.load(Ordering::Relaxed)),
|
VarInt(self.teleport_duration.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::GLOW_COLOR_OVERRIDE,
|
pumpkin_data::tracked_data::display::GLOW_COLOR_OVERRIDE,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.glow_color_override.load(Ordering::Relaxed)),
|
VarInt(self.glow_color_override.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -646,8 +613,7 @@ impl BlockDisplayEntity {
|
|||||||
self.block_state.store(block_state, Ordering::Relaxed);
|
self.block_state.store(block_state, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BLOCK_STATE,
|
pumpkin_data::tracked_data::block_display::BLOCK_STATE,
|
||||||
MetaDataType::BLOCK_STATE,
|
|
||||||
VarInt(block_state),
|
VarInt(block_state),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -693,8 +659,7 @@ impl EntityBase for BlockDisplayEntity {
|
|||||||
self.display.init_display_data_tracker().await;
|
self.display.init_display_data_tracker().await;
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BLOCK_STATE,
|
pumpkin_data::tracked_data::block_display::BLOCK_STATE,
|
||||||
MetaDataType::BLOCK_STATE,
|
|
||||||
VarInt(self.block_state.load(Ordering::Relaxed)),
|
VarInt(self.block_state.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -770,8 +735,7 @@ impl ItemDisplayEntity {
|
|||||||
*self.item_stack.lock().await = item.clone();
|
*self.item_stack.lock().await = item.clone();
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::item_display::ITEM,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
ItemStackSerializer::from(item),
|
ItemStackSerializer::from(item),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -786,8 +750,7 @@ impl ItemDisplayEntity {
|
|||||||
self.item_display.store(mode, Ordering::Relaxed);
|
self.item_display.store(mode, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM_DISPLAY,
|
pumpkin_data::tracked_data::item_display::ITEM_DISPLAY,
|
||||||
MetaDataType::BYTE,
|
|
||||||
mode,
|
mode,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -855,16 +818,14 @@ impl EntityBase for ItemDisplayEntity {
|
|||||||
self.display.init_display_data_tracker().await;
|
self.display.init_display_data_tracker().await;
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::item_display::ITEM,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM_DISPLAY,
|
pumpkin_data::tracked_data::item_display::ITEM_DISPLAY,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.item_display.load(Ordering::Relaxed),
|
self.item_display.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -946,8 +907,7 @@ impl TextDisplayEntity {
|
|||||||
*self.text.lock().await = text.clone();
|
*self.text.lock().await = text.clone();
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT,
|
pumpkin_data::tracked_data::text_display::TEXT,
|
||||||
MetaDataType::COMPONENT,
|
|
||||||
text,
|
text,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -962,8 +922,7 @@ impl TextDisplayEntity {
|
|||||||
self.line_width.store(width, Ordering::Relaxed);
|
self.line_width.store(width, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::LINE_WIDTH,
|
pumpkin_data::tracked_data::text_display::LINE_WIDTH,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(width),
|
VarInt(width),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -978,8 +937,7 @@ impl TextDisplayEntity {
|
|||||||
self.background.store(color, Ordering::Relaxed);
|
self.background.store(color, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BACKGROUND,
|
pumpkin_data::tracked_data::text_display::BACKGROUND,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(color),
|
VarInt(color),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -994,8 +952,7 @@ impl TextDisplayEntity {
|
|||||||
self.text_opacity.store(opacity, Ordering::Relaxed);
|
self.text_opacity.store(opacity, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_OPACITY,
|
pumpkin_data::tracked_data::text_display::TEXT_OPACITY,
|
||||||
MetaDataType::BYTE,
|
|
||||||
opacity as u8,
|
opacity as u8,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -1016,8 +973,7 @@ impl TextDisplayEntity {
|
|||||||
self.flags.store(flags, Ordering::Relaxed);
|
self.flags.store(flags, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_DISPLAY_FLAGS,
|
pumpkin_data::tracked_data::text_display::TEXT_DISPLAY_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
flags,
|
flags,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -1038,8 +994,7 @@ impl TextDisplayEntity {
|
|||||||
self.flags.store(flags, Ordering::Relaxed);
|
self.flags.store(flags, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_DISPLAY_FLAGS,
|
pumpkin_data::tracked_data::text_display::TEXT_DISPLAY_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
flags,
|
flags,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -1060,8 +1015,7 @@ impl TextDisplayEntity {
|
|||||||
self.flags.store(flags, Ordering::Relaxed);
|
self.flags.store(flags, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_DISPLAY_FLAGS,
|
pumpkin_data::tracked_data::text_display::TEXT_DISPLAY_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
flags,
|
flags,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -1089,8 +1043,7 @@ impl TextDisplayEntity {
|
|||||||
self.flags.store(flags, Ordering::Relaxed);
|
self.flags.store(flags, Ordering::Relaxed);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_DISPLAY_FLAGS,
|
pumpkin_data::tracked_data::text_display::TEXT_DISPLAY_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
flags,
|
flags,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -1186,40 +1139,35 @@ impl EntityBase for TextDisplayEntity {
|
|||||||
let text = self.text.lock().await.clone();
|
let text = self.text.lock().await.clone();
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT,
|
pumpkin_data::tracked_data::text_display::TEXT,
|
||||||
MetaDataType::COMPONENT,
|
|
||||||
text,
|
text,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::LINE_WIDTH,
|
pumpkin_data::tracked_data::text_display::LINE_WIDTH,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.line_width.load(Ordering::Relaxed)),
|
VarInt(self.line_width.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BACKGROUND,
|
pumpkin_data::tracked_data::text_display::BACKGROUND,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.background.load(Ordering::Relaxed)),
|
VarInt(self.background.load(Ordering::Relaxed)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_OPACITY,
|
pumpkin_data::tracked_data::text_display::TEXT_OPACITY,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.text_opacity.load(Ordering::Relaxed) as u8,
|
self.text_opacity.load(Ordering::Relaxed) as u8,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.display.entity.send_meta_data(
|
self.display.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TEXT_DISPLAY_FLAGS,
|
pumpkin_data::tracked_data::text_display::TEXT_DISPLAY_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.flags.load(Ordering::Relaxed),
|
self.flags.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -3,9 +3,7 @@ use core::f32;
|
|||||||
use crate::entity::{Entity, EntityBase, EntityBaseFuture, NBTStorage, living::LivingEntity};
|
use crate::entity::{Entity, EntityBase, EntityBaseFuture, NBTStorage, living::LivingEntity};
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{
|
||||||
damage::DamageType,
|
damage::DamageType,
|
||||||
meta_data_type::MetaDataType,
|
|
||||||
tag::{self, Taggable},
|
tag::{self, Taggable},
|
||||||
tracked_data::TrackedData,
|
|
||||||
};
|
};
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::math::vector3::Vector3;
|
use pumpkin_util::math::vector3::Vector3;
|
||||||
@ -24,8 +22,7 @@ impl EndCrystalEntity {
|
|||||||
pub fn set_show_bottom(&self, show_bottom: bool) {
|
pub fn set_show_bottom(&self, show_bottom: bool) {
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SHOW_BOTTOM,
|
pumpkin_data::tracked_data::end_crystal::SHOW_BOTTOM,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
show_bottom,
|
show_bottom,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -11,9 +11,7 @@ use pumpkin_data::damage::DamageType;
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer;
|
use pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer;
|
||||||
use pumpkin_protocol::java::client::play::{CSetEntityMetadata, Metadata};
|
use pumpkin_protocol::java::client::play::{CSetEntityMetadata, Metadata};
|
||||||
@ -129,8 +127,7 @@ impl ItemFrameEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::item_frame::ITEM,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&item_serializer,
|
&item_serializer,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -157,8 +154,7 @@ impl ItemFrameEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ROTATION,
|
pumpkin_data::tracked_data::item_frame::ROTATION,
|
||||||
MetaDataType::INT,
|
|
||||||
rot as i32,
|
rot as i32,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -331,16 +327,14 @@ impl EntityBase for ItemFrameEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::item_frame::ITEM,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&item_serializer,
|
&item_serializer,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ROTATION,
|
pumpkin_data::tracked_data::item_frame::ROTATION,
|
||||||
MetaDataType::INT,
|
|
||||||
rotation,
|
rotation,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -361,9 +355,12 @@ impl EntityBase for ItemFrameEntity {
|
|||||||
let rotation = self.get_rotation() as i32;
|
let rotation = self.get_rotation() as i32;
|
||||||
|
|
||||||
let mut data = Vec::new();
|
let mut data = Vec::new();
|
||||||
let meta_item =
|
let meta_item = Metadata::new(
|
||||||
Metadata::new(TrackedData::ITEM, MetaDataType::ITEM_STACK, item_serializer);
|
pumpkin_data::tracked_data::item_frame::ITEM,
|
||||||
let meta_rot = Metadata::new(TrackedData::ROTATION, MetaDataType::INT, rotation);
|
item_serializer,
|
||||||
|
);
|
||||||
|
let meta_rot =
|
||||||
|
Metadata::new(pumpkin_data::tracked_data::item_frame::ROTATION, rotation);
|
||||||
|
|
||||||
let ver = client.version.load();
|
let ver = client.version.load();
|
||||||
if meta_item.write(&mut data, &ver).is_ok() && meta_rot.write(&mut data, &ver).is_ok() {
|
if meta_item.write(&mut data, &ver).is_ok() && meta_rot.write(&mut data, &ver).is_ok() {
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
|
use pumpkin_data::Block;
|
||||||
use pumpkin_data::BlockStateId;
|
use pumpkin_data::BlockStateId;
|
||||||
use pumpkin_data::damage::DamageType;
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::{Block, tracked_data::TrackedData};
|
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::math::position::BlockPos;
|
use pumpkin_util::math::position::BlockPos;
|
||||||
use pumpkin_world::world::BlockFlags;
|
use pumpkin_world::world::BlockFlags;
|
||||||
@ -95,8 +94,7 @@ impl EntityBase for FallingEntity {
|
|||||||
Box::pin(async move {
|
Box::pin(async move {
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::START_POS,
|
pumpkin_data::tracked_data::falling_block::START_POS,
|
||||||
MetaDataType::BLOCK_POS,
|
|
||||||
self.entity.block_pos.load(),
|
self.entity.block_pos.load(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -5,10 +5,7 @@ use std::sync::{
|
|||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{damage::DamageType, item_stack::ItemStack};
|
||||||
damage::DamageType, item_stack::ItemStack, meta_data_type::MetaDataType,
|
|
||||||
tracked_data::TrackedData,
|
|
||||||
};
|
|
||||||
use pumpkin_nbt::{compound::NbtCompound, tag::NbtTag};
|
use pumpkin_nbt::{compound::NbtCompound, tag::NbtTag};
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::math::{
|
use pumpkin_util::math::{
|
||||||
@ -85,8 +82,7 @@ impl InteractionEntity {
|
|||||||
self.update_dimensions().await;
|
self.update_dimensions().await;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WIDTH,
|
pumpkin_data::tracked_data::interaction::WIDTH,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
width,
|
width,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -102,8 +98,7 @@ impl InteractionEntity {
|
|||||||
self.update_dimensions().await;
|
self.update_dimensions().await;
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HEIGHT,
|
pumpkin_data::tracked_data::interaction::HEIGHT,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
height,
|
height,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -118,8 +113,7 @@ impl InteractionEntity {
|
|||||||
self.response.store(response, Ordering::Relaxed);
|
self.response.store(response, Ordering::Relaxed);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::RESPONSE,
|
pumpkin_data::tracked_data::interaction::RESPONSE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
response,
|
response,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -215,24 +209,21 @@ impl EntityBase for InteractionEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WIDTH,
|
pumpkin_data::tracked_data::interaction::WIDTH,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
width,
|
width,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HEIGHT,
|
pumpkin_data::tracked_data::interaction::HEIGHT,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
height,
|
height,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::RESPONSE,
|
pumpkin_data::tracked_data::interaction::RESPONSE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
response,
|
response,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
use crate::entity::player::statistics::StatisticCategory;
|
use crate::entity::player::statistics::StatisticCategory;
|
||||||
use crate::{entity::EntityBaseFuture, server::Server};
|
use crate::{entity::EntityBaseFuture, server::Server};
|
||||||
use core::f32;
|
use core::f32;
|
||||||
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::data_component_impl::DamageResistantImpl;
|
use pumpkin_data::data_component_impl::DamageResistantImpl;
|
||||||
use pumpkin_data::data_component_impl::DamageResistantType;
|
use pumpkin_data::data_component_impl::DamageResistantType;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::{damage::DamageType, meta_data_type::MetaDataType, tracked_data::TrackedData};
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::bedrock::client::CAddItemActor;
|
use pumpkin_protocol::bedrock::client::CAddItemActor;
|
||||||
use pumpkin_protocol::bedrock::network_item::ItemStackWrapper;
|
use pumpkin_protocol::bedrock::network_item::ItemStackWrapper;
|
||||||
@ -508,8 +508,7 @@ impl EntityBase for ItemEntity {
|
|||||||
Box::pin(async {
|
Box::pin(async {
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::item::ITEM,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
&ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -670,8 +669,7 @@ impl EntityBase for ItemEntity {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
let metadata = Metadata::new(
|
let metadata = Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::item::ITEM,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
||||||
);
|
);
|
||||||
let mut data = Vec::new();
|
let mut data = Vec::new();
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::potion::Effect;
|
use pumpkin_data::potion::Effect;
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::{TrackedData, TrackedId};
|
use pumpkin_data::tracked_data;
|
||||||
use pumpkin_inventory::build_equipment_slots;
|
use pumpkin_inventory::build_equipment_slots;
|
||||||
use pumpkin_inventory::player::player_inventory::PlayerInventory;
|
use pumpkin_inventory::player::player_inventory::PlayerInventory;
|
||||||
use pumpkin_inventory::screen_handler::InventoryPlayer;
|
use pumpkin_inventory::screen_handler::InventoryPlayer;
|
||||||
@ -318,8 +317,7 @@ impl LivingEntity {
|
|||||||
|
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::LIVING_ENTITY_FLAGS,
|
tracked_data::living_entity::DATA_LIVING_ENTITY_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
b,
|
b,
|
||||||
)],
|
)],
|
||||||
bedrock_meta.as_ref(),
|
bedrock_meta.as_ref(),
|
||||||
@ -389,8 +387,7 @@ impl LivingEntity {
|
|||||||
// tell everyone entities health changed
|
// tell everyone entities health changed
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HEALTH_ID,
|
tracked_data::living_entity::DATA_HEALTH_ID,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
clamped,
|
clamped,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -443,31 +440,17 @@ impl LivingEntity {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
// Send absorption metadata for players (visual yellow hearts)
|
// Send absorption metadata for players (visual yellow hearts)
|
||||||
if let Some(tracked_id) = self.player_absorption_id() {
|
if self.entity.entity_type == &EntityType::PLAYER {
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(tracked_id, MetaDataType::FLOAT, new_abs)],
|
&[Metadata::new(
|
||||||
|
tracked_data::player::DATA_PLAYER_ABSORPTION_ID,
|
||||||
|
new_abs,
|
||||||
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the absorption ID for this (player) entity
|
|
||||||
/// TODO: don't hardcode these here?
|
|
||||||
fn player_absorption_id(&self) -> Option<TrackedId> {
|
|
||||||
(self.entity.entity_type == &EntityType::PLAYER).then_some(TrackedId {
|
|
||||||
v1_21: 17u8,
|
|
||||||
v1_21_2: 17u8,
|
|
||||||
v1_21_4: 17u8,
|
|
||||||
v1_21_5: 17u8,
|
|
||||||
v1_21_6: 17u8,
|
|
||||||
v1_21_7: 17u8,
|
|
||||||
v1_21_9: 17u8,
|
|
||||||
v1_21_11: 17u8,
|
|
||||||
v26_1: 17u8, // ?
|
|
||||||
v26_2: 17u8,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Convenience helper to mutate an attribute instance. Automatically inserts
|
/// Convenience helper to mutate an attribute instance. Automatically inserts
|
||||||
/// a new instance populated from the registry base if needed.
|
/// a new instance populated from the registry base if needed.
|
||||||
pub fn update_attribute<F: FnOnce(&mut AttributeInstance)>(
|
pub fn update_attribute<F: FnOnce(&mut AttributeInstance)>(
|
||||||
@ -2052,8 +2035,7 @@ impl LivingEntity {
|
|||||||
// Send health metadata
|
// Send health metadata
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HEALTH_ID,
|
tracked_data::living_entity::DATA_HEALTH_ID,
|
||||||
MetaDataType::FLOAT,
|
|
||||||
max_health,
|
max_health,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -80,7 +80,7 @@ impl BatEntity {
|
|||||||
// .living_entity
|
// .living_entity
|
||||||
// .entity
|
// .entity
|
||||||
// .send_meta_data(&[Metadata::new(
|
// .send_meta_data(&[Metadata::new(
|
||||||
// TrackedData::ID_FLAGS,
|
// pumpkin_data::tracked_data::bat::ID_FLAGS,
|
||||||
// MetaDataType::BYTE,
|
// MetaDataType::BYTE,
|
||||||
// flags,
|
// flags,
|
||||||
// )])
|
// )])
|
||||||
|
|||||||
@ -76,7 +76,7 @@ impl BlazeEntity {
|
|||||||
// .living_entity
|
// .living_entity
|
||||||
// .entity
|
// .entity
|
||||||
// .send_meta_data(&[Metadata::new(
|
// .send_meta_data(&[Metadata::new(
|
||||||
// TrackedData::FLAGS_ID,
|
// pumpkin_data::tracked_data::blaze::FLAGS_ID,
|
||||||
// MetaDataType::BYTE,
|
// MetaDataType::BYTE,
|
||||||
// new_je_flags,
|
// new_je_flags,
|
||||||
// )])
|
// )])
|
||||||
|
|||||||
@ -9,10 +9,8 @@ use pumpkin_data::damage::DamageType;
|
|||||||
use pumpkin_data::data_component_impl::EquipmentSlot;
|
use pumpkin_data::data_component_impl::EquipmentSlot;
|
||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::particle::Particle;
|
use pumpkin_data::particle::Particle;
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::{CEntityStatus, Metadata};
|
use pumpkin_protocol::java::client::play::{CEntityStatus, Metadata};
|
||||||
use pumpkin_util::math::position::BlockPos;
|
use pumpkin_util::math::position::BlockPos;
|
||||||
@ -159,8 +157,7 @@ impl CreakingEntity {
|
|||||||
self.can_move.store(can_move, Ordering::Relaxed);
|
self.can_move.store(can_move, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CAN_MOVE,
|
pumpkin_data::tracked_data::creaking::CAN_MOVE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
can_move,
|
can_move,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -175,8 +172,7 @@ impl CreakingEntity {
|
|||||||
self.is_active.store(active, Ordering::Relaxed);
|
self.is_active.store(active, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::IS_ACTIVE,
|
pumpkin_data::tracked_data::creaking::IS_ACTIVE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
active,
|
active,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -191,8 +187,7 @@ impl CreakingEntity {
|
|||||||
self.is_tearing_down.store(true, Ordering::Relaxed);
|
self.is_tearing_down.store(true, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::IS_TEARING_DOWN,
|
pumpkin_data::tracked_data::creaking::IS_TEARING_DOWN,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -217,8 +212,7 @@ impl CreakingEntity {
|
|||||||
}
|
}
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HOME_POS,
|
pumpkin_data::tracked_data::creaking::HOME_POS,
|
||||||
MetaDataType::OPTIONAL_BLOCK_POS,
|
|
||||||
pos,
|
pos,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -7,9 +7,7 @@ use pumpkin_data::item_stack::ItemStack;
|
|||||||
use pumpkin_data::{
|
use pumpkin_data::{
|
||||||
entity::EntityType,
|
entity::EntityType,
|
||||||
item::Item,
|
item::Item,
|
||||||
meta_data_type::MetaDataType,
|
|
||||||
sound::{Sound, SoundCategory},
|
sound::{Sound, SoundCategory},
|
||||||
tracked_data::TrackedData,
|
|
||||||
};
|
};
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::{codec::var_int::VarInt, java::client::play::Metadata};
|
use pumpkin_protocol::{codec::var_int::VarInt, java::client::play::Metadata};
|
||||||
@ -96,8 +94,7 @@ impl CreeperEntity {
|
|||||||
self.fuse_speed.store(speed, Ordering::Relaxed);
|
self.fuse_speed.store(speed, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::FUSE_ID,
|
pumpkin_data::tracked_data::creeper::FUSE_ID,
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(speed),
|
VarInt(speed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -172,8 +169,7 @@ impl Mob for CreeperEntity {
|
|||||||
self.charged.store(true, Ordering::Relaxed);
|
self.charged.store(true, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CHARGED,
|
pumpkin_data::tracked_data::creeper::CHARGED,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -251,8 +247,7 @@ impl Mob for CreeperEntity {
|
|||||||
self.ignited.store(true, Ordering::Relaxed);
|
self.ignited.store(true, Ordering::Relaxed);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::IS_IGNITED,
|
pumpkin_data::tracked_data::creeper::IS_IGNITED,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -13,12 +13,10 @@ use pumpkin_data::{
|
|||||||
data_component_impl::EquipmentSlot,
|
data_component_impl::EquipmentSlot,
|
||||||
entity::EntityType,
|
entity::EntityType,
|
||||||
item::Item,
|
item::Item,
|
||||||
meta_data_type::MetaDataType,
|
|
||||||
particle::Particle,
|
particle::Particle,
|
||||||
sound::{Sound, SoundCategory},
|
sound::{Sound, SoundCategory},
|
||||||
tag,
|
tag,
|
||||||
tag::Taggable,
|
tag::Taggable,
|
||||||
tracked_data::TrackedData,
|
|
||||||
};
|
};
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::{
|
use pumpkin_protocol::{
|
||||||
@ -316,8 +314,7 @@ impl EndermanEntity {
|
|||||||
self.angry.store(angry, Ordering::Relaxed);
|
self.angry.store(angry, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CREEPY,
|
pumpkin_data::tracked_data::enderman::CREEPY,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
angry,
|
angry,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -332,8 +329,7 @@ impl EndermanEntity {
|
|||||||
self.provoked.store(provoked, Ordering::Relaxed);
|
self.provoked.store(provoked, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::STARED_AT,
|
pumpkin_data::tracked_data::enderman::STARED_AT,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
provoked,
|
provoked,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -345,8 +341,7 @@ impl EndermanEntity {
|
|||||||
let value = block_state.map_or(VarInt(0), |id| VarInt(id.as_u16() as i32));
|
let value = block_state.map_or(VarInt(0), |id| VarInt(id.as_u16() as i32));
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CARRY_STATE,
|
pumpkin_data::tracked_data::enderman::CARRY_STATE,
|
||||||
MetaDataType::OPTIONAL_BLOCK_STATE,
|
|
||||||
value,
|
value,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -4,9 +4,7 @@ use tokio::sync::Mutex;
|
|||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::math::vector3::Vector3;
|
use pumpkin_util::math::vector3::Vector3;
|
||||||
@ -121,8 +119,7 @@ impl EvokerEntity {
|
|||||||
let entity = &self.mob_entity.living_entity.entity;
|
let entity = &self.mob_entity.living_entity.entity;
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SPELL_CASTING_ID,
|
pumpkin_data::tracked_data::evoker::SPELL_CASTING_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
spell as u8 as i8,
|
spell as u8 as i8,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -11,9 +11,8 @@ use crossbeam::atomic::AtomicCell;
|
|||||||
use pumpkin_data::attributes::Attributes;
|
use pumpkin_data::attributes::Attributes;
|
||||||
use pumpkin_data::damage::DamageType;
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
use pumpkin_data::tracked_data;
|
||||||
use pumpkin_protocol::java::client::play::{CHeadRot, CUpdateEntityRot, Metadata};
|
use pumpkin_protocol::java::client::play::{CHeadRot, CUpdateEntityRot, Metadata};
|
||||||
use pumpkin_util::Difficulty;
|
use pumpkin_util::Difficulty;
|
||||||
use pumpkin_util::math::boundingbox::BoundingBox;
|
use pumpkin_util::math::boundingbox::BoundingBox;
|
||||||
@ -223,11 +222,7 @@ impl MobEntity {
|
|||||||
self.mob_flags.store(new_b, Ordering::Relaxed);
|
self.mob_flags.store(new_b, Ordering::Relaxed);
|
||||||
|
|
||||||
self.living_entity.entity.send_meta_data(
|
self.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(tracked_data::mob::DATA_MOB_FLAGS_ID, new_b)],
|
||||||
TrackedData::MOB_FLAGS_ID,
|
|
||||||
MetaDataType::BYTE,
|
|
||||||
new_b,
|
|
||||||
)],
|
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -752,11 +747,7 @@ pub trait Mob: EntityBase + Send + Sync {
|
|||||||
let is_baby = entity.age.load(std::sync::atomic::Ordering::Relaxed) < 0;
|
let is_baby = entity.age.load(std::sync::atomic::Ordering::Relaxed) < 0;
|
||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(tracked_data::ageable_mob::DATA_BABY_ID, true)],
|
||||||
TrackedData::BABY_ID,
|
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
|
||||||
)],
|
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,9 +5,7 @@ use crossbeam::atomic::AtomicCell;
|
|||||||
use pumpkin_data::BlockDirection;
|
use pumpkin_data::BlockDirection;
|
||||||
use pumpkin_data::damage::DamageType;
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::{CEntityPositionSync, Metadata};
|
use pumpkin_protocol::java::client::play::{CEntityPositionSync, Metadata};
|
||||||
@ -120,8 +118,7 @@ impl ShulkerEntity {
|
|||||||
let entity = &self.mob_entity.living_entity.entity;
|
let entity = &self.mob_entity.living_entity.entity;
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ATTACH_FACE_ID,
|
pumpkin_data::tracked_data::shulker::ATTACH_FACE_ID,
|
||||||
MetaDataType::DIRECTION,
|
|
||||||
VarInt(face as i32),
|
VarInt(face as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -161,8 +158,7 @@ impl ShulkerEntity {
|
|||||||
|
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::PEEK_ID,
|
pumpkin_data::tracked_data::shulker::PEEK_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
amount,
|
amount,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -21,9 +21,8 @@ use pumpkin_data::dimension::Dimension;
|
|||||||
use pumpkin_data::entity::EntityStatus;
|
use pumpkin_data::entity::EntityStatus;
|
||||||
use pumpkin_data::fluid::Fluid;
|
use pumpkin_data::fluid::Fluid;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
use pumpkin_data::tracked_data;
|
||||||
use pumpkin_data::{Block, BlockDirection};
|
use pumpkin_data::{Block, BlockDirection};
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{
|
||||||
block_properties::{Facing, HorizontalFacing},
|
block_properties::{Facing, HorizontalFacing},
|
||||||
@ -195,11 +194,7 @@ pub trait EntityBase: Send + Sync + NBTStorage + std::any::Any {
|
|||||||
let mut bedrock_meta = EntityMetadata::new();
|
let mut bedrock_meta = EntityMetadata::new();
|
||||||
bedrock_meta.set_flag(entity_data_key::FLAGS, entity_data_flag::BABY as u8, true);
|
bedrock_meta.set_flag(entity_data_key::FLAGS, entity_data_flag::BABY as u8, true);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(tracked_data::ageable_mob::DATA_BABY_ID, true)],
|
||||||
TrackedData::BABY_ID,
|
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
|
||||||
)],
|
|
||||||
Some(&bedrock_meta),
|
Some(&bedrock_meta),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1130,8 +1125,7 @@ impl Entity {
|
|||||||
);
|
);
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CUSTOM_NAME,
|
tracked_data::entity::DATA_CUSTOM_NAME,
|
||||||
MetaDataType::OPTIONAL_TEXT_COMPONENT,
|
|
||||||
Some(name),
|
Some(name),
|
||||||
)],
|
)],
|
||||||
Some(&bedrock_meta),
|
Some(&bedrock_meta),
|
||||||
@ -1159,8 +1153,7 @@ impl Entity {
|
|||||||
);
|
);
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CUSTOM_NAME_VISIBLE,
|
tracked_data::entity::DATA_CUSTOM_NAME_VISIBLE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
visible,
|
visible,
|
||||||
)],
|
)],
|
||||||
Some(&bedrock_meta),
|
Some(&bedrock_meta),
|
||||||
@ -1174,11 +1167,7 @@ impl Entity {
|
|||||||
pub fn set_silent(&self, silent: bool) {
|
pub fn set_silent(&self, silent: bool) {
|
||||||
self.silent.store(silent, Ordering::Relaxed);
|
self.silent.store(silent, Ordering::Relaxed);
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(tracked_data::entity::DATA_SILENT, silent)],
|
||||||
TrackedData::SILENT,
|
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
silent,
|
|
||||||
)],
|
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1191,8 +1180,7 @@ impl Entity {
|
|||||||
self.has_no_gravity.store(no_gravity, Ordering::Relaxed);
|
self.has_no_gravity.store(no_gravity, Ordering::Relaxed);
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::NO_GRAVITY,
|
tracked_data::entity::DATA_NO_GRAVITY,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
no_gravity,
|
no_gravity,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -2595,8 +2583,7 @@ impl Entity {
|
|||||||
);
|
);
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TICKS_FROZEN,
|
tracked_data::entity::DATA_TICKS_FROZEN,
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(new_frozen_ticks),
|
VarInt(new_frozen_ticks),
|
||||||
)],
|
)],
|
||||||
Some(&bedrock_meta),
|
Some(&bedrock_meta),
|
||||||
@ -2865,8 +2852,7 @@ impl Entity {
|
|||||||
|
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SHARED_FLAGS_ID,
|
tracked_data::entity::DATA_SHARED_FLAGS_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
new_je_flags,
|
new_je_flags,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -3025,11 +3011,7 @@ impl Entity {
|
|||||||
MetadataValue::Float(dimension.height),
|
MetadataValue::Float(dimension.height),
|
||||||
);
|
);
|
||||||
self.send_meta_data(
|
self.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(tracked_data::entity::DATA_POSE, VarInt(pose))],
|
||||||
TrackedData::POSE,
|
|
||||||
MetaDataType::ENTITY_POSE,
|
|
||||||
VarInt(pose),
|
|
||||||
)],
|
|
||||||
Some(&bedrock_meta),
|
Some(&bedrock_meta),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,10 +7,8 @@ use pumpkin_data::damage::DamageType;
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -175,8 +173,7 @@ impl ArmadilloEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ARMADILLO_STATE,
|
pumpkin_data::tracked_data::armadillo::ARMADILLO_STATE,
|
||||||
MetaDataType::ARMADILLO_STATE,
|
|
||||||
VarInt(state.id()),
|
VarInt(state.id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -431,8 +428,7 @@ impl Mob for ArmadilloEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::armadillo::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -440,8 +436,7 @@ impl Mob for ArmadilloEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ARMADILLO_STATE,
|
pumpkin_data::tracked_data::armadillo::ARMADILLO_STATE,
|
||||||
MetaDataType::ARMADILLO_STATE,
|
|
||||||
VarInt(self.get_state().id()),
|
VarInt(self.get_state().id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -7,9 +7,7 @@ use crossbeam::atomic::AtomicCell;
|
|||||||
use pumpkin_data::entity::{EntityStatus, EntityType};
|
use pumpkin_data::entity::{EntityStatus, EntityType};
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
@ -196,8 +194,7 @@ impl CatEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CAT_COLLAR_COLOR,
|
pumpkin_data::tracked_data::cat::CAT_COLLAR_COLOR,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(color as i32),
|
VarInt(color as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -209,8 +206,7 @@ impl CatEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TAMEABLE_FLAGS,
|
pumpkin_data::tracked_data::cat::TAMEABLE_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.get_tame_flags(),
|
self.get_tame_flags(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -223,16 +219,14 @@ impl CatEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TAMEABLE_FLAGS,
|
pumpkin_data::tracked_data::cat::TAMEABLE_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.get_tame_flags(),
|
self.get_tame_flags(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::OWNER_UUID,
|
pumpkin_data::tracked_data::cat::OWNER_UUID,
|
||||||
MetaDataType::OPTIONAL_UUID,
|
|
||||||
owner,
|
owner,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -244,8 +238,7 @@ impl CatEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::IS_LYING,
|
pumpkin_data::tracked_data::cat::IS_LYING,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
lying,
|
lying,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -257,8 +250,7 @@ impl CatEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::RELAX_STATE_ONE,
|
pumpkin_data::tracked_data::cat::RELAX_STATE_ONE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
relax,
|
relax,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -394,8 +386,7 @@ impl Mob for CatEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::cat::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -403,56 +394,49 @@ impl Mob for CatEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TAMEABLE_FLAGS,
|
pumpkin_data::tracked_data::cat::TAMEABLE_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.get_tame_flags(),
|
self.get_tame_flags(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::OWNER_UUID,
|
pumpkin_data::tracked_data::cat::OWNER_UUID,
|
||||||
MetaDataType::OPTIONAL_UUID,
|
|
||||||
self.owner.load(),
|
self.owner.load(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CAT_VARIANT,
|
pumpkin_data::tracked_data::cat::CAT_VARIANT,
|
||||||
MetaDataType::CAT_VARIANT,
|
|
||||||
VarInt(self.variant.load(Ordering::Relaxed) as i32),
|
VarInt(self.variant.load(Ordering::Relaxed) as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::IS_LYING,
|
pumpkin_data::tracked_data::cat::IS_LYING,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
self.is_lying.load(Ordering::Relaxed),
|
self.is_lying.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::RELAX_STATE_ONE,
|
pumpkin_data::tracked_data::cat::RELAX_STATE_ONE,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
self.relax_state_one.load(Ordering::Relaxed),
|
self.relax_state_one.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::CAT_COLLAR_COLOR,
|
pumpkin_data::tracked_data::cat::CAT_COLLAR_COLOR,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.collar_color.load(Ordering::Relaxed) as i32),
|
VarInt(self.collar_color.load(Ordering::Relaxed) as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SOUND_VARIANT,
|
pumpkin_data::tracked_data::cat::SOUND_VARIANT,
|
||||||
MetaDataType::CAT_SOUND_VARIANT,
|
|
||||||
VarInt(self.sound_variant.load(Ordering::Relaxed) as i32),
|
VarInt(self.sound_variant.load(Ordering::Relaxed) as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -4,9 +4,7 @@ use std::sync::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_data::{entity::EntityType, item::Item};
|
use pumpkin_data::{entity::EntityType, item::Item};
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use rand::RngExt;
|
use rand::RngExt;
|
||||||
@ -159,8 +157,7 @@ impl Mob for ChickenEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::chicken::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -168,8 +165,7 @@ impl Mob for ChickenEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
TrackedData::VARIANT,
|
pumpkin_data::tracked_data::chicken::VARIANT,
|
||||||
MetaDataType::CHICKEN_VARIANT,
|
|
||||||
VarInt(self.variant.load(Ordering::Relaxed) as i32),
|
VarInt(self.variant.load(Ordering::Relaxed) as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -6,10 +6,8 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -152,8 +150,7 @@ impl CopperGolemEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WEATHER_STATE,
|
pumpkin_data::tracked_data::copper_golem::WEATHER_STATE,
|
||||||
MetaDataType::WEATHERING_COPPER_STATE,
|
|
||||||
VarInt(state.id()),
|
VarInt(state.id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -170,8 +167,7 @@ impl CopperGolemEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::COPPER_GOLEM_STATE,
|
pumpkin_data::tracked_data::copper_golem::COPPER_GOLEM_STATE,
|
||||||
MetaDataType::COPPER_GOLEM_STATE,
|
|
||||||
VarInt(state.id()),
|
VarInt(state.id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -256,13 +252,11 @@ impl Mob for CopperGolemEntity {
|
|||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[
|
&[
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::WEATHER_STATE,
|
pumpkin_data::tracked_data::copper_golem::WEATHER_STATE,
|
||||||
MetaDataType::WEATHERING_COPPER_STATE,
|
|
||||||
VarInt(self.get_weather_state().id()),
|
VarInt(self.get_weather_state().id()),
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::COPPER_GOLEM_STATE,
|
pumpkin_data::tracked_data::copper_golem::COPPER_GOLEM_STATE,
|
||||||
MetaDataType::COPPER_GOLEM_STATE,
|
|
||||||
VarInt(self.get_state().id()),
|
VarInt(self.get_state().id()),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -6,10 +6,8 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -126,8 +124,7 @@ impl FoxEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TYPE_ID,
|
pumpkin_data::tracked_data::fox::TYPE_ID,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(variant.id()),
|
VarInt(variant.id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -149,8 +146,7 @@ impl FoxEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::FLAGS_ID,
|
pumpkin_data::tracked_data::fox::FLAGS_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
new_flags,
|
new_flags,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -299,8 +295,7 @@ impl Mob for FoxEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::fox::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -308,16 +303,14 @@ impl Mob for FoxEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TYPE_ID,
|
pumpkin_data::tracked_data::fox::TYPE_ID,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.get_variant().id()),
|
VarInt(self.get_variant().id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::FLAGS_ID,
|
pumpkin_data::tracked_data::fox::FLAGS_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.flags.load(Ordering::Relaxed),
|
self.flags.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -6,10 +6,8 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -126,8 +124,7 @@ impl FrogEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::VARIANT,
|
pumpkin_data::tracked_data::frog::VARIANT,
|
||||||
MetaDataType::FROG_VARIANT,
|
|
||||||
VarInt(variant.id()),
|
VarInt(variant.id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -192,8 +189,7 @@ impl Mob for FrogEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::frog::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -201,8 +197,7 @@ impl Mob for FrogEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::VARIANT,
|
pumpkin_data::tracked_data::frog::VARIANT,
|
||||||
MetaDataType::FROG_VARIANT,
|
|
||||||
VarInt(self.get_variant().id()),
|
VarInt(self.get_variant().id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -6,10 +6,8 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
|
|
||||||
@ -93,8 +91,7 @@ impl HappyGhastEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::IS_LEASH_HOLDER,
|
pumpkin_data::tracked_data::happy_ghast::IS_LEASH_HOLDER,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
is_leash_holder,
|
is_leash_holder,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -107,8 +104,7 @@ impl HappyGhastEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::STAYS_STILL,
|
pumpkin_data::tracked_data::happy_ghast::STAYS_STILL,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
stays_still,
|
stays_still,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -205,8 +201,7 @@ impl Mob for HappyGhastEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::happy_ghast::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -215,13 +210,11 @@ impl Mob for HappyGhastEntity {
|
|||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[
|
&[
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::IS_LEASH_HOLDER,
|
pumpkin_data::tracked_data::happy_ghast::IS_LEASH_HOLDER,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
self.is_leash_holder.load(Ordering::Relaxed),
|
self.is_leash_holder.load(Ordering::Relaxed),
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::STAYS_STILL,
|
pumpkin_data::tracked_data::happy_ghast::STAYS_STILL,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
self.stays_still.load(Ordering::Relaxed),
|
self.stays_still.load(Ordering::Relaxed),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -6,9 +6,7 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::GameMode;
|
use pumpkin_util::GameMode;
|
||||||
@ -94,8 +92,7 @@ impl IronGolemEntity {
|
|||||||
let flag: u8 = u8::from(value);
|
let flag: u8 = u8::from(value);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::FLAGS_ID,
|
pumpkin_data::tracked_data::iron_golem::FLAGS_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
flag,
|
flag,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -146,8 +143,7 @@ impl Mob for IronGolemEntity {
|
|||||||
let flag: u8 = u8::from(self.is_player_created());
|
let flag: u8 = u8::from(self.is_player_created());
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::FLAGS_ID,
|
pumpkin_data::tracked_data::iron_golem::FLAGS_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
flag,
|
flag,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -10,11 +10,9 @@ use pumpkin_data::{
|
|||||||
effect::StatusEffect,
|
effect::StatusEffect,
|
||||||
entity::EntityStatus,
|
entity::EntityStatus,
|
||||||
item_stack::ItemStack,
|
item_stack::ItemStack,
|
||||||
meta_data_type::MetaDataType,
|
|
||||||
particle::Particle,
|
particle::Particle,
|
||||||
potion::Effect,
|
potion::Effect,
|
||||||
sound::{Sound, SoundCategory},
|
sound::{Sound, SoundCategory},
|
||||||
tracked_data::TrackedData,
|
|
||||||
};
|
};
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -61,8 +59,7 @@ impl NautilusEntity {
|
|||||||
self.is_dashing.store(dashing, Ordering::Relaxed);
|
self.is_dashing.store(dashing, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::DASH,
|
pumpkin_data::tracked_data::nautilus::DASH,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
dashing,
|
dashing,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -271,8 +268,7 @@ impl Mob for NautilusEntity {
|
|||||||
Box::pin(async move {
|
Box::pin(async move {
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::DASH,
|
pumpkin_data::tracked_data::nautilus::DASH,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
self.is_dashing(),
|
self.is_dashing(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -6,9 +6,7 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::{EntityStatus, EntityType};
|
use pumpkin_data::entity::{EntityStatus, EntityType};
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -113,8 +111,7 @@ impl OcelotEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TRUSTING,
|
pumpkin_data::tracked_data::ocelot::TRUSTING,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
trusting,
|
trusting,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -163,8 +160,7 @@ impl Mob for OcelotEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::ocelot::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -172,8 +168,7 @@ impl Mob for OcelotEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TRUSTING,
|
pumpkin_data::tracked_data::ocelot::TRUSTING,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
self.is_trusting.load(Ordering::Relaxed),
|
self.is_trusting.load(Ordering::Relaxed),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -3,9 +3,7 @@ use std::sync::{
|
|||||||
atomic::{AtomicU8, Ordering},
|
atomic::{AtomicU8, Ordering},
|
||||||
};
|
};
|
||||||
|
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{entity::EntityType, item::Item};
|
||||||
entity::EntityType, item::Item, meta_data_type::MetaDataType, tracked_data::TrackedData,
|
|
||||||
};
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
|
|
||||||
@ -88,8 +86,7 @@ impl SheepEntity {
|
|||||||
self.color_and_sheared.store(byte, Ordering::Relaxed);
|
self.color_and_sheared.store(byte, Ordering::Relaxed);
|
||||||
self.mob_entity.living_entity.entity.send_meta_data(
|
self.mob_entity.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WOOL_ID,
|
pumpkin_data::tracked_data::sheep::WOOL_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
byte as i8,
|
byte as i8,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -6,10 +6,8 @@ use std::sync::{
|
|||||||
use pumpkin_data::entity::{EntityStatus, EntityType};
|
use pumpkin_data::entity::{EntityStatus, EntityType};
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -126,8 +124,7 @@ impl SnifferEntity {
|
|||||||
let entity = self.get_entity();
|
let entity = self.get_entity();
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::STATE,
|
pumpkin_data::tracked_data::sniffer::STATE,
|
||||||
MetaDataType::SNIFFER_STATE,
|
|
||||||
VarInt(state.id()),
|
VarInt(state.id()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -195,8 +192,7 @@ impl SnifferEntity {
|
|||||||
self.drop_seed_at_tick.store(drop_tick, Ordering::Relaxed);
|
self.drop_seed_at_tick.store(drop_tick, Ordering::Relaxed);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::DROP_SEED_AT_TICK,
|
pumpkin_data::tracked_data::sniffer::DROP_SEED_AT_TICK,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(drop_tick),
|
VarInt(drop_tick),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -397,8 +393,7 @@ impl Mob for SnifferEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::sniffer::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -407,13 +402,11 @@ impl Mob for SnifferEntity {
|
|||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[
|
&[
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::STATE,
|
pumpkin_data::tracked_data::sniffer::STATE,
|
||||||
MetaDataType::SNIFFER_STATE,
|
|
||||||
VarInt(self.get_state().id()),
|
VarInt(self.get_state().id()),
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::DROP_SEED_AT_TICK,
|
pumpkin_data::tracked_data::sniffer::DROP_SEED_AT_TICK,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.drop_seed_at_tick.load(Ordering::Relaxed)),
|
VarInt(self.drop_seed_at_tick.load(Ordering::Relaxed)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -10,9 +10,7 @@ use pumpkin_data::block_properties::{
|
|||||||
};
|
};
|
||||||
use pumpkin_data::entity::{EntityPose, EntityType};
|
use pumpkin_data::entity::{EntityPose, EntityType};
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::Taggable;
|
use pumpkin_data::tag::Taggable;
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_inventory::merchant::merchant_screen_handler::MerchantScreenHandler;
|
use pumpkin_inventory::merchant::merchant_screen_handler::MerchantScreenHandler;
|
||||||
use pumpkin_inventory::screen_handler::{
|
use pumpkin_inventory::screen_handler::{
|
||||||
BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler,
|
BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler,
|
||||||
@ -166,8 +164,7 @@ impl VillagerEntity {
|
|||||||
// Send initial metadata
|
// Send initial metadata
|
||||||
mob_arc.get_entity().send_meta_data(
|
mob_arc.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::VILLAGER_DATA,
|
pumpkin_data::tracked_data::villager::VILLAGER_DATA,
|
||||||
MetaDataType::VILLAGER_DATA,
|
|
||||||
villager_data,
|
villager_data,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -224,8 +221,7 @@ impl VillagerEntity {
|
|||||||
};
|
};
|
||||||
self.get_entity().send_meta_data(
|
self.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::VILLAGER_DATA,
|
pumpkin_data::tracked_data::villager::VILLAGER_DATA,
|
||||||
MetaDataType::VILLAGER_DATA,
|
|
||||||
data,
|
data,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -816,8 +812,7 @@ impl Mob for VillagerEntity {
|
|||||||
self.get_entity().set_pose(EntityPose::Standing);
|
self.get_entity().set_pose(EntityPose::Standing);
|
||||||
self.get_entity().send_meta_data(
|
self.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SLEEPING_POS_ID,
|
pumpkin_data::tracked_data::villager::SLEEPING_POS_ID,
|
||||||
MetaDataType::OPTIONAL_BLOCK_POS,
|
|
||||||
None::<BlockPos>,
|
None::<BlockPos>,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -919,8 +914,7 @@ impl Mob for VillagerEntity {
|
|||||||
self.get_entity().set_pose(EntityPose::Sleeping);
|
self.get_entity().set_pose(EntityPose::Sleeping);
|
||||||
self.get_entity().send_meta_data(
|
self.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SLEEPING_POS_ID,
|
pumpkin_data::tracked_data::villager::SLEEPING_POS_ID,
|
||||||
MetaDataType::OPTIONAL_BLOCK_POS,
|
|
||||||
Some(home_pos),
|
Some(home_pos),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -942,8 +936,7 @@ impl Mob for VillagerEntity {
|
|||||||
self.get_entity().set_pose(EntityPose::Standing);
|
self.get_entity().set_pose(EntityPose::Standing);
|
||||||
self.get_entity().send_meta_data(
|
self.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SLEEPING_POS_ID,
|
pumpkin_data::tracked_data::villager::SLEEPING_POS_ID,
|
||||||
MetaDataType::OPTIONAL_BLOCK_POS,
|
|
||||||
None::<BlockPos>,
|
None::<BlockPos>,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -7,9 +7,7 @@ use crossbeam::atomic::AtomicCell;
|
|||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -266,8 +264,7 @@ impl Mob for WolfEntity {
|
|||||||
if is_baby {
|
if is_baby {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::BABY_ID,
|
pumpkin_data::tracked_data::wolf::BABY_ID,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
true,
|
true,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -275,32 +272,28 @@ impl Mob for WolfEntity {
|
|||||||
}
|
}
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::TAMEABLE_FLAGS,
|
pumpkin_data::tracked_data::wolf::TAMEABLE_FLAGS,
|
||||||
MetaDataType::BYTE,
|
|
||||||
self.get_tame_flags(),
|
self.get_tame_flags(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::COLLAR_COLOR,
|
pumpkin_data::tracked_data::wolf::COLLAR_COLOR,
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.collar_color.load(Ordering::Relaxed) as i32),
|
VarInt(self.collar_color.load(Ordering::Relaxed) as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::WOLF_VARIANT_ID,
|
pumpkin_data::tracked_data::wolf::WOLF_VARIANT_ID,
|
||||||
MetaDataType::WOLF_VARIANT,
|
|
||||||
VarInt(self.variant.load(Ordering::Relaxed) as i32),
|
VarInt(self.variant.load(Ordering::Relaxed) as i32),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::OWNER_UUID,
|
pumpkin_data::tracked_data::wolf::OWNER_UUID,
|
||||||
MetaDataType::OPTIONAL_UUID,
|
|
||||||
self.owner.load(),
|
self.owner.load(),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -17,8 +17,6 @@ use arc_swap::ArcSwap;
|
|||||||
use crossbeam::atomic::AtomicCell;
|
use crossbeam::atomic::AtomicCell;
|
||||||
use crossbeam::channel::Receiver;
|
use crossbeam::channel::Receiver;
|
||||||
use pumpkin_data::dimension::Dimension;
|
use pumpkin_data::dimension::Dimension;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_inventory::player::ender_chest_inventory::EnderChestInventory;
|
use pumpkin_inventory::player::ender_chest_inventory::EnderChestInventory;
|
||||||
use pumpkin_protocol::bedrock::client::play_status::CPlayStatus;
|
use pumpkin_protocol::bedrock::client::play_status::CPlayStatus;
|
||||||
use pumpkin_protocol::bedrock::client::set_time::CSetTime;
|
use pumpkin_protocol::bedrock::client::set_time::CSetTime;
|
||||||
@ -2026,8 +2024,7 @@ impl Player {
|
|||||||
.set_pos(bed_head_pos.to_f64().add_raw(0.5, 0.6875, 0.5));
|
.set_pos(bed_head_pos.to_f64().add_raw(0.5, 0.6875, 0.5));
|
||||||
self.get_entity().send_meta_data(
|
self.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SLEEPING_POS_ID,
|
pumpkin_data::tracked_data::player::SLEEPING_POS_ID,
|
||||||
MetaDataType::OPTIONAL_BLOCK_POS,
|
|
||||||
Some(bed_head_pos),
|
Some(bed_head_pos),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -2159,8 +2156,7 @@ impl Player {
|
|||||||
self.living_entity.entity.set_pos(self.position());
|
self.living_entity.entity.set_pos(self.position());
|
||||||
self.living_entity.entity.send_meta_data(
|
self.living_entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::SLEEPING_POS_ID,
|
pumpkin_data::tracked_data::player::SLEEPING_POS_ID,
|
||||||
MetaDataType::OPTIONAL_BLOCK_POS,
|
|
||||||
None::<BlockPos>,
|
None::<BlockPos>,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -4075,24 +4071,20 @@ impl Player {
|
|||||||
&[
|
&[
|
||||||
// v26.x
|
// v26.x
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::PLAYER_MODE_CUSTOMISATION,
|
pumpkin_data::tracked_data::player::PLAYER_MODE_CUSTOMISATION,
|
||||||
MetaDataType::BYTE,
|
|
||||||
config.skin_parts,
|
config.skin_parts,
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::PLAYER_MAIN_HAND,
|
pumpkin_data::tracked_data::player::PLAYER_MAIN_HAND,
|
||||||
MetaDataType::HUMANOID_ARM,
|
|
||||||
config.main_hand as u8,
|
config.main_hand as u8,
|
||||||
),
|
),
|
||||||
// v1.21.x
|
// v1.21.x
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::PLAYER_MODE_CUSTOMIZATION_ID,
|
pumpkin_data::tracked_data::player::PLAYER_MODE_CUSTOMIZATION_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
config.skin_parts,
|
config.skin_parts,
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::MAIN_ARM_ID,
|
pumpkin_data::tracked_data::player::MAIN_ARM_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
config.main_hand as u8,
|
config.main_hand as u8,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -12,8 +12,6 @@ use crate::{
|
|||||||
use pumpkin_data::entity::{EntityStatus, EntityType};
|
use pumpkin_data::entity::{EntityStatus, EntityType};
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
||||||
use pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer;
|
use pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -76,8 +74,7 @@ impl EntityBase for EggEntity {
|
|||||||
// Sync the item stack so the client renders the correct color/variant
|
// Sync the item stack so the client renders the correct color/variant
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM_STACK,
|
pumpkin_data::tracked_data::egg::ITEM_STACK,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&ItemStackSerializer::from(stack.clone()),
|
&ItemStackSerializer::from(stack.clone()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -3,12 +3,12 @@ use crate::entity::living::LivingEntity;
|
|||||||
use crate::entity::player::Player;
|
use crate::entity::player::Player;
|
||||||
use crate::{entity::EntityBaseFuture, server::Server};
|
use crate::{entity::EntityBaseFuture, server::Server};
|
||||||
use core::f64;
|
use core::f64;
|
||||||
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::sound::Sound;
|
use pumpkin_data::sound::Sound;
|
||||||
use pumpkin_data::world::WorldEvent;
|
use pumpkin_data::world::WorldEvent;
|
||||||
use pumpkin_data::{damage::DamageType, meta_data_type::MetaDataType, tracked_data::TrackedData};
|
|
||||||
use pumpkin_protocol::{
|
use pumpkin_protocol::{
|
||||||
codec::item_stack_seralizer::ItemStackSerializer, java::client::play::Metadata,
|
codec::item_stack_seralizer::ItemStackSerializer, java::client::play::Metadata,
|
||||||
};
|
};
|
||||||
@ -174,8 +174,7 @@ impl EntityBase for EyeOfEnder {
|
|||||||
Box::pin(async {
|
Box::pin(async {
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM,
|
pumpkin_data::tracked_data::eye_of_ender::ITEM_STACK,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
&ItemStackSerializer::from(self.item_stack.lock().await.clone()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -4,8 +4,6 @@ use tokio::sync::RwLock;
|
|||||||
|
|
||||||
use pumpkin_data::item::Item;
|
use pumpkin_data::item::Item;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer;
|
use pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
@ -118,8 +116,7 @@ impl FireballEntity {
|
|||||||
|
|
||||||
self.get_entity().send_meta_data(
|
self.get_entity().send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM_STACK,
|
pumpkin_data::tracked_data::fireball::ITEM_STACK,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&ItemStackSerializer::from(new_item),
|
&ItemStackSerializer::from(new_item),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
@ -201,8 +198,7 @@ impl EntityBase for FireballEntity {
|
|||||||
|
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ITEM_STACK,
|
pumpkin_data::tracked_data::fireball::ITEM_STACK,
|
||||||
MetaDataType::ITEM_STACK,
|
|
||||||
&ItemStackSerializer::from(stack.clone()),
|
&ItemStackSerializer::from(stack.clone()),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -3,7 +3,7 @@ use crate::{
|
|||||||
server::Server,
|
server::Server,
|
||||||
world::World,
|
world::World,
|
||||||
};
|
};
|
||||||
use pumpkin_data::{entity::EntityStatus, meta_data_type::MetaDataType, tracked_data::TrackedData};
|
use pumpkin_data::entity::EntityStatus;
|
||||||
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
use pumpkin_protocol::bedrock::server::actor_event::ActorEventType;
|
||||||
use pumpkin_protocol::{codec::optional_int::OptionalInt, java::client::play::Metadata};
|
use pumpkin_protocol::{codec::optional_int::OptionalInt, java::client::play::Metadata};
|
||||||
use pumpkin_util::{
|
use pumpkin_util::{
|
||||||
@ -71,8 +71,7 @@ impl FireworkRocketEntity {
|
|||||||
// Set shooter metadata
|
// Set shooter metadata
|
||||||
rocket.entity.entity.send_meta_data(
|
rocket.entity.entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ATTACHED_TO_TARGET,
|
pumpkin_data::tracked_data::firework_rocket::ATTACHED_TO_TARGET,
|
||||||
MetaDataType::OPTIONAL_INT,
|
|
||||||
OptionalInt(Some(shooter.entity_id)),
|
OptionalInt(Some(shooter.entity_id)),
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -9,9 +9,7 @@ use crate::{
|
|||||||
server::Server,
|
server::Server,
|
||||||
};
|
};
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::math::boundingbox::BoundingBox;
|
use pumpkin_util::math::boundingbox::BoundingBox;
|
||||||
use pumpkin_util::math::vector3::Vector3;
|
use pumpkin_util::math::vector3::Vector3;
|
||||||
@ -217,8 +215,7 @@ impl FishingBobberEntity {
|
|||||||
.store(cand.get_entity().entity_id, Ordering::Relaxed);
|
.store(cand.get_entity().entity_id, Ordering::Relaxed);
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::HOOKED_ENTITY,
|
pumpkin_data::tracked_data::fishing_bobber::HOOKED_ENTITY,
|
||||||
MetaDataType::INT,
|
|
||||||
cand.get_entity().entity_id + 1,
|
cand.get_entity().entity_id + 1,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -72,8 +72,7 @@ impl EntityBase for LingeringPotionEntity {
|
|||||||
// Sync the item stack so the client renders the correct potion type
|
// Sync the item stack so the client renders the correct potion type
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::ITEM_STACK,
|
pumpkin_data::tracked_data::lingering_potion::ITEM_STACK,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::ITEM_STACK,
|
|
||||||
&pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer::from(
|
&pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer::from(
|
||||||
stack.clone(),
|
stack.clone(),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -109,8 +109,7 @@ impl EntityBase for SplashPotionEntity {
|
|||||||
// Sync the item stack
|
// Sync the item stack
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[pumpkin_protocol::java::client::play::Metadata::new(
|
&[pumpkin_protocol::java::client::play::Metadata::new(
|
||||||
pumpkin_data::tracked_data::TrackedData::ITEM_STACK,
|
pumpkin_data::tracked_data::splash_potion::ITEM_STACK,
|
||||||
pumpkin_data::meta_data_type::MetaDataType::ITEM_STACK,
|
|
||||||
&pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer::from(
|
&pumpkin_protocol::codec::item_stack_seralizer::ItemStackSerializer::from(
|
||||||
stack.clone(),
|
stack.clone(),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
use super::{Entity, EntityBase, NBTStorage, living::LivingEntity};
|
use super::{Entity, EntityBase, NBTStorage, living::LivingEntity};
|
||||||
use crate::{entity::EntityBaseFuture, server::Server};
|
use crate::{entity::EntityBaseFuture, server::Server};
|
||||||
use core::f32;
|
use core::f32;
|
||||||
use pumpkin_data::{Block, meta_data_type::MetaDataType, tracked_data::TrackedData};
|
use pumpkin_data::Block;
|
||||||
use pumpkin_protocol::{codec::var_int::VarInt, java::client::play::Metadata};
|
use pumpkin_protocol::{codec::var_int::VarInt, java::client::play::Metadata};
|
||||||
use pumpkin_util::math::vector3::Vector3;
|
use pumpkin_util::math::vector3::Vector3;
|
||||||
use std::{
|
use std::{
|
||||||
@ -88,13 +88,11 @@ impl EntityBase for TNTEntity {
|
|||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[
|
&[
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::FUSE_ID,
|
pumpkin_data::tracked_data::tnt::FUSE_ID,
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(self.fuse.load(Relaxed) as i32),
|
VarInt(self.fuse.load(Relaxed) as i32),
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::BLOCK_STATE_ID,
|
pumpkin_data::tracked_data::tnt::BLOCK_STATE_ID,
|
||||||
MetaDataType::BLOCK_STATE,
|
|
||||||
VarInt(i32::from(Block::TNT.default_state.id.as_u16())),
|
VarInt(i32::from(Block::TNT.default_state.id.as_u16())),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -9,8 +9,6 @@ use crate::server::Server;
|
|||||||
|
|
||||||
use pumpkin_data::damage::DamageType;
|
use pumpkin_data::damage::DamageType;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
|
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
|
|
||||||
@ -41,8 +39,8 @@ impl BoatEntity {
|
|||||||
|
|
||||||
self.vehicle.entity.send_meta_data(
|
self.vehicle.entity.send_meta_data(
|
||||||
&[
|
&[
|
||||||
Metadata::new(TrackedData::ID_PADDLE_LEFT, MetaDataType::BOOLEAN, left),
|
Metadata::new(pumpkin_data::tracked_data::boat::ID_PADDLE_LEFT, left),
|
||||||
Metadata::new(TrackedData::ID_PADDLE_RIGHT, MetaDataType::BOOLEAN, right),
|
Metadata::new(pumpkin_data::tracked_data::boat::ID_PADDLE_RIGHT, right),
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -2,10 +2,8 @@ use std::sync::atomic::{AtomicI32, Ordering};
|
|||||||
|
|
||||||
use crossbeam::atomic::AtomicCell;
|
use crossbeam::atomic::AtomicCell;
|
||||||
use pumpkin_data::item_stack::ItemStack;
|
use pumpkin_data::item_stack::ItemStack;
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::particle::Particle;
|
use pumpkin_data::particle::Particle;
|
||||||
use pumpkin_data::tag::{self, Taggable};
|
use pumpkin_data::tag::{self, Taggable};
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_nbt::compound::NbtCompound;
|
use pumpkin_nbt::compound::NbtCompound;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::math::vector3::Vector3;
|
use pumpkin_util::math::vector3::Vector3;
|
||||||
@ -32,8 +30,7 @@ impl FurnaceMinecart {
|
|||||||
fn set_fueled(entity: &Entity, fueled: bool) {
|
fn set_fueled(entity: &Entity, fueled: bool) {
|
||||||
entity.send_meta_data(
|
entity.send_meta_data(
|
||||||
&[Metadata::new(
|
&[Metadata::new(
|
||||||
TrackedData::ID_FUEL,
|
pumpkin_data::tracked_data::furnace_minecart::ID_FUEL,
|
||||||
MetaDataType::BOOLEAN,
|
|
||||||
fueled,
|
fueled,
|
||||||
)],
|
)],
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -6,8 +6,6 @@ use pumpkin_protocol::java::client::play::Metadata;
|
|||||||
|
|
||||||
use crate::entity::EntityBase;
|
use crate::entity::EntityBase;
|
||||||
use crate::world::loot::{LootContextParameters, LootTableExt};
|
use crate::world::loot::{LootContextParameters, LootTableExt};
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_util::GameMode;
|
use pumpkin_util::GameMode;
|
||||||
|
|
||||||
@ -142,41 +140,21 @@ impl VehicleEntity {
|
|||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[
|
&[
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::DAMAGE_WOBBLE_TICKS,
|
pumpkin_data::tracked_data::boat::ID_HURT,
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(self.get_hurt_time()),
|
VarInt(self.get_hurt_time()),
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::DAMAGE_WOBBLE_SIDE,
|
pumpkin_data::tracked_data::boat::ID_HURTDIR,
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(self.get_hurt_dir()),
|
|
||||||
),
|
|
||||||
Metadata::new(
|
|
||||||
TrackedData::ID_HURT,
|
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.get_hurt_time()),
|
|
||||||
),
|
|
||||||
Metadata::new(
|
|
||||||
TrackedData::ID_HURTDIR,
|
|
||||||
MetaDataType::INT,
|
|
||||||
VarInt(self.get_hurt_dir()),
|
VarInt(self.get_hurt_dir()),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
self.entity.send_meta_data(
|
self.entity.send_meta_data(
|
||||||
&[
|
&[Metadata::new(
|
||||||
Metadata::new(
|
pumpkin_data::tracked_data::boat::ID_DAMAGE,
|
||||||
TrackedData::DAMAGE_WOBBLE_STRENGTH,
|
self.get_damage(),
|
||||||
MetaDataType::FLOAT,
|
)],
|
||||||
self.get_damage(),
|
|
||||||
),
|
|
||||||
Metadata::new(
|
|
||||||
TrackedData::ID_DAMAGE,
|
|
||||||
MetaDataType::FLOAT,
|
|
||||||
self.get_damage(),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -273,8 +251,6 @@ impl VehicleEntity {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_protocol::codec::var_int::VarInt;
|
use pumpkin_protocol::codec::var_int::VarInt;
|
||||||
use pumpkin_protocol::java::client::play::Metadata;
|
use pumpkin_protocol::java::client::play::Metadata;
|
||||||
use pumpkin_util::version::JavaMinecraftVersion;
|
use pumpkin_util::version::JavaMinecraftVersion;
|
||||||
@ -282,18 +258,8 @@ mod tests {
|
|||||||
fn wobble_integer_metadata(version: JavaMinecraftVersion) -> Vec<u8> {
|
fn wobble_integer_metadata(version: JavaMinecraftVersion) -> Vec<u8> {
|
||||||
let mut bytes = Vec::new();
|
let mut bytes = Vec::new();
|
||||||
for metadata in [
|
for metadata in [
|
||||||
Metadata::new(
|
Metadata::new(pumpkin_data::tracked_data::boat::ID_HURT, VarInt(10)),
|
||||||
TrackedData::DAMAGE_WOBBLE_TICKS,
|
Metadata::new(pumpkin_data::tracked_data::boat::ID_HURTDIR, VarInt(-1)),
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(10),
|
|
||||||
),
|
|
||||||
Metadata::new(
|
|
||||||
TrackedData::DAMAGE_WOBBLE_SIDE,
|
|
||||||
MetaDataType::INTEGER,
|
|
||||||
VarInt(-1),
|
|
||||||
),
|
|
||||||
Metadata::new(TrackedData::ID_HURT, MetaDataType::INT, VarInt(10)),
|
|
||||||
Metadata::new(TrackedData::ID_HURTDIR, MetaDataType::INT, VarInt(-1)),
|
|
||||||
] {
|
] {
|
||||||
metadata.write(&mut bytes, &version).unwrap();
|
metadata.write(&mut bytes, &version).unwrap();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,8 +62,6 @@ use pumpkin_data::dimension::Dimension;
|
|||||||
use pumpkin_data::entity::MobCategory;
|
use pumpkin_data::entity::MobCategory;
|
||||||
use pumpkin_data::fluid::{Falling, FluidProperties, FluidState};
|
use pumpkin_data::fluid::{Falling, FluidProperties, FluidState};
|
||||||
use pumpkin_data::game_rules::{GameRule, GameRuleValue};
|
use pumpkin_data::game_rules::{GameRule, GameRuleValue};
|
||||||
use pumpkin_data::meta_data_type::MetaDataType;
|
|
||||||
use pumpkin_data::tracked_data::TrackedData;
|
|
||||||
use pumpkin_data::{
|
use pumpkin_data::{
|
||||||
Block, BlockStateId,
|
Block, BlockStateId,
|
||||||
entity::{EntityStatus, EntityType},
|
entity::{EntityStatus, EntityType},
|
||||||
@ -887,13 +885,11 @@ impl World {
|
|||||||
let mut buf = Vec::new();
|
let mut buf = Vec::new();
|
||||||
for meta in [
|
for meta in [
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::PLAYER_MODE_CUSTOMISATION,
|
pumpkin_data::tracked_data::player::PLAYER_MODE_CUSTOMISATION,
|
||||||
MetaDataType::BYTE,
|
|
||||||
skin_parts,
|
skin_parts,
|
||||||
),
|
),
|
||||||
Metadata::new(
|
Metadata::new(
|
||||||
TrackedData::PLAYER_MODE_CUSTOMIZATION_ID,
|
pumpkin_data::tracked_data::player::PLAYER_MODE_CUSTOMIZATION_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
skin_parts,
|
skin_parts,
|
||||||
),
|
),
|
||||||
] {
|
] {
|
||||||
@ -3385,16 +3381,14 @@ impl World {
|
|||||||
let mut buf = Vec::new();
|
let mut buf = Vec::new();
|
||||||
{
|
{
|
||||||
let meta = Metadata::new(
|
let meta = Metadata::new(
|
||||||
TrackedData::PLAYER_MODE_CUSTOMISATION,
|
pumpkin_data::tracked_data::player::PLAYER_MODE_CUSTOMISATION,
|
||||||
MetaDataType::BYTE,
|
|
||||||
config.skin_parts,
|
config.skin_parts,
|
||||||
);
|
);
|
||||||
let _ = meta.write(&mut buf, &client.version.load());
|
let _ = meta.write(&mut buf, &client.version.load());
|
||||||
};
|
};
|
||||||
{
|
{
|
||||||
let meta = Metadata::new(
|
let meta = Metadata::new(
|
||||||
TrackedData::PLAYER_MODE_CUSTOMIZATION_ID,
|
pumpkin_data::tracked_data::player::PLAYER_MODE_CUSTOMIZATION_ID,
|
||||||
MetaDataType::BYTE,
|
|
||||||
config.skin_parts,
|
config.skin_parts,
|
||||||
);
|
);
|
||||||
let _ = meta.write(&mut buf, &client.version.load());
|
let _ = meta.write(&mut buf, &client.version.load());
|
||||||
|
|||||||
@ -239,6 +239,7 @@ pub fn write_generated_file(new_code: &str, out_file: &str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Error returned when `rustfmt` is unavailable or fails to format code.
|
/// Error returned when `rustfmt` is unavailable or fails to format code.
|
||||||
|
#[derive(Debug)]
|
||||||
pub struct RustFmtError;
|
pub struct RustFmtError;
|
||||||
|
|
||||||
/// Formats a Rust source string by piping it through `rustfmt`.
|
/// Formats a Rust source string by piping it through `rustfmt`.
|
||||||
|
|||||||
@ -5,6 +5,25 @@ use quote::{format_ident, quote};
|
|||||||
|
|
||||||
use crate::version::JavaMinecraftVersion;
|
use crate::version::JavaMinecraftVersion;
|
||||||
|
|
||||||
|
fn canonicalize_type_name(name: &str) -> String {
|
||||||
|
match name {
|
||||||
|
"integer" | "int" => "int".to_string(),
|
||||||
|
"entity_pose" | "pose" => "pose".to_string(),
|
||||||
|
"facing" | "direction" => "direction".to_string(),
|
||||||
|
"text_component" | "component" => "component".to_string(),
|
||||||
|
"optional_text_component" | "optional_component" => "optional_component".to_string(),
|
||||||
|
"optional_int" | "optional_unsigned_int" => "optional_unsigned_int".to_string(),
|
||||||
|
"vector_3f" | "vector3" => "vector3".to_string(),
|
||||||
|
"quaternion_f" | "quaternion" => "quaternion".to_string(),
|
||||||
|
"rotation" | "rotations" => "rotations".to_string(),
|
||||||
|
"particle_list" | "particles" => "particles".to_string(),
|
||||||
|
"copper_golem_state" | "weathering_copper_state" => "weathering_copper_state".to_string(),
|
||||||
|
"profile" | "resolvable_profile" => "resolvable_profile".to_string(),
|
||||||
|
"arm" | "humanoid_arm" => "humanoid_arm".to_string(),
|
||||||
|
other => other.to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Generates the `TokenStream` for the `MetaDataType` struct with per-version ID fields and constants.
|
/// Generates the `TokenStream` for the `MetaDataType` struct with per-version ID fields and constants.
|
||||||
pub fn build() -> TokenStream {
|
pub fn build() -> TokenStream {
|
||||||
let assets = [
|
let assets = [
|
||||||
@ -31,7 +50,8 @@ pub fn build() -> TokenStream {
|
|||||||
serde_json::from_str(&fs::read_to_string(&path).unwrap())
|
serde_json::from_str(&fs::read_to_string(&path).unwrap())
|
||||||
.unwrap_or_else(|_| panic!("Failed to parse {file}"));
|
.unwrap_or_else(|_| panic!("Failed to parse {file}"));
|
||||||
for (name, id) in parsed {
|
for (name, id) in parsed {
|
||||||
handlers_map.entry(name).or_default().insert(ver, id);
|
let canonical = canonicalize_type_name(&name);
|
||||||
|
handlers_map.entry(canonical).or_default().insert(ver, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,6 +85,22 @@ pub fn build() -> TokenStream {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let aliases = quote! {
|
||||||
|
pub const INTEGER: MetaDataType = Self::INT;
|
||||||
|
pub const ENTITY_POSE: MetaDataType = Self::POSE;
|
||||||
|
pub const FACING: MetaDataType = Self::DIRECTION;
|
||||||
|
pub const TEXT_COMPONENT: MetaDataType = Self::COMPONENT;
|
||||||
|
pub const OPTIONAL_TEXT_COMPONENT: MetaDataType = Self::OPTIONAL_COMPONENT;
|
||||||
|
pub const OPTIONAL_INT: MetaDataType = Self::OPTIONAL_UNSIGNED_INT;
|
||||||
|
pub const VECTOR_3F: MetaDataType = Self::VECTOR3;
|
||||||
|
pub const QUATERNION_F: MetaDataType = Self::QUATERNION;
|
||||||
|
pub const ROTATION: MetaDataType = Self::ROTATIONS;
|
||||||
|
pub const PARTICLE_LIST: MetaDataType = Self::PARTICLES;
|
||||||
|
pub const COPPER_GOLEM_STATE: MetaDataType = Self::WEATHERING_COPPER_STATE;
|
||||||
|
pub const PROFILE: MetaDataType = Self::RESOLVABLE_PROFILE;
|
||||||
|
pub const ARM: MetaDataType = Self::HUMANOID_ARM;
|
||||||
|
};
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
||||||
pub struct MetaDataType {
|
pub struct MetaDataType {
|
||||||
@ -74,6 +110,8 @@ pub fn build() -> TokenStream {
|
|||||||
impl MetaDataType {
|
impl MetaDataType {
|
||||||
#variants
|
#variants
|
||||||
|
|
||||||
|
#aliases
|
||||||
|
|
||||||
pub const fn id(&self, version: pumpkin_util::version::JavaMinecraftVersion) -> i32 {
|
pub const fn id(&self, version: pumpkin_util::version::JavaMinecraftVersion) -> i32 {
|
||||||
match version {
|
match version {
|
||||||
#to_id_arms
|
#to_id_arms
|
||||||
|
|||||||
@ -1,13 +1,26 @@
|
|||||||
|
use std::{
|
||||||
|
collections::{BTreeMap, BTreeSet},
|
||||||
|
fs,
|
||||||
|
};
|
||||||
|
|
||||||
use proc_macro2::TokenStream;
|
use proc_macro2::TokenStream;
|
||||||
use quote::{format_ident, quote};
|
use quote::{format_ident, quote};
|
||||||
use std::{collections::BTreeMap, fs};
|
use serde::Deserialize;
|
||||||
|
|
||||||
use crate::version::JavaMinecraftVersion;
|
use crate::version::JavaMinecraftVersion;
|
||||||
|
|
||||||
/// The newest protocol version used as the fallback for unknown versions in `TrackedId::get`.
|
/// The newest protocol version used as the fallback for unknown versions in `TrackedId::get`.
|
||||||
const LATEST_VERSION: JavaMinecraftVersion = JavaMinecraftVersion::V_26_2;
|
const LATEST_VERSION: JavaMinecraftVersion = JavaMinecraftVersion::V_26_2;
|
||||||
|
|
||||||
/// Generates the `TokenStream` for `TrackedId`, `TrackedData`, and all per-entity tracking constants.
|
#[derive(Deserialize)]
|
||||||
|
struct RawTrackedField {
|
||||||
|
id: u8,
|
||||||
|
r#type: String,
|
||||||
|
#[allow(dead_code)]
|
||||||
|
type_id: u8,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Generates the `TokenStream` for `TrackedId`, `TrackedData`, and all per-entity tracking modules.
|
||||||
pub(crate) fn build() -> TokenStream {
|
pub(crate) fn build() -> TokenStream {
|
||||||
let assets = [
|
let assets = [
|
||||||
(JavaMinecraftVersion::V_1_21, "1_21_tracked_data.json"),
|
(JavaMinecraftVersion::V_1_21, "1_21_tracked_data.json"),
|
||||||
@ -25,108 +38,38 @@ pub(crate) fn build() -> TokenStream {
|
|||||||
let mut versions = BTreeMap::new();
|
let mut versions = BTreeMap::new();
|
||||||
for (ver, file) in assets {
|
for (ver, file) in assets {
|
||||||
let path = format!("../../assets/tracked_data/{file}");
|
let path = format!("../../assets/tracked_data/{file}");
|
||||||
|
if let Ok(content) = fs::read_to_string(&path) {
|
||||||
let content = fs::read_to_string(&path)
|
if let Ok(parsed) = serde_json::from_str::<
|
||||||
.unwrap_or_else(|e| panic!("Failed to read JSON file: {path} {e}"));
|
BTreeMap<String, BTreeMap<String, RawTrackedField>>,
|
||||||
let mut parsed: BTreeMap<String, u8> = serde_json::from_str(&content)
|
>(&content)
|
||||||
.unwrap_or_else(|e| panic!("Failed to parse {path}: {e}"));
|
{
|
||||||
|
versions.insert(ver, parsed);
|
||||||
// The upstream flattened asset loses duplicate Mojang field names.
|
}
|
||||||
// Before 26.1 the wolf tracker was named VARIANT; newer mappings use
|
|
||||||
// DATA_VARIANT_ID, which collides with unrelated entity fields in the
|
|
||||||
// flattened table. Preserve the legacy value and set the entity-scoped
|
|
||||||
// ID for the new mappings explicitly.
|
|
||||||
let wolf_variant_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(23),
|
|
||||||
_ => parsed.get("VARIANT").copied(),
|
|
||||||
};
|
|
||||||
if let Some(id) = wolf_variant_id {
|
|
||||||
parsed.insert("WOLF_VARIANT_ID".to_owned(), id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let cat_variant_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(20),
|
|
||||||
_ => parsed.get("CAT_VARIANT").copied().or(Some(19)),
|
|
||||||
};
|
|
||||||
if let Some(id) = cat_variant_id {
|
|
||||||
parsed.insert("CAT_VARIANT".to_owned(), id);
|
|
||||||
parsed.insert("CAT_VARIANT_ID".to_owned(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
let cat_collar_color_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(23),
|
|
||||||
_ => Some(22),
|
|
||||||
};
|
|
||||||
if let Some(id) = cat_collar_color_id {
|
|
||||||
parsed.insert("CAT_COLLAR_COLOR".to_owned(), id);
|
|
||||||
parsed.insert("CAT_COLLAR_COLOR_ID".to_owned(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
let wolf_collar_color_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(21),
|
|
||||||
_ => Some(20),
|
|
||||||
};
|
|
||||||
if let Some(id) = wolf_collar_color_id {
|
|
||||||
parsed.insert("WOLF_COLLAR_COLOR".to_owned(), id);
|
|
||||||
parsed.insert("WOLF_COLLAR_COLOR_ID".to_owned(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
let sound_variant_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(24),
|
|
||||||
JavaMinecraftVersion::V_1_21_5
|
|
||||||
| JavaMinecraftVersion::V_1_21_6
|
|
||||||
| JavaMinecraftVersion::V_1_21_7
|
|
||||||
| JavaMinecraftVersion::V_1_21_9
|
|
||||||
| JavaMinecraftVersion::V_1_21_11 => Some(23),
|
|
||||||
_ => None,
|
|
||||||
};
|
|
||||||
if let Some(id) = sound_variant_id {
|
|
||||||
parsed.insert("SOUND_VARIANT".to_owned(), id);
|
|
||||||
parsed.insert("SOUND_VARIANT_ID".to_owned(), id);
|
|
||||||
parsed.insert("CAT_SOUND_VARIANT_ID".to_owned(), id);
|
|
||||||
parsed.insert("WOLF_SOUND_VARIANT_ID".to_owned(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
let is_lying_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(21),
|
|
||||||
_ => Some(20),
|
|
||||||
};
|
|
||||||
if let Some(id) = is_lying_id {
|
|
||||||
parsed.insert("IS_LYING".to_owned(), id);
|
|
||||||
parsed.insert("IN_SLEEPING_POSE".to_owned(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
let relax_state_one_id = match ver {
|
|
||||||
JavaMinecraftVersion::V_26_1 | JavaMinecraftVersion::V_26_2 => Some(22),
|
|
||||||
_ => Some(21),
|
|
||||||
};
|
|
||||||
if let Some(id) = relax_state_one_id {
|
|
||||||
parsed.insert("RELAX_STATE_ONE".to_owned(), id);
|
|
||||||
parsed.insert("HEAD_DOWN".to_owned(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
versions.insert(ver, parsed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let tracked_data_struct = generate_struct(&versions);
|
if versions.is_empty() {
|
||||||
let constants = generate_consts(&versions);
|
panic!("No tracked data asset files found in assets/tracked_data");
|
||||||
|
}
|
||||||
|
|
||||||
|
let tracked_id_struct = generate_tracked_id_struct(&versions);
|
||||||
|
let tracked_data_struct = generate_tracked_data_struct();
|
||||||
|
let entity_modules = generate_entity_modules(&versions);
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
|
use crate::meta_data_type::MetaDataType;
|
||||||
use pumpkin_util::version::JavaMinecraftVersion;
|
use pumpkin_util::version::JavaMinecraftVersion;
|
||||||
|
|
||||||
|
#tracked_id_struct
|
||||||
|
|
||||||
#tracked_data_struct
|
#tracked_data_struct
|
||||||
|
|
||||||
pub struct TrackedData;
|
#entity_modules
|
||||||
|
|
||||||
impl TrackedData {
|
|
||||||
#constants
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generates the `TrackedId` struct definition with one `u8` field per supported version.
|
/// Generates the `TrackedId` struct definition with one `u8` field per supported version.
|
||||||
fn generate_struct<T>(versions: &BTreeMap<JavaMinecraftVersion, T>) -> TokenStream {
|
fn generate_tracked_id_struct<T>(versions: &BTreeMap<JavaMinecraftVersion, T>) -> TokenStream {
|
||||||
// Build struct fields
|
|
||||||
let mut struct_fields = TokenStream::new();
|
let mut struct_fields = TokenStream::new();
|
||||||
for ver in versions.keys() {
|
for ver in versions.keys() {
|
||||||
let ident = ver.to_field_ident();
|
let ident = ver.to_field_ident();
|
||||||
@ -135,9 +78,12 @@ fn generate_struct<T>(versions: &BTreeMap<JavaMinecraftVersion, T>) -> TokenStre
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let latest_field_ident = LATEST_VERSION.to_field_ident();
|
let latest_field_ident = if versions.contains_key(&LATEST_VERSION) {
|
||||||
|
LATEST_VERSION.to_field_ident()
|
||||||
|
} else {
|
||||||
|
versions.keys().last().unwrap().to_field_ident()
|
||||||
|
};
|
||||||
|
|
||||||
// Build match arms
|
|
||||||
let mut match_arms = TokenStream::new();
|
let mut match_arms = TokenStream::new();
|
||||||
for ver in versions.keys() {
|
for ver in versions.keys() {
|
||||||
let ident = ver.to_field_ident();
|
let ident = ver.to_field_ident();
|
||||||
@ -147,12 +93,14 @@ fn generate_struct<T>(versions: &BTreeMap<JavaMinecraftVersion, T>) -> TokenStre
|
|||||||
}
|
}
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||||
pub struct TrackedId {
|
pub struct TrackedId {
|
||||||
#struct_fields
|
#struct_fields
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TrackedId {
|
impl TrackedId {
|
||||||
pub fn get(&self, version: &JavaMinecraftVersion) -> u8 {
|
#[must_use]
|
||||||
|
pub const fn get(&self, version: &JavaMinecraftVersion) -> u8 {
|
||||||
match version {
|
match version {
|
||||||
#match_arms
|
#match_arms
|
||||||
_ => self.#latest_field_ident,
|
_ => self.#latest_field_ident,
|
||||||
@ -168,67 +116,324 @@ fn generate_struct<T>(versions: &BTreeMap<JavaMinecraftVersion, T>) -> TokenStre
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generates `TrackedId` constants for every tracked data key present in the latest version.
|
/// Generates the `TrackedData` struct with `id` and `type` fields.
|
||||||
fn generate_consts(versions: &BTreeMap<JavaMinecraftVersion, BTreeMap<String, u8>>) -> TokenStream {
|
fn generate_tracked_data_struct() -> TokenStream {
|
||||||
let mut constants = TokenStream::new();
|
quote! {
|
||||||
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||||
|
pub struct TrackedData {
|
||||||
|
pub id: TrackedId,
|
||||||
|
pub r#type: MetaDataType,
|
||||||
|
}
|
||||||
|
|
||||||
// Union of all normalized names across every version
|
impl TrackedData {
|
||||||
let all_names: std::collections::BTreeSet<String> = versions
|
#[must_use]
|
||||||
|
pub const fn new(id: TrackedId, r#type: MetaDataType) -> Self {
|
||||||
|
Self { id, r#type }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
pub const fn get(&self, version: &JavaMinecraftVersion) -> u8 {
|
||||||
|
self.id.get(version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Generates entity-specific modules containing constants for all tracked fields.
|
||||||
|
fn generate_entity_modules(
|
||||||
|
versions: &BTreeMap<JavaMinecraftVersion, BTreeMap<String, BTreeMap<String, RawTrackedField>>>,
|
||||||
|
) -> TokenStream {
|
||||||
|
let mut modules = TokenStream::new();
|
||||||
|
|
||||||
|
let all_entities: BTreeSet<String> = versions
|
||||||
.values()
|
.values()
|
||||||
.flat_map(|data| data.keys().map(|k| normalize_name(k)))
|
.flat_map(|entities| entities.keys().cloned())
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
for final_name in &all_names {
|
for entity in &all_entities {
|
||||||
let ident = format_ident!("{}", final_name);
|
let entity_ident = format_ident!("{}", entity);
|
||||||
// Some versions prefix keys with DATA_ (Bedrock), others don't (Java)
|
|
||||||
// Try both forms so every version resolves correctly
|
|
||||||
let prefixed = format!("DATA_{final_name}");
|
|
||||||
let aliases: &[&str] = match final_name.as_str() {
|
|
||||||
"CUSTOM_NAME_VISIBLE" => &["NAME_VISIBLE"],
|
|
||||||
"IS_LYING" => &["IN_SLEEPING_POSE"],
|
|
||||||
"IN_SLEEPING_POSE" => &["IS_LYING"],
|
|
||||||
"RELAX_STATE_ONE" => &["HEAD_DOWN"],
|
|
||||||
"HEAD_DOWN" => &["RELAX_STATE_ONE"],
|
|
||||||
"SOUND_VARIANT" => &["SOUND_VARIANT_ID", "DATA_SOUND_VARIANT_ID"],
|
|
||||||
"SOUND_VARIANT_ID" => &["SOUND_VARIANT", "DATA_SOUND_VARIANT_ID"],
|
|
||||||
_ => &[],
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut fields = TokenStream::new();
|
let all_fields: BTreeSet<String> = versions
|
||||||
for (ver, data) in versions.iter() {
|
.values()
|
||||||
let field_ident = ver.to_field_ident();
|
.filter_map(|entities| entities.get(entity))
|
||||||
let id = data
|
.flat_map(|fields| fields.keys().cloned())
|
||||||
.get(final_name.as_str())
|
.collect();
|
||||||
.or_else(|| data.get(prefixed.as_str()))
|
|
||||||
.or_else(|| aliases.iter().find_map(|alias| data.get(*alias)))
|
let mut field_consts = TokenStream::new();
|
||||||
.copied()
|
let mut defined_idents = BTreeSet::new();
|
||||||
.unwrap_or(255);
|
|
||||||
fields.extend(quote! {
|
// 1. Generate base field constants
|
||||||
#field_ident: #id,
|
for field in &all_fields {
|
||||||
|
let field_upper = field.to_uppercase();
|
||||||
|
let field_ident = format_ident!("{}", field_upper);
|
||||||
|
defined_idents.insert(field_upper.clone());
|
||||||
|
|
||||||
|
let mut id_fields = TokenStream::new();
|
||||||
|
let mut latest_type = String::new();
|
||||||
|
|
||||||
|
for (ver, entities) in versions {
|
||||||
|
let ver_ident = ver.to_field_ident();
|
||||||
|
let field_info = entities.get(entity).and_then(|f| f.get(field));
|
||||||
|
let id = field_info.map_or(255u8, |info| info.id);
|
||||||
|
if let Some(info) = field_info {
|
||||||
|
latest_type = info.r#type.clone();
|
||||||
|
}
|
||||||
|
id_fields.extend(quote! {
|
||||||
|
#ver_ident: #id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let type_const_ident = format_ident!("{}", latest_type.to_uppercase());
|
||||||
|
|
||||||
|
field_consts.extend(quote! {
|
||||||
|
pub const #field_ident: TrackedData = TrackedData {
|
||||||
|
id: TrackedId { #id_fields },
|
||||||
|
r#type: MetaDataType::#type_const_ident,
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
constants.extend(quote! {
|
// 2. Generate normalized and semantic aliases
|
||||||
pub const #ident: TrackedId = TrackedId { #fields };
|
for field in &all_fields {
|
||||||
|
let field_upper = field.to_uppercase();
|
||||||
|
let field_ident = format_ident!("{}", field_upper);
|
||||||
|
|
||||||
|
let mut candidate_aliases = Vec::new();
|
||||||
|
|
||||||
|
// Strip DATA_ prefix
|
||||||
|
if let Some(stripped) = field_upper.strip_prefix("DATA_") {
|
||||||
|
candidate_aliases.push(stripped.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Strip _ID suffix
|
||||||
|
if let Some(stripped_id) = field_upper.strip_suffix("_ID") {
|
||||||
|
candidate_aliases.push(stripped_id.to_string());
|
||||||
|
if let Some(norm) = stripped_id.strip_prefix("DATA_") {
|
||||||
|
candidate_aliases.push(norm.to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Semantic aliases
|
||||||
|
add_semantic_aliases(entity, &field_upper, &mut candidate_aliases);
|
||||||
|
|
||||||
|
for alias in candidate_aliases {
|
||||||
|
if !defined_idents.contains(&alias) && is_valid_ident(&alias) {
|
||||||
|
defined_idents.insert(alias.clone());
|
||||||
|
let alias_ident = format_ident!("{}", alias);
|
||||||
|
field_consts.extend(quote! {
|
||||||
|
pub const #alias_ident: TrackedData = #field_ident;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modules.extend(quote! {
|
||||||
|
pub mod #entity_ident {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#field_consts
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
constants
|
modules
|
||||||
}
|
}
|
||||||
|
|
||||||
fn normalize_name(name: &str) -> String {
|
fn is_valid_ident(name: &str) -> bool {
|
||||||
let upper = name.to_uppercase();
|
if name.is_empty() {
|
||||||
let normalized = upper
|
return false;
|
||||||
.strip_prefix("DATA_")
|
}
|
||||||
.map_or(upper.clone(), str::to_string);
|
let mut chars = name.chars();
|
||||||
|
let first = chars.next().unwrap();
|
||||||
|
if !first.is_ascii_alphabetic() && first != '_' {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if !chars.all(|c| c.is_ascii_alphanumeric() || c == '_') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
!matches!(
|
||||||
|
name,
|
||||||
|
"as" | "break"
|
||||||
|
| "const"
|
||||||
|
| "continue"
|
||||||
|
| "crate"
|
||||||
|
| "else"
|
||||||
|
| "enum"
|
||||||
|
| "extern"
|
||||||
|
| "false"
|
||||||
|
| "fn"
|
||||||
|
| "for"
|
||||||
|
| "if"
|
||||||
|
| "impl"
|
||||||
|
| "in"
|
||||||
|
| "let"
|
||||||
|
| "loop"
|
||||||
|
| "match"
|
||||||
|
| "mod"
|
||||||
|
| "move"
|
||||||
|
| "mut"
|
||||||
|
| "pub"
|
||||||
|
| "ref"
|
||||||
|
| "return"
|
||||||
|
| "self"
|
||||||
|
| "Self"
|
||||||
|
| "static"
|
||||||
|
| "struct"
|
||||||
|
| "super"
|
||||||
|
| "trait"
|
||||||
|
| "true"
|
||||||
|
| "type"
|
||||||
|
| "unsafe"
|
||||||
|
| "use"
|
||||||
|
| "where"
|
||||||
|
| "while"
|
||||||
|
| "async"
|
||||||
|
| "await"
|
||||||
|
| "dyn"
|
||||||
|
| "abstract"
|
||||||
|
| "become"
|
||||||
|
| "box"
|
||||||
|
| "do"
|
||||||
|
| "final"
|
||||||
|
| "macro"
|
||||||
|
| "override"
|
||||||
|
| "priv"
|
||||||
|
| "typeof"
|
||||||
|
| "unsized"
|
||||||
|
| "virtual"
|
||||||
|
| "yield"
|
||||||
|
| "try"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// Mojang renamed the shared entity custom-name visibility tracker from
|
fn add_semantic_aliases(entity: &str, field: &str, aliases: &mut Vec<String>) {
|
||||||
// NAME_VISIBLE to DATA_CUSTOM_NAME_VISIBLE in newer mappings. Keep one
|
match (entity, field) {
|
||||||
// generated constant usable across both naming schemes.
|
(_, "DATA_FLAGS_ID") => {
|
||||||
if normalized == "NAME_VISIBLE" {
|
aliases.push("TAMEABLE_FLAGS".to_string());
|
||||||
"CUSTOM_NAME_VISIBLE".to_string()
|
aliases.push("FLAGS".to_string());
|
||||||
} else {
|
}
|
||||||
normalized
|
(_, "DATA_OWNERUUID_ID") => {
|
||||||
|
aliases.push("OWNER_UUID".to_string());
|
||||||
|
}
|
||||||
|
("creeper", "DATA_IS_POWERED") => {
|
||||||
|
aliases.push("CHARGED".to_string());
|
||||||
|
}
|
||||||
|
("creeper", "DATA_SWELL_DIR") => {
|
||||||
|
aliases.push("FUSE_ID".to_string());
|
||||||
|
}
|
||||||
|
("tnt" | "primed_tnt", "DATA_FUSE_ID") => {
|
||||||
|
aliases.push("FUSE_ID".to_string());
|
||||||
|
}
|
||||||
|
("sheep", "DATA_WOOL_ID") => {
|
||||||
|
aliases.push("WOOL_ID".to_string());
|
||||||
|
}
|
||||||
|
("cat", "IS_LYING") => {
|
||||||
|
aliases.push("IN_SLEEPING_POSE".to_string());
|
||||||
|
}
|
||||||
|
("cat", "RELAX_STATE_ONE") => {
|
||||||
|
aliases.push("HEAD_DOWN".to_string());
|
||||||
|
}
|
||||||
|
("cat", "DATA_SOUND_VARIANT_ID") | ("wolf", "DATA_SOUND_VARIANT_ID") => {
|
||||||
|
aliases.push("SOUND_VARIANT".to_string());
|
||||||
|
aliases.push("SOUND_VARIANT_ID".to_string());
|
||||||
|
}
|
||||||
|
("cat", "DATA_VARIANT_ID") => {
|
||||||
|
aliases.push("CAT_VARIANT".to_string());
|
||||||
|
aliases.push("CAT_VARIANT_ID".to_string());
|
||||||
|
aliases.push("VARIANT".to_string());
|
||||||
|
}
|
||||||
|
("wolf", "DATA_VARIANT_ID") => {
|
||||||
|
aliases.push("WOLF_VARIANT_ID".to_string());
|
||||||
|
aliases.push("VARIANT".to_string());
|
||||||
|
}
|
||||||
|
("cat", "DATA_COLLAR_COLOR") => {
|
||||||
|
aliases.push("CAT_COLLAR_COLOR".to_string());
|
||||||
|
aliases.push("COLLAR_COLOR".to_string());
|
||||||
|
}
|
||||||
|
("wolf", "DATA_COLLAR_COLOR") => {
|
||||||
|
aliases.push("WOLF_COLLAR_COLOR".to_string());
|
||||||
|
aliases.push("COLLAR_COLOR".to_string());
|
||||||
|
}
|
||||||
|
("player" | "avatar" | "mannequin", "DATA_PLAYER_MODE_CUSTOMISATION") => {
|
||||||
|
aliases.push("PLAYER_MODE_CUSTOMIZATION_ID".to_string());
|
||||||
|
}
|
||||||
|
("player" | "avatar" | "mannequin", "DATA_PLAYER_MAIN_HAND") => {
|
||||||
|
aliases.push("MAIN_ARM_ID".to_string());
|
||||||
|
}
|
||||||
|
("display" | "block_display" | "item_display" | "text_display", _) => match field {
|
||||||
|
"DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID" => {
|
||||||
|
aliases.push("START_INTERPOLATION".to_string());
|
||||||
|
}
|
||||||
|
"DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID" => {
|
||||||
|
aliases.push("INTERPOLATION_DURATION".to_string());
|
||||||
|
}
|
||||||
|
"DATA_POS_ROT_INTERPOLATION_DURATION_ID" => {
|
||||||
|
aliases.push("TELEPORT_DURATION".to_string());
|
||||||
|
}
|
||||||
|
"DATA_TRANSLATION_ID" => {
|
||||||
|
aliases.push("TRANSLATION".to_string());
|
||||||
|
}
|
||||||
|
"DATA_SCALE_ID" => {
|
||||||
|
aliases.push("SCALE".to_string());
|
||||||
|
}
|
||||||
|
"DATA_LEFT_ROTATION_ID" => {
|
||||||
|
aliases.push("LEFT_ROTATION".to_string());
|
||||||
|
}
|
||||||
|
"DATA_RIGHT_ROTATION_ID" => {
|
||||||
|
aliases.push("RIGHT_ROTATION".to_string());
|
||||||
|
}
|
||||||
|
"DATA_BILLBOARD_RENDER_CONSTRAINTS_ID" => {
|
||||||
|
aliases.push("BILLBOARD".to_string());
|
||||||
|
}
|
||||||
|
"DATA_BRIGHTNESS_OVERRIDE_ID" => {
|
||||||
|
aliases.push("BRIGHTNESS".to_string());
|
||||||
|
}
|
||||||
|
"DATA_VIEW_RANGE_ID" => {
|
||||||
|
aliases.push("VIEW_RANGE".to_string());
|
||||||
|
}
|
||||||
|
"DATA_SHADOW_RADIUS_ID" => {
|
||||||
|
aliases.push("SHADOW_RADIUS".to_string());
|
||||||
|
}
|
||||||
|
"DATA_SHADOW_STRENGTH_ID" => {
|
||||||
|
aliases.push("SHADOW_STRENGTH".to_string());
|
||||||
|
}
|
||||||
|
"DATA_WIDTH_ID" => {
|
||||||
|
aliases.push("WIDTH".to_string());
|
||||||
|
}
|
||||||
|
"DATA_HEIGHT_ID" => {
|
||||||
|
aliases.push("HEIGHT".to_string());
|
||||||
|
}
|
||||||
|
"DATA_GLOW_COLOR_OVERRIDE_ID" => {
|
||||||
|
aliases.push("GLOW_COLOR_OVERRIDE".to_string());
|
||||||
|
}
|
||||||
|
"DATA_BLOCK_STATE_ID" => {
|
||||||
|
aliases.push("BLOCK_STATE".to_string());
|
||||||
|
}
|
||||||
|
"DATA_ITEM_STACK_ID" => {
|
||||||
|
aliases.push("ITEM".to_string());
|
||||||
|
aliases.push("ITEM_STACK".to_string());
|
||||||
|
}
|
||||||
|
"DATA_ITEM_DISPLAY_ID" => {
|
||||||
|
aliases.push("ITEM_DISPLAY".to_string());
|
||||||
|
}
|
||||||
|
"DATA_TEXT_ID" => {
|
||||||
|
aliases.push("TEXT".to_string());
|
||||||
|
}
|
||||||
|
"DATA_LINE_WIDTH_ID" => {
|
||||||
|
aliases.push("LINE_WIDTH".to_string());
|
||||||
|
}
|
||||||
|
"DATA_BACKGROUND_COLOR_ID" => {
|
||||||
|
aliases.push("BACKGROUND".to_string());
|
||||||
|
}
|
||||||
|
"DATA_TEXT_OPACITY_ID" => {
|
||||||
|
aliases.push("TEXT_OPACITY".to_string());
|
||||||
|
}
|
||||||
|
"DATA_STYLE_FLAGS_ID" => {
|
||||||
|
aliases.push("TEXT_DISPLAY_FLAGS".to_string());
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
},
|
||||||
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,61 +443,12 @@ mod tests {
|
|||||||
use quote::quote;
|
use quote::quote;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn wolf_variant_keeps_its_entity_specific_v26_2_tracker_id() {
|
fn wolf_and_cat_have_correct_entity_specific_tracker_constants() {
|
||||||
let generated = build().to_string();
|
let generated = build().to_string();
|
||||||
|
|
||||||
assert!(generated.contains("WOLF_VARIANT_ID"));
|
assert!(generated.contains("mod wolf"));
|
||||||
let wolf = generated
|
assert!(generated.contains("mod cat"));
|
||||||
.split("WOLF_VARIANT_ID")
|
assert!(generated.contains("DATA_COLLAR_COLOR"));
|
||||||
.nth(1)
|
|
||||||
.expect("wolf tracker constant");
|
|
||||||
assert!(wolf.contains("v1_21_11 : 20u8"));
|
|
||||||
assert!(wolf.contains("v26_2 : 23u8"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn cat_trackers_keep_their_entity_specific_tracker_ids() {
|
|
||||||
let generated = build().to_string();
|
|
||||||
|
|
||||||
assert!(generated.contains("CAT_VARIANT"));
|
|
||||||
let cat_variant = generated
|
|
||||||
.split("CAT_VARIANT")
|
|
||||||
.nth(1)
|
|
||||||
.expect("cat variant constant");
|
|
||||||
assert!(cat_variant.contains("v1_21_11 : 19u8"));
|
|
||||||
assert!(cat_variant.contains("v26_2 : 20u8"));
|
|
||||||
|
|
||||||
assert!(generated.contains("IS_LYING"));
|
|
||||||
let is_lying = generated
|
|
||||||
.split("IS_LYING")
|
|
||||||
.nth(1)
|
|
||||||
.expect("is lying constant");
|
|
||||||
assert!(is_lying.contains("v1_21_11 : 20u8"));
|
|
||||||
assert!(is_lying.contains("v26_2 : 21u8"));
|
|
||||||
|
|
||||||
assert!(generated.contains("RELAX_STATE_ONE"));
|
|
||||||
let relax = generated
|
|
||||||
.split("RELAX_STATE_ONE")
|
|
||||||
.nth(1)
|
|
||||||
.expect("relax state one constant");
|
|
||||||
assert!(relax.contains("v1_21_11 : 21u8"));
|
|
||||||
assert!(relax.contains("v26_2 : 22u8"));
|
|
||||||
|
|
||||||
assert!(generated.contains("CAT_COLLAR_COLOR"));
|
|
||||||
let collar = generated
|
|
||||||
.split("CAT_COLLAR_COLOR")
|
|
||||||
.nth(1)
|
|
||||||
.expect("cat collar color constant");
|
|
||||||
assert!(collar.contains("v1_21_11 : 22u8"));
|
|
||||||
assert!(collar.contains("v26_2 : 23u8"));
|
|
||||||
|
|
||||||
assert!(generated.contains("SOUND_VARIANT"));
|
|
||||||
let sound = generated
|
|
||||||
.split("SOUND_VARIANT")
|
|
||||||
.nth(1)
|
|
||||||
.expect("sound variant constant");
|
|
||||||
assert!(sound.contains("v1_21_11 : 23u8"));
|
|
||||||
assert!(sound.contains("v26_2 : 24u8"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -300,8 +456,11 @@ mod tests {
|
|||||||
let checked_in =
|
let checked_in =
|
||||||
std::fs::read_to_string("../../crates/pumpkin-data/src/generated/tracked_data.rs")
|
std::fs::read_to_string("../../crates/pumpkin-data/src/generated/tracked_data.rs")
|
||||||
.expect("checked-in tracked data");
|
.expect("checked-in tracked data");
|
||||||
let parsed = syn::parse_file(&checked_in).expect("valid generated Rust");
|
let generated = crate::format_code(&build().to_string()).expect("valid rustfmt");
|
||||||
|
|
||||||
assert_eq!(quote!(#parsed).to_string(), build().to_string());
|
assert_eq!(
|
||||||
|
checked_in.trim(),
|
||||||
|
format!("/* This file is generated. Do not edit manually. */\n{generated}").trim()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user