Full Code of skyblueyoshi/TerraCraft for AI

master dabeb2789995 cached
3382 files
2.7 MB
850.0k tokens
1 requests
Download .txt
Showing preview only (3,424K chars total). Download the full file or copy to clipboard to get everything.
Repository: skyblueyoshi/TerraCraft
Branch: master
Commit: dabeb2789995
Files: 3382
Total size: 2.7 MB

Directory structure:
gitextract_ll5d4bnt/

├── DebugHelper.lua
├── DebugHelperConfig.lua
├── LICENSE
├── README.md
├── advancements/
│   ├── AdvancementTriggers.lua
│   ├── ancient_ingot.json
│   ├── ancient_wear.json
│   ├── blaze_rod.json
│   ├── bow.json
│   ├── bread.json
│   ├── brew.json
│   ├── bronze.json
│   ├── cake.json
│   ├── crafting_table.json
│   ├── crison_eye.json
│   ├── crison_eye_killed.json
│   ├── crossbow.json
│   ├── diamond.json
│   ├── diamond_ingot.json
│   ├── diamond_wear.json
│   ├── dungeon_eater.json
│   ├── dungeon_eater_killed.json
│   ├── enchant.json
│   ├── ender_chest.json
│   ├── ender_pearl.json
│   ├── farm.json
│   ├── flesh_ingot.json
│   ├── flesh_wear.json
│   ├── furnace.json
│   ├── ghast.json
│   ├── ghost.json
│   ├── ghost_crystal.json
│   ├── go_bone_dungeon.json
│   ├── go_dark_dungeon.json
│   ├── go_deep_snow.json
│   ├── go_desert_dungeon.json
│   ├── go_ghost_house.json
│   ├── go_ice_dungeon.json
│   ├── go_lava_dungeon.json
│   ├── gold.json
│   ├── gold_wear.json
│   ├── guardian.json
│   ├── gun.json
│   ├── hunter.json
│   ├── ice_element_ball.json
│   ├── inventory.json
│   ├── iron.json
│   ├── knight_ingot.json
│   ├── knight_wear.json
│   ├── lava.json
│   ├── leather.json
│   ├── magic_gold_wear.json
│   ├── magic_limit.json
│   ├── mine.json
│   ├── mine_bronze.json
│   ├── mine_copper.json
│   ├── mine_diamond.json
│   ├── mine_gold.json
│   ├── mine_iron.json
│   ├── mine_netherite.json
│   ├── mine_up.json
│   ├── mirror.json
│   ├── nether.json
│   ├── nether_destroyer.json
│   ├── nether_destroyer_killed.json
│   ├── netherite.json
│   ├── netherite_full_wear.json
│   ├── portal.json
│   ├── pumpkin_helmet.json
│   ├── recipe_book.json
│   ├── redstone.json
│   ├── redstone_wire.json
│   ├── repair.json
│   ├── rocket_boost.json
│   ├── snow_guard.json
│   ├── snow_queen.json
│   ├── snow_queen_killed.json
│   ├── staff.json
│   ├── star_wear.json
│   ├── steel.json
│   ├── stone.json
│   ├── strange_len.json
│   ├── super_diamond_sword.json
│   ├── super_diamond_wear.json
│   ├── sword.json
│   └── wood.json
├── api.lua
├── apis/
│   ├── Account.lua
│   ├── AccountUtils.lua
│   ├── Advancement.lua
│   ├── AdvancementUtils.lua
│   ├── Attack.lua
│   ├── BiomeData.lua
│   ├── BiomeUtils.lua
│   ├── BlockData.lua
│   ├── BlockEntity.lua
│   ├── BlockUtils.lua
│   ├── Buff.lua
│   ├── ClientBoundPacketWriter.lua
│   ├── ClientState.lua
│   ├── ClientStateManager.lua
│   ├── Container.lua
│   ├── DataWatcher.lua
│   ├── DeathReason.lua
│   ├── Defense.lua
│   ├── Direction.lua
│   ├── Effect.lua
│   ├── EffectUtils.lua
│   ├── Enchantment.lua
│   ├── EnchantmentData.lua
│   ├── EnchantmentUtils.lua
│   ├── Entity.lua
│   ├── EntityIndex.lua
│   ├── GameMode.lua
│   ├── GlobalBlock.lua
│   ├── GlobalNpc.lua
│   ├── GlobalPlayer.lua
│   ├── GuiContainer.lua
│   ├── Hitbox.lua
│   ├── Inventory.lua
│   ├── Item.lua
│   ├── ItemRegistry.lua
│   ├── ItemStack.lua
│   ├── ItemType.lua
│   ├── ItemUtils.lua
│   ├── JoinData.lua
│   ├── LangUtils.lua
│   ├── LightingUtils.lua
│   ├── MapPos.lua
│   ├── MapUtils.lua
│   ├── MiscUtils.lua
│   ├── Mod.lua
│   ├── ModBlock.lua
│   ├── ModBlockEntity.lua
│   ├── ModItem.lua
│   ├── ModNpc.lua
│   ├── ModProjectile.lua
│   ├── ModTextureData.lua
│   ├── ModTextureUtils.lua
│   ├── Npc.lua
│   ├── NpcType.lua
│   ├── NpcUtils.lua
│   ├── OreDataGroup.lua
│   ├── ParameterClick.lua
│   ├── ParameterDestroy.lua
│   ├── ParameterPlace.lua
│   ├── ParameterStrike.lua
│   ├── Player.lua
│   ├── PlayerUtils.lua
│   ├── Point.lua
│   ├── Projectile.lua
│   ├── ProjectileUtils.lua
│   ├── Recipe.lua
│   ├── RecipeConfig.lua
│   ├── RecipeSearchAction.lua
│   ├── RecipeUtils.lua
│   ├── Rectangle.lua
│   ├── Reg.lua
│   ├── ServerBoundPacketWriter.lua
│   ├── Shape.lua
│   ├── Skeleton.lua
│   ├── Skin.lua
│   ├── SkinUtils.lua
│   ├── Slot.lua
│   ├── SlotCommandQueue.lua
│   ├── SmartMode.lua
│   ├── SoundUtils.lua
│   ├── SpriteEx.lua
│   ├── Type.lua
│   ├── Utils.lua
│   ├── WorldData.lua
│   ├── WorldDataUtils.lua
│   ├── WorldGenArea.lua
│   ├── WorldGenChunkBuffer.lua
│   ├── WorldGenCode.lua
│   ├── WorldGenNoise.lua
│   └── engine_api/
│       ├── AnimationEvent.lua
│       ├── Animator2D.lua
│       ├── AnimatorData2D.lua
│       ├── App.lua
│       ├── Array.lua
│       ├── AssetBundle.lua
│       ├── AssetManager.lua
│       ├── AtlasInfos.lua
│       ├── AtlasLoader.lua
│       ├── Audio.lua
│       ├── ByteStream.lua
│       ├── Bytes.lua
│       ├── CameraComponentWrapper.lua
│       ├── CameraProjection.lua
│       ├── CanvasComponentWrapper.lua
│       ├── CanvasDisplayMode.lua
│       ├── ClipCollection2D.lua
│       ├── Color.lua
│       ├── ComponentID.lua
│       ├── ComponentWrapper.lua
│       ├── DateTime.lua
│       ├── FadingState.lua
│       ├── File.lua
│       ├── FileTimeType.lua
│       ├── FontManager.lua
│       ├── FontSprite.lua
│       ├── GameObject.lua
│       ├── GameWindow.lua
│       ├── GlobalHook.lua
│       ├── GraphicsDevice.lua
│       ├── HotKeyCombination.lua
│       ├── Hotfix.lua
│       ├── Image.lua
│       ├── ImageInfo.lua
│       ├── Input.lua
│       ├── IntegratedClient.lua
│       ├── IntegratedEnv.lua
│       ├── Joint2D.lua
│       ├── JointBody2D.lua
│       ├── JointCollection2D.lua
│       ├── Joystick.lua
│       ├── JoystickDevice.lua
│       ├── JsonUtil.lua
│       ├── KeyTrigger.lua
│       ├── Keyboard.lua
│       ├── Keys.lua
│       ├── ListenerID.lua
│       ├── Log.lua
│       ├── MathHelper.lua
│       ├── Matrix.lua
│       ├── MeshFilterComponentWrapper.lua
│       ├── MeshRendererComponentWrapper.lua
│       ├── Mouse.lua
│       ├── NetMode.lua
│       ├── ObbDouble.lua
│       ├── Path.lua
│       ├── Quaternion.lua
│       ├── Random.lua
│       ├── Rect.lua
│       ├── RectFloat.lua
│       ├── RectFloatEx.lua
│       ├── Registry.lua
│       ├── Rigidbody.lua
│       ├── Schedule.lua
│       ├── ScheduleID.lua
│       ├── SerializableType.lua
│       ├── Size.lua
│       ├── SliderDirection.lua
│       ├── Sprite.lua
│       ├── SpriteExData.lua
│       ├── TextAlignment.lua
│       ├── TextBuffer.lua
│       ├── TextEditLineType.lua
│       ├── TextHorizontalOverflow.lua
│       ├── TextStyle.lua
│       ├── TextVerticalOverflow.lua
│       ├── Texture.lua
│       ├── TextureLocation.lua
│       ├── TextureManager.lua
│       ├── TexturePacker.lua
│       ├── Time.lua
│       ├── TimeDiff.lua
│       ├── Touch.lua
│       ├── Transform.lua
│       ├── Transform2D.lua
│       ├── TransformComponentWrapper.lua
│       ├── UIButton.lua
│       ├── UICanvas.lua
│       ├── UIImage.lua
│       ├── UIInputField.lua
│       ├── UIJoystick.lua
│       ├── UINode.lua
│       ├── UINodeDrawLayer.lua
│       ├── UIPanel.lua
│       ├── UIScrollView.lua
│       ├── UISerializable.lua
│       ├── UISlices9.lua
│       ├── UISlider.lua
│       ├── UISprite.lua
│       ├── UISpriteStyle.lua
│       ├── UISwitch.lua
│       ├── UIText.lua
│       ├── UITexturePool.lua
│       ├── Vector2.lua
│       ├── Vector3.lua
│       ├── Vector4.lua
│       ├── cls.lua
│       └── utf8string.lua
├── atlas_config.json
├── biome_types/
│   ├── Nether.json
│   ├── Radiation.json
│   ├── Space.json
│   ├── Surface.json
│   ├── TwilightForest.json
│   └── Underground.json
├── biomes/
│   ├── nethers/
│   │   └── nether.json
│   ├── surfaces/
│   │   ├── badland.json
│   │   ├── desert.json
│   │   ├── flesh.json
│   │   ├── forest.json
│   │   ├── jungle.json
│   │   ├── mushroom_fields.json
│   │   ├── ocean.json
│   │   ├── snow_land.json
│   │   ├── soft_snow_land.json
│   │   ├── super_volcano.json
│   │   ├── tainted_land.json
│   │   └── volcano.json
│   └── undergrounds/
│       ├── andesite_cave.json
│       ├── blue_cave.json
│       ├── blue_mushroom_cave.json
│       ├── deep_ice_cave.json
│       ├── deep_magma_cave.json
│       ├── desert_cave.json
│       ├── diorite_cave.json
│       ├── flesh_cave.json
│       ├── granite_cave.json
│       ├── ice_cave.json
│       ├── jungle_cave.json
│       ├── lava_cave.json
│       ├── magma_cave.json
│       ├── mud_cave.json
│       ├── mushroom_cave.json
│       ├── normal_cave.json
│       ├── stone_cave.json
│       ├── tainted_cave.json
│       └── waste_cave.json
├── block_entity_ai/
│   ├── BrewingEntity.json
│   ├── BrewingEntity.lua
│   ├── Chest30Entity.json
│   ├── Chest30Entity.lua
│   ├── IChestEntity.lua
│   ├── IShooterEntity.lua
│   ├── Shooter9Entity.json
│   ├── Shooter9Entity.lua
│   ├── SmeltEntity.json
│   └── SmeltEntity.lua
├── block_presets/
│   ├── Anvil.json
│   ├── Anvil.lua
│   ├── Bed.json
│   ├── Brewing.json
│   ├── BurnerTower.json
│   ├── Button.json
│   ├── Cake.json
│   ├── Cobweb.json
│   ├── Cobweb.lua
│   ├── CraftingTable.json
│   ├── CraftingTable.lua
│   ├── Crop.json
│   ├── CrystalTower.json
│   ├── DaylightTrigger.json
│   ├── DoorClosed.json
│   ├── DoorOpened.json
│   ├── Enchantment.json
│   ├── EnchantmentTable.lua
│   ├── EndRod.json
│   ├── EnderStorage.json
│   ├── EnderStorage.lua
│   ├── Facing.json
│   ├── Farmland.json
│   ├── Furnace.json
│   ├── Furnace.lua
│   ├── Grass.json
│   ├── GrowGrass.json
│   ├── HeartCrystal.json
│   ├── HeartCrystal.lua
│   ├── IceSmelt.json
│   ├── InsideStorage.json
│   ├── Kelp.json
│   ├── MagmaBlock.json
│   ├── MagmaBlock.lua
│   ├── Melon.json
│   ├── MelonStem.json
│   ├── MoonlightTrigger.json
│   ├── NetherAltar.json
│   ├── NetherAltar.lua
│   ├── Painting.json
│   ├── PortalDoor.json
│   ├── Pot.json
│   ├── Pumpkin.json
│   ├── RandomDisplay.json
│   ├── RedstoneLamp.json
│   ├── RedstonePlate.json
│   ├── RedstonePlate.lua
│   ├── RedstoneTorch.json
│   ├── Sapling.json
│   ├── Shooter.json
│   ├── SnowQueenBall.json
│   ├── SnowQueenBall.lua
│   ├── SoulSand.json
│   ├── SoulSand.lua
│   ├── Sponge.json
│   ├── Stalactite.json
│   ├── Storage.json
│   ├── Sugarcane.json
│   ├── TNT.json
│   ├── Torch.json
│   ├── TrapStorage.json
│   ├── Vine.json
│   └── WetSponge.json
├── blocks/
│   ├── furnitures/
│   │   ├── beds/
│   │   │   ├── wooden_bed_black.json
│   │   │   ├── wooden_bed_blue.json
│   │   │   ├── wooden_bed_brown.json
│   │   │   ├── wooden_bed_cyan.json
│   │   │   ├── wooden_bed_gray.json
│   │   │   ├── wooden_bed_green.json
│   │   │   ├── wooden_bed_light_blue.json
│   │   │   ├── wooden_bed_light_gray.json
│   │   │   ├── wooden_bed_lime.json
│   │   │   ├── wooden_bed_magenta.json
│   │   │   ├── wooden_bed_orange.json
│   │   │   ├── wooden_bed_pink.json
│   │   │   ├── wooden_bed_purple.json
│   │   │   ├── wooden_bed_red.json
│   │   │   ├── wooden_bed_white.json
│   │   │   └── wooden_bed_yellow.json
│   │   ├── benches/
│   │   │   ├── bench_acacia.json
│   │   │   ├── bench_birch.json
│   │   │   ├── bench_dark_oak.json
│   │   │   ├── bench_jungle.json
│   │   │   ├── bench_nether.json
│   │   │   ├── bench_oak.json
│   │   │   ├── bench_palm.json
│   │   │   ├── bench_spruce.json
│   │   │   ├── bench_tainted.json
│   │   │   └── bench_volcano.json
│   │   ├── bookcases/
│   │   │   ├── bookcase_acacia.json
│   │   │   ├── bookcase_birch.json
│   │   │   ├── bookcase_dark_oak.json
│   │   │   ├── bookcase_jungle.json
│   │   │   ├── bookcase_nether.json
│   │   │   ├── bookcase_oak.json
│   │   │   ├── bookcase_palm.json
│   │   │   ├── bookcase_spruce.json
│   │   │   ├── bookcase_tainted.json
│   │   │   └── bookcase_volcano.json
│   │   ├── bosses/
│   │   │   ├── nether_altar.json
│   │   │   └── snow_glass_ball.json
│   │   ├── cabinet/
│   │   │   ├── cabinet_acacia.json
│   │   │   ├── cabinet_birch.json
│   │   │   ├── cabinet_dark_oak.json
│   │   │   ├── cabinet_jungle.json
│   │   │   ├── cabinet_nether.json
│   │   │   ├── cabinet_oak.json
│   │   │   ├── cabinet_palm.json
│   │   │   ├── cabinet_spruce.json
│   │   │   ├── cabinet_tainted.json
│   │   │   └── cabinet_volcano.json
│   │   ├── chairs/
│   │   │   ├── chair_acacia.json
│   │   │   ├── chair_birch.json
│   │   │   ├── chair_dark_oak.json
│   │   │   ├── chair_jungle.json
│   │   │   ├── chair_nether.json
│   │   │   ├── chair_oak.json
│   │   │   ├── chair_palm.json
│   │   │   ├── chair_spruce.json
│   │   │   ├── chair_tainted.json
│   │   │   └── chair_volcano.json
│   │   ├── chests/
│   │   │   ├── barrel.json
│   │   │   ├── chest.json
│   │   │   ├── ender_chest.json
│   │   │   ├── nether_chest.json
│   │   │   ├── shulker_box.json
│   │   │   ├── stone_chest.json
│   │   │   └── trapped_chest.json
│   │   ├── doors/
│   │   │   ├── door_nether.json
│   │   │   ├── door_nether_open.json
│   │   │   ├── iron_door.json
│   │   │   ├── iron_door_open.json
│   │   │   ├── wooden_door_acacia.json
│   │   │   ├── wooden_door_acacia_open.json
│   │   │   ├── wooden_door_birch.json
│   │   │   ├── wooden_door_birch_open.json
│   │   │   ├── wooden_door_dark_oak.json
│   │   │   ├── wooden_door_dark_oak_open.json
│   │   │   ├── wooden_door_jungle.json
│   │   │   ├── wooden_door_jungle_open.json
│   │   │   ├── wooden_door_oak.json
│   │   │   ├── wooden_door_oak_open.json
│   │   │   ├── wooden_door_palm.json
│   │   │   ├── wooden_door_palm_open.json
│   │   │   ├── wooden_door_spruce.json
│   │   │   ├── wooden_door_spruce_open.json
│   │   │   ├── wooden_door_tainted.json
│   │   │   ├── wooden_door_tainted_open.json
│   │   │   ├── wooden_door_volcano.json
│   │   │   └── wooden_door_volcano_open.json
│   │   ├── farms/
│   │   │   ├── carrot.json
│   │   │   ├── melon_stem.json
│   │   │   ├── nether_wart.json
│   │   │   ├── potato.json
│   │   │   ├── pumpkin.json
│   │   │   ├── pumpkin_carved.json
│   │   │   ├── pumpkin_stem.json
│   │   │   ├── sugar_cane.json
│   │   │   ├── watermelon.json
│   │   │   └── wheat.json
│   │   ├── flowers/
│   │   │   ├── allium.json
│   │   │   ├── azure_bluet.json
│   │   │   ├── blue_orchid.json
│   │   │   ├── dandelion.json
│   │   │   ├── fern.json
│   │   │   ├── lilac.json
│   │   │   ├── orange_tulip.json
│   │   │   ├── peony.json
│   │   │   ├── pink_tulip.json
│   │   │   ├── poppy.json
│   │   │   ├── red_tulip.json
│   │   │   ├── rose_bush.json
│   │   │   ├── sunflower.json
│   │   │   └── white_tulip.json
│   │   ├── grasses/
│   │   │   ├── blood_grass.json
│   │   │   ├── eyeball_grass.json
│   │   │   ├── grass.json
│   │   │   ├── large_eyeball_grass.json
│   │   │   └── tainted_grass.json
│   │   ├── lightings/
│   │   │   ├── candle.json
│   │   │   ├── candle_holder.json
│   │   │   ├── chandeliers.json
│   │   │   ├── fire_lamp.json
│   │   │   ├── jack_o_lantern.json
│   │   │   ├── lantern.json
│   │   │   └── nether_lamp.json
│   │   ├── misc/
│   │   │   ├── anvil.json
│   │   │   ├── book.json
│   │   │   ├── brewing_stand.json
│   │   │   ├── cake.json
│   │   │   ├── campfire.json
│   │   │   ├── cauldron.json
│   │   │   ├── cobweb.json
│   │   │   ├── crafting_table.json
│   │   │   ├── enchantment_table.json
│   │   │   ├── flower_pot.json
│   │   │   ├── flower_pot_large.json
│   │   │   ├── furnace.json
│   │   │   ├── health_crystal.json
│   │   │   ├── jukebox.json
│   │   │   ├── pot.json
│   │   │   ├── potion.json
│   │   │   ├── sign.json
│   │   │   ├── skull.json
│   │   │   └── thorn.json
│   │   ├── mushrooms/
│   │   │   ├── brown_mushroom.json
│   │   │   ├── glowing_mushroom.json
│   │   │   ├── large_brown_mushroom.json
│   │   │   ├── large_poison_mushroom.json
│   │   │   ├── large_red_mushroom.json
│   │   │   ├── poison_mushroom.json
│   │   │   └── red_mushroom.json
│   │   ├── paintings/
│   │   │   ├── painting.json
│   │   │   ├── painting_2x2.json
│   │   │   ├── painting_2x4.json
│   │   │   ├── painting_4x2.json
│   │   │   ├── painting_4x4.json
│   │   │   ├── painting_8x4.json
│   │   │   ├── painting_8x6.json
│   │   │   └── painting_8x8.json
│   │   ├── plants/
│   │   │   └── bush.json
│   │   ├── redstones/
│   │   │   ├── daylight_sensor.json
│   │   │   ├── daylight_sensor_inverted.json
│   │   │   ├── dispenser.json
│   │   │   ├── lever.json
│   │   │   ├── pressure_plates/
│   │   │   │   ├── pressure_plate_golden.json
│   │   │   │   ├── pressure_plate_iron.json
│   │   │   │   ├── pressure_plate_stone.json
│   │   │   │   └── pressure_plate_wooden.json
│   │   │   ├── redstone_lamp.json
│   │   │   ├── stone_button.json
│   │   │   └── wooden_button.json
│   │   ├── rocks/
│   │   │   ├── rock.json
│   │   │   └── rock_waste.json
│   │   ├── saplings/
│   │   │   ├── sapling_acacia.json
│   │   │   ├── sapling_bare_oak.json
│   │   │   ├── sapling_birch.json
│   │   │   ├── sapling_cactus.json
│   │   │   ├── sapling_dark_oak.json
│   │   │   ├── sapling_jungle.json
│   │   │   ├── sapling_oak.json
│   │   │   ├── sapling_palm.json
│   │   │   ├── sapling_spruce.json
│   │   │   ├── sapling_tainted.json
│   │   │   └── sapling_volcano.json
│   │   ├── seas/
│   │   │   ├── coral.json
│   │   │   ├── kelp.json
│   │   │   ├── sea_grass.json
│   │   │   └── sea_shell.json
│   │   ├── small_trees/
│   │   │   ├── small_tree_desert.json
│   │   │   ├── small_tree_normal.json
│   │   │   ├── small_tree_snowy.json
│   │   │   ├── small_tree_tainted.json
│   │   │   └── small_tree_waste.json
│   │   ├── stabs/
│   │   │   ├── stab_hanging_tainted.json
│   │   │   └── stab_tainted.json
│   │   ├── stalactites/
│   │   │   ├── stalactite_andesite.json
│   │   │   ├── stalactite_desert.json
│   │   │   ├── stalactite_diorite.json
│   │   │   ├── stalactite_granite.json
│   │   │   ├── stalactite_hanging_andesite.json
│   │   │   ├── stalactite_hanging_desert.json
│   │   │   ├── stalactite_hanging_diorite.json
│   │   │   ├── stalactite_hanging_granite.json
│   │   │   ├── stalactite_hanging_ice.json
│   │   │   ├── stalactite_hanging_small_andesite.json
│   │   │   ├── stalactite_hanging_small_desert.json
│   │   │   ├── stalactite_hanging_small_diorite.json
│   │   │   ├── stalactite_hanging_small_granite.json
│   │   │   ├── stalactite_hanging_small_ice.json
│   │   │   ├── stalactite_hanging_small_stone.json
│   │   │   ├── stalactite_hanging_small_tainted.json
│   │   │   ├── stalactite_hanging_small_waste.json
│   │   │   ├── stalactite_hanging_stone.json
│   │   │   ├── stalactite_hanging_tainted.json
│   │   │   ├── stalactite_hanging_waste.json
│   │   │   ├── stalactite_ice.json
│   │   │   ├── stalactite_small_andesite.json
│   │   │   ├── stalactite_small_desert.json
│   │   │   ├── stalactite_small_diorite.json
│   │   │   ├── stalactite_small_granite.json
│   │   │   ├── stalactite_small_ice.json
│   │   │   ├── stalactite_small_stone.json
│   │   │   ├── stalactite_small_tainted.json
│   │   │   ├── stalactite_small_waste.json
│   │   │   ├── stalactite_stone.json
│   │   │   ├── stalactite_tainted.json
│   │   │   └── stalactite_waste.json
│   │   ├── stone_decoses/
│   │   │   ├── stone_decos_ice.json
│   │   │   ├── stone_decos_mossy.json
│   │   │   ├── stone_decos_normal.json
│   │   │   ├── stone_decos_tainted.json
│   │   │   └── stone_decos_waste.json
│   │   ├── stone_pillars/
│   │   │   ├── stone_pillar_desert.json
│   │   │   ├── stone_pillar_ice.json
│   │   │   ├── stone_pillar_normal.json
│   │   │   └── stone_pillar_tainted.json
│   │   ├── tables/
│   │   │   ├── table_acacia.json
│   │   │   ├── table_birch.json
│   │   │   ├── table_dark_oak.json
│   │   │   ├── table_jungle.json
│   │   │   ├── table_nether.json
│   │   │   ├── table_oak.json
│   │   │   ├── table_palm.json
│   │   │   ├── table_spruce.json
│   │   │   ├── table_tainted.json
│   │   │   └── table_volcano.json
│   │   ├── tentacles/
│   │   │   ├── flesh_tentacle.json
│   │   │   └── flesh_tentacle_hanging.json
│   │   ├── torches/
│   │   │   ├── blue_torch.json
│   │   │   ├── end_rod.json
│   │   │   ├── green_torch.json
│   │   │   ├── red_torch.json
│   │   │   ├── redstone_torch.json
│   │   │   ├── torch.json
│   │   │   ├── white_torch.json
│   │   │   └── yellow_torch.json
│   │   └── vines/
│   │       ├── eyeball_vine.json
│   │       ├── tainted_vine.json
│   │       └── vine.json
│   └── tiles/
│       ├── andesites/
│       │   ├── andesite.json
│       │   └── andesite_polished.json
│       ├── auroras/
│       │   ├── aurora_block.json
│       │   └── aurora_pillar.json
│       ├── diorites/
│       │   ├── diorite.json
│       │   └── diorite_polished.json
│       ├── ends/
│       │   ├── end_stone.json
│       │   └── end_stone_brick.json
│       ├── fences/
│       │   ├── cobblestone_fence.json
│       │   ├── fence_acacia.json
│       │   ├── fence_birch.json
│       │   ├── fence_dark_oak.json
│       │   ├── fence_jungle.json
│       │   ├── fence_nether.json
│       │   ├── fence_oak.json
│       │   ├── fence_palm.json
│       │   ├── fence_spruce.json
│       │   ├── fence_tainted.json
│       │   ├── fence_volcano.json
│       │   ├── iron_bar.json
│       │   └── mossy_cobblestone_fence.json
│       ├── fleshes/
│       │   ├── flesh_dirt.json
│       │   ├── flesh_gut.json
│       │   └── flesh_stone.json
│       ├── glasses/
│       │   ├── glass.json
│       │   ├── stained_glass_black.json
│       │   ├── stained_glass_blue.json
│       │   ├── stained_glass_brown.json
│       │   ├── stained_glass_cyan.json
│       │   ├── stained_glass_gray.json
│       │   ├── stained_glass_green.json
│       │   ├── stained_glass_light_blue.json
│       │   ├── stained_glass_light_gray.json
│       │   ├── stained_glass_lime.json
│       │   ├── stained_glass_magenta.json
│       │   ├── stained_glass_orange.json
│       │   ├── stained_glass_pink.json
│       │   ├── stained_glass_purple.json
│       │   ├── stained_glass_red.json
│       │   ├── stained_glass_white.json
│       │   └── stained_glass_yellow.json
│       ├── granites/
│       │   ├── granite.json
│       │   └── granite_polished.json
│       ├── ices/
│       │   ├── blue_ice.json
│       │   ├── ice.json
│       │   ├── ice_brick.json
│       │   ├── ice_cobblestone.json
│       │   ├── ice_packed.json
│       │   └── ice_thin.json
│       ├── misc/
│       │   ├── bedrock.json
│       │   ├── bone_block.json
│       │   ├── brick.json
│       │   ├── clay.json
│       │   ├── coarse_dirt.json
│       │   ├── dirt.json
│       │   ├── dirt.mdp
│       │   ├── dirt2.mdp
│       │   ├── dried_kelp_block.json
│       │   ├── farmland.json
│       │   ├── gravel.json
│       │   ├── hay_bale.json
│       │   ├── obsidian.json
│       │   ├── slime_block.json
│       │   └── tnt.json
│       ├── mushrooms/
│       │   ├── brown_mushroom_block.json
│       │   ├── mushroom_stem.json
│       │   ├── mycelium.json
│       │   └── red_mushroom_block.json
│       ├── nethers/
│       │   ├── glowstone.json
│       │   ├── nether_brick.json
│       │   ├── netherrack.json
│       │   ├── red_nether_brick.json
│       │   └── soul_sand.json
│       ├── ore_blocks/
│       │   ├── block_coal.json
│       │   ├── block_diamond.json
│       │   ├── block_emerald.json
│       │   ├── block_gold.json
│       │   ├── block_iron.json
│       │   ├── block_lapis.json
│       │   ├── block_netherite.json
│       │   ├── block_quartz.json
│       │   └── block_redstone.json
│       ├── ores/
│       │   ├── ore_ancient_debris.json
│       │   ├── ore_coal.json
│       │   ├── ore_copper.json
│       │   ├── ore_diamond.json
│       │   ├── ore_emerald.json
│       │   ├── ore_gold.json
│       │   ├── ore_iron.json
│       │   ├── ore_lapis.json
│       │   ├── ore_lead.json
│       │   ├── ore_nether_quartz.json
│       │   ├── ore_redstone.json
│       │   ├── ore_silver.json
│       │   └── ore_tin.json
│       ├── planks/
│       │   ├── plank_acacia.json
│       │   ├── plank_birch.json
│       │   ├── plank_dark_oak.json
│       │   ├── plank_jungle.json
│       │   ├── plank_oak.json
│       │   ├── plank_palm.json
│       │   ├── plank_spruce.json
│       │   ├── plank_tainted.json
│       │   └── plank_volcano.json
│       ├── platforms/
│       │   ├── platform_acacia.json
│       │   ├── platform_birch.json
│       │   ├── platform_dark_oak.json
│       │   ├── platform_end_stone.json
│       │   ├── platform_jungle.json
│       │   ├── platform_nether_brick.json
│       │   ├── platform_oak.json
│       │   ├── platform_palm.json
│       │   ├── platform_prismarine.json
│       │   ├── platform_prismarine_dark.json
│       │   ├── platform_purpur.json
│       │   ├── platform_quartz.json
│       │   ├── platform_red_sand_stone.json
│       │   ├── platform_sandstone.json
│       │   ├── platform_spruce.json
│       │   ├── platform_stone_brick.json
│       │   ├── platform_tainted.json
│       │   └── platform_volcano.json
│       ├── prismarines/
│       │   ├── prismarine.json
│       │   ├── prismarine_brick.json
│       │   ├── prismarine_dark.json
│       │   ├── prismarine_mud.json
│       │   └── sea_lantern.json
│       ├── purpurs/
│       │   └── purpur_block.json
│       ├── red_sands/
│       │   ├── red_sand.json
│       │   ├── red_sand_carved.json
│       │   ├── red_sand_smooth.json
│       │   └── red_sand_stone.json
│       ├── sands/
│       │   ├── sand.json
│       │   ├── sandstone.json
│       │   ├── sandstone_carved.json
│       │   └── sandstone_smooth.json
│       ├── snows/
│       │   ├── snow.json
│       │   └── snow_brick.json
│       ├── sponges/
│       │   ├── sponge.json
│       │   └── wet_sponge.json
│       ├── stones/
│       │   ├── cobblestone.json
│       │   ├── cobblestone_mossy.json
│       │   ├── stone.json
│       │   ├── stone_brick.json
│       │   ├── stone_brick_carved.json
│       │   ├── stone_brick_cracked.json
│       │   └── stone_brick_mossy.json
│       ├── tainted/
│       │   ├── tainted_dirt.json
│       │   └── tainted_stone.json
│       ├── terracottas/
│       │   ├── terracotta_black.json
│       │   ├── terracotta_blue.json
│       │   ├── terracotta_brown.json
│       │   ├── terracotta_cyan.json
│       │   ├── terracotta_gray.json
│       │   ├── terracotta_green.json
│       │   ├── terracotta_light_blue.json
│       │   ├── terracotta_light_gray.json
│       │   ├── terracotta_lime.json
│       │   ├── terracotta_magenta.json
│       │   ├── terracotta_orange.json
│       │   ├── terracotta_pink.json
│       │   ├── terracotta_purple.json
│       │   ├── terracotta_red.json
│       │   ├── terracotta_white.json
│       │   └── terracotta_yellow.json
│       ├── test/
│       │   ├── blue_mushroom.json
│       │   ├── blue_mushroom_dirt.json
│       │   ├── blue_mushroom_stem.json
│       │   ├── ice_cobblestone_hard.json
│       │   ├── large_blue_mushroom.json
│       │   ├── lava_block_pile.json
│       │   ├── pile_cobblestone.json
│       │   ├── snow_soft.json
│       │   ├── volcano_burn_stone.json
│       │   └── volcano_cobblestone.json
│       ├── volcanos/
│       │   ├── magma_block.json
│       │   ├── volcano_dirt.json
│       │   └── volcano_stone.json
│       ├── woods/
│       │   ├── wood_acacia.json
│       │   ├── wood_birch.json
│       │   ├── wood_dark_oak.json
│       │   ├── wood_jungle.json
│       │   ├── wood_oak.json
│       │   ├── wood_palm.json
│       │   ├── wood_spruce.json
│       │   ├── wood_stripped_acacia.json
│       │   ├── wood_stripped_birch.json
│       │   ├── wood_stripped_dark_oak.json
│       │   ├── wood_stripped_jungle.json
│       │   ├── wood_stripped_oak.json
│       │   ├── wood_stripped_palm.json
│       │   ├── wood_stripped_spruce.json
│       │   ├── wood_stripped_tainted.json
│       │   ├── wood_stripped_volcano.json
│       │   ├── wood_tainted.json
│       │   └── wood_volcano.json
│       └── wools/
│           ├── wool_black.json
│           ├── wool_blue.json
│           ├── wool_brown.json
│           ├── wool_cyan.json
│           ├── wool_gray.json
│           ├── wool_green.json
│           ├── wool_light_blue.json
│           ├── wool_light_gray.json
│           ├── wool_lime.json
│           ├── wool_magenta.json
│           ├── wool_orange.json
│           ├── wool_pink.json
│           ├── wool_purple.json
│           ├── wool_red.json
│           ├── wool_white.json
│           └── wool_yellow.json
├── bone2d/
│   ├── ItemJointHelper.lua
│   ├── NpcHumanAnimator.lua
│   ├── NpcHumanBoneInfo.lua
│   ├── NpcHumanClips.lua
│   ├── NpcHumanJoints.lua
│   ├── NpcHumanJointsTall.lua
│   ├── PlayerAnimator.lua
│   ├── PlayerBoneInfo.lua
│   ├── PlayerClips.lua
│   └── PlayerJoints.lua
├── buffs/
│   ├── BaseBuffProxy.lua
│   ├── BuffBlindness.lua
│   ├── BuffFire.lua
│   ├── BuffGlowing.lua
│   ├── BuffHappiness.lua
│   ├── BuffHealthBoost.lua
│   ├── BuffHunger.lua
│   ├── BuffHurt.lua
│   ├── BuffInvisibility.lua
│   ├── BuffJumpBoost.lua
│   ├── BuffLevitation.lua
│   ├── BuffMiningFatigue.lua
│   ├── BuffPoison.lua
│   ├── BuffProxies.lua
│   ├── BuffRegeneration.lua
│   ├── BuffResistance.lua
│   ├── BuffSadness.lua
│   ├── BuffSlowFalling.lua
│   ├── BuffSlowMining.lua
│   ├── BuffSlowness.lua
│   ├── BuffSpeed.lua
│   ├── BuffStrength.lua
│   ├── BuffVision.lua
│   ├── BuffWeak.lua
│   ├── BuffWither.lua
│   ├── absorption.json
│   ├── blindness.json
│   ├── fire.json
│   ├── fire_defense.json
│   ├── glowing.json
│   ├── happiness.json
│   ├── health_boost.json
│   ├── health_cold.json
│   ├── hunger.json
│   ├── hurt.json
│   ├── invisibility.json
│   ├── jump_boost.json
│   ├── levitation.json
│   ├── luck.json
│   ├── mining_fatique.json
│   ├── nausea.json
│   ├── poison.json
│   ├── regeneration.json
│   ├── resistance.json
│   ├── sadness.json
│   ├── slow_falling.json
│   ├── slow_mining.json
│   ├── slowness.json
│   ├── speed.json
│   ├── strength.json
│   ├── vision.json
│   ├── water_breathing.json
│   ├── weak.json
│   └── wither.json
├── buildings/
│   ├── aurora_palace/
│   │   └── aurora_palace.json
│   ├── by_house/
│   │   └── by_house.json
│   ├── desert_house/
│   │   └── desert_house.json
│   ├── end_outpost/
│   │   └── end_outpost.json
│   ├── forest_house/
│   │   └── forest_house.json
│   ├── fossils/
│   │   └── fossils.json
│   ├── heart/
│   │   └── heart.json
│   ├── jungle_temple/
│   │   └── jungle_temple.json
│   ├── mineshaft/
│   │   └── mineshaft.json
│   ├── mini_house/
│   │   └── mini_house.json
│   ├── monument_ocean/
│   │   └── monument_ocean.json
│   ├── nether_fortress/
│   │   └── nether_fortress.json
│   ├── pyramid/
│   │   └── pyramid.json
│   ├── under_dark_oak_cabin/
│   │   └── under_dark_oak_cabin.json
│   ├── under_desert_cabin/
│   │   └── under_desert_cabin.json
│   ├── under_jungle_cabin/
│   │   └── under_jungle_cabin.json
│   ├── under_oak_cabin/
│   │   └── under_oak_cabin.json
│   ├── under_spruce_cabin/
│   │   └── under_spruce_cabin.json
│   ├── under_stone_cabin/
│   │   └── under_stone_cabin.json
│   └── under_tainted_cabin/
│       └── under_tainted_cabin.json
├── client/
│   ├── CameraInGame.lua
│   ├── ControlAimMode.lua
│   ├── InputControl.lua
│   ├── MenuJoinInfo.lua
│   ├── ModClient.lua
│   ├── ModMusicSceneProxy.lua
│   ├── MusicCopyright.lua
│   ├── MusicPool.lua
│   ├── MusicScene.lua
│   ├── MusicSceneProxy.lua
│   └── MusicSystem.lua
├── constants/
│   └── Constants.lua
├── contents/
│   ├── IGNORE_THIS_FOLDER.txt
│   └── commands/
│       ├── admin.json
│       ├── admin.lua
│       ├── autosave-off.json
│       ├── autosave-on.json
│       ├── autosaveoff.lua
│       ├── autosaveon.lua
│       ├── banip.json
│       ├── banip.lua
│       ├── blacklist.json
│       ├── blacklist.lua
│       ├── blueyoshiiscool.json
│       ├── buff.json
│       ├── buff.lua
│       ├── buffp.json
│       ├── byiscool.lua
│       ├── clear.json
│       ├── clear.lua
│       ├── clearp.json
│       ├── day.json
│       ├── day.lua
│       ├── dayf.json
│       ├── dayf.lua
│       ├── daylock.json
│       ├── daylock.lua
│       ├── dayspeed.json
│       ├── dayspeed.lua
│       ├── dayunlock.json
│       ├── dayunlock.lua
│       ├── effect.json
│       ├── effect.lua
│       ├── enchant.json
│       ├── enchant.lua
│       ├── ex.json
│       ├── ex.lua
│       ├── exp.json
│       ├── gamemode.json
│       ├── gamemodep.json
│       ├── gamemodep.lua
│       ├── gamemodew.json
│       ├── gamemodew.lua
│       ├── give.json
│       ├── give.lua
│       ├── givep.json
│       ├── home.json
│       ├── home.lua
│       ├── kick.json
│       ├── kick.lua
│       ├── kickall.json
│       ├── kickall.lua
│       ├── kill.json
│       ├── kill.lua
│       ├── killp.json
│       ├── master.json
│       ├── master.lua
│       ├── me.json
│       ├── me.lua
│       ├── msg.json
│       ├── msg.lua
│       ├── noadmin.json
│       ├── noadmin.lua
│       ├── nobanip.json
│       ├── nobanip.lua
│       ├── nomaster.json
│       ├── nomaster.lua
│       ├── npc.json
│       ├── npc.lua
│       ├── players.json
│       ├── players.lua
│       ├── port.json
│       ├── port.lua
│       ├── pvp-off.json
│       ├── pvp-on.json
│       ├── pvpoff.lua
│       ├── pvpon.lua
│       ├── safeblow-off.json
│       ├── safeblow-on.json
│       ├── safeblowoff.lua
│       ├── safeblowon.lua
│       ├── save.json
│       ├── save.lua
│       ├── say.json
│       ├── say.lua
│       ├── spawn.json
│       ├── spawn.lua
│       ├── state.json
│       ├── stopwea.json
│       ├── stopwea.lua
│       ├── tp.json
│       ├── tp.lua
│       ├── tpp.json
│       ├── wea.json
│       └── wea.lua
├── data/
│   ├── backgrounds.json
│   ├── block_config.json
│   ├── item_config.json
│   ├── sound_config.json
│   └── sounds.json
├── effect_ai/
│   ├── Explosion.json
│   ├── GlowingFlow.json
│   ├── Gore.json
│   └── Smoke.json
├── effects/
│   ├── arrow_paticular.json
│   ├── chasting_word.json
│   ├── chip.json
│   ├── chip_fast.json
│   ├── circle.json
│   ├── ender_flash.json
│   ├── exp_paticular.json
│   ├── explosion.json
│   ├── fallen_flame_star.json
│   ├── fire.json
│   ├── fire_flame.json
│   ├── fire_flame_long.json
│   ├── fire_smoke.json
│   ├── flame_star.json
│   ├── flash.json
│   ├── flash2.json
│   ├── flow_particular.json
│   ├── gores/
│   │   ├── gore_angry_skeleton.json
│   │   ├── gore_arrow_zombie.json
│   │   ├── gore_bald_zombie.json
│   │   ├── gore_bat.json
│   │   ├── gore_black_rabbit.json
│   │   ├── gore_black_skeleton.json
│   │   ├── gore_blood_bat.json
│   │   ├── gore_blood_eye.json
│   │   ├── gore_blood_skeleton.json
│   │   ├── gore_bone_lee.json
│   │   ├── gore_bone_officer.json
│   │   ├── gore_bone_sniper.json
│   │   ├── gore_boney_skeleton.json
│   │   ├── gore_brown_mushroom_cow.json
│   │   ├── gore_brown_rabbit.json
│   │   ├── gore_chicken.json
│   │   ├── gore_cow.json
│   │   ├── gore_creeper.json
│   │   ├── gore_cursed_skull.json
│   │   ├── gore_dark_mage.json
│   │   ├── gore_dead_mage.json
│   │   ├── gore_doge_zombie.json
│   │   ├── gore_dolphin.json
│   │   ├── gore_drowned.json
│   │   ├── gore_dungeon_creeper.json
│   │   ├── gore_dungeon_knight.json
│   │   ├── gore_eagle.json
│   │   ├── gore_enderman.json
│   │   ├── gore_evil.json
│   │   ├── gore_evoker.json
│   │   ├── gore_eye_guard.json
│   │   ├── gore_eye_guard_laser.json
│   │   ├── gore_flower_creeper.json
│   │   ├── gore_fly_eye.json
│   │   ├── gore_fly_mouth.json
│   │   ├── gore_fly_skeleton.json
│   │   ├── gore_giant_cursed_skull.json
│   │   ├── gore_grass_walker.json
│   │   ├── gore_grim_reaper.json
│   │   ├── gore_husk.json
│   │   ├── gore_ice_sprite_girl.json
│   │   ├── gore_iron_zombie.json
│   │   ├── gore_jungle_bat.json
│   │   ├── gore_large_bat.json
│   │   ├── gore_large_jungle_bat.json
│   │   ├── gore_large_spider.json
│   │   ├── gore_lava_snake_body.json
│   │   ├── gore_lava_snake_head.json
│   │   ├── gore_lava_snake_tail.json
│   │   ├── gore_mad_skeleton.json
│   │   ├── gore_mad_skeleton_armed.json
│   │   ├── gore_mad_skeleton_tall.json
│   │   ├── gore_mad_skeleton_tall_armed.json
│   │   ├── gore_mad_skeleton_tall_helmet_armed.json
│   │   ├── gore_magma_birdo.json
│   │   ├── gore_man_eater.json
│   │   ├── gore_mummy.json
│   │   ├── gore_paimon.json
│   │   ├── gore_phantom.json
│   │   ├── gore_pig.json
│   │   ├── gore_ragged_mage.json
│   │   ├── gore_red_mage.json
│   │   ├── gore_red_mushroom_cow.json
│   │   ├── gore_red_phantom.json
│   │   ├── gore_rock_man.json
│   │   ├── gore_sheep.json
│   │   ├── gore_shulker.json
│   │   ├── gore_skeleton_assaulter.json
│   │   ├── gore_skeleton_blue_armed.json
│   │   ├── gore_skeleton_blue_armed_masked.json
│   │   ├── gore_skeleton_blue_knight.json
│   │   ├── gore_skeleton_fire_armed.json
│   │   ├── gore_skeleton_fire_armed_swordsman.json
│   │   ├── gore_skeleton_guard.json
│   │   ├── gore_skeleton_kid.json
│   │   ├── gore_skull.json
│   │   ├── gore_small_hell_eater.json
│   │   ├── gore_snow_guner.json
│   │   ├── gore_spider.json
│   │   ├── gore_squid.json
│   │   ├── gore_tainted_creeper.json
│   │   ├── gore_tainted_skeleton.json
│   │   ├── gore_turtle.json
│   │   ├── gore_undead_miner.json
│   │   ├── gore_vampire_miner.json
│   │   ├── gore_villager_zombie.json
│   │   ├── gore_waste_mummy.json
│   │   ├── gore_white_rabbit.json
│   │   ├── gore_wither_skeleton.json
│   │   ├── gore_worm_body.json
│   │   ├── gore_worm_head.json
│   │   ├── gore_worm_tail.json
│   │   ├── gore_yellow_rabbit.json
│   │   ├── gore_zombie.json
│   │   └── gore_zombie_pigman.json
│   ├── heal.json
│   ├── laser_flash.json
│   ├── liquid_paticular.json
│   ├── poison.json
│   ├── pot_break.json
│   ├── redstone_smoke.json
│   ├── smoke.json
│   ├── star.json
│   └── white_smoke.json
├── enchantments/
│   ├── BaseEnchantmentProxy.lua
│   ├── EnchantmentAquaAffinity.lua
│   ├── EnchantmentBlastProtection.lua
│   ├── EnchantmentDepthStrider.lua
│   ├── EnchantmentFeatherFalling.lua
│   ├── EnchantmentFireProtection.lua
│   ├── EnchantmentFrostWalker.lua
│   ├── EnchantmentKnockBack.lua
│   ├── EnchantmentPhyton.lua
│   ├── EnchantmentProjectileProtection.lua
│   ├── EnchantmentProtection.lua
│   ├── EnchantmentProxies.lua
│   ├── EnchantmentRespiration.lua
│   ├── EnchantmentSharpness.lua
│   ├── EnchantmentThorns.lua
│   ├── aqua_affinity.json
│   ├── bane_of_arthropods.json
│   ├── blast_protection.json
│   ├── curse_of_binding.json
│   ├── curse_of_vanishing.json
│   ├── depth_strider.json
│   ├── efficiency.json
│   ├── feather_falling.json
│   ├── fire_aspect.json
│   ├── fire_protection.json
│   ├── flame.json
│   ├── fortune.json
│   ├── frost_walker.json
│   ├── infinity.json
│   ├── knockback.json
│   ├── looting.json
│   ├── luck_of_the_sea.json
│   ├── lure.json
│   ├── multishot.json
│   ├── phyton.json
│   ├── piercing.json
│   ├── power.json
│   ├── projectile_protection.json
│   ├── protection.json
│   ├── punch.json
│   ├── quick_charge.json
│   ├── respiration.json
│   ├── sharpness.json
│   ├── silk_touch.json
│   ├── smite.json
│   ├── thorns.json
│   └── unbreaking.json
├── game_debug.json
├── init.lua
├── item_ai/
│   ├── Axe.json
│   ├── Axe.lua
│   ├── BaseAccessory.lua
│   ├── BaseRangedWeapon.lua
│   ├── BaseTool.lua
│   ├── BlueTalisman.json
│   ├── BlueTalisman.lua
│   ├── BossCaller.json
│   ├── BossCaller.lua
│   ├── Bow.json
│   ├── Bow.lua
│   ├── CrisonEye.json
│   ├── CrisonEye.lua
│   ├── DungeonEater.json
│   ├── DungeonEater.lua
│   ├── EnderMirror.json
│   ├── EnderMirror.lua
│   ├── Food.json
│   ├── Food.lua
│   ├── Gun.json
│   ├── Gun.lua
│   ├── InfBow.json
│   ├── InfBow.lua
│   ├── Ingot.json
│   ├── Ingot.lua
│   ├── LavaNecklace.json
│   ├── LavaNecklace.lua
│   ├── LavaSword.json
│   ├── LavaSword.lua
│   ├── LightingTalisman.json
│   ├── LightingTalisman.lua
│   ├── Pickaxe.json
│   ├── Pickaxe.lua
│   ├── Potion.json
│   ├── Potion.lua
│   ├── RedTalisman.json
│   ├── RedTalisman.lua
│   ├── RocketBoost.json
│   ├── RocketBoost.lua
│   ├── Staff.json
│   ├── Staff.lua
│   ├── Sword.json
│   ├── Sword.lua
│   ├── Torch.json
│   ├── Torch.lua
│   ├── cross_bow.json
│   ├── cross_bow.lua
│   ├── dirt.json
│   ├── dirt.lua
│   ├── drill.json
│   ├── drill.lua
│   ├── fire_gun.json
│   ├── fishing_rod.json
│   ├── fishing_rod.lua
│   ├── laser_gun.json
│   ├── magic_sword.json
│   ├── rocket_launcher.json
│   ├── saw.json
│   ├── swordA.json
│   └── swordA.lua
├── items/
│   ├── accessory/
│   │   ├── blue_talisman.json
│   │   ├── gold_talisman.json
│   │   ├── heart_talisman.json
│   │   ├── lava_necklace.json
│   │   ├── lighting_talisman.json
│   │   └── rocket_boost.json
│   ├── armors/
│   │   ├── ancient/
│   │   │   ├── ancient_chestplate.json
│   │   │   ├── ancient_helmet.json
│   │   │   └── ancient_leggings.json
│   │   ├── bronze/
│   │   │   ├── bronze_chestplate.json
│   │   │   ├── bronze_helmet.json
│   │   │   └── bronze_leggings.json
│   │   ├── copper/
│   │   │   ├── copper_chestplate.json
│   │   │   ├── copper_helmet.json
│   │   │   └── copper_leggings.json
│   │   ├── diamond/
│   │   │   ├── diamond_chestplate.json
│   │   │   ├── diamond_helmet.json
│   │   │   └── diamond_leggings.json
│   │   ├── fine_tin/
│   │   │   ├── fine_tin_chestplate.json
│   │   │   ├── fine_tin_helmet.json
│   │   │   └── fine_tin_leggings.json
│   │   ├── flesh/
│   │   │   ├── flesh_chestplate.json
│   │   │   ├── flesh_helmet.json
│   │   │   └── flesh_leggings.json
│   │   ├── gold/
│   │   │   ├── golden_chestplate.json
│   │   │   ├── golden_helmet.json
│   │   │   └── golden_leggings.json
│   │   ├── iron/
│   │   │   ├── iron_chestplate.json
│   │   │   ├── iron_helmet.json
│   │   │   └── iron_leggings.json
│   │   ├── knight/
│   │   │   ├── knight_chestplate.json
│   │   │   ├── knight_helmet.json
│   │   │   └── knight_leggings.json
│   │   ├── lava/
│   │   │   ├── lava_chestplate.json
│   │   │   ├── lava_helmet.json
│   │   │   └── lava_leggings.json
│   │   ├── lead/
│   │   │   ├── lead_chestplate.json
│   │   │   ├── lead_helmet.json
│   │   │   └── lead_leggings.json
│   │   ├── leather/
│   │   │   ├── leather_chestplate.json
│   │   │   ├── leather_helmet.json
│   │   │   └── leather_leggings.json
│   │   ├── magic_gold/
│   │   │   ├── magic_gold_chestplate.json
│   │   │   ├── magic_gold_helmet.json
│   │   │   └── magic_gold_leggings.json
│   │   ├── magic_shadow/
│   │   │   ├── magic_shadow_chestplate.json
│   │   │   ├── magic_shadow_helmet.json
│   │   │   └── magic_shadow_leggings.json
│   │   ├── magic_silver/
│   │   │   ├── magic_silver_chestplate.json
│   │   │   ├── magic_silver_helmet.json
│   │   │   └── magic_silver_leggings.json
│   │   ├── nether/
│   │   │   ├── nether_chestplate.json
│   │   │   ├── nether_helmet.json
│   │   │   └── nether_leggings.json
│   │   ├── pumpkin/
│   │   │   └── pumpkin_helmet.json
│   │   ├── shadow/
│   │   │   ├── shadow_chestplate.json
│   │   │   ├── shadow_helmet.json
│   │   │   └── shadow_leggings.json
│   │   ├── silver/
│   │   │   ├── silver_chestplate.json
│   │   │   ├── silver_helmet.json
│   │   │   └── silver_leggings.json
│   │   ├── star/
│   │   │   ├── star_chestplate.json
│   │   │   ├── star_helmet.json
│   │   │   └── star_leggings.json
│   │   ├── steel/
│   │   │   ├── steel_chestplate.json
│   │   │   ├── steel_helmet.json
│   │   │   └── steel_leggings.json
│   │   ├── super_diamond/
│   │   │   ├── super_diamond_chestplate.json
│   │   │   ├── super_diamond_helmet.json
│   │   │   └── super_diamond_leggings.json
│   │   └── tin/
│   │       ├── tin_chestplate.json
│   │       ├── tin_helmet.json
│   │       └── tin_leggings.json
│   ├── arrows/
│   │   ├── blood_arrow.json
│   │   ├── blue_arrow.json
│   │   ├── ice_arrow.json
│   │   ├── lighting_arrow.json
│   │   ├── star_arrow.json
│   │   ├── sword_arrow.json
│   │   └── wooden_arrow.json
│   ├── axes/
│   │   ├── bronze_axe.json
│   │   ├── copper_axe.json
│   │   ├── diamond_axe.json
│   │   ├── golden_axe.json
│   │   ├── grass_axe.json
│   │   ├── iron_axe.json
│   │   ├── lead_axe.json
│   │   ├── nether_axe.json
│   │   ├── silver_axe.json
│   │   ├── steel_axe.json
│   │   ├── stone_axe.json
│   │   ├── tin_axe.json
│   │   └── wooden_axe.json
│   ├── bombs/
│   │   ├── bomb.json
│   │   ├── glow_bomb.json
│   │   └── grenade.json
│   ├── boomerangs/
│   │   ├── boomerang.json
│   │   ├── fire_boomerang.json
│   │   └── wooden_boomerang.json
│   ├── bows/
│   │   ├── blood_bow.json
│   │   ├── blue_shot_bow.json
│   │   ├── blue_stone_bow.json
│   │   ├── chast_bow.json
│   │   ├── cross_bow.json
│   │   ├── curse_bow.json
│   │   ├── ice_bow.json
│   │   ├── lighting_bow.json
│   │   ├── shot_bow.json
│   │   ├── super_cross_bow.json
│   │   ├── super_fire_shot_bow.json
│   │   ├── super_spike_shot_bow.json
│   │   └── wooden_bow.json
│   ├── buckets/
│   │   ├── bucket_empty.json
│   │   ├── bucket_lava.json
│   │   ├── bucket_milk.json
│   │   └── bucket_water.json
│   ├── bullets/
│   │   ├── fire_bullet.json
│   │   ├── iron_bullet.json
│   │   └── silver_bullet.json
│   ├── dyes/
│   │   ├── dye_black.json
│   │   ├── dye_blue.json
│   │   ├── dye_brown.json
│   │   ├── dye_cyan.json
│   │   ├── dye_gray.json
│   │   ├── dye_green.json
│   │   ├── dye_light_blue.json
│   │   ├── dye_light_gray.json
│   │   ├── dye_lime.json
│   │   ├── dye_magenta.json
│   │   ├── dye_orange.json
│   │   ├── dye_pink.json
│   │   ├── dye_purple.json
│   │   ├── dye_red.json
│   │   ├── dye_white.json
│   │   └── dye_yellow.json
│   ├── foods/
│   │   ├── apple.json
│   │   ├── baked_potato.json
│   │   ├── beetroot.json
│   │   ├── bread.json
│   │   ├── cake_piece.json
│   │   ├── carrot.json
│   │   ├── chorus_fruit.json
│   │   ├── cooked_chicken.json
│   │   ├── cooked_cod.json
│   │   ├── cooked_mutton.json
│   │   ├── cooked_porkchop.json
│   │   ├── cooked_rabbit.json
│   │   ├── cooked_salmon.json
│   │   ├── cookie.json
│   │   ├── golden_apple.json
│   │   ├── golden_carrot.json
│   │   ├── melon_slice.json
│   │   ├── mushroom_stew.json
│   │   ├── potato.json
│   │   ├── pufferfish.json
│   │   ├── pumpkin_pie.json
│   │   ├── raw_beef.json
│   │   ├── raw_chicken.json
│   │   ├── raw_cod.json
│   │   ├── raw_mutton.json
│   │   ├── raw_porkchop.json
│   │   ├── raw_rabbit.json
│   │   ├── raw_salmon.json
│   │   └── steak.json
│   ├── guns/
│   │   ├── fire_gun.json
│   │   ├── fire_shooter.json
│   │   ├── handgun.json
│   │   ├── rifle.json
│   │   ├── rocket_launcher.json
│   │   ├── shotgun.json
│   │   └── sniper.json
│   ├── hoes/
│   │   ├── stone_hoe.json
│   │   └── wooden_hoe.json
│   ├── ingots/
│   │   ├── aluminum_ingot.json
│   │   ├── antimony_ingot.json
│   │   ├── beryllium_ingot.json
│   │   ├── bismuth_ingot.json
│   │   ├── bronze_ingot.json
│   │   ├── chromium_ingot.json
│   │   ├── cobalt_ingot.json
│   │   ├── copper_ingot.json
│   │   ├── gallium_ingot.json
│   │   ├── gold_ingot.json
│   │   ├── indium_ingot.json
│   │   ├── iridium_ingot.json
│   │   ├── iron_ingot.json
│   │   ├── lead_ingot.json
│   │   ├── lithium_ingot.json
│   │   ├── magnesium_ingot.json
│   │   ├── manganese_ingot.json
│   │   ├── molybdenum_ingot.json
│   │   ├── netherite_ingot.json
│   │   ├── nickel_ingot.json
│   │   ├── niobium_ingot.json
│   │   ├── osmium_ingot.json
│   │   ├── palladium_ingot.json
│   │   ├── platinum_ingot.json
│   │   ├── redstone_ingot.json
│   │   ├── rhenium_ingot.json
│   │   ├── silver_ingot.json
│   │   ├── sodium_ingot.json
│   │   ├── steel_ingot.json
│   │   ├── tantalum_ingot.json
│   │   ├── tin_ingot.json
│   │   ├── titanium_ingot.json
│   │   ├── vanadium_ingot.json
│   │   ├── vibranium_ingot.json
│   │   ├── wolfram_ingot.json
│   │   ├── yttrium_ingot.json
│   │   └── zinc_ingot.json
│   ├── loots/
│   │   ├── guardian.json
│   │   ├── nether_destroyer_loot.json
│   │   └── snow_queen_loot.json
│   ├── magic/
│   │   ├── bone_gun.json
│   │   ├── dark_staff.json
│   │   ├── fire_book.json
│   │   ├── mini_laser_gun.json
│   │   ├── mini_rocket_launcher.json
│   │   ├── soul_laserer.json
│   │   ├── super_shark.json
│   │   ├── super_shark_ghost.json
│   │   ├── sword_fish.json
│   │   ├── sword_fish_gun.json
│   │   └── water_book.json
│   ├── misc/
│   │   ├── blaze_powder.json
│   │   ├── blaze_rod.json
│   │   ├── bone.json
│   │   ├── bone_meal.json
│   │   ├── book.json
│   │   ├── bowl.json
│   │   ├── charcoal.json
│   │   ├── clay.json
│   │   ├── coal.json
│   │   ├── cocoa_bean.json
│   │   ├── diamond.json
│   │   ├── dried_kelp.json
│   │   ├── egg.json
│   │   ├── emerald.json
│   │   ├── enchanted_book.json
│   │   ├── ender_eye.json
│   │   ├── ender_pearl.json
│   │   ├── feather.json
│   │   ├── fermented_spider_eye.json
│   │   ├── fire_charge.json
│   │   ├── firework_rocket.json
│   │   ├── fishing_rod.json
│   │   ├── flint.json
│   │   ├── ghast_tear.json
│   │   ├── glistering_melon_slice.json
│   │   ├── glow_ball.json
│   │   ├── glowstone_dust.json
│   │   ├── gray_feather.json
│   │   ├── gunpowder.json
│   │   ├── heart_of_sea.json
│   │   ├── ink_sac.json
│   │   ├── kelp.json
│   │   ├── lapis_lazuli.json
│   │   ├── leather.json
│   │   ├── lighter.json
│   │   ├── magma_cream.json
│   │   ├── mana_piece.json
│   │   ├── map_paper.json
│   │   ├── nautilus_shell.json
│   │   ├── nether_brick.json
│   │   ├── nether_star.json
│   │   ├── nether_wart.json
│   │   ├── netherite_scrap.json
│   │   ├── paper.json
│   │   ├── phantom_membrane.json
│   │   ├── popped_chorus_fruits.json
│   │   ├── prismarine_crystals.json
│   │   ├── prismarine_shard.json
│   │   ├── quartz.json
│   │   ├── rabbit_foot.json
│   │   ├── rabbit_hide.json
│   │   ├── red_brick.json
│   │   ├── redstone.json
│   │   ├── rocket.json
│   │   ├── rotten_flesh.json
│   │   ├── scute.json
│   │   ├── shears.json
│   │   ├── shulker_shell.json
│   │   ├── slimeball.json
│   │   ├── snowball.json
│   │   ├── spider_eye.json
│   │   ├── stick.json
│   │   ├── string.json
│   │   ├── sugar_cane.json
│   │   ├── suger.json
│   │   ├── totem_of_undying.json
│   │   ├── vine.json
│   │   ├── wheat.json
│   │   └── wire_cutter.json
│   ├── misc2/
│   │   ├── ancient_ingot.json
│   │   ├── ancient_sample.json
│   │   ├── blood.json
│   │   ├── blue_crystal.json
│   │   ├── dark_shadow_ingot.json
│   │   ├── dark_shadow_part.json
│   │   ├── diamond_ingot.json
│   │   ├── ender_mirror.json
│   │   ├── evil_part.json
│   │   ├── flesh_ingot.json
│   │   ├── flesh_machine_part.json
│   │   ├── flesh_part.json
│   │   ├── ghost.json
│   │   ├── ghost_crystal.json
│   │   ├── ghost_element.json
│   │   ├── ice_element.json
│   │   ├── ice_element_ball.json
│   │   ├── knight_ingot.json
│   │   ├── machine_part.json
│   │   ├── magic_cell.json
│   │   ├── magic_cell_group.json
│   │   ├── magic_crystal.json
│   │   ├── magic_silver_ingot.json
│   │   ├── magma_gold_ingot.json
│   │   ├── nether_destroyer.json
│   │   ├── pure_red_stone.json
│   │   ├── red_crystal.json
│   │   ├── red_gold_ingot.json
│   │   ├── soul_element.json
│   │   ├── star_ingot.json
│   │   ├── strange_eye.json
│   │   ├── strange_len.json
│   │   ├── tower_core.json
│   │   ├── white_crystal.json
│   │   └── yellow_crystal.json
│   ├── nuggets/
│   │   ├── gold_nugget.json
│   │   └── iron_nugget.json
│   ├── pickaxes/
│   │   ├── bronze_pickaxe.json
│   │   ├── copper_pickaxe.json
│   │   ├── diamond_pickaxe.json
│   │   ├── golden_pickaxe.json
│   │   ├── grass_pickaxe.json
│   │   ├── iron_pickaxe.json
│   │   ├── lead_pickaxe.json
│   │   ├── nether_pickaxe.json
│   │   ├── silver_pickaxe.json
│   │   ├── steel_pickaxe.json
│   │   ├── stone_pickaxe.json
│   │   ├── tin_pickaxe.json
│   │   └── wooden_pickaxe.json
│   ├── potions/
│   │   ├── glass_bottle.json
│   │   ├── potion_awkward.json
│   │   ├── potion_fire_resistance.json
│   │   ├── potion_fire_resistance_long.json
│   │   ├── potion_glowing.json
│   │   ├── potion_glowing_long.json
│   │   ├── potion_harming.json
│   │   ├── potion_harming_super.json
│   │   ├── potion_healing.json
│   │   ├── potion_healing_super.json
│   │   ├── potion_invisibility.json
│   │   ├── potion_invisibility_long.json
│   │   ├── potion_leaping.json
│   │   ├── potion_leaping_long.json
│   │   ├── potion_night_vision.json
│   │   ├── potion_night_vision_long.json
│   │   ├── potion_poison.json
│   │   ├── potion_poison_long.json
│   │   ├── potion_regeneration.json
│   │   ├── potion_regeneration_long.json
│   │   ├── potion_slow_falling.json
│   │   ├── potion_slow_falling_long.json
│   │   ├── potion_slowness.json
│   │   ├── potion_slowness_long.json
│   │   ├── potion_strength.json
│   │   ├── potion_strength_long.json
│   │   ├── potion_swiftness.json
│   │   ├── potion_swiftness_long.json
│   │   ├── potion_water.json
│   │   ├── potion_water_breathing.json
│   │   ├── potion_water_breathing_long.json
│   │   ├── potion_weakness.json
│   │   └── potion_weakness_long.json
│   ├── seeds/
│   │   ├── melon_seed.json
│   │   ├── pumpkin_seed.json
│   │   └── seed.json
│   ├── staffs/
│   │   ├── amethyst_staff.json
│   │   ├── fire_staff.json
│   │   ├── frosen_staff.json
│   │   ├── ice_staff.json
│   │   ├── lighting_staff.json
│   │   ├── shadow_staff.json
│   │   ├── soul_staff.json
│   │   └── water_staff.json
│   ├── swords/
│   │   ├── air_sword.json
│   │   ├── bronze_sword.json
│   │   ├── copper_sword.json
│   │   ├── diamond_sword.json
│   │   ├── ghost_sword.json
│   │   ├── golden_sword.json
│   │   ├── grass_sword.json
│   │   ├── iron_sword.json
│   │   ├── lava_sword.json
│   │   ├── lead_sword.json
│   │   ├── nether_sword.json
│   │   ├── silver_sword.json
│   │   ├── steel_sword.json
│   │   ├── stone_sword.json
│   │   ├── super_air_sword.json
│   │   ├── super_bronze_sword.json
│   │   ├── super_copper_sword.json
│   │   ├── super_diamond_sword.json
│   │   ├── super_golden_sword.json
│   │   ├── super_iron_sword.json
│   │   ├── super_lead_sword.json
│   │   ├── super_nether_sword.json
│   │   ├── super_silver_sword.json
│   │   ├── super_steel_sword.json
│   │   ├── super_tin_sword.json
│   │   ├── tin_sword.json
│   │   └── wooden_sword.json
│   └── wires/
│       ├── blue_wire.json
│       ├── green_wire.json
│       ├── red_wire.json
│       └── yellow_wire.json
├── languages/
│   ├── Locale.lua
│   ├── LocaleHelper.lua
│   ├── chinese.json
│   └── english.json
├── liquids/
│   ├── lava.json
│   └── water.json
├── mod_textures/
│   ├── ModTextures.lua
│   ├── blade.json
│   ├── candle_fire.json
│   ├── candle_fire_blue.json
│   ├── crack.json
│   ├── electric_direction.json
│   ├── fire.json
│   ├── flesh_grass.json
│   ├── fly_book.json
│   ├── grass.json
│   ├── mycelium_grass.json
│   ├── tainted_grass.json
│   ├── torch_fire.json
│   ├── torch_fire_blue.json
│   ├── torch_fire_green.json
│   ├── torch_fire_red.json
│   ├── torch_fire_white.json
│   ├── torch_fire_yellow.json
│   └── torch_redstone.json
├── network/
│   ├── ClientBoundResponse.lua
│   ├── ModNetworkProxyHandler.lua
│   ├── NetworkProxy.lua
│   ├── RPC_ID.lua
│   └── TCNetworkProxyHandler.lua
├── npc_ai/
│   ├── AngrySkeleton.json
│   ├── AngrySkeleton.lua
│   ├── Animal.json
│   ├── Animal.lua
│   ├── Archer.json
│   ├── Archer.lua
│   ├── BallMagic.json
│   ├── BallMagic.lua
│   ├── BaseSnake.lua
│   ├── BaseSnakeBody.lua
│   ├── Bat.json
│   ├── Bat.lua
│   ├── BlackSkeleton.json
│   ├── BlackSkeleton.lua
│   ├── Blaze.json
│   ├── Blaze.lua
│   ├── BlockSlime.json
│   ├── BlockSlime.lua
│   ├── BloodSkeleton.json
│   ├── BloodSkeleton.lua
│   ├── BloodyEye.json
│   ├── BloodyEye.lua
│   ├── BoneArcher.json
│   ├── BoneArcher.lua
│   ├── BoneLee.json
│   ├── BoneLee.lua
│   ├── BoneOfficer.json
│   ├── BoneOfficer.lua
│   ├── BoneSniper.json
│   ├── BoneSniper.lua
│   ├── BoneySkeleton.json
│   ├── BoneySkeleton.lua
│   ├── BouncySlime.json
│   ├── BouncySlime.lua
│   ├── Butterfly.json
│   ├── Butterfly.lua
│   ├── Cat.json
│   ├── Cat.lua
│   ├── Chicken.json
│   ├── Chicken.lua
│   ├── Creeper.json
│   ├── Creeper.lua
│   ├── CrisonEye.json
│   ├── CrisonEye.lua
│   ├── CrystalMonster.json
│   ├── CrystalMonster.lua
│   ├── CursedSkull.json
│   ├── CursedSkull.lua
│   ├── DarkMage.json
│   ├── DarkMage.lua
│   ├── DeadMage.json
│   ├── DeadMage.lua
│   ├── Dolphin.json
│   ├── Dolphin.lua
│   ├── DungeonCreeper.json
│   ├── DungeonCreeper.lua
│   ├── DungeonEater.lua
│   ├── DungeonEaterBody.lua
│   ├── DungeonEater_Body.json
│   ├── DungeonEater_Head.json
│   ├── DungeonKnight.json
│   ├── DungeonKnight.lua
│   ├── DungeonSkeleton.json
│   ├── DungeonSkeleton.lua
│   ├── DungeonSoul.json
│   ├── DungeonSoul.lua
│   ├── Eagle.json
│   ├── Eagle.lua
│   ├── Ender_Dragon.json
│   ├── Enderman.json
│   ├── Enderman.lua
│   ├── Evil.json
│   ├── Evil.lua
│   ├── Evoker.json
│   ├── Evoker.lua
│   ├── EyeGuard.json
│   ├── EyeGuard.lua
│   ├── EyeGuardLaser.json
│   ├── EyeGuardLaser.lua
│   ├── Fighter.json
│   ├── Fighter.lua
│   ├── FireHellEater.json
│   ├── FireHellEater.lua
│   ├── FlameSoul.json
│   ├── FlameSoul.lua
│   ├── FlyEye.json
│   ├── FlyEye.lua
│   ├── FlySkeleton.json
│   ├── FlySkeleton.lua
│   ├── Ghast.json
│   ├── Ghast.lua
│   ├── GhostGunner.json
│   ├── GhostGunner.lua
│   ├── GhostSoul.json
│   ├── GhostSoul.lua
│   ├── GiantCursedSkull.json
│   ├── GiantCursedSkull.lua
│   ├── GrimReaper.json
│   ├── GrimReaper.lua
│   ├── Guardian.json
│   ├── Guardian.lua
│   ├── HellDestroyer.lua
│   ├── HellDestroyer_Head.json
│   ├── HellEater.json
│   ├── HellEater.lua
│   ├── HumanFighter.json
│   ├── HumanFighter.lua
│   ├── IceElf.json
│   ├── IceElf.lua
│   ├── JungleSnake.lua
│   ├── JungleSnake_Head.json
│   ├── LargeBat.json
│   ├── LargeBat.lua
│   ├── LargeSpider.json
│   ├── LargeSpider.lua
│   ├── MagmaBirdo.json
│   ├── MagmaBirdo.lua
│   ├── MagmaElf.json
│   ├── MagmaElf.lua
│   ├── MagmaSlime.json
│   ├── MagmaSlime.lua
│   ├── ManEater.json
│   ├── ManEater.lua
│   ├── Meteor.json
│   ├── Meteor.lua
│   ├── MiniGhast.json
│   ├── MiniGhast.lua
│   ├── Paimon.json
│   ├── Paimon.lua
│   ├── Phantom.json
│   ├── Phantom.lua
│   ├── Pufferfish.json
│   ├── Pufferfish.lua
│   ├── RaggedMage.json
│   ├── RaggedMage.lua
│   ├── RedMage.json
│   ├── RedMage.lua
│   ├── RedPhantom.json
│   ├── RedPhantom.lua
│   ├── RockMan.json
│   ├── RockMan.lua
│   ├── RollingFireBall.json
│   ├── RollingFireBall.lua
│   ├── Sheep.json
│   ├── Shulker.json
│   ├── Shulker.lua
│   ├── SkeletonAssaulter.json
│   ├── SkeletonAssaulter.lua
│   ├── SkeletonGuard.json
│   ├── SkeletonGuard.lua
│   ├── Slime.json
│   ├── Slime.lua
│   ├── Snake_Body.json
│   ├── Snake_Head.json
│   ├── SnowGuardian.json
│   ├── SnowGuardian.lua
│   ├── SnowGuardianArcher.json
│   ├── SnowGuardianArcher.lua
│   ├── SnowQueen.json
│   ├── SnowQueen.lua
│   ├── Squid.json
│   ├── Squid.lua
│   ├── SwordHumanFighter.lua
│   ├── TaintedSlime.json
│   ├── TaintedSlime.lua
│   ├── UndeadMiner.json
│   ├── UndeadMiner.lua
│   ├── Villager.json
│   ├── WasteGhost.json
│   ├── WasteGhost.lua
│   ├── WitherSkeleton.json
│   ├── WitherSkeleton.lua
│   ├── Wolf.json
│   ├── Wolf.lua
│   ├── Zombie.json
│   ├── Zombie.lua
│   ├── Zpig.json
│   └── Zpig.lua
├── npc_ai_global/
│   ├── GNpc.lua
│   └── GlobalNpc.json
├── npcs/
│   ├── angry_skeleton.json
│   ├── arrow_zombie.json
│   ├── bald_zombie.json
│   ├── bat.json
│   ├── black_rabbit.json
│   ├── black_skeleton.json
│   ├── blaze.json
│   ├── block_slime.json
│   ├── blood_bat.json
│   ├── blood_eye.json
│   ├── blood_skeleton.json
│   ├── blood_slime.json
│   ├── blue_slime.json
│   ├── bone_lee.json
│   ├── bone_officer.json
│   ├── bone_sniper.json
│   ├── boney_skeleton.json
│   ├── bouncy_slime.json
│   ├── brown_mushroom_cow.json
│   ├── brown_rabbit.json
│   ├── cat.json
│   ├── chicken.json
│   ├── cow.json
│   ├── creeper.json
│   ├── crison_eye.json
│   ├── crystal_monster.json
│   ├── cursed_skull.json
│   ├── dark_mage.json
│   ├── dead_mage.json
│   ├── desert_slime.json
│   ├── doge_zombie.json
│   ├── dolphin.json
│   ├── dragon_skull.json
│   ├── drowned.json
│   ├── dungeon_creeper.json
│   ├── dungeon_eater_body.json
│   ├── dungeon_eater_head.json
│   ├── dungeon_eater_tail.json
│   ├── dungeon_knight.json
│   ├── dungeon_slime.json
│   ├── dungeon_soul.json
│   ├── eagle.json
│   ├── ender_dragon.json
│   ├── enderman.json
│   ├── evil.json
│   ├── evoker.json
│   ├── eye_guard.json
│   ├── eye_guard_laser.json
│   ├── flame_soul.json
│   ├── flower_creeper.json
│   ├── fly_eye.json
│   ├── fly_mouth.json
│   ├── fly_skeleton.json
│   ├── ghast.json
│   ├── ghost_gunner.json
│   ├── ghost_soul.json
│   ├── giant_cursed_skull.json
│   ├── green_slime.json
│   ├── grim_reaper.json
│   ├── guardian.json
│   ├── husk.json
│   ├── ice_elf.json
│   ├── ice_slime.json
│   ├── iron_zombie.json
│   ├── jungle_bat.json
│   ├── large_bat.json
│   ├── large_black_slime.json
│   ├── large_block_slime.json
│   ├── large_desert_slime.json
│   ├── large_green_slime.json
│   ├── large_ice_slime.json
│   ├── large_jungle_bat.json
│   ├── large_spider.json
│   ├── large_tainted_slime.json
│   ├── large_waste_block_slime.json
│   ├── large_waste_slime.json
│   ├── light_blue_butterfly.json
│   ├── mad_skeleton.json
│   ├── mad_skeleton_armed.json
│   ├── mad_skeleton_tall.json
│   ├── mad_skeleton_tall_armed.json
│   ├── mad_skeleton_tall_helmet_armed.json
│   ├── magma_birdo.json
│   ├── magma_elf.json
│   ├── magma_slime.json
│   ├── man_eater.json
│   ├── meteor.json
│   ├── mini_ghast.json
│   ├── mummy.json
│   ├── phantom.json
│   ├── pig.json
│   ├── pufferfish.json
│   ├── purple_slime.json
│   ├── ragged_mage.json
│   ├── red_butterfly.json
│   ├── red_mage.json
│   ├── red_mushroom_cow.json
│   ├── red_phantom.json
│   ├── rock_man.json
│   ├── rolling_fire_ball.json
│   ├── sheep.json
│   ├── shulker.json
│   ├── skeleton.json
│   ├── skeleton_assaulter.json
│   ├── skeleton_blue_armed.json
│   ├── skeleton_blue_armed_masked.json
│   ├── skeleton_blue_knight.json
│   ├── skeleton_fire_armed.json
│   ├── skeleton_fire_armed_swordsman.json
│   ├── skeleton_guard.json
│   ├── small_fire_hell_eater.json
│   ├── small_hell_eater.json
│   ├── snow_guardian.json
│   ├── snow_guardian_archer.json
│   ├── snow_queen.json
│   ├── snow_slime.json
│   ├── spider.json
│   ├── squid.json
│   ├── tainted_creeper.json
│   ├── tainted_skeleton.json
│   ├── tainted_slime.json
│   ├── turtle.json
│   ├── undead_miner.json
│   ├── vampire_miner.json
│   ├── villager_zombie.json
│   ├── vine_man_eater_body.json
│   ├── vine_man_eater_head.json
│   ├── vine_man_eater_tail.json
│   ├── waste_block_slime.json
│   ├── waste_ghost.json
│   ├── waste_mummy.json
│   ├── white_rabbit.json
│   ├── wither_skeleton.json
│   ├── wolf.json
│   ├── worm_body.json
│   ├── worm_head.json
│   ├── worm_tail.json
│   ├── yellow_butterfly.json
│   ├── yellow_rabbit.json
│   ├── yellow_slime.json
│   ├── zombie.json
│   └── zombie_pigman.json
├── package.json
├── player/
│   ├── GPlayer.lua
│   ├── GlobalPlayer.json
│   └── PlayerConstants.lua
├── projectile_ai/
│   ├── AirBullet.json
│   ├── AirBullet.lua
│   ├── AirWave.json
│   ├── AirWave.lua
│   ├── AmethystMagic.json
│   ├── AmethystMagic.lua
│   ├── Arrow.json
│   ├── Arrow.lua
│   ├── BlackHole.json
│   ├── BlackHole.lua
│   ├── BlazeRod.json
│   ├── BlazeRod.lua
│   ├── BloodArrow.json
│   ├── BloodArrow.lua
│   ├── BlueArrow.json
│   ├── BlueArrow.lua
│   ├── BlueBullet.json
│   ├── BlueBullet.lua
│   ├── BlueWave.json
│   ├── BlueWave.lua
│   ├── Bomb.json
│   ├── Bomb.lua
│   ├── Boomerang.json
│   ├── Boomerang.lua
│   ├── Bullet.json
│   ├── Bullet.lua
│   ├── CrystalMagic.json
│   ├── CrystalMagic.lua
│   ├── CursedArrow.json
│   ├── CursedArrow.lua
│   ├── Fire.json
│   ├── Fire.lua
│   ├── FireArrow.json
│   ├── FireArrow.lua
│   ├── FireElement.json
│   ├── FireElement.lua
│   ├── FireFlow.json
│   ├── FireFlow.lua
│   ├── FireFlowLarge.json
│   ├── FireFlowLarge.lua
│   ├── FireMagic.json
│   ├── FireMagic.lua
│   ├── Fireball.json
│   ├── Fireball.lua
│   ├── GlowBomb.json
│   ├── GlowBomb.lua
│   ├── Glowball.json
│   ├── Glowball.lua
│   ├── Grenade.json
│   ├── Grenade.lua
│   ├── IceArrow.json
│   ├── IceArrow.lua
│   ├── IceBullet.json
│   ├── IceBullet.lua
│   ├── IceMagic.json
│   ├── IceMagic.lua
│   ├── LaserBullet.json
│   ├── LaserBullet.lua
│   ├── LightingArrow.json
│   ├── LightingArrow.lua
│   ├── LightingBulletYellow.json
│   ├── LightingBulletYellow.lua
│   ├── LightingWheel.json
│   ├── LightingWheel.lua
│   ├── MagicWave.json
│   ├── MagicWave.lua
│   ├── MiniRocket.json
│   ├── MiniRocket.lua
│   ├── RedSpeedUp.json
│   ├── RedSpeedUp.lua
│   ├── Rocket.json
│   ├── Rocket.lua
│   ├── ShadowMagic.json
│   ├── ShadowMagic.lua
│   ├── ShulkerBullet.json
│   ├── ShulkerBullet.lua
│   ├── SnowFlake.json
│   ├── SnowFlake.lua
│   ├── Spike.json
│   ├── Spike.lua
│   ├── StarArrow.json
│   ├── StarArrow.lua
│   ├── StarMagic.json
│   ├── StarMagic.lua
│   ├── SuperBullet.json
│   ├── SuperBullet.lua
│   ├── SuperFire.json
│   ├── SuperFire.lua
│   ├── SwordArrow.json
│   ├── SwordArrow.lua
│   ├── WaterFlow.json
│   ├── WaterFlow.lua
│   ├── WaterMagic.json
│   └── WaterMagic.lua
├── projectile_ai_global/
│   ├── GProjectile.lua
│   └── GlobalProjectile.json
├── projectiles/
│   ├── air_bullet.json
│   ├── air_wave.json
│   ├── amethyst_magic.json
│   ├── black_hole.json
│   ├── blaze_rod.json
│   ├── blood_arrow.json
│   ├── blue_arrow.json
│   ├── bomb.json
│   ├── bone.json
│   ├── boomerang.json
│   ├── bullet.json
│   ├── bullet_laser.json
│   ├── bullet_super.json
│   ├── crystal_magic.json
│   ├── cursed_arrow.json
│   ├── fire_arrow.json
│   ├── fire_boomerang.json
│   ├── fire_charge.json
│   ├── fire_element.json
│   ├── fire_flow.json
│   ├── fire_flow_large.json
│   ├── fire_magic.json
│   ├── fire_wave.json
│   ├── glow_ball.json
│   ├── glow_bomb.json
│   ├── grenade.json
│   ├── gun_fire.json
│   ├── ice_arrow.json
│   ├── ice_bullet.json
│   ├── ice_magic.json
│   ├── light_bullet_laser.json
│   ├── lighting_arrow.json
│   ├── lighting_bullet_blue.json
│   ├── lighting_bullet_red_invert2.json
│   ├── lighting_bullet_yellow.json
│   ├── lighting_wheel.json
│   ├── magic_wave.json
│   ├── magic_wave3.json
│   ├── mini_rocket.json
│   ├── rocket.json
│   ├── shadow_magic.json
│   ├── shulker_bullet.json
│   ├── small_air_bullet.json
│   ├── snow_flake.json
│   ├── spike.json
│   ├── star.json
│   ├── star_arrow.json
│   ├── super_fire.json
│   ├── sword_arrow.json
│   ├── tnt.json
│   ├── water_flow.json
│   ├── water_magic.json
│   ├── wooden_arrow.json
│   └── wooden_boomerang.json
├── recipe_config/
│   ├── Brew.json
│   ├── Craft3x.json
│   ├── Repair.json
│   └── Smelt.json
├── recipes/
│   ├── brew/
│   │   ├── potion_awkward.json
│   │   ├── potion_fire_resistance.json
│   │   ├── potion_fire_resistance_long.json
│   │   ├── potion_glowing.json
│   │   ├── potion_harming.json
│   │   ├── potion_harming_2.json
│   │   ├── potion_harming_super.json
│   │   ├── potion_healing.json
│   │   ├── potion_healing_super.json
│   │   ├── potion_invisibility.json
│   │   ├── potion_invisibility_long.json
│   │   ├── potion_leaping.json
│   │   ├── potion_leaping_long.json
│   │   ├── potion_night_vision.json
│   │   ├── potion_night_vision_long.json
│   │   ├── potion_poison.json
│   │   ├── potion_poison_2.json
│   │   ├── potion_poison_long.json
│   │   ├── potion_regeneration.json
│   │   ├── potion_regeneration_long.json
│   │   ├── potion_slow_falling.json
│   │   ├── potion_slow_falling_long.json
│   │   ├── potion_slowness.json
│   │   ├── potion_slowness_2.json
│   │   ├── potion_slowness_long.json
│   │   ├── potion_strength.json
│   │   ├── potion_strength_long.json
│   │   ├── potion_swiftness.json
│   │   ├── potion_swiftness_long.json
│   │   ├── potion_water_breathing.json
│   │   ├── potion_water_breathing_long.json
│   │   ├── potion_weakness.json
│   │   ├── potion_weakness_2.json
│   │   └── potion_weakness_long.json
│   ├── craft3x/
│   │   ├── acacia_plank.json
│   │   ├── amethyst_staff.json
│   │   ├── amethyst_staff_2.json
│   │   ├── ancient_ingot.json
│   │   ├── andesite.json
│   │   ├── andesite_polished.json
│   │   ├── anvil.json
│   │   ├── barrel.json
│   │   ├── bench_acacia.json
│   │   ├── bench_birch.json
│   │   ├── bench_dark_oak.json
│   │   ├── bench_jungle.json
│   │   ├── bench_nether.json
│   │   ├── bench_oak.json
│   │   ├── bench_palm.json
│   │   ├── bench_spruce.json
│   │   ├── bench_tainted.json
│   │   ├── bench_volcano.json
│   │   ├── birch_plank.json
│   │   ├── blaze_powder.json
│   │   ├── block_coal.json
│   │   ├── block_diamond.json
│   │   ├── block_emerald.json
│   │   ├── block_gold.json
│   │   ├── block_iron.json
│   │   ├── block_lapis.json
│   │   ├── block_netherite.json
│   │   ├── block_quartz.json
│   │   ├── block_redstone.json
│   │   ├── blood_arrow.json
│   │   ├── blood_arrow_2.json
│   │   ├── blood_bow.json
│   │   ├── blue_ice.json
│   │   ├── blue_stone_bow.json
│   │   ├── blue_torch.json
│   │   ├── blue_wire.json
│   │   ├── bomb.json
│   │   ├── bomb_2.json
│   │   ├── bone_block.json
│   │   ├── bone_meal.json
│   │   ├── bone_meal_2.json
│   │   ├── book.json
│   │   ├── book_block.json
│   │   ├── bookcase_acacia.json
│   │   ├── bookcase_birch.json
│   │   ├── bookcase_dark_oak.json
│   │   ├── bookcase_jungle.json
│   │   ├── bookcase_nether.json
│   │   ├── bookcase_oak.json
│   │   ├── bookcase_palm.json
│   │   ├── bookcase_spruce.json
│   │   ├── bookcase_tainted.json
│   │   ├── bookcase_volcano.json
│   │   ├── boomerang.json
│   │   ├── boomerang_2.json
│   │   ├── bowl.json
│   │   ├── bread.json
│   │   ├── brewing_stand.json
│   │   ├── brick.json
│   │   ├── bronze_axe.json
│   │   ├── bronze_chestplate.json
│   │   ├── bronze_helmet.json
│   │   ├── bronze_ingot.json
│   │   ├── bronze_leggings.json
│   │   ├── bronze_pickaxe.json
│   │   ├── bronze_sword.json
│   │   ├── brown_mushroom.json
│   │   ├── brown_mushroom_2.json
│   │   ├── bucket_empty.json
│   │   ├── cabinet_acacia.json
│   │   ├── cabinet_birch.json
│   │   ├── cabinet_dark_oak.json
│   │   ├── cabinet_jungle.json
│   │   ├── cabinet_nether.json
│   │   ├── cabinet_oak.json
│   │   ├── cabinet_palm.json
│   │   ├── cabinet_spruce.json
│   │   ├── cabinet_tainted.json
│   │   ├── cabinet_volcano.json
│   │   ├── cake.json
│   │   ├── cake_piece.json
│   │   ├── campfire.json
│   │   ├── campfire_2.json
│   │   ├── campfire_3.json
│   │   ├── campfire_4.json
│   │   ├── candle.json
│   │   ├── candle_holder.json
│   │   ├── cauldron.json
│   │   ├── chair_acacia.json
│   │   ├── chair_birch.json
│   │   ├── chair_dark_oak.json
│   │   ├── chair_jungle.json
│   │   ├── chair_nether.json
│   │   ├── chair_oak.json
│   │   ├── chair_palm.json
│   │   ├── chair_spruce.json
│   │   ├── chair_tainted.json
│   │   ├── chair_volcano.json
│   │   ├── chandeliers.json
│   │   ├── chest.json
│   │   ├── clay.json
│   │   ├── clay_block.json
│   │   ├── coal.json
│   │   ├── coarse_dirt.json
│   │   ├── cobblestone_fence.json
│   │   ├── cobblestone_mossy.json
│   │   ├── cobweb.json
│   │   ├── cookie.json
│   │   ├── copper_axe.json
│   │   ├── copper_chestplate.json
│   │   ├── copper_helmet.json
│   │   ├── copper_leggings.json
│   │   ├── copper_pickaxe.json
│   │   ├── copper_sword.json
│   │   ├── crafting_table.json
│   │   ├── cross_bow.json
│   │   ├── dark_oak_plank.json
│   │   ├── dark_shadow_ingot.json
│   │   ├── daylight_sensor.json
│   │   ├── daylight_sensor_inverted.json
│   │   ├── diamond.json
│   │   ├── diamond_axe.json
│   │   ├── diamond_chestplate.json
│   │   ├── diamond_helmet.json
│   │   ├── diamond_ingot.json
│   │   ├── diamond_leggings.json
│   │   ├── diamond_pickaxe.json
│   │   ├── diamond_sword.json
│   │   ├── diorite.json
│   │   ├── diorite_polished.json
│   │   ├── dirt.json
│   │   ├── door_nether.json
│   │   ├── dried_kelp.json
│   │   ├── dried_kelp_block.json
│   │   ├── dungeon_eater.json
│   │   ├── dye_black.json
│   │   ├── dye_blue.json
│   │   ├── dye_brown.json
│   │   ├── dye_cyan.json
│   │   ├── dye_cyan_2.json
│   │   ├── dye_gray.json
│   │   ├── dye_light_blue.json
│   │   ├── dye_light_blue_2.json
│   │   ├── dye_light_blue_3.json
│   │   ├── dye_light_gray.json
│   │   ├── dye_light_gray_2.json
│   │   ├── dye_light_gray_3.json
│   │   ├── dye_light_gray_4.json
│   │   ├── dye_lime.json
│   │   ├── dye_lime_2.json
│   │   ├── dye_magenta.json
│   │   ├── dye_magenta_2.json
│   │   ├── dye_magenta_3.json
│   │   ├── dye_magenta_4.json
│   │   ├── dye_magenta_5.json
│   │   ├── dye_orange.json
│   │   ├── dye_orange_2.json
│   │   ├── dye_pink.json
│   │   ├── dye_pink_2.json
│   │   ├── dye_pink_3.json
│   │   ├── dye_pink_4.json
│   │   ├── dye_purple.json
│   │   ├── dye_purple_2.json
│   │   ├── dye_red.json
│   │   ├── dye_red_2.json
│   │   ├── dye_red_3.json
│   │   ├── dye_white.json
│   │   ├── dye_yellow.json
│   │   ├── dye_yellow_2.json
│   │   ├── emerald.json
│   │   ├── enchantment_table.json
│   │   ├── end_rod.json
│   │   ├── end_stone_brick.json
│   │   ├── ender_chest.json
│   │   ├── ender_eye.json
│   │   ├── ender_mirror.json
│   │   ├── farmland.json
│   │   ├── farmland_2.json
│   │   ├── fence_acacia.json
│   │   ├── fence_birch.json
│   │   ├── fence_dark_oak.json
│   │   ├── fence_jungle.json
│   │   ├── fence_nether.json
│   │   ├── fence_oak.json
│   │   ├── fence_palm.json
│   │   ├── fence_spruce.json
│   │   ├── fence_tainted.json
│   │   ├── fence_volcano.json
│   │   ├── fermented_spider_eye.json
│   │   ├── fire_boomerang.json
│   │   ├── fire_boomerang_2.json
│   │   ├── fire_bullet.json
│   │   ├── fire_bullet_2.json
│   │   ├── fire_charge.json
│   │   ├── fire_charge_2.json
│   │   ├── fire_lamp.json
│   │   ├── flesh_chestplate.json
│   │   ├── flesh_helmet.json
│   │   ├── flesh_ingot.json
│   │   ├── flesh_leggings.json
│   │   ├── flesh_machine_part.json
│   │   ├── flower_pot.json
│   │   ├── flower_pot_large.json
│   │   ├── furnace.json
│   │   ├── ghost.json
│   │   ├── glass_bottle.json
│   │   ├── glistering_melon_slice.json
│   │   ├── glow_ball.json
│   │   ├── glow_bomb.json
│   │   ├── glowing_mushroom.json
│   │   ├── glowing_mushroom_2.json
│   │   ├── glowstone.json
│   │   ├── gold_ingot.json
│   │   ├── gold_ingot_2.json
│   │   ├── gold_nugget.json
│   │   ├── golden_apple.json
│   │   ├── golden_axe.json
│   │   ├── golden_carrot.json
│   │   ├── golden_chestplate.json
│   │   ├── golden_helmet.json
│   │   ├── golden_leggings.json
│   │   ├── golden_pickaxe.json
│   │   ├── golden_pressure_plate.json
│   │   ├── golden_sword.json
│   │   ├── granite.json
│   │   ├── granite_polished.json
│   │   ├── grass_axe.json
│   │   ├── grass_pickaxe.json
│   │   ├── grass_sword.json
│   │   ├── green_torch.json
│   │   ├── green_wire.json
│   │   ├── grenade.json
│   │   ├── grenade_2.json
│   │   ├── hay_bale.json
│   │   ├── ice_arrow.json
│   │   ├── ice_bow.json
│   │   ├── ice_brick.json
│   │   ├── ice_element_ball.json
│   │   ├── ice_packed.json
│   │   ├── ice_staff.json
│   │   ├── iron_axe.json
│   │   ├── iron_bar.json
│   │   ├── iron_bullet.json
│   │   ├── iron_bullet_2.json
│   │   ├── iron_chestplate.json
│   │   ├── iron_door.json
│   │   ├── iron_helmet.json
│   │   ├── iron_ingot.json
│   │   ├── iron_ingot_2.json
│   │   ├── iron_leggings.json
│   │   ├── iron_nugget.json
│   │   ├── iron_pickaxe.json
│   │   ├── iron_pressure_plate.json
│   │   ├── iron_sword.json
│   │   ├── jack_o_lantern.json
│   │   ├── jukebox.json
│   │   ├── jungle_plank.json
│   │   ├── knight_chestplate.json
│   │   ├── knight_helmet.json
│   │   ├── knight_leggings.json
│   │   ├── lantern.json
│   │   ├── lapis_lazuli.json
│   │   ├── lava_chestplate.json
│   │   ├── lava_helmet.json
│   │   ├── lava_leggings.json
│   │   ├── lead_axe.json
│   │   ├── lead_chestplate.json
│   │   ├── lead_helmet.json
│   │   ├── lead_leggings.json
│   │   ├── lead_pickaxe.json
│   │   ├── lead_sword.json
│   │   ├── leather.json
│   │   ├── leather_chestplate.json
│   │   ├── leather_helmet.json
│   │   ├── leather_leggings.json
│   │   ├── lever.json
│   │   ├── lighter.json
│   │   ├── lighting_arrow.json
│   │   ├── lighting_bow.json
│   │   ├── lighting_staff.json
│   │   ├── machine_part.json
│   │   ├── magic_cell_group.json
│   │   ├── magic_gold_chestplate.json
│   │   ├── magic_gold_helmet.json
│   │   ├── magic_gold_leggings.json
│   │   ├── magic_silver_chestplate.json
│   │   ├── magic_silver_helmet.json
│   │   ├── magic_silver_ingot.json
│   │   ├── magic_silver_leggings.json
│   │   ├── magma_block.json
│   │   ├── magma_cream.json
│   │   ├── magma_gold_ingot.json
│   │   ├── melon_seed.json
│   │   ├── mossy_cobblestone_fence.json
│   │   ├── mushroom_stew.json
│   │   ├── nether_brick_block.json
│   │   ├── nether_chest.json
│   │   ├── nether_lamp.json
│   │   ├── netherite_ingot.json
│   │   ├── netherite_ingot_2.json
│   │   ├── oak_plank.json
│   │   ├── painting_2x2.json
│   │   ├── painting_2x2_2.json
│   │   ├── painting_2x4.json
│   │   ├── painting_4x2.json
│   │   ├── painting_4x4.json
│   │   ├── painting_8x4.json
│   │   ├── painting_8x6.json
│   │   ├── painting_8x8.json
│   │   ├── palm_plank.json
│   │   ├── paper.json
│   │   ├── platform_acacia.json
│   │   ├── platform_birch.json
│   │   ├── platform_dark_oak.json
│   │   ├── platform_end_stone.json
│   │   ├── platform_jungle.json
│   │   ├── platform_nether_brick.json
│   │   ├── platform_oak.json
│   │   ├── platform_palm.json
│   │   ├── platform_prismarine.json
│   │   ├── platform_prismarine_dark.json
│   │   ├── platform_purpur.json
│   │   ├── platform_quartz.json
│   │   ├── platform_red_sand_stone.json
│   │   ├── platform_sandstone.json
│   │   ├── platform_spruce.json
│   │   ├── platform_stone_brick.json
│   │   ├── platform_tainted.json
│   │   ├── platform_volcano.json
│   │   ├── poison_mushroom.json
│   │   ├── prismarine.json
│   │   ├── prismarine_brick.json
│   │   ├── prismarine_dark.json
│   │   ├── prismarine_dark_2.json
│   │   ├── pumpkin_helmet.json
│   │   ├── pumpkin_pie.json
│   │   ├── pumpkin_seed.json
│   │   ├── purpur_block.json
│   │   ├── quartz.json
│   │   ├── red_gold_ingot.json
│   │   ├── red_mushroom.json
│   │   ├── red_mushroom_2.json
│   │   ├── red_nether_brick.json
│   │   ├── red_sand_carved.json
│   │   ├── red_sand_stone.json
│   │   ├── red_torch.json
│   │   ├── red_wire.json
│   │   ├── redstone.json
│   │   ├── redstone_lamp.json
│   │   ├── redstone_torch.json
│   │   ├── rocket.json
│   │   ├── rocket_boost.json
│   │   ├── rotten_flesh.json
│   │   ├── sandstone.json
│   │   ├── sandstone_carved.json
│   │   ├── sea_lantern.json
│   │   ├── shadow_staff.json
│   │   ├── shears.json
│   │   ├── shot_bow.json
│   │   ├── shot_bow_2.json
│   │   ├── shulker_box.json
│   │   ├── sign.json
│   │   ├── silver_axe.json
│   │   ├── silver_bullet.json
│   │   ├── silver_chestplate.json
│   │   ├── silver_helmet.json
│   │   ├── silver_leggings.json
│   │   ├── silver_pickaxe.json
│   │   ├── silver_sword.json
│   │   ├── slime_block.json
│   │   ├── slimeball.json
│   │   ├── snow.json
│   │   ├── snow_brick.json
│   │   ├── snowball.json
│   │   ├── spruce_plank.json
│   │   ├── stained_glass_black.json
│   │   ├── stained_glass_blue.json
│   │   ├── stained_glass_brown.json
│   │   ├── stained_glass_cyan.json
│   │   ├── stained_glass_gray.json
│   │   ├── stained_glass_green.json
│   │   ├── stained_glass_light_blue.json
│   │   ├── stained_glass_light_gray.json
│   │   ├── stained_glass_lime.json
│   │   ├── stained_glass_magenta.json
│   │   ├── stained_glass_orange.json
│   │   ├── stained_glass_pink.json
│   │   ├── stained_glass_purple.json
│   │   ├── stained_glass_red.json
│   │   ├── stained_glass_white.json
│   │   ├── stained_glass_yellow.json
│   │   ├── star_arrow.json
│   │   ├── star_chestplate.json
│   │   ├── star_helmet.json
│   │   ├── star_leggings.json
│   │   ├── steel_axe.json
│   │   ├── steel_chestplate.json
│   │   ├── steel_helmet.json
│   │   ├── steel_leggings.json
│   │   ├── steel_pickaxe.json
│   │   ├── steel_sword.json
│   │   ├── stick.json
│   │   ├── stone.json
│   │   ├── stone_2.json
│   │   ├── stone_axe.json
│   │   ├── stone_brick.json
│   │   ├── stone_brick_carved.json
│   │   ├── stone_brick_mossy.json
│   │   ├── stone_button.json
│   │   ├── stone_chest.json
│   │   ├── stone_hoe.json
│   │   ├── stone_pickaxe.json
│   │   ├── stone_pressure_plate.json
│   │   ├── stone_sword.json
│   │   ├── strange_eye.json
│   │   ├── string.json
│   │   ├── suger.json
│   │   ├── super_bronze_sword.json
│   │   ├── super_copper_sword.json
│   │   ├── super_cross_bow.json
│   │   ├── super_diamond_chestplate.json
│   │   ├── super_diamond_helmet.json
│   │   ├── super_diamond_leggings.json
│   │   ├── super_diamond_sword.json
│   │   ├── super_golden_sword.json
│   │   ├── super_iron_sword.json
│   │   ├── super_lead_sword.json
│   │   ├── super_silver_sword.json
│   │   ├── super_steel_sword.json
│   │   ├── super_tin_sword.json
│   │   ├── sword_arrow.json
│   │   ├── sword_arrow_2.json
│   │   ├── sword_arrow_3.json
│   │   ├── table_acacia.json
│   │   ├── table_birch.json
│   │   ├── table_dark_oak.json
│   │   ├── table_jungle.json
│   │   ├── table_nether.json
│   │   ├── table_oak.json
│   │   ├── table_palm.json
│   │   ├── table_spruce.json
│   │   ├── table_tainted.json
│   │   ├── table_volcano.json
│   │   ├── tainted_plank.json
│   │   ├── terracotta_black.json
│   │   ├── terracotta_black_2.json
│   │   ├── terracotta_blue.json
│   │   ├── terracotta_blue_2.json
│   │   ├── terracotta_brown.json
│   │   ├── terracotta_cyan.json
│   │   ├── terracotta_gray.json
│   │   ├── terracotta_green.json
│   │   ├── terracotta_light_blue.json
│   │   ├── terracotta_light_gray.json
│   │   ├── terracotta_lime.json
│   │   ├── terracotta_magenta.json
│   │   ├── terracotta_orange.json
│   │   ├── terracotta_pink.json
│   │   ├── terracotta_purple.json
│   │   ├── terracotta_red.json
│   │   ├── terracotta_white.json
│   │   ├── terracotta_white_2.json
│   │   ├── terracotta_yellow.json
│   │   ├── tin_axe.json
│   │   ├── tin_chestplate.json
│   │   ├── tin_helmet.json
│   │   ├── tin_leggings.json
│   │   ├── tin_pickaxe.json
│   │   ├── tin_sword.json
│   │   ├── tnt.json
│   │   ├── tnt_2.json
│   │   ├── torch.json
│   │   ├── torch_2.json
│   │   ├── torch_3.json
│   │   ├── tower_core.json
│   │   ├── trapped_chest.json
│   │   ├── volcano_plank.json
│   │   ├── water_staff.json
│   │   ├── watermelon.json
│   │   ├── wheat.json
│   │   ├── white_torch.json
│   │   ├── wire_cutter.json
│   │   ├── wooden_arrow.json
│   │   ├── wooden_arrow_2.json
│   │   ├── wooden_arrow_3.json
│   │   ├── wooden_arrow_4.json
│   │   ├── wooden_axe.json
│   │   ├── wooden_bed_black.json
│   │   ├── wooden_bed_black_2.json
│   │   ├── wooden_bed_blue.json
│   │   ├── wooden_bed_blue_2.json
│   │   ├── wooden_bed_brown.json
│   │   ├── wooden_bed_brown_2.json
│   │   ├── wooden_bed_cyan.json
│   │   ├── wooden_bed_cyan_2.json
│   │   ├── wooden_bed_gray.json
│   │   ├── wooden_bed_gray_2.json
│   │   ├── wooden_bed_green.json
│   │   ├── wooden_bed_green_2.json
│   │   ├── wooden_bed_light_blue.json
│   │   ├── wooden_bed_light_blue_2.json
│   │   ├── wooden_bed_light_gray.json
│   │   ├── wooden_bed_light_gray_2.json
│   │   ├── wooden_bed_lime.json
│   │   ├── wooden_bed_lime_2.json
│   │   ├── wooden_bed_magenta.json
│   │   ├── wooden_bed_magenta_2.json
│   │   ├── wooden_bed_orange.json
│   │   ├── wooden_bed_orange_2.json
│   │   ├── wooden_bed_pink.json
│   │   ├── wooden_bed_pink_2.json
│   │   ├── wooden_bed_purple.json
│   │   ├── wooden_bed_purple_2.json
│   │   ├── wooden_bed_red.json
│   │   ├── wooden_bed_red_2.json
│   │   ├── wooden_bed_white.json
│   │   ├── wooden_bed_yellow.json
│   │   ├── wooden_bed_yellow_2.json
│   │   ├── wooden_boomerang.json
│   │   ├── wooden_bow.json
│   │   ├── wooden_button.json
│   │   ├── wooden_door_acacia.json
│   │   ├── wooden_door_birch.json
│   │   ├── wooden_door_dark_oak.json
│   │   ├── wooden_door_jungle.json
│   │   ├── wooden_door_oak.json
│   │   ├── wooden_door_palm.json
│   │   ├── wooden_door_spruce.json
│   │   ├── wooden_door_tainted.json
│   │   ├── wooden_door_volcano.json
│   │   ├── wooden_hoe.json
│   │   ├── wooden_pickaxe.json
│   │   ├── wooden_pressure_plate.json
│   │   ├── wooden_sword.json
│   │   ├── wool_black.json
│   │   ├── wool_black_2.json
│   │   ├── wool_blue.json
│   │   ├── wool_blue_2.json
│   │   ├── wool_brown.json
│   │   ├── wool_cyan.json
│   │   ├── wool_gray.json
│   │   ├── wool_green.json
│   │   ├── wool_light_blue.json
│   │   ├── wool_light_gray.json
│   │   ├── wool_lime.json
│   │   ├── wool_magenta.json
│   │   ├── wool_orange.json
│   │   ├── wool_pink.json
│   │   ├── wool_purple.json
│   │   ├── wool_red.json
│   │   ├── wool_white.json
│   │   ├── wool_yellow.json
│   │   ├── yellow_torch.json
│   │   └── yellow_wire.json
│   ├── repair/
│   │   ├── ancient_chestplate.json
│   │   ├── ancient_chestplate_2.json
│   │   ├── ancient_helmet.json
│   │   ├── ancient_helmet_2.json
│   │   ├── ancient_leggings.json
│   │   ├── ancient_leggings_2.json
│   │   ├── bronze_axe.json
│   │   ├── bronze_chestplate.json
│   │   ├── bronze_helmet.json
│   │   ├── bronze_leggings.json
│   │   ├── bronze_pickaxe.json
│   │   ├── bronze_sword.json
│   │   ├── copper_axe.json
│   │   ├── copper_chestplate.json
│   │   ├── copper_helmet.json
│   │   ├── copper_leggings.json
│   │   ├── copper_pickaxe.json
│   │   ├── copper_sword.json
│   │   ├── diamond_axe.json
│   │   ├── diamond_chestplate.json
│   │   ├── diamond_helmet.json
│   │   ├── diamond_leggings.json
│   │   ├── diamond_pickaxe.json
│   │   ├── diamond_sword.json
│   │   ├── golden_axe.json
│   │   ├── golden_chestplate.json
│   │   ├── golden_helmet.json
│   │   ├── golden_leggings.json
│   │   ├── golden_pickaxe.json
│   │   ├── golden_sword.json
│   │   ├── iron_axe.json
│   │   ├── iron_chestplate.json
│   │   ├── iron_helmet.json
│   │   ├── iron_leggings.json
│   │   ├── iron_pickaxe.json
│   │   ├── iron_sword.json
│   │   ├── lead_axe.json
│   │   ├── lead_chestplate.json
│   │   ├── lead_helmet.json
│   │   ├── lead_leggings.json
│   │   ├── lead_pickaxe.json
│   │   ├── lead_sword.json
│   │   ├── leather_chestplate.json
│   │   ├── leather_helmet.json
│   │   ├── leather_leggings.json
│   │   ├── nether_axe.json
│   │   ├── nether_axe_2.json
│   │   ├── nether_chestplate.json
│   │   ├── nether_chestplate_2.json
│   │   ├── nether_helmet.json
│   │   ├── nether_helmet_2.json
│   │   ├── nether_helmet_3.json
│   │   ├── nether_leggings.json
│   │   ├── nether_leggings_2.json
│   │   ├── nether_pickaxe.json
│   │   ├── nether_pickaxe_2.json
│   │   ├── nether_sword.json
│   │   ├── nether_sword_2.json
│   │   ├── silver_axe.json
│   │   ├── silver_chestplate.json
│   │   ├── silver_helmet.json
│   │   ├── silver_leggings.json
│   │   ├── silver_pickaxe.json
│   │   ├── silver_sword.json
│   │   ├── steel_axe.json
│   │   ├── steel_chestplate.json
│   │   ├── steel_helmet.json
│   │   ├── steel_leggings.json
│   │   ├── steel_pickaxe.json
│   │   ├── steel_sword.json
│   │   ├── stone_axe.json
│   │   ├── stone_hoe.json
│   │   ├── stone_pickaxe.json
│   │   ├── stone_sword.json
│   │   ├── super_bronze_sword.json
│   │   ├── super_copper_sword.json
│   │   ├── super_diamond_sword.json
│   │   ├── super_golden_sword.json
│   │   ├── super_iron_sword.json
│   │   ├── super_lead_sword.json
│   │   ├── super_nether_sword.json
│   │   ├── super_nether_sword_2.json
│   │   ├── super_silver_sword.json
│   │   ├── super_steel_sword.json
│   │   ├── super_tin_sword.json
│   │   ├── tin_axe.json
│   │   ├── tin_chestplate.json
│   │   ├── tin_helmet.json
│   │   ├── tin_leggings.json
│   │   ├── tin_pickaxe.json
│   │   └── tin_sword.json
│   └── smelt/
│       ├── baked_potato.json
│       ├── charcoal.json
│       ├── charcoal_10.json
│       ├── charcoal_11.json
│       ├── charcoal_12.json
│       ├── charcoal_13.json
│       ├── charcoal_14.json
│       ├── charcoal_15.json
│       ├── charcoal_16.json
│       ├── charcoal_17.json
│       ├── charcoal_18.json
│       ├── charcoal_2.json
│       ├── charcoal_3.json
│       ├── charcoal_4.json
│       ├── charcoal_5.json
│       ├── charcoal_6.json
│       ├── charcoal_7.json
│       ├── charcoal_8.json
│       ├── charcoal_9.json
│       ├── coal.json
│       ├── cooked_chicken.json
│       ├── cooked_cod.json
│       ├── cooked_mutton.json
│       ├── cooked_porkchop.json
│       ├── cooked_rabbit.json
│       ├── cooked_salmon.json
│       ├── copper_ingot.json
│       ├── diamond.json
│       ├── dried_kelp.json
│       ├── dye_green.json
│       ├── emerald.json
│       ├── glass.json
│       ├── glass_2.json
│       ├── glass_3.json
│       ├── gold_ingot.json
│       ├── iron_ingot.json
│       ├── lapis_lazuli.json
│       ├── lead_ingot.json
│       ├── nether_brick.json
│       ├── netherite_scrap.json
│       ├── popped_chorus_fruits.json
│       ├── quartz.json
│       ├── red_brick.json
│       ├── red_sand_smooth.json
│       ├── redstone.json
│       ├── sandstone_smooth.json
│       ├── silver_ingot.json
│       ├── sponge.json
│       ├── steak.json
│       ├── steel_ingot.json
│       ├── stone.json
│       ├── stone_brick_cracked.json
│       ├── terracotta_pink.json
│       └── tin_ingot.json
├── record/
│   └── RecordData.lua
├── settings/
│   ├── Settings.lua
│   └── SettingsData.lua
├── skins/
│   ├── skin_22.json
│   ├── skin_33.json
│   ├── skin_my.json
│   ├── skin_plin.json
│   ├── skin_redust.json
│   ├── skin_steve.json
│   ├── skin_ym.json
│   ├── skin_yy.json
│   ├── skin_zk.json
│   ├── xqz/
│   │   ├── cloth.mdp
│   │   └── hair.mdp
│   └── xqz.json
├── sounds/
│   ├── README.txt
│   ├── affectionate_scream.ogg
│   ├── anvil_land.ogg
│   ├── anvil_use.ogg
│   ├── attack1.ogg
│   ├── attack2.ogg
│   ├── barrel_open.ogg
│   ├── bat_death.ogg
│   ├── bat_hurt1.ogg
│   ├── bat_hurt2.ogg
│   ├── bat_hurt3.ogg
│   ├── bazooka_fire.ogg
│   ├── blaze_death.ogg
│   ├── blaze_hit1.ogg
│   ├── blaze_hit2.ogg
│   ├── blaze_hit3.ogg
│   ├── bow.ogg
│   ├── bowhit.ogg
│   ├── bowhit2.ogg
│   ├── broken.ogg
│   ├── button1.ogg
│   ├── cannon.ogg
│   ├── cat_hit1.ogg
│   ├── cat_hit2.ogg
│   ├── cat_hit3.ogg
│   ├── cat_meow1.ogg
│   ├── cat_meow2.ogg
│   ├── cat_meow3.ogg
│   ├── chain_gun_fire.ogg
│   ├── chest.ogg
│   ├── chestclosed.ogg
│   ├── chicken_hurt1.ogg
│   ├── chicken_hurt2.ogg
│   ├── chicken_say1.ogg
│   ├── chicken_say2.ogg
│   ├── chicken_say3.ogg
│   ├── click.ogg
│   ├── cloth1.ogg
│   ├── cloth2.ogg
│   ├── cloth3.ogg
│   ├── cow_hurt1.ogg
│   ├── cow_hurt2.ogg
│   ├── cow_hurt3.ogg
│   ├── cow_say1.ogg
│   ├── cow_say2.ogg
│   ├── cow_say3.ogg
│   ├── creeper1.ogg
│   ├── creeper2.ogg
│   ├── creeper3.ogg
│   ├── creeper_death.ogg
│   ├── dirt1.ogg
│   ├── dirt2.ogg
│   ├── dirt3.ogg
│   ├── dolphin_death.ogg
│   ├── dolphin_hurt1.ogg
│   ├── dolphin_hurt2.ogg
│   ├── dolphin_hurt3.ogg
│   ├── dolphin_play1.ogg
│   ├── dolphin_play2.ogg
│   ├── door1.ogg
│   ├── door2.ogg
│   ├── drink.ogg
│   ├── eat1.ogg
│   ├── eat2.ogg
│   ├── eat3.ogg
│   ├── enchant1.ogg
│   ├── enchant2.ogg
│   ├── enchant3.ogg
│   ├── enderman_death.ogg
│   ├── enderman_hit1.ogg
│   ├── enderman_hit2.ogg
│   ├── enderman_hit3.ogg
│   ├── enderman_idle1.ogg
│   ├── enderman_idle2.ogg
│   ├── enderman_idle3.ogg
│   ├── explode1.ogg
│   ├── explode2.ogg
│   ├── explode3.ogg
│   ├── explode4.ogg
│   ├── female_hit1.ogg
│   ├── female_hit2.ogg
│   ├── female_hit3.ogg
│   ├── fireball.ogg
│   ├── fireball2.ogg
│   ├── fizz.ogg
│   ├── fuse.ogg
│   ├── ghast_charge.ogg
│   ├── ghast_death.ogg
│   ├── ghast_moan1.ogg
│   ├── ghast_moan2.ogg
│   ├── ghast_moan3.ogg
│   ├── ghast_moan4.ogg
│   ├── glass1.ogg
│   ├── glass2.ogg
│   ├── glass3.ogg
│   ├── gore1.ogg
│   ├── gore2.ogg
│   ├── gore3.ogg
│   ├── grass.ogg
│   ├── grass1.ogg
│   ├── grass2.ogg
│   ├── grass3.ogg
│   ├── grenade_fire.ogg
│   ├── hit1.ogg
│   ├── hit2.ogg
│   ├── hit3.ogg
│   ├── laser.ogg
│   ├── launch.ogg
│   ├── lavapop.ogg
│   ├── levelup.ogg
│   ├── monster.ogg
│   ├── orb.ogg
│   ├── phantom_death.ogg
│   ├── phantom_hurt1.ogg
│   ├── phantom_hurt2.ogg
│   ├── phantom_hurt3.ogg
│   ├── pig_death.ogg
│   ├── pig_say1.ogg
│   ├── pig_say2.ogg
│   ├── pig_say3.ogg
│   ├── pistol_fire.ogg
│   ├── pop.ogg
│   ├── portal.ogg
│   ├── portal2.ogg
│   ├── pufferfish_blow_out.ogg
│   ├── pufferfish_blow_up.ogg
│   ├── pufferfish_death.ogg
│   ├── pufferfish_hurt1.ogg
│   ├── pufferfish_hurt2.ogg
│   ├── rabbit_hurt1.ogg
│   ├── rabbit_hurt2.ogg
│   ├── rabbit_hurt3.ogg
│   ├── rain1.ogg
│   ├── rain2.ogg
│   ├── rain3.ogg
│   ├── rain4.ogg
│   ├── rifle_fire.ogg
│   ├── sand1.ogg
│   ├── sand2.ogg
│   ├── sand3.ogg
│   ├── shatter.ogg
│   ├── shatter1.ogg
│   ├── shatter2.ogg
│   ├── shatter3.ogg
│   ├── shear.ogg
│   ├── sheep_say1.ogg
│   ├── sheep_say2.ogg
│   ├── sheep_say3.ogg
│   ├── shotgun_fire.ogg
│   ├── shulker_ambient1.ogg
│   ├── shulker_box_open.ogg
│   ├── shulker_close.ogg
│   ├── shulker_death.ogg
│   ├── shulker_hit1.ogg
│   ├── shulker_hit2.ogg
│   ├── shulker_hit3.ogg
│   ├── shulker_hurt1.ogg
│   ├── shulker_hurt2.ogg
│   ├── shulker_hurt3.ogg
│   ├── shulker_open.ogg
│   ├── shulker_shoot.ogg
│   ├── skeleton1.ogg
│   ├── skeleton2.ogg
│   ├── skeleton3.ogg
│   ├── skeleton_death.ogg
│   ├── slime_attack1.ogg
│   ├── slime_attack2.ogg
│   ├── snow1.ogg
│   ├── snow2.ogg
│   ├── snow3.ogg
│   ├── spider_death.ogg
│   ├── spider_say1.ogg
│   ├── spider_say2.ogg
│   ├── spider_say3.ogg
│   ├── splash.ogg
│   ├── step_cloth.ogg
│   ├── step_grass1.ogg
│   ├── step_grass2.ogg
│   ├── step_grass3.ogg
│   ├── step_grass4.ogg
│   ├── step_grass5.ogg
│   ├── step_grass6.ogg
│   ├── step_ladder.ogg
│   ├── step_sand.ogg
│   ├── step_snow1.ogg
│   ├── step_snow2.ogg
│   ├── step_snow3.ogg
│   ├── step_snow4.ogg
│   ├── step_stone1.ogg
│   ├── step_stone2.ogg
│   ├── step_stone3.ogg
│   ├── step_stone4.ogg
│   ├── step_stone5.ogg
│   ├── step_stone6.ogg
│   ├── step_wood1.ogg
│   ├── step_wood2.ogg
│   ├── step_wood3.ogg
│   ├── step_wood4.ogg
│   ├── step_wood5.ogg
│   ├── step_wood6.ogg
│   ├── stone1.ogg
│   ├── stone2.ogg
│   ├── stone3.ogg
│   ├── strip1.ogg
│   ├── strip2.ogg
│   ├── strip3.ogg
│   ├── strip4.ogg
│   ├── swim1.ogg
│   ├── swim2.ogg
│   ├── swim3.ogg
│   ├── swim4.ogg
│   ├── sys3.ogg
│   ├── system1.ogg
│   ├── system2.ogg
│   ├── thorns_hit1.ogg
│   ├── thorns_hit2.ogg
│   ├── thorns_hit3.ogg
│   ├── thorns_hit4.ogg
│   ├── thunder1.ogg
│   ├── thunder2.ogg
│   ├── thunder3.ogg
│   ├── tink1.ogg
│   ├── tink2.ogg
│   ├── tink3.ogg
│   ├── travel.ogg
│   ├── trigger.ogg
│   ├── turtle_death.ogg
│   ├── turtle_hurt1.ogg
│   ├── turtle_hurt2.ogg
│   ├── turtle_hurt3.ogg
│   ├── villager_death.ogg
│   ├── villager_hit1.ogg
│   ├── villager_hit2.ogg
│   ├── villager_hit3.ogg
│   ├── villager_say1.ogg
│   ├── villager_say2.ogg
│   ├── villager_say3.ogg
│   ├── wand1.ogg
│   ├── wand2.ogg
│   ├── wand3.ogg
│   ├── wandfail.ogg
│   ├── weapon.ogg
│   ├── wolf_bark1.ogg
│   ├── wolf_bark2.ogg
│   ├── wolf_bark3.ogg
│   ├── wolf_death.ogg
│   ├── wolf_hurt1.ogg
│   ├── wolf_hurt2.ogg
│   ├── wolf_hurt3.ogg
│   ├── wood1.ogg
│   ├── wood2.ogg
│   ├── wood3.ogg
│   ├── zombie_death.ogg
│   ├── zombie_hurt1.ogg
│   ├── zombie_hurt2.ogg
│   ├── zombie_say1.ogg
│   ├── zombie_say2.ogg
│   ├── zombie_say3.ogg
│   ├── zpig1.ogg
│   ├── zpig2.ogg
│   ├── zpig3.ogg
│   ├── zpigdeath.ogg
│   ├── zpighurt1.ogg
│   └── zpighurt2.ogg
├── spawns/
│   ├── aurora_palace.json
│   ├── end_outpost.json
│   └── monument_ocean.json
├── textures/
│   └── backgrounds/
│       └── atlas_config.json
├── trees/
│   ├── acacia/
│   │   └── acacia.json
│   ├── bare_oak/
│   │   └── bare_oak.json
│   ├── birch/
│   │   ├── birch.json
│   │   └── leaf.mdp
│   ├── blue_mushroom/
│   │   └── blue_mushroom.json
│   ├── cactus/
│   │   └── cactus.json
│   ├── dark_oak/
│   │   └── dark_oak.json
│   ├── jungle/
│   │   └── jungle.json
│   ├── oak/
│   │   ├── leaf.mdp
│   │   └── oak.json
│   ├── palm/
│   │   └── palm.json
│   ├── spruce/
│   │   └── spruce.json
│   ├── tainted/
│   │   └── tainted.json
│   └── volcano_oak/
│       └── volcano_oak.json
├── ui/
│   ├── ContainerHelper.lua
│   ├── DeathUI.lua
│   ├── GuiID.lua
│   ├── GuiLoader.lua
│   ├── GuiLoaderProxy.lua
│   ├── HotkeyUIHelper.lua
│   ├── InfoPopupUI.lua
│   ├── LanguageUI.lua
│   ├── ModListUI.lua
│   ├── MouseItemData.lua
│   ├── NewPlayerUI.lua
│   ├── NewServerUI.lua
│   ├── NewWorldUI.lua
│   ├── OptionUI.lua
│   ├── PendingUI.lua
│   ├── PlayerListUI.lua
│   ├── RawHotkeyUIHelper.lua
│   ├── ServerListUI.lua
│   ├── SettingUI.lua
│   ├── StartUI.lua
│   ├── TipUI.lua
│   ├── TipsOfTheDay.lua
│   ├── UIDefault.lua
│   ├── UIDesign.lua
│   ├── UILayerDefine.lua
│   ├── UIManager.lua
│   ├── UISlotOp.lua
│   ├── UISpritePool.lua
│   ├── UIUtil.lua
│   ├── UIWindow.lua
│   ├── WorldListUI.lua
│   ├── advancement/
│   │   ├── AdvancementContainerClient.lua
│   │   ├── AdvancementTree.lua
│   │   ├── AdvancementUI.lua
│   │   └── AdvancementUIData.lua
│   ├── backpack/
│   │   ├── BackpackContainerClient.lua
│   │   ├── BackpackContainerServer.lua
│   │   ├── BackpackUI.lua
│   │   └── BackpackUIData.lua
│   ├── brewing/
│   │   ├── BrewingContainerClient.lua
│   │   ├── BrewingContainerServer.lua
│   │   ├── BrewingUI.lua
│   │   └── BrewingUIData.lua
│   ├── chest/
│   │   ├── Chest30ContainerClient.lua
│   │   ├── Chest30ContainerServer.lua
│   │   ├── Chest30UI.lua
│   │   ├── ChestUIData.lua
│   │   ├── EnderChest30ContainerServer.lua
│   │   ├── EnderChest30UI.lua
│   │   ├── IChestContainerClient.lua
│   │   ├── IChestContainerServer.lua
│   │   └── IChestUI.lua
│   ├── craft3x/
│   │   ├── Craft3xContainerClient.lua
│   │   ├── Craft3xContainerServer.lua
│   │   ├── Craft3xHelper.lua
│   │   ├── Craft3xUI.lua
│   │   └── Craft3xUIData.lua
│   ├── enchant/
│   │   ├── EnchantContainerClient.lua
│   │   ├── EnchantContainerServer.lua
│   │   ├── EnchantUI.lua
│   │   └── EnchantUIData.lua
│   ├── hud/
│   │   └── HudUI.lua
│   ├── nei/
│   │   ├── NeiDataBrewing.lua
│   │   ├── NeiDataCrafting.lua
│   │   ├── NeiDataProxy.lua
│   │   ├── NeiDataRepairing.lua
│   │   ├── NeiDataSmelting.lua
│   │   └── NeiUI.lua
│   ├── recipe_book/
│   │   ├── RecipeBookServer.lua
│   │   └── RecipeBookUI.lua
│   ├── repair/
│   │   ├── RepairContainerClient.lua
│   │   ├── RepairContainerServer.lua
│   │   ├── RepairUI.lua
│   │   └── RepairUIData.lua
│   ├── shooter/
│   │   ├── IShooterContainerClient.lua
│   │   ├── IShooterContainerServer.lua
│   │   ├── IShooterUI.lua
│   │   ├── Shooter9ContainerClient.lua
│   │   ├── Shooter9ContainerServer.lua
│   │   └── Shooter9UI.lua
│   └── smelt/
│       ├── SmeltContainerClient.lua
│       ├── SmeltContainerServer.lua
│       ├── SmeltUI.lua
│       └── SmeltUIData.lua
├── ui_res/
│   ├── advance_tip.json
│   ├── advancement_cell.json
│   ├── base.json
│   ├── base2.json
│   ├── base3.json
│   ├── base_list_cell.json
│   ├── base_list_cell_highlight.json
│   ├── base_list_cell_highlight_2.json
│   ├── black.json
│   ├── button_disabled.json
│   ├── button_highlight.json
│   ├── button_normal.json
│   ├── button_pressed.json
│   ├── cell_empty.json
│   ├── cell_empty_2.json
│   ├── cell_empty_3.json
│   ├── cell_empty_4.json
│   ├── cell_normal.json
│   ├── cell_selected.json
│   ├── cell_selected_2.json
│   ├── cell_selected_3.json
│   ├── cell_selected_4.json
│   ├── cursor.cur
│   ├── round_rect_white.json
│   ├── tab.json
│   ├── tab_clicked.json
│   ├── tipbox.json
│   ├── white.json
│   ├── white_circle.json
│   └── window_frame_01.json
├── util/
│   ├── Algorithm.lua
│   ├── DictUtil.lua
│   ├── MiscHelper.lua
│   ├── OrderedArray.lua
│   ├── PhysicsUtil.lua
│   ├── SnakeModel.lua
│   ├── StringUtil.lua
│   └── ValidChecker.lua
├── world/
│   ├── Portals.lua
│   └── TCModWorldData.lua
├── world_gen/
│   ├── ChunkGenerator.lua
│   ├── ModChunkGenerator.lua
│   ├── SpecialTerrainProxies.lua
│   ├── TerrainProxies.lua
│   ├── TransitionProxies.lua
│   └── WorldGenDefine.lua
└── world_gen_init.lua

================================================
FILE CONTENTS
================================================

================================================
FILE: DebugHelper.lua
================================================
local DebugHelper = class("DebugHelper")
local DebugHelperConfig = require("DebugHelperConfig")

local function PrintRecipe(rid)
    local s = "recipe: "
    local recipe = RecipeUtils.GetRecipe(rid)
    if recipe.configID == Reg.RecipeConfigID("Craft3x") then
        ---@param e RecipeInputSlot
        for i, e in each(recipe.inputs) do
            if e.type == RecipeInputSlotType.Item then
                s = s .. string.format("[%s(%d)]",
                        e.itemStack:GetItem().idName, e.itemStack.stackSize)
            elseif e.type == RecipeInputSlotType.OreDictionary then
                s = s .. string.format("[%s(%d)]",
                        Reg.OreDictionaryIDName(e.id), e.stackSize)
            else
                s = s .. "[]"
            end
        end
        s = s .. " -> "
        ---@param e Slot
        for i, e in each(recipe.outputs) do
            if e.hasStack then
                s = s .. string.format("[%s(%d)]",
                        e:GetStack():GetItem().idName, e:GetStack().stackSize)
            else
                s = s .. "[]"
            end
        end
        print(s)
    end
end

function DebugHelper.RunDebug(player)
    if not DebugHelperConfig.Enable then
        return
    end
    if NetMode.current == NetMode.Server then
        DebugHelper.DebugNpc(player)
        DebugHelper.DebugDay()
        DebugHelper.DebugWeather()
    else
        DebugHelper.DebugFly(player)
    end
end

function DebugHelper.RunDebugStart(player)
    if not DebugHelperConfig.Enable then
        return
    end
    if NetMode.current == NetMode.Server then
        DebugHelper.DebugItemStart(player)
    end
end

---@param player Player
function DebugHelper.RunDebugProp(player)
    if not DebugHelperConfig.Enable then
        return
    end
    local propDebug = DebugHelperConfig.PropDebug
    if not propDebug.Enable then
        return
    end

    local TEST_ATTACK = propDebug.Attack
    local TEST_DEFENSE = propDebug.Defense

    player.baseAttack.attack = player.baseAttack.attack + TEST_ATTACK.attack
    player.baseAttack.knockBack = player.baseAttack.knockBack + TEST_ATTACK.knockBack
    player.baseAttack.crit = player.baseAttack.crit + TEST_ATTACK.crit

    player.baseDefense.defense = player.baseDefense.defense + TEST_DEFENSE.defense
    player.baseDefense.blastDefense = player.baseDefense.blastDefense + TEST_DEFENSE.blastDefense
    player.baseDefense.flameDefense = player.baseDefense.flameDefense + TEST_DEFENSE.flameDefense
    player.baseDefense.projectileDefense = player.baseDefense.projectileDefense + TEST_DEFENSE.projectileDefense
    player.baseDefense.breathDefense = player.baseDefense.breathDefense + TEST_DEFENSE.breathDefense
    player.baseDefense.fallDefense = player.baseDefense.fallDefense + TEST_DEFENSE.fallDefense
    player.baseDefense.knockBackDefense = player.baseDefense.knockBackDefense + TEST_DEFENSE.knockBackDefense

    if propDebug.FullFood then
        player.foodLevel = 100
        player.foodSaturationLevel = 100
    end
end

local s_tmpTickFly = 0
function DebugHelper.DebugFly(player)
    local flyDebug = DebugHelperConfig.FlyDebug
    if s_tmpTickFly == nil then
        s_tmpTickFly = 0
    end
    s_tmpTickFly = s_tmpTickFly + 1
    if s_tmpTickFly >= 60 and Input.keyboard:isKeyPressed(flyDebug.HotKey) then
        s_tmpTickFly = 0
        local g = require("player.GPlayer").GetInstance(player)
        g.observeMode = not g.observeMode
    end
end

function DebugHelper.DebugDay()
    local dayDebug = DebugHelperConfig.DayDebug
    if Input.keyboard:isKeyPressed(dayDebug.HotKeySub) then
        MiscUtils.SetDayTime(MiscUtils.GetDayTime() - dayDebug.SubTime)
    elseif Input.keyboard:isKeyPressed(dayDebug.HotKeyAdd) then
        MiscUtils.SetDayTime(MiscUtils.GetDayTime() + dayDebug.AddTime)
    end
end

function DebugHelper.DebugWeather()
    local weaDebug = DebugHelperConfig.WeatherDebug
    if Input.keyboard:isKeyPressed(weaDebug.HotKeySub) then
        MiscUtils.SetWeatherTime(MiscUtils.GetWeatherTime() - weaDebug.SubTime)
    elseif Input.keyboard:isKeyPressed(weaDebug.HotKeyAdd) then
        MiscUtils.SetWeatherTime(MiscUtils.GetWeatherTime() + weaDebug.AddTime)
    end
end

local s_tmpTickNpc = 0
function DebugHelper.DebugNpc(player)
    if s_tmpTickNpc == nil then
        s_tmpTickNpc = 0
    end
    s_tmpTickNpc = s_tmpTickNpc + 1
    local npcDebug = DebugHelperConfig.NpcDebug
    if s_tmpTickNpc > 30 and Input.keyboard:isKeyPressed(npcDebug.HotKey) then
        s_tmpTickNpc = 0
        local cx = player.centerX - GameWindow.width / 2 + Input.mouse.position.x
        local cy = player.centerY - GameWindow.height / 2 + Input.mouse.position.y

        for i, idName in ipairs(npcDebug.GenList) do
            NpcUtils.Create(Reg.NpcID(idName), cx - i * 20, cy)
        end
    end
end

---@param player Player
function DebugHelper.DebugItemStart(player)
    local itemDebug = DebugHelperConfig.ItemDebug
    if not itemDebug.Enable then
        return
    end

    local items = itemDebug.StartItems
    for idx, data in ipairs(items) do
        local index = idx - 1
        if idx < player.backpackInventory.slotCount then
            local slot = player.backpackInventory:GetSlot(index)
            slot:ClearStack()
            slot:PushStack(ItemStack.new(ItemRegistry.GetItemByIDName(data[1]), data[2]))
        end
    end

    local equipments = itemDebug.StartEquipments
    for idx, data in ipairs(equipments) do
        if data then
            local index = idx - 1
            if idx < player.equipmentInventory.slotCount then
                local slot = player.equipmentInventory:GetSlot(index)
                slot:ClearStack()
                slot:PushStack(ItemStack.new(ItemRegistry.GetItemByIDName(data), 1))
            end
        end
    end
end

return DebugHelper

================================================
FILE: DebugHelperConfig.lua
================================================
local DebugHelperConfig = {
    Enable = true,

    FlyDebug = {
        HotKey = Keys.P,
    },

    DayDebug = {
        HotKeyAdd = Keys.X,
        HotKeySub = Keys.Z,
        AddTime = 500,
        SubTime = 500,
    },

    WeatherDebug = {
        HotKeyAdd = Keys.C,
        HotKeySub = Keys.V,
        AddTime = 500,
        SubTime = 500,
    },

    PropDebug = {
        Enable = true,
        Attack = {
            attack = 0,
            knockBack = 1,
            crit = 10,
        },
        Defense = {
            defense = 18,
            blastDefense = 0,
            flameDefense = 0,
            projectileDefense = 0,
            breathDefense = 0,
            fallDefense = 0,
            knockBackDefense = 0,
        },
        FullFood = true,
    },

    EquipmentDebug = {
        Enable = true,
        Equipments = {
            --"i_hat_10",
            --"i_cloth_10",
            --"i_leg_10",
        }
    },

    ItemDebug = {
        Enable = true,
        HotKey = Keys.B,
        StartEquipments = {
            "lava_helmet",
            "lava_chestplate",
            "lava_leggings",
        },
        StartItems = {
            --{ "blue_shot_bow", 1 },
            --{ "bone_gun", 1 },
            --{ "curse_bow", 1 },
            --{ "dark_staff", 1 },
            --{ "fire_book", 1 },
            --{ "fire_shooter", 1 },
            --{ "fire_staff", 1 },
            --{ "frosen_staff", 1 },
            --{ "lava_sword", 1 },
            --{ "mini_laser_gun", 1 },
            { "tc:ender_mirror", 1 },
            { "tc:blaze_rod", 11 },
            { "tc:shotgun", 1 },
            { "tc:shot_bow", 1 },
            { "tc:brewing_stand", 111 },
            { "tc:diamond_pickaxe", 1 },
            { "tc:diamond_axe", 1 },
            { "tc:diamond_sword", 1 },
            { "tc:tower_core", 1 },
            { "tc:boomerang", 1 },
            { "td:energy_tower", 11 },
            { "td:burn_tower", 15 },
            { "potion_weakness", 111 },
            { "wooden_arrow", 111 },
            { "mini_laser_gun", 1 },
            { "wooden_arrow", 111 },
            { "ender_mirror", 1 },
            { "strange_eye", 8 },
            { "air_sword", 1 },
            { "bread", 111 },
            { "crafting_table", 2 },
            { "blue_talisman", 1 },
            { "gold_talisman", 1 },
            { "heart_talisman", 1 },
            { "lava_necklace", 1 },
            { "lighting_talisman", 1 },
            { "sword_fish", 1 },
            { "sword_fish_gun", 1 },
            { "water_book", 1 },
            { "ice_bow", 1 },
            { "blue_arrow", 11 },
            { "iron_bullet", 411 },
        },
        Items = {
            { "iron_bullet", 21 },
        },
    },

    NpcDebug = {
        HotKey = Keys.I,
        GenList = {
            --"shulker",
            --"skeleton",
            --"crison_eye",
            --"dungeon_eater_head",
            --"dungeon_slime",
            --"dungeon_knight",
            --"dungeon_soul",
            --"bone_officer",
            --"dead_mage",
            --"dark_mage",
            --"cursed_skull",
            --"dragon_skull",
            --"dungeon_creeper",
            --"evil",
            --"eye_guard",
            --"eye_guard_laser",
            --"flame_soul",
            --"fly_eye",
            --"fly_mouth",
            --"fly_skeleton",
            --"ghost_gunner",
            --"ghost_soul",
            --"giant_cursed_skull",
            --"grim_reaper",
            --"ragged_mage",
            --"red_mage",
            --"large_bat",
            --"mad_skeleton",
            --"mad_skeleton_armed",
            --"mad_skeleton_tall",
            --"mad_skeleton_tall_armed",
            --"mad_skeleton_tall_helmet_armed",
            --"skeleton_blue_armed",
            --"skeleton_blue_armed_masked",
            --"skeleton_blue_knight",
            --"skeleton_fire_armed",
            --"skeleton_fire_armed_swordsman",
            --"large_spider",
            --"mini_ghast",
            --"red_phantom",
            --"rock_man",
            --"rolling_fire_ball",
            --"skeleton_assaulter",
            --"skeleton_guard",
            --"undead_miner",
            --"vampire_miner",
            --"bone_officer",
            --"black_rabbit",
            --"guardian",
            --"skeleton",
            --"skeleton",
            --"creeper",
            --"snow_queen",
        }
    }
}

return DebugHelperConfig

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2022 skyblueyoshi

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# TerraCraft
The TerraCraft official vanilla mod.


================================================
FILE: advancements/AdvancementTriggers.lua
================================================
---@class TC.AdvancementTriggers
local AdvancementTriggers = class("AdvancementProxies")

local s_instance
---@return TC.AdvancementTriggers
function AdvancementTriggers.getInstance()
    if s_instance == nil then
        s_instance = AdvancementTriggers.new()
    end
    return s_instance
end

function AdvancementTriggers:__init()
    self._itemTriggerProxies = {}
    self._oreDictionaryTriggerProxies = {}
    self._npcKillTriggerProxies = {}
    self._biomeTypeTriggerProxies = {}
    self._biomeTriggerProxies = {}
end

function AdvancementTriggers:TriggerEnterBiome(player, biomeID)
    local biomeData = BiomeUtils.GetData(biomeID)
    self:_TryTriggerProxy(player, self._biomeTriggerProxies[biomeID])
    self:_TryTriggerProxy(player, self._biomeTypeTriggerProxies[biomeData.biomeType])
end

---TriggerGetItem
---@param player Player
---@param itemID int
---@param stackSize int
function AdvancementTriggers:TriggerGetItem(player, itemID, stackSize)
    -- trigger by single item
    self:_TryTriggerProxy(player, self._itemTriggerProxies[itemID])

    -- trigger by item ore dictionary
    local item = ItemRegistry.GetItemByID(itemID)
    for _, oreDictionaryID in each(item.oreDictionaryIDs) do
        self:_TryTriggerProxy(player, self._oreDictionaryTriggerProxies[oreDictionaryID])
    end
end

---TriggerKillNpc
---@param player Player
---@param npc Npc
function AdvancementTriggers:TriggerKillNpc(player, npc)
    self:_TryTriggerProxy(player, self._npcKillTriggerProxies[npc.id])
end

function AdvancementTriggers:_TryTriggerProxy(player, proxy)
    if proxy ~= nil then
        self:_TriggerAll(player, proxy)
    end
end

---_TriggerAll
---@param player Player
---@param advancementIDs int[]
function AdvancementTriggers:_TriggerAll(player, advancementIDs)
    for _, advancementID in ipairs(advancementIDs) do
        player:FinishAdvancement(advancementID)
    end
end

function AdvancementTriggers:_AddProxyAdvancement(triggerProxies, key, advancementIDName)
    local advancementID = Reg.AdvancementID(advancementIDName)
    if triggerProxies[key] == nil then
        triggerProxies[key] = {}
    end
    local exist = false
    for _, v in ipairs(triggerProxies[key]) do
        if v == advancementID then
            exist = true
            break
        end
    end
    if not exist then
        table.insert(triggerProxies[key], advancementID)
    end
end

function AdvancementTriggers:RegisterItemTrigger(advancementIDName, itemIDName)
    self:_AddProxyAdvancement(self._itemTriggerProxies, Reg.ItemID(itemIDName), advancementIDName)
end

function AdvancementTriggers:RegisterOreDictionaryTrigger(advancementIDName, oreDictionaryName)
    self:_AddProxyAdvancement(self._oreDictionaryTriggerProxies, Reg.OreDictionaryID(oreDictionaryName), advancementIDName)
end

function AdvancementTriggers:RegisterNpcKillTrigger(advancementIDName, npcIDName)
    self:_AddProxyAdvancement(self._npcKillTriggerProxies, Reg.NpcID(npcIDName), advancementIDName)
end

function AdvancementTriggers:RegisterBiomeTypeTrigger(advancementIDName, biomeTypeIDName)
    self:_AddProxyAdvancement(self._biomeTypeTriggerProxies, Reg.BiomeTypeID(biomeTypeIDName), advancementIDName)
end

function AdvancementTriggers:RegisterBiomeTrigger(advancementIDName, biomeIDName)
    self:_AddProxyAdvancement(self._biomeTriggerProxies, Reg.BiomeID(biomeIDName), advancementIDName)
end

function AdvancementTriggers:RegisterAll()
    self:RegisterItemTrigger("crafting_table", "crafting_table")
    self:RegisterItemTrigger("ender_chest", "ender_chest")
    self:RegisterItemTrigger("blaze_rod", "blaze_rod")
    self:RegisterItemTrigger("crafting_table", "crafting_table")
    self:RegisterItemTrigger("bow", "wooden_bow")
    self:RegisterItemTrigger("crossbow", "cross_bow")
    self:RegisterItemTrigger("crossbow", "shot_bow")
    self:RegisterItemTrigger("bread", "bread")
    self:RegisterItemTrigger("brew", "brewing_stand")
    self:RegisterItemTrigger("bronze", "bronze_ingot")
    self:RegisterItemTrigger("cake", "cake")
    self:RegisterItemTrigger("diamond", "diamond")
    self:RegisterItemTrigger("enchant", "enchantment_table")
    self:RegisterItemTrigger("ender_pearl", "ender_pearl")
    self:RegisterItemTrigger("furnace", "furnace")
    self:RegisterItemTrigger("lava", "bucket_lava")
    self:RegisterItemTrigger("leather", "leather")
    self:RegisterItemTrigger("mine", "wooden_pickaxe")
    self:RegisterItemTrigger("mine_up", "stone_pickaxe")
    self:RegisterItemTrigger("netherite", "ore_ancient_debris")
    self:RegisterItemTrigger("pumpkin_helmet", "pumpkin_helmet")
    self:RegisterItemTrigger("redstone", "redstone")
    self:RegisterItemTrigger("redstone_wire", "red_wire")
    self:RegisterItemTrigger("steel", "steel_ingot")
    self:RegisterItemTrigger("stone", "cobblestone")
    self:RegisterItemTrigger("strange_len", "strange_len")
    self:RegisterItemTrigger("rocket_boost", "rocket_boost")
    self:RegisterItemTrigger("mine_copper", "copper_pickaxe")
    self:RegisterItemTrigger("mine_copper", "tin_pickaxe")
    self:RegisterItemTrigger("mine_iron", "iron_pickaxe")
    self:RegisterItemTrigger("mine_iron", "lead_pickaxe")
    self:RegisterItemTrigger("mine_bronze", "bronze_pickaxe")
    self:RegisterItemTrigger("mine_bronze", "steel_pickaxe")
    self:RegisterItemTrigger("mine_gold", "golden_pickaxe")
    self:RegisterItemTrigger("mine_gold", "silver_pickaxe")
    self:RegisterItemTrigger("mine_diamond", "diamond_pickaxe")
    self:RegisterItemTrigger("mine_netherite", "nether_pickaxe")
    self:RegisterItemTrigger("repair", "anvil")
    self:RegisterItemTrigger("gold", "gold_ingot")
    self:RegisterItemTrigger("super_diamond_sword", "super_diamond_sword")
    self:RegisterItemTrigger("ghost_crystal", "ghost_crystal")
    self:RegisterItemTrigger("ghost", "ghost")
    self:RegisterItemTrigger("ice_element_ball", "ice_element_ball")
    self:RegisterItemTrigger("diamond_ingot", "diamond_ingot")
    self:RegisterItemTrigger("ancient_ingot", "ancient_ingot")
    self:RegisterItemTrigger("knight_ingot", "knight_ingot")
    self:RegisterItemTrigger("flesh_ingot", "flesh_ingot")
    self:RegisterItemTrigger("gun", "handgun")
    self:RegisterItemTrigger("gun", "rocket_launcher")
    self:RegisterItemTrigger("gun", "shotgun")
    self:RegisterItemTrigger("gun", "sniper")
    self:RegisterItemTrigger("gun", "rifle")
    self:RegisterItemTrigger("magic_limit", "mana_piece")

    self:RegisterOreDictionaryTrigger("wood", "OD_WOOD")
    self:RegisterOreDictionaryTrigger("farm", "OD_HOE")
    self:RegisterOreDictionaryTrigger("sword", "OD_SWORD")
    self:RegisterOreDictionaryTrigger("staff", "OD_STAFF")
    self:RegisterOreDictionaryTrigger("iron", "OD_IRON_INGOT")

    self:RegisterNpcKillTrigger("guardian", "guardian")
    self:RegisterNpcKillTrigger("ghast", "ghast")
    self:RegisterNpcKillTrigger("snow_guard", "snow_guardian")
    self:RegisterNpcKillTrigger("snow_guard", "snow_guardian_archer")

    self:RegisterBiomeTypeTrigger("nether", "Nether")
    self:RegisterBiomeTrigger("go_ghost_house", "more_dungeons:ghost_dungeon")
    self:RegisterBiomeTrigger("go_bone_dungeon", "more_dungeons:bone_dungeon")
    self:RegisterBiomeTrigger("go_dark_dungeon", "more_dungeons:tr_dungeon")
    self:RegisterBiomeTrigger("go_deep_snow", "deep_ice_cave")
    self:RegisterBiomeTrigger("go_ice_dungeon", "more_dungeons:blue_dungeon")
    self:RegisterBiomeTrigger("go_lava_dungeon", "more_dungeons:volcano_dungeon")
    self:RegisterBiomeTrigger("go_desert_dungeon", "more_dungeons:desert_dungeon")
end

return AdvancementTriggers

================================================
FILE: advancements/ancient_ingot.json
================================================

{
  "ancient_ingot": {
    "itemId": "ancient_ingot",
    "parentId": "netherite",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ancient_wear.json
================================================

{
  "ancient_wear": {
    "itemId": "ancient_helmet",
    "parentId": "ancient_ingot",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/blaze_rod.json
================================================

{
  "blaze_rod": {
    "itemId": "blaze_rod",
    "parentId": "nether",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/bow.json
================================================

{
  "bow": {
    "itemId": "wooden_bow",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/bread.json
================================================

{
  "bread": {
    "itemId": "bread",
    "parentId": "farm",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/brew.json
================================================

{
  "brew": {
    "itemId": "brewing_stand",
    "parentId": "blaze_rod",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/bronze.json
================================================

{
  "bronze": {
    "itemId": "bronze_ingot",
    "parentId": "iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/cake.json
================================================

{
  "cake": {
    "itemId": "cake",
    "parentId": "farm",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/crafting_table.json
================================================

{
  "crafting_table": {
    "itemId": "crafting_table",
    "parentId": "wood",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/crison_eye.json
================================================

{
  "crison_eye": {
    "itemId": "strange_eye",
    "parentId": "strange_len",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/crison_eye_killed.json
================================================

{
  "crison_eye_killed": {
    "itemId": "strange_eye",
    "parentId": "crison_eye",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/crossbow.json
================================================

{
  "crossbow": {
    "itemId": "cross_bow",
    "parentId": "bow",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/diamond.json
================================================

{
  "diamond": {
    "itemId": "diamond",
    "parentId": "iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/diamond_ingot.json
================================================

{
  "diamond_ingot": {
    "itemId": "diamond_ingot",
    "parentId": "diamond",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/diamond_wear.json
================================================

{
  "diamond_wear": {
    "itemId": "diamond_chestplate",
    "parentId": "diamond",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/dungeon_eater.json
================================================

{
  "dungeon_eater": {
    "itemId": "dungeon_eater",
    "parentId": "go_dark_dungeon",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/dungeon_eater_killed.json
================================================

{
  "dungeon_eater_killed": {
    "itemId": "dungeon_eater",
    "parentId": "dungeon_eater",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/enchant.json
================================================

{
  "enchant": {
    "itemId": "enchantment_table",
    "parentId": "diamond",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ender_chest.json
================================================

{
  "ender_chest": {
    "itemId": "ender_chest",
    "parentId": "ender_pearl",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ender_pearl.json
================================================

{
  "ender_pearl": {
    "itemId": "ender_pearl",
    "parentId": "hunter",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/farm.json
================================================

{
  "farm": {
    "itemId": "stone_hoe",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/flesh_ingot.json
================================================

{
  "flesh_ingot": {
    "itemId": "flesh_ingot",
    "parentId": "gold",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/flesh_wear.json
================================================

{
  "flesh_wear": {
    "itemId": "flesh_helmet",
    "parentId": "flesh_ingot",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/furnace.json
================================================

{
  "furnace": {
    "itemId": "furnace",
    "parentId": "stone",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ghast.json
================================================

{
  "ghast": {
    "itemId": "ghast_tear",
    "parentId": "nether",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ghost.json
================================================

{
  "ghost": {
    "itemId": "ghost",
    "parentId": "ghost_crystal",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ghost_crystal.json
================================================

{
  "ghost_crystal": {
    "itemId": "ghost_crystal",
    "parentId": "go_ghost_house",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_bone_dungeon.json
================================================

{
  "go_bone_dungeon": {
    "itemId": "more_dungeons:skull_block",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_dark_dungeon.json
================================================

{
  "go_dark_dungeon": {
    "itemId": "more_dungeons:dungeon_wall_green",
    "parentId": "go_ghost_house",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_deep_snow.json
================================================

{
  "go_deep_snow": {
    "itemId": "tc:snow",
    "parentId": "go_ghost_house",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_desert_dungeon.json
================================================

{
  "go_desert_dungeon": {
    "itemId": "more_dungeons:castle_pile_block",
    "parentId": "go_dark_dungeon",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_ghost_house.json
================================================

{
  "go_ghost_house": {
    "itemId": "more_dungeons:statue_mini_ghast",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_ice_dungeon.json
================================================

{
  "go_ice_dungeon": {
    "itemId": "more_dungeons:dungeon_wall_blue",
    "parentId": "go_deep_snow",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/go_lava_dungeon.json
================================================

{
  "go_lava_dungeon": {
    "itemId": "bucket_lava",
    "parentId": "go_ice_dungeon",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/gold.json
================================================

{
  "gold": {
    "itemId": "gold_ingot",
    "parentId": "iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/gold_wear.json
================================================

{
  "gold_wear": {
    "itemId": "golden_chestplate",
    "parentId": "gold",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/guardian.json
================================================

{
  "guardian": {
    "itemId": "guardian",
    "parentId": "hunter",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/gun.json
================================================

{
  "gun": {
    "itemId": "handgun",
    "parentId": "nether",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/hunter.json
================================================

{
  "hunter": {
    "itemId": "bone",
    "parentId": "sword",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/ice_element_ball.json
================================================

{
  "ice_element_ball": {
    "itemId": "ice_element_ball",
    "parentId": "snow_guard",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/inventory.json
================================================
{
  "inventory": {
    "itemId": "book",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "open_advance_ui",
      "conditions": {}
    }
  }
}


================================================
FILE: advancements/iron.json
================================================

{
  "iron": {
    "itemId": "iron_ingot",
    "parentId": "furnace",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "get_item_group",
      "conditions": {
        "group": "GROUP_INGOT"
      }
    }
  }
}


================================================
FILE: advancements/knight_ingot.json
================================================

{
  "knight_ingot": {
    "itemId": "knight_ingot",
    "parentId": "go_dark_dungeon",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/knight_wear.json
================================================

{
  "knight_wear": {
    "itemId": "knight_helmet",
    "parentId": "knight_ingot",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/lava.json
================================================

{
  "lava": {
    "itemId": "bucket_lava",
    "parentId": "iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/leather.json
================================================

{
  "leather": {
    "itemId": "leather",
    "parentId": "sword",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/magic_gold_wear.json
================================================

{
  "magic_gold_wear": {
    "itemId": "magic_gold_helmet",
    "parentId": "gold",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/magic_limit.json
================================================

{
  "magic_limit": {
    "itemId": "mana_piece",
    "parentId": "staff",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine.json
================================================

{
  "mine": {
    "itemId": "wooden_pickaxe",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_bronze.json
================================================

{
  "mine_bronze": {
    "itemId": "bronze_pickaxe",
    "parentId": "mine_iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_copper.json
================================================

{
  "mine_copper": {
    "itemId": "copper_pickaxe",
    "parentId": "mine_up",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_diamond.json
================================================

{
  "mine_diamond": {
    "itemId": "diamond_pickaxe",
    "parentId": "mine_gold",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_gold.json
================================================

{
  "mine_gold": {
    "itemId": "golden_pickaxe",
    "parentId": "mine_bronze",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_iron.json
================================================

{
  "mine_iron": {
    "itemId": "iron_pickaxe",
    "parentId": "mine_copper",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_netherite.json
================================================

{
  "mine_netherite": {
    "itemId": "nether_pickaxe",
    "parentId": "mine_diamond",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mine_up.json
================================================

{
  "mine_up": {
    "itemId": "stone_pickaxe",
    "parentId": "stone",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/mirror.json
================================================

{
  "mirror": {
    "itemId": "ender_mirror",
    "parentId": "ender_pearl",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/nether.json
================================================

{
  "nether": {
    "itemId": "soul_sand",
    "parentId": "diamond",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/nether_destroyer.json
================================================

{
  "nether_destroyer": {
    "itemId": "nether_altar",
    "parentId": "nether",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "nether_destroyer_wake",
      "conditions": {}
    }
  }
}


================================================
FILE: advancements/nether_destroyer_killed.json
================================================

{
  "nether_destroyer_killed": {
    "itemId": "nether_destroyer_loot",
    "parentId": "nether_destroyer",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "nether_destroyer_killed",
      "conditions": {}
    }
  }
}


================================================
FILE: advancements/netherite.json
================================================

{
  "netherite": {
    "itemId": "ore_ancient_debris",
    "parentId": "nether",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/netherite_full_wear.json
================================================

{
  "netherite_full_wear": {
    "itemId": "nether_helmet",
    "parentId": "netherite",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "full_wear_sub_group",
      "conditions": {
        "subGroup": "SUB_GROUP_NETHERITE"
      }
    }
  }
}


================================================
FILE: advancements/portal.json
================================================

{
  "portal": {
    "itemId": "portal:nature_portal",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/pumpkin_helmet.json
================================================

{
  "pumpkin_helmet": {
    "itemId": "pumpkin_helmet",
    "parentId": "farm",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/recipe_book.json
================================================

{
  "recipe_book": {
    "itemId": "book",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/redstone.json
================================================

{
  "redstone": {
    "itemId": "redstone",
    "parentId": "stone",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/redstone_wire.json
================================================

{
  "redstone_wire": {
    "itemId": "red_wire",
    "parentId": "redstone",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/repair.json
================================================

{
  "repair": {
    "itemId": "anvil",
    "parentId": "iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/rocket_boost.json
================================================

{
  "rocket_boost": {
    "itemId": "rocket_boost",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/snow_guard.json
================================================

{
  "snow_guard": {
    "itemId": "steel_helmet",
    "parentId": "hunter",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/snow_queen.json
================================================

{
  "snow_queen": {
    "itemId": "snow_glass_ball",
    "parentId": "snow_guard",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "snow_queen_wake",
      "conditions": {}
    }
  }
}


================================================
FILE: advancements/snow_queen_killed.json
================================================

{
  "snow_queen_killed": {
    "itemId": "snow_queen_loot",
    "parentId": "snow_queen",
    "showTip": true,
    "broadcase": true,
    "trigger": {
      "name": "snow_queen_killed",
      "conditions": {}
    }
  }
}

================================================
FILE: advancements/staff.json
================================================

{
  "staff": {
    "itemId": "amethyst_staff",
    "parentId": "hunter",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/star_wear.json
================================================

{
  "star_wear": {
    "itemId": "star_helmet",
    "parentId": "crison_eye_killed",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/steel.json
================================================

{
  "steel": {
    "itemId": "steel_ingot",
    "parentId": "iron",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/stone.json
================================================

{
  "stone": {
    "itemId": "stone_brick",
    "parentId": "mine",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/strange_len.json
================================================

{
  "strange_len": {
    "itemId": "strange_len",
    "parentId": "hunter",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/super_diamond_sword.json
================================================

{
  "super_diamond_sword": {
    "itemId": "super_diamond_sword",
    "parentId": "diamond",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/super_diamond_wear.json
================================================

{
  "super_diamond_wear": {
    "itemId": "super_diamond_helmet",
    "parentId": "diamond_ingot",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/sword.json
================================================

{
  "sword": {
    "itemId": "wooden_sword",
    "parentId": "crafting_table",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: advancements/wood.json
================================================

{
  "wood": {
    "itemId": "wood_oak",
    "parentId": "inventory",
    "showTip": true,
    "broadcase": true
  }
}


================================================
FILE: api.lua
================================================
---@class TC.API
local API = class("API")

local s_instance
---@return TC.API
function API.getInstance()
    if s_instance == nil then
        s_instance = API.new()
    end
    return s_instance
end

function API:__init()
    self.uiModifyDict = {}
end

function API:_ModifyUI(uiClassName, modifyClass)
    if self.uiModifyDict[uiClassName] == nil then
        self.uiModifyDict[uiClassName] = {}
    end
    table.insert(self.uiModifyDict[uiClassName], modifyClass)
end

---data:
---{
--- initContentCallback=???,
---}
---@param data table
function API.ModifyUI(uiClassName, modifyClass)
    API.getInstance():_ModifyUI(uiClassName, modifyClass)
end

return API

================================================
FILE: apis/Account.lua
================================================
---@API

---@class Account 描述一个账号信息。
---@field name string 当前账号的名称。
---@field skinID int 当前账号的皮肤ID。
local Account = {}

---创建一个账号对象。
---@return Account 新的账号对象。
function Account.new()
end

return Account


================================================
FILE: apis/AccountUtils.lua
================================================
---@API

---@class AccountUtils 账号通用类,封装了账号相关操作函数。
local AccountUtils = {}

---从存档中加载一个账号。
---@param accountName string 账号名称。
---@param account Account 如果成功加载账号,将把账号信息写入该参数。
---@return boolean 是否成功加载账号。
function AccountUtils.Load(accountName, account)
end

---将一个账号保存到存档中。
---@param account Account 账号。
function AccountUtils.Save(account)
end

---将一个账号从存档中移除。
---@param accountName string 账号名称。
function AccountUtils.Remove(accountName)
end

return AccountUtils


================================================
FILE: apis/Advancement.lua
================================================
---@API

---@class Advancement 描述一项成就。
---@field itemID int 成就使用的物品ID,用于在成就树界面显示物品图标。
---@field parentID int 成就在成就树的父成就ID。
---@field showTip boolean 玩家完成该成就时,是否在界面右上角弹出完成成就提示。
---@field broadcast boolean 玩家完成成就时,是否广播给所有人。
local Advancement = {}

return Advancement


================================================
FILE: apis/AdvancementUtils.lua
================================================
---@API

---@class AdvancementUtils 成就通用类。
local AdvancementUtils = {}

---由成就ID,获得一个成就信息。
---@param advancementID int 成就ID。
---@return Advancement 成就信息。
function AdvancementUtils.Get(advancementID)
end

return AdvancementUtils


================================================
FILE: apis/Attack.lua
================================================
---@API

---@class Attack 表示一个攻击属性。
---@field attack int 伤害值。
---@field knockBack int 击退值。
---@field crit int 攻击的百分暴击率。1-100表示1-100%的概率产生双倍暴击伤害,大于100表示总是产生双倍暴击伤害,小于1表示不产生暴击伤害。
local Attack = {}

--- 创建一个攻击属性对象。
---@param attack int 伤害值。
---@param knockBack int 击退值。
---@param crit int 攻击的百分暴击率。
---@return Attack 新的攻击属性对象。
function Attack.new(attack, knockBack, crit)
end

--- 重置所有攻击属性数值。
function Attack:Restore()
end

return Attack


================================================
FILE: apis/BiomeData.lua
================================================
---@API

---@class BiomeTerrain 描述一个地形信息。
---@field name string 地形名称。
---@field times double 生成次数(小于1表示概率)
---@field size int 地形大小(生成器参数)
---@field height int 地形高度(生成器参数)
local BiomeTerrain = {}

---@class BiomeTerrains 描述地形信息。
---@field terrains BiomeTerrain[] 允许出现的所有地形。
---@field specialTerrains BiomeTerrain[] 允许出现的特殊地形。
---@field transition string 过渡方式(生成器参数)
---@field transitionTag int 过渡附加值(生成器参数)
local BiomeTerrains = {}

---@class BiomeLiquidInfo 描述湖泊信息。
---@field liquidID int 液体ID。
---@field maxAllowCount int 湖泊最多有多少格子的当前液体。
local BiomeLiquidInfo = {}

---@class BiomeTreeInfo 描述树信息。
---@field styles int[] 不同数目的方块id。
---@field density double 种植密度(生成器参数)
local BiomeTreeInfo = {}

---@class BiomeMushroomInfo 描述巨型蘑菇信息。
---@field styles int[] 不同数目的方块id。
---@field density double 种植密度(生成器参数)
local BiomeMushroomInfo = {}

---@class BiomeData 描述一个群系信息。
---@field biomeType int 群系类型。
---@field scale double 群系大小(生成器参数,相对于perlin参考值)
---@field terrains BiomeTerrains 地形信息。
---@field treeInfo BiomeTreeInfo 树信息。
---@field mushroomInfo BiomeMushroomInfo 巨型蘑菇信息。
---@field oreGroupName string 当前群系指定矿物名称批量生成矿物。
local BiomeData = {}

return BiomeData


================================================
FILE: apis/BiomeUtils.lua
================================================
---@API

---@class BiomeUtils 生物群系通用类。
local BiomeUtils = {}

---由指定生物群系类型和在该生物群系类型的索引,返回生物群系数据。
---@param biomeTypeID int 生物群系类型。
---@param index int 在该生物群系类型的索引。
---@return int 生物群系数据。
function BiomeUtils.GetBiomeIDByType(biomeTypeID, index)
end

---返回指定生物群系类型的生物群系数量。
---@param biomeTypeID int 生物群系类型。
---@return int 指定生物群系类型的生物群系数量。
function BiomeUtils.GetBiomeCountByType(biomeTypeID)
end

---由生物群系ID,返回生物群系数据。
---@param biomeID int 生物群系ID。
---@return BiomeData 生物群系数据。
function BiomeUtils.GetData(biomeID)
end

return BiomeUtils


================================================
FILE: apis/BlockData.lua
================================================
---@API

---@class BlockData 描述一个方块数据。
---@field textureLocation TextureLocation 方块渲染在地图中的纹理。
---@field group int 方块组,决定渲染在地图中纹理衔接方式。
---@field subGroup int 方块子组。
---@field stepSoundId int 踩在方块上发出的音效ID。
---@field stepSoundGroupId int 踩在方块上发出的音效组ID。
---@field functionSoundId int 
---@field functionSoundGroupId int
---@field functionSoundId2 int
---@field functionSoundGroupId2 int
---@field functionSoundId3 int
---@field functionSoundGroupId3 int
---@field functionSoundId4 int
---@field functionSoundGroupId4 int
---@field isRipen boolean 是否允许催熟。
---@field isDoorOpened boolean 是否为开启了的门。
---@field isDoorClosed boolean 是否为关闭了的门。
local BlockData = {}

---判断指定物品,能否种植在当前方块上。
---@param itemID int 物品ID。
---@return boolean 物品能否种植在方块上。
function BlockData:CanSeed(itemID)
end

---当前方块是否拥有动画效果。
---@return boolean 是否拥有动画效果。
function BlockData:HasAnimation()
end

return BlockData


================================================
FILE: apis/BlockEntity.lua
================================================
---@API

---@class BlockEntity
---@field id int
---@field xi int
---@field yi int
---@field dataWatcher DataWatcher
local BlockEntity = {}

---SetAnimation
---@param animationIndex int
function BlockEntity:SetAnimation(animationIndex)
end

---GetAnimation
---@return int
function BlockEntity:GetAnimation()
end

---GetModBlockEntity
---@return ModBlockEntity
function BlockEntity:GetModBlockEntity()
end

return BlockEntity

================================================
FILE: apis/BlockUtils.lua
================================================
---@class BlockUtils
---@field maxID int
---@field oreGroups OreDataGroup[]
local BlockUtils = {}

---@param blockID int
---@return BlockData
function BlockUtils.GetData(blockID)
end

return BlockUtils

================================================
FILE: apis/Buff.lua
================================================
---@class Buff
---@field id int
---@field time int
local Buff = {}

---@param id int
---@param time int
---@return Buff
function Buff.new(id, time)
end

return Buff

================================================
FILE: apis/ClientBoundPacketWriter.lua
================================================
---@class ClientBoundPacket
---@field writerBuffer ByteStream
---@field readerBuffer ByteStream
local ClientBoundPacket = {}

---Send
---@param player Player
function ClientBoundPacket:Send(player)
end

---@return ByteStream
function ClientBoundPacket:GetWriterBuffer()
end

---@return ByteStream
function ClientBoundPacket:GetReaderBuffer()
end

return ClientBoundPacket

================================================
FILE: apis/ClientState.lua
================================================
---@class ClientState
---@field LoadingResource int
---@field InMenu int
---@field Joining int
---@field LoadingWorld int
---@field SavingWorld int
---@field LosingConnection int
---@field Gaming int
---@field Exiting int
---@field current int
local ClientState = {}

return ClientState

================================================
FILE: apis/ClientStateManager.lua
================================================
---@class ClientStateManager
local ClientStateManager = class("ClientStateManager")

---StartJoining
---@param joinData JoinData
function ClientStateManager.StartJoining(joinData)
end

function ClientStateManager.SaveAndExitGaming()
end

function ClientStateManager.QuitGame()
end

return ClientStateManager

================================================
FILE: apis/Container.lua
================================================
---@class Container
local Container = {}

---AddSlotToContainer
---@overload function(inventory:Inventory,slotIndex:int):int
---@param inventory Inventory
---@param slotIndex int
---@param ownedByGui boolean
---@return int
function Container:AddSlotToContainer(inventory, slotIndex, ownedByGui)
end

---GetSlot
---@param index int
---@return Slot
function Container:GetSlot(index)
end

---@return int
function Container:GetSlotCount()
end

---CanInteractWith
---@param player Player
---@return boolean
function Container:CanInteractWith(player)
end

function Container:OnUpdate()
end

function Container:OnClose()
end

function Container:DetectAndSendChangeInteger(id, value)
end

function Container:DetectAndSendChangeDouble(id, value)
end

function Container:DetectAndSendChangeString(id, value)
end

function Container:DetectAndSendChangeBoolean(id, value)
end

function Container:OnDetectChange()
end

function Container:OnReceiveChange(id, value)
end

---OnEvent
---@param eventId int
---@param eventString string
function Container:OnEvent(eventId, eventString)
end

---EnsureSlotEmpty
---@param container Container
---@param slotIndex int
function Container:CommandEnsureSlotEmpty(container, slotIndex)
end

---EnsureSlotHasItem
---@param container Container
---@param slotIndex int
---@param itemStack ItemStack
function Container:CommandEnsureSlotHasItem(container, slotIndex, itemStack)
end

---SwapSlot
---@param containerA Container
---@param slotIndexA int
---@param containerB Container
---@param slotIndexB int
function Container:CommandSwapSlot(containerA, slotIndexA, containerB, slotIndexB)
end

---SlotMoveTo
---@param containerFrom Container
---@param slotIndexFrom int
---@param containerTo Container
---@param slotIndexTo int
---@param moveStackSize int
function Container:CommandSlotMoveTo(containerFrom, slotIndexFrom, containerTo, slotIndexTo, moveStackSize)
end

---@return int
function Container:GetID()
end

return Container

================================================
FILE: apis/DataWatcher.lua
================================================
---@API

---@class DataWatcher 数据同步类,内部封装了网络同步逻辑。
local DataWatcher = {}

---
---@overload fun(value:int):int
---@param value boolean
---@param canRemote boolean
---@return int
function DataWatcher:AddBool(value, canRemote)
end

---由指定通道,向
---@param channel int
---@param value boolean
function DataWatcher:UpdateBool(channel, value)
end

---由指定通道,从远端获取数据。
---@param channel int 通道。
---@return boolean 布尔型数据。
function DataWatcher:GetBool(channel)
end

---
---@overload fun(value:int):int
---@param value int
---@param canRemote boolean
---@return int
function DataWatcher:AddByte(value, canRemote)
end

---
---@param channel int
---@param value int
function DataWatcher:UpdateByte(channel, value)
end

---
---@param channel int
---@return int
function DataWatcher:GetByte(channel)
end

---
---@overload fun(value:int):int
---@param value int
---@param canRemote boolean
---@return int
function DataWatcher:AddShort(value, canRemote)
end

---
---@param channel int
---@param value int
function DataWatcher:UpdateShort(channel, value)
end

---
---@param channel int
---@return int
function DataWatcher:GetShort(channel)
end

---
---@overload fun(value:int):int
---@param value int
---@param canRemote boolean
---@return int
function DataWatcher:AddInteger(value, canRemote)
end

---
---@param channel int
---@param value int
function DataWatcher:UpdateInteger(channel, value)
end

---
---@param channel int
---@return int
function DataWatcher:GetInteger(channel)
end

---
---@overload fun(value:boolean):int
---@param value double
---@param canRemote boolean
---@return int
function DataWatcher:AddDouble(value, canRemote)
end

---
---@param channel int
---@param value double
function DataWatcher:UpdateDouble(channel, value)
end

---
---@param channel int
---@return double
function DataWatcher:GetDouble(channel)
end

---
---@overload fun(value:string):int
---@param value string
---@param canRemote boolean
---@return int
function DataWatcher:AddString(value, canRemote)
end

---
---@param channel int
---@param value string
function DataWatcher:UpdateString(channel, value)
end

---
---@param channel int
---@return string
function DataWatcher:GetString(channel)
end

---
---@param value Inventory
---@return int
function DataWatcher:AddInventory(value)
end

---
---@param channel int
---@param value Inventory
function DataWatcher:UpdateInventory(channel, value)
end

---
---@param channel int
---@return Inventory
function DataWatcher:GetInventory(channel)
end

return DataWatcher


================================================
FILE: apis/DeathReason.lua
================================================
---@class DeathReason
---@field UNKNOWN int
---@field SUICIDE int
---@field FALL int
---@field DROWN int
---@field BOOM int
---@field BURN int
---@field LAVA int
---@field STARVE int
---@field BUFF int
---@field POISON int
local DeathReason = {}

return DeathReason

================================================
FILE: apis/Defense.lua
================================================
-- Document
-- Defense Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#defense
--
-- Defense类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#defense
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class Defense Represents a defense property. (表示一个防御属性)
---@field defense int The defense value. (防御值)
---@field blastDefense int The value of explosion defense. (爆炸防御值)
---@field flameDefense int The value of fire defense. (火焰防御值)
---@field projectileDefense int The value of projectile defense. (抛掷物防御值)
---@field breathDefense int The value of breath defense. (呼吸防御值)
---@field fallDefense int The value of fall defense. (掉落防御值)
---@field knockBackDefense int The value of knock back defense. (击退防御值)
local Defense = {}

function Defense:Restore()
end

return Defense

================================================
FILE: apis/Direction.lua
================================================
-- Document
-- Direction Enum Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#direction
--
-- Direction枚举类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#direction
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class Direction Enum class (Enum Format: `DIRECTION_XXX`)
local Direction = {}

---@type Direction
DIRECTION_LEFT = nil

---@type Direction
DIRECTION_TOP = nil

---@type Direction
DIRECTION_BOTTOM = nil

---@type Direction
DIRECTION_RIGHT = nil

return Direction

================================================
FILE: apis/Effect.lua
================================================
---@class Effect:Entity
---@field decSpeed double
---@field decScale double
---@field decAlpha double
---@field decRotateSpeed double
---@field scale double
---@field alpha double
---@field rotateSpeed double
---@field gravity boolean
---@field lightAlpha int
---@field lightRed int
---@field lightGreen int
---@field lightBlue int
---@field disappearTime int
local Effect = {}

---SetDisappearTime
---@param disappearTime int
function Effect:SetDisappearTime(disappearTime)
end

--- Destroy the current effect object.
---
--- 清除当前抛射物对象。
function Effect:Kill()
end

--- If the player owner exists and is alive, return the player, otherwise return nil.
---
--- 若玩家拥有者存在且存活,返回该玩家,否则返回nil。
---@return Player|nil
function Effect:GetPlayerOwner()
end

--- If the npc owner exists and is alive, return the npc, otherwise return nil.
---
--- 若NPC拥有者存在且存活,返回该NPC,否则返回nil。
---@return Npc|nil
function Effect:GetNpcOwner()
end

--- If the player target exists and is alive, return the player, otherwise return nil.
---
--- 若当前抛射物的玩家锁定目标存在且存活,返回该玩家,否则返回nil。
---@return Player|nil
function Effect:GetPlayerTarget()
end

--- If the npc target exists and is alive, return the npc, otherwise return nil.
---
--- 若当前抛射物的NPC锁定目标存在且存活,返回该NPC,否则返回nil。
---@return Npc|nil
function Effect:GetNpcTarget()
end

--- Set the locked player target of the current effect.
---
--- 设定当前抛射物的锁定玩家目标。
---@return Player|nil
function Effect:SetPlayerTarget(player)
end

--- Set the locked NPC target of the current effect.
---
--- 设定当前抛射物的锁定NPC目标。
---@return Npc|nil
function Effect:SetNpcTarget(npc)
end

return Effect

================================================
FILE: apis/EffectUtils.lua
================================================
---@class EffectUtils
local EffectUtils = {}

---
---
---@overload fun(id:int,centerX:double,centerY:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double,scale:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double,scale:double,alpha:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double,scale:double,alpha:double,color:Color):Effect
---@param id int
---@param centerX double
---@param centerY double
---@param speedX double
---@param speedY double
---@param rotateSpeed double
---@param scale double
---@param alpha double
---@param color Color
---@return Effect
function EffectUtils.Create(id, centerX, centerY, speedX, speedY, rotateSpeed, scale, alpha, color)
end

---@overload fun(id:int,centerX:double,centerY:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double,scale:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double,scale:double,alpha:double):Effect
---@overload fun(id:int,centerX:double,centerY:double,speedX:double,speedY:double,rotateSpeed:double,scale:double,alpha:double,color:Color):Effect
---@param id int
---@param centerX double
---@param centerY double
---@param speedX double
---@param speedY double
---@param rotateSpeed double
---@param scale double
---@param alpha double
---@param color Color
---@return Effect
function EffectUtils.SendFromServer(id, centerX, centerY, speedX, speedY, rotateSpeed, scale, alpha, color)
end

return EffectUtils

================================================
FILE: apis/Enchantment.lua
================================================
---@class Enchantment
---@field id int
---@field level int
local Enchantment = {}

---@param id int
---@param level int
---@return Enchantment
function Enchantment.new(id, level)
end

return Enchantment

================================================
FILE: apis/EnchantmentData.lua
================================================
---@class EnchantmentData
---@field allowMaxLevel int
---@field minCreatingLevel int
---@field noCreating boolean
local EnchantmentData = {}

---IsToolTypeValid
---@param toolType string
---@return boolean
function EnchantmentData:IsToolTypeValid(toolType)
end

return EnchantmentData

================================================
FILE: apis/EnchantmentUtils.lua
================================================
---@class EnchantmentUtils
local EnchantmentUtils = {}

---@param enchantmentID int
---@return EnchantmentData
function EnchantmentUtils.GetData(enchantmentID)
end

---IsConflict
---@param enchantmentID int
---@param enchantmentID2 int
---@return boolean
function EnchantmentUtils.IsConflict(enchantmentID, enchantmentID2)
end

return EnchantmentUtils

================================================
FILE: apis/Entity.lua
================================================
---@API

---@class Entity 描述一个基本实体类。
---@field x double 实体左上角x坐标。
---@field y double 实体左上角y坐标。
---@field centerX double Read-only 返回实体正中间x坐标。
---@field centerY double Read-only 返回实体正中间y坐标。
---@field centerXi int Read-only 返回实体正中间格子横坐标。
---@field centerYi int Read-only 返回实体正中间格子纵坐标。
---@field rightX double Read-only 返回实体最右侧x坐标。
---@field bottomY double Read-only 返回实体最底部y坐标。
---@field speedX double 实体横向速度。
---@field speedY double 实体纵向速度。
---@field gravity double 实体的重力加速度。
---@field width int Read-only 返回实体碰撞箱宽度。
---@field height int Read-only 返回实体碰撞箱高度。
---@field direction boolean 实体面朝右侧为true,面朝左侧为false。
---@field rotateAngle double 实体碰撞箱的旋转角度。
---@field speedAngle double Read-only 返回当前实体运动速度的向量夹角。
---@field randX double Read-only 返回实体在x轴投影上的随机坐标。
---@field randY double Read-only 返回实体在y轴投影上的随机坐标。
---@field shape Shape Read-only 返回实体碰撞箱形状。
---@field stand boolean Read-only 返回实体是否为站立状态。
---@field isCollisionTop boolean Read-only 返回实体是否顶部发生碰撞。
---@field isCollisionLeft boolean Read-only 返回实体是否左侧发生碰撞。
---@field isCollisionRight boolean Read-only 返回实体是否右侧发生碰撞。
---@field isCollisionStuck boolean Read-only 返回实体是否卡在方块内部。
---@field isNoCollision boolean Read-only 返回实体是否没有发生任何形式的碰撞。
---@field onSlope boolean Read-only 返回实体是否站在斜坡上。
---@field hitbox Hitbox Read-only 若实体为轴对齐矩形,返回轴对齐碰撞箱,否则返回旋转矩形碰撞箱。
---@field aabb Hitbox Read-only 实体旋转角度为0的轴对齐碰撞箱。
---@field minAABB Hitbox Read-only 完全包裹实体的最小轴对齐碰撞箱。
---@field allowCheckCollision boolean 决定是否执行与方块的碰撞检测。
---@field spriteDefaultWidth int Read-only 实体默认绘制宽度。
---@field spriteDefaultHeight int Read-only 实体默认绘制高度。
---@field spriteRect Rectangle 表示实体绘制时在目标贴图的剪裁区域。
---@field spriteEx SpriteEx 实体绘制时的精灵拓展信息。
---@field spriteOffsetX int @[ default `0.0` ] 实体绘制的横向偏移量。
---@field spriteOffsetY int @[ default `0.0` ] 实体绘制的纵向偏移量。
---@field color Color @[ default `COLOR_WHITE` ] 实体绘制时的颜色。
---@field frameTickTime int 实体绘制用的帧计时器,每帧自增1。
---@field frameIndex int Read-only 当前实体帧索引。
---@field frameStyles int Read-only 实体样式数。
---@field frames int Read-only 实体总帧数。
---@field frameSpeed int Read-only 实体帧切换周期。
---@field tickTime int Read-only 实体的实际生存的时间。
---@field randSeed int Read-only 实体的随机数种子。
local Entity = {}

--- 将实体中心x坐标设为指定位置。
---@param newCenterX double
function Entity:SetCenterX(newCenterX)
end

--- 将实体中心y坐标设为指定位置。
---@param newCenterY double
function Entity:SetCenterY(newCenterY)
end

--- 返回实体中心点到目标点的角度。
---@param desX double 目标点x坐标。
---@param desY double 目标点y坐标。
---@return double
function Entity:GetAngleTo(desX, desY)
end

--- 返回来源点到实体中心点的角度。
---@param srcX double 来源点x坐标。
---@param srcY double 来源点y坐标。
---@return double
function Entity:GetAngleFrom(srcX, srcY)
end

--- 返回实体中心到指定点的距离。
---@param otherX double 目标点x坐标。
---@param otherX double 目标点y坐标。
---@return double
function Entity:GetDistance(otherX, otherY)
end

--- 在原有角度基础上继续旋转指定角度。
---@param angle double 旋转的角度。
function Entity:Rotate(angle)
end

--- 在原有速度角度基础上继续旋转指定速度角度。
---@param angle double 旋转的角度。
function Entity:RotateSpeed(angle)
end

return Entity

================================================
FILE: apis/EntityIndex.lua
================================================
---@class EntityIndex
---@field entityID int
---@field uniqueID int
local EntityIndex = {}

---@overload fun():EntityIndex
---@param entityID int
---@param uniqueID int
---@return EntityIndex
function EntityIndex.new(entityID, uniqueID)
end

return EntityIndex

================================================
FILE: apis/GameMode.lua
================================================
---@class GameMode
---@field Survival int
---@field Creative int
---@field Adventure int
local GameMode = {}

return GameMode

================================================
FILE: apis/GlobalBlock.lua
================================================


================================================
FILE: apis/GlobalNpc.lua
================================================
---@class GlobalNpc
---@field npc Npc
local GlobalNpc = {}

--- This function is called once when the NPC is spawned.
---
--- NPC生成时调用一次该函数。
function GlobalNpc:Init()
end

---
---
--- NPC每帧运行Update()函数前调用,如果返回true则执行所有Update逻辑,返回false则不执行所有Update逻辑。可在该函数写入新的逻辑,并屏蔽原有逻辑。默认返回true。
---@return boolean
function GlobalNpc:CanUpdate()
    return true
end

--- Called when NPC runs every update tick, usually write logic in this function.
---
--- NPC每帧运行时调用,通常在该函数内编写运动等逻辑。
function GlobalNpc:Update()
end

--- Called before the NPC runs the `Update()` function every update tick.
--- It is usually used to insert new logic before the original logic.
---
--- NPC每帧运行`Update()`函数前调用。通常用于在原逻辑前插入新逻辑。
function GlobalNpc:PreUpdate()
end

--- Called after the NPC runs the `Update()` function every update tick.
--- It is usually used to insert new logic after the original logic.
---
--- NPC每帧运行`Update()`函数后调用。通常用于追加逻辑。
function GlobalNpc:PostUpdate()
end

--- If the NPC has a skeleton model,
--- it is called after `PostUpdate()` to process the logic of the custom skeleton model.
--- After executing this function, all joints of the skeleton model will be recalculated.
---
--- 若NPC拥有骨骼模型,每帧执行完`PostUpdate()`后调用,用于处理自定义骨骼模型逻辑。
--- 执行完该函数后,会对所有骨骼模型关节重新计算。
--- @param skeleton Skeleton Represents the skeleton model of the current NPC. (当前NPC的骨骼模型)
function GlobalNpc:UpdateSkeleton(skeleton)
end

--- Called before the NPC runs the `UpdateSkeleton(skeleton)` function every update tick.
--- It is usually used to insert new logic before the original logic.
---
--- NPC每帧运行`UpdateSkeleton(skeleton)`函数前调用。通常用于在原逻辑前插入新逻辑。
--- @param skeleton Skeleton Represents the skeleton model of the current NPC. (当前NPC的骨骼模型)
function GlobalNpc:PreUpdateSkeleton(skeleton)
end

--- Called after the NPC runs the `UpdateSkeleton(skeleton)` function every update tick.
--- It is usually used to insert new logic after the original logic.
---
--- NPC每帧运行`UpdateSkeleton(skeleton)`函数后调用。通常用于在原逻辑后追加新逻辑。
--- @param skeleton Skeleton Represents the skeleton model of the current NPC. (当前NPC的骨骼模型)
function GlobalNpc:PostUpdateSkeleton(skeleton)
end

---
---
--- NPC每帧绘制前调用,如果返回true则执行所有Draw逻辑,返回false则不执行所有Draw逻辑。可在该函数写入新的逻辑,并屏蔽原有逻辑。默认返回true。
---@return boolean
function GlobalNpc:CanDraw()
    return true
end

--- Called before each tick of NPC drawing,
--- just write custom drawing behavior in this function.
---
--- NPC每帧绘制前调用,在该函数内编写自定义绘制属性。
function GlobalNpc:OnDraw()
end

--- Called when NPC was killed.
---
--- NPC死亡时调用一次该函数。
function GlobalNpc:OnKilled()
end

--- Called when NPC collides the tiles.
---
--- NPC与图块碰撞时调用该函数。
--- @param oldSpeedX double The X speed before colliding tiles. (击中图块前一帧的横向速度)
--- @param oldSpeedY double The Y speed before colliding tiles. (击中图块前一帧的纵向速度)
function GlobalNpc:OnTileCollide(oldSpeedX, oldSpeedY)
end

function GlobalNpc:OnLoot()
end

---@return table
function GlobalNpc:Save()
end

---Load
---@param tagTable table
function GlobalNpc:Load(tagTable)
end

return GlobalNpc

================================================
FILE: apis/GlobalPlayer.lua
================================================
---@class GlobalPlayer
---@field player Player
local GlobalPlayer = {}

function GlobalPlayer:Awake()
end

--- This function is called once when the player is spawned.
---
--- 玩家生成时调用一次该函数。
function GlobalPlayer:Init()
end

---
---
--- 玩家每帧运行Update()函数前调用,如果返回true则执行所有Update逻辑,返回false则不执行所有Update逻辑。可在该函数写入新的逻辑,并屏蔽原有逻辑。默认返回true。
---@return boolean
function GlobalPlayer:CanUpdate()
    return true
end

function GlobalPlayer:Motion()
end

--- Called when player runs every update tick, usually write logic in this function.
---
--- 玩家每帧运行时调用,通常在该函数内编写运动等逻辑。
function GlobalPlayer:Update()
end

--- Called before the player runs the `Update()` function every update tick.
--- It is usually used to insert new logic before the original logic.
---
--- 玩家每帧运行`Update()`函数前调用。通常用于在原逻辑前插入新逻辑。
function GlobalPlayer:PreUpdate()
end

--- Called after the player runs the `Update()` function every update tick.
--- It is usually used to insert new logic after the original logic.
---
--- 玩家每帧运行`Update()`函数后调用。通常用于追加逻辑。
function GlobalPlayer:PostUpdate()
end

--- If the player has a skeleton model,
--- it is called after `PostUpdate()` to process the logic of the custom skeleton model.
--- After executing this function, all joints of the skeleton model will be recalculated.
---
--- 若玩家拥有骨骼模型,每帧执行完`PostUpdate()`后调用,用于处理自定义骨骼模型逻辑。
--- 执行完该函数后,会对所有骨骼模型关节重新计算。
--- @param skeleton Skeleton Represents the skeleton model of the current 玩家. (当前玩家的骨骼模型)
function GlobalPlayer:UpdateSkeleton(skeleton)
end

--- Called before the player runs the `UpdateSkeleton(skeleton)` function every update tick.
--- It is usually used to insert new logic before the original logic.
---
--- 玩家每帧运行`UpdateSkeleton(skeleton)`函数前调用。通常用于在原逻辑前插入新逻辑。
--- @param skeleton Skeleton Represents the skeleton model of the current 玩家. (当前玩家的骨骼模型)
function GlobalPlayer:PreUpdateSkeleton(skeleton)
end

--- Called after the player runs the `UpdateSkeleton(skeleton)` function every update tick.
--- It is usually used to insert new logic after the original logic.
---
--- 玩家每帧运行`UpdateSkeleton(skeleton)`函数后调用。通常用于在原逻辑后追加新逻辑。
--- @param skeleton Skeleton Represents the skeleton model of the current 玩家. (当前玩家的骨骼模型)
function GlobalPlayer:PostUpdateSkeleton(skeleton)
end

---
---
--- 玩家每帧绘制前调用,如果返回true则执行所有Draw逻辑,返回false则不执行所有Draw逻辑。可在该函数写入新的逻辑,并屏蔽原有逻辑。默认返回true。
---@return boolean
function GlobalPlayer:CanDraw()
    return true
end

--- Called before each tick of player drawing,
--- just write custom drawing behavior in this function.
---
--- 玩家每帧绘制前调用,在该函数内编写自定义绘制属性。
function GlobalPlayer:OnDraw()
end

--- Called when player was killed.
---
--- 玩家死亡时调用一次该函数。
function GlobalPlayer:OnKilled()
end

function GlobalPlayer:OnRespawn()
end

--- Called when player collides the tiles.
---
--- 玩家与图块碰撞时调用该函数。
--- @param oldSpeedX double The X speed before colliding tiles. (击中图块前一帧的横向速度)
--- @param oldSpeedY double The Y speed before colliding tiles. (击中图块前一帧的纵向速度)
function GlobalPlayer:OnTileCollide(oldSpeedX, oldSpeedY)
end

function GlobalPlayer:OnRender()
end

function GlobalPlayer:RecalculateProperties()
end

---OnHitByNpc
---@param npc Npc
function GlobalPlayer:OnHitByNpc(npc)
end

---OnHitByProjectile
---@param projectile Projectile
function GlobalPlayer:OnHitByProjectile(projectile)
end

function GlobalPlayer:OnFirstTimeJoin()
end

function GlobalPlayer:OnInventoryChanged()
end

---OnInventoryItemAdded
---@param itemID int
---@param stackSize int
function GlobalPlayer:OnInventoryItemAdded(itemID, stackSize)
end

---OnInventoryItemRemoved
---@param itemID int
---@param stackSize int
function GlobalPlayer:OnInventoryItemRemoved(itemID, stackSize)
end

---OnAdvancementMade
---@param advancementID int
function GlobalPlayer:OnAdvancementMade(advancementID)
end

---OnAdvancementRemoved
---@param advancementID int
function GlobalPlayer:OnAdvancementRemoved(advancementID)
end

---@return table
function GlobalPlayer:Save()
end

---Load
---@param tagTable table
function GlobalPlayer:Load(tagTable)
end

---@return table
function GlobalPlayer:SaveCSC()
end

---@param tagTable table
function GlobalPlayer:LoadCSC(tagTable)
end

return GlobalPlayer

================================================
FILE: apis/GuiContainer.lua
================================================
---@class GuiContainer
---@field container Container
local GuiContainer = {}

---__init
---@param container Container
function GuiContainer:__init(container)
end

function GuiContainer:OnUpdate()
end

function GuiContainer:OnClose()
end

---TriggerClientEvent
---@overload fun(eventId:int)
---@param eventId int
---@param eventString string
function GuiContainer:TriggerClientEvent(eventId, eventString)
end

---TriggerServerEvent
---@overload fun(eventId:int)
---@param eventId int
---@param eventString string
function GuiContainer:TriggerServerEvent(eventId, eventString)
end

return GuiContainer

================================================
FILE: apis/Hitbox.lua
================================================
-- Document
-- Hitbox Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#hitbox
--
-- Hitbox类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#hitbox
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class Hitbox Represents a collision box. If the angle attribute is 0, it means axis aligned collision box (AABB). Otherwise, it represents a collision box rotating around the center point. (表示一个碰撞箱。若angle属性为0,表示轴对齐碰撞箱(AABB)。否则表示一个绕中心点旋转的碰撞箱。)
---@field x double The x coordinate of the upper left corner of the hitbox when the rotation angle is 0. (碰撞箱在旋转角度为0时左上角x坐标)
---@field y double The y coordinate of the upper left corner of the hitbox when the rotation angle is 0. (碰撞箱在旋转角度为0时左上角y坐标)
---@field width int The width of the hitbox. (碰撞箱宽度)
---@field height int The height of the hitbox. (碰撞箱高度)
---@field centerX double @[ Read-only ] Returns the center x coordinate of the hitbox. (返回碰撞箱正中间x坐标)
---@field centerY double @[ Read-only ] Returns the center y coordinate of the hitbox. (返回碰撞箱正中间y坐标)
---@field angle double @[ Read-only ] Returns the rotation angle of the collision box if the collision box can be rotated. (若碰撞箱可以旋转,表示碰撞箱的旋转角度)
local Hitbox = {}

--- Returns whether the current hitbox overlaps with another hitbox.
---
--- 返回当前碰撞箱与另一个碰撞箱是否重叠。
---@param other Hitbox The other hitbox. (另一个碰撞箱)
---@return boolean
function Hitbox:Overlap(other)
end

--- Returns whether the current axis-aligned rectangle overlaps with another axis-aligned rectangle.
---
--- 返回当前轴对齐矩形与另一个轴对齐矩形是否重叠。
---@param other Hitbox The other hitbox. (另一个碰撞箱)
---@return boolean
function Hitbox:OverlapAABB(other)
end

return Hitbox

================================================
FILE: apis/Inventory.lua
================================================
---@API

---@class Inventory 描述物品格子集合。
---@field slotCount int 物品格子的总数。
local Inventory = {}

---场景一个物品格子集合对象。
---@param slotCount int 物品格子的总数。
---@return Inventory 新的物品格子集合对象。
function Inventory.new(slotCount)
end

---判断当前物品格子集合对象是否有效。
---@return boolean
function Inventory:Valid()
end

---改变格子数量,若新增了格子,则格子将默认为空格子。
---@param count int 新的格子总数。
function Inventory:SetSlotCount(count)
end

---由格子索引获取格子对象。
---@param index int 格子索引。
---@return Slot 物品格子对象。
function Inventory:GetSlot(index)
end

---往当前集合加入一组堆叠物品。
---@param itemStack ItemStack 堆叠物品。
---@return ItemStack 当放入堆叠物品后导致集合满时,返回未能放入的堆叠物品。如果能完全放入,则返回无效ItemStack。
function Inventory:AddItemStack(itemStack)
end

---为当前集合的所有物品格子进行排序。
function Inventory:SortAll()
end

---为当前集合的指定格子范围进行排序。
---@param index int 格子范围起始索引。
---@param count int 待排序的格子总数。
function Inventory:Sort(index, count)
end

---将当前集合的指定格子范围内的物品快速转移到另一个物品格子集合的指定范围。
---@overload fun(start:int,slotCount:int,inventoryTo:Inventory,inventoryToStart:int,inventoryToSlotCount:int)
---@param start int 当前集合待转移的格子范围起始索引。
---@param slotCount int 当前集合待转移的格子总数。
---@param inventoryTo Inventory 将要转移到的格子集合对象。
---@param inventoryToStart int 将要转移到的格子集合对象的格子范围起始索引。
---@param inventoryToSlotCount int 将要转移到的格子集合对象的格子总数。
---@param pushSameItemOnly boolean
function Inventory:QuickPushAllTo(start, slotCount, inventoryTo, inventoryToStart, inventoryToSlotCount, pushSameItemOnly)
end

---序列化得到lua表。
---@return table lua表。
function Inventory:Serialization()
end

---由lua表反序列化得到当前物品格子集合对象。
---@param serializedTable table lua表。
function Inventory:Deserialization(serializedTable)
end

return Inventory

================================================
FILE: apis/Item.lua
================================================
---@class Item
---@field id int
---@field idName string
---@field mod Mod
---@field type ItemType_Value
---@field maxStackSize int
---@field groupID int
---@field isBlock boolean
---@field isTool boolean
---@field isMaterial boolean
---@field isProjectile boolean
---@field isWire boolean
---@field toolType string
---@field iconTextureLocation TextureLocation
---@field entityTextureLocation TextureLocation
---@field iconColor Color
---@field iconColor2 Color
---@field iconColor3 Color
---@field iconColor4 Color
---@field iconColor5 Color
---@field iconColor6 Color
---@field maxDurable int
---@field coldTime int
---@field entityWidth int
---@field entityHeight int
---@field entityOffsetX int
---@field entityOffsetY int
---@field handX int
---@field handY int
---@field hasEntity boolean
---@field oreDictionaryIDs int[]
---@field toolGrade int
---@field toolGradeName string
---@field firePointCount int
---@field usePosture int
---@field twoHands boolean
---@field ammoID int
---@field ammoLevel int
---@field shootProjectileID int
---@field projectileID int
---@field fuelTime int
---@field fuelReturnItemID int
---@field isSeed boolean
---@field shootable boolean
---@field shootTimes int
---@field blockID int
---@field wireID int
---@field efficiency double
---@field noConsumeChance double
---@field deviation double
---@field speed double
---@field showHair boolean
---@field canThrow boolean
---@field baseAttack Attack
---@field defense int
---@field useSoundID int
---@field useSoundGroupID int
---@field eatable boolean
---@field buffs Buff[]
---@field enchantments Enchantment[]
---@field addHealth int
---@field addMagic int
---@field addMaxMagic int
---@field food int
---@field foodSaturation int
---@field consumeMana int
local Item = {}

---GetFirePoint
---@param index int
---@return Vector2
function Item:GetFirePoint(index)
end

return Item

================================================
FILE: apis/ItemRegistry.lua
================================================
---@class ItemRegistry
local ItemRegistry = {}

---GetItemByID
---@param id int
---@return Item
function ItemRegistry.GetItemByID(id)
end

---GetItemByIDName
---@param idName string
---@return Item
function ItemRegistry.GetItemByIDName(idName)
end

return ItemRegistry

================================================
FILE: apis/ItemStack.lua
================================================
---@API

---@class ItemStack 描述一组堆叠物品。
---@field stackSize int Read-only 当前堆叠数量。
---@field durable double 当前物品耐久。
---@field enchantmentCount int 当前堆叠物品挂接的附魔数量。
local ItemStack = {}

---创建一个堆叠物品对象。
---
---[Example]
-----创建堆叠234个由钻石的堆叠物品对象。
---local itemStackDiamond = ItemStack.new(ItemRegistry.GetItemByID("diamond"), 234)
-----创建一个铁剑堆叠物品对象。
---local itemStackSword = ItemStack.new(ItemRegistry.GetItemByID("iron_sword"))
---
---@overload fun(item:Item):ItemStack
---@param item Item 物品。
---@param stackSize int 堆叠数量。
---@return ItemStack 新的堆叠物品对象。
function ItemStack.new(item, stackSize)
end

---判断当前堆叠物品数据是否有效。
function ItemStack:Valid()
end

---为当前堆叠物品新增一项附魔。
---@param enchantmentId int 附魔ID。
---@param enchantmentLevel int 附魔等级。
---@return boolean 新增附魔是否有变化,当且仅当之前已经存在附魔且新增附魔等级小于之前等级则无变化。
function ItemStack:AddEnchantment(enchantmentId, enchantmentLevel)
end

---克隆返回一个新的堆叠物品对象。
---@overload fun():ItemStack
---@param stackSize int 新的堆栈数量。
---@return ItemStack 新的堆叠物品对象。
function ItemStack:Clone(stackSize)
end

---设置堆栈数量。
function ItemStack:SetStackSize(value)
end

---增加耐久值。
function ItemStack:AddDurable(value)
end

---直接设置耐久值。
function ItemStack:SetDurable(value)
end

---减少耐久值。
---@return boolean 减少后耐久是否为0。
function ItemStack:LoseDurable(value)
end

---获取当前堆栈物品指定附魔的等级。
---@param enchantmentId int 附魔ID。
---@return int 附魔等级。
function ItemStack:GetEnchantmentLevel(enchantmentId)
end

---判断当前堆叠物品是否拥有了指定附魔。
---@overload fun():boolean
---@param enchantmentId int 附魔ID。
---@return boolean
function ItemStack:HasEnchantment(enchantmentId)
end

---由附魔索引得到附魔对象。
---@param index int 附魔索引。
---@return Enchantment 附魔对象。
function ItemStack:GetEnchantmentByIndex(index)
end

---由附魔索引删除附魔对象。
---@param index int 附魔索引。
function ItemStack:RemoveEnchantmentByIndex(index)
end

---由附魔ID删除一个附魔对象。
---@param enchantmentID int 附魔ID。
function ItemStack:RemoveEnchantment(enchantmentID)
end

---清空所有附魔。
function ItemStack:ClearEnchantments()
end

---判断当前堆叠物品的物品数据是否与另一个堆叠物品的物品数据相同。
---@param itemStack ItemStack 另一个堆叠物品。
---@return boolean
function ItemStack:IsItemEqual(itemStack)
end

---判断当前堆叠物品是否与另一个堆叠物品相同。
---@overload fun(itemStack:ItemStack):boolean
---@param itemStack ItemStack 另一个堆叠物品。
---@param ignoreStackSize boolean 是否忽略堆叠物品数量判断。
---@return boolean
function ItemStack:IsItemStackEqual(itemStack, ignoreStackSize)
end

---返回当前堆叠物品与另一个堆叠物品可合并的数量。
---@param itemStack ItemStack 另一个堆叠物品。
---@return int
function ItemStack:GetMergeCount(itemStack)
end

---拆分当前堆叠物品,返回新的拆出来的堆叠物品对象。
---@param count int 拆出来的堆叠数量。
---@return ItemStack 新的拆出来的堆叠物品对象。
function ItemStack:SplitStack(count)
end

---获得当前堆叠物品的物品数据。
---@return Item
function ItemStack:GetItem()
end

---绘制当前堆叠物品。
---@param position Vector2
---@param color Color
---@param spriteExData SpriteExData
function ItemStack:Render(position, color, spriteExData)
end

---绘制当前堆叠物品的堆叠数量。
---@param position Vector2
---@param color Color
---@param spriteExData SpriteExData
function ItemStack:RenderNum(position, color, spriteExData)
end

---自定义绘制当前堆叠物品的堆叠数量。
---@param num int
---@param position Vector2
---@param color Color
---@param spriteExData SpriteExData
function ItemStack:RenderCustomNum(num, position, color, spriteExData)
end

---执行堆叠物品挂接ModItem的`OnHeld`函数。
---@param player Player 玩家
function ItemStack:RunOnHeldEvent(player)
end

---执行堆叠物品挂接ModItem的`OnHeldRender`函数。
---@param player Player 玩家
function ItemStack:RunOnHeldRenderEvent(player)
end

---执行堆叠物品挂接ModItem的`OnHeld`函数。
---@param npc Npc
function ItemStack:RunOnHeldByNpcEvent(npc)
end

---返回当前堆叠物品是否能被玩家使用。
---@param player Player 玩家
---@return boolean
function ItemStack:CanUse(player)
end

---执行堆叠物品挂接ModItem的`OnUsed`函数。
---@param player Player 玩家
function ItemStack:RunOnUsedEvent(player)
end

---执行堆叠物品挂接ModItem的`OnUsedByNpc`函数。
---@param npc Npc
function ItemStack:RunOnUsedByNpcEvent(npc)
end

---执行堆叠物品挂接ModItem的`OnDurableEmpty`函数。
---@param player Player 玩家
---@return boolean
function ItemStack:RunOnDurableEmptyEvent(player)
end

---序列化得到lua表。
---@return table lua表。
function ItemStack:Serialization()
end

---由lua表反序列化创建一个堆叠物品对象。
---@param serializedTable table lua表。
---@return ItemStack 新的堆叠物品对象。
function ItemStack.Deserialization(serializedTable)
end

---返回当前堆叠物品挂接的ModItem对象。
---@return ModItem 挂接的ModItem对象,如果无挂接,返回nil。
function ItemStack:GetModItem()
end

return ItemStack

================================================
FILE: apis/ItemType.lua
================================================
---@class ItemType_Value

---@class ItemType
---@field Block ItemType_Value
---@field Tool ItemType_Value
---@field Material ItemType_Value
---@field Projectile ItemType_Value
---@field Wire ItemType_Value
local ItemType = {}

return ItemType

================================================
FILE: apis/ItemUtils.lua
================================================
---@class ItemUtils
---@field maxRootGroupCount int
local ItemUtils = {}

---CreateDrop
---@overload fun(itemStack:ItemStack, centerX:double, centerY:double)
---@overload fun(itemStack:ItemStack, centerX:double, centerY:double, speedX:double, speedY:double)
---@param itemStack ItemStack
---@param centerX double
---@param centerY double
---@param speedX double
---@param speedY double
---@param coldTime int
function ItemUtils.CreateDrop(itemStack, centerX, centerY, speedX, speedY, coldTime)
end

---GetOreDictionaryItemIDs
---@param oreDictionaryID int
---@return int[]
function ItemUtils.GetOreDictionaryItemIDs(oreDictionaryID)
end

---GetGroupItemIDs
---@param itemGroupID int
---@return int[]
function ItemUtils.GetGroupItemIDs(itemGroupID)
end

---GetGroupIDsFromRootID
---@param rootGroupID int
---@return int[]
function ItemUtils.GetGroupIDsFromRootID(rootGroupID)
end

---GetRootGroupIconItemID
---@param rootGroupID int
---@return int
function ItemUtils.GetRootGroupIconItemID(rootGroupID)
end

return ItemUtils

================================================
FILE: apis/JoinData.lua
================================================
---@class JoinData
---@field playerName string
---@field worldName string
---@field address string
---@field port int
---@field multiplayer boolean
local JoinData = {}

---@return JoinData
function JoinData.new()
end

return JoinData

================================================
FILE: apis/LangUtils.lua
================================================
---@class LangUtils
local LangUtils = {}

---
---@param itemID int
---@return string
function LangUtils.ItemName(itemID)
end

---
---@param itemID int
---@return string
function LangUtils.ItemIntroduction(itemID)
end

---
---@param buffID int
---@return string
function LangUtils.BuffName(buffID)
end

---EnchantmentName
---@param enchantmentID int
---@return string
function LangUtils.EnchantmentName(enchantmentID)
end

---NpcName
---@param npcID int
---@return string
function LangUtils.NpcName(npcID)
end

---AdvancementName
---@param advancementID int
---@return string
function LangUtils.AdvancementName(advancementID)
end

---AdvancementDescription
---@param advancementID int
---@return string
function LangUtils.AdvancementDescription(advancementID)
end

return LangUtils

================================================
FILE: apis/LightingUtils.lua
================================================
---@class LightingUtils
local LightingUtils = {}

---Add
---@overload fun(xi:int,yi:int,alpha:int)
---@overload fun(xi:int,yi:int,alpha:int,red:int)
---@overload fun(xi:int,yi:int,alpha:int,red:int,green:int)
---@overload fun(xi:int,yi:int,alpha:int,red:int,green:int,blue:int)
---@param xi int
---@param yi int
---@param alpha int
---@param red int
---@param green int
---@param blue int
function LightingUtils.Add(xi, yi, alpha, red, green, blue)
end

---AddDelay
---@overload fun(xi:int,yi:int,delayTime:int,alpha:int)
---@overload fun(xi:int,yi:int,delayTime:int,alpha:int,red:int)
---@overload fun(xi:int,yi:int,delayTime:int,alpha:int,red:int,green:int)
---@overload fun(xi:int,yi:int,delayTime:int,alpha:int,red:int,green:int,blue:int)
---@param xi int
---@param yi int
---@param delayTime int
---@param alpha int
---@param red int
---@param green int
---@param blue int
function LightingUtils.AddDelay(xi, yi, delayTime, alpha, red, green, blue)
end

return LightingUtils

================================================
FILE: apis/MapPos.lua
================================================
---@class MapPos
---@field xi int
---@field yi int
local MapPos = {}

return MapPos

================================================
FILE: apis/MapUtils.lua
================================================
---@class MapUtils
local MapUtils = {}

---IsValid
---@param xi int
---@param yi int
---@return boolean
function MapUtils.IsValid(xi, yi)
end

---IsAreaValid
---@param xi int
---@param yi int
---@param width int
---@param height int
---@return boolean
function MapUtils.IsAreaValid(xi, yi, width, height)
end

---IsSolid
---@param xi int
---@param yi int
---@return boolean
function MapUtils.IsSolid(xi, yi)
end

---HasFront
---@param xi int
---@param yi int
---@return boolean
function MapUtils.HasFront(xi, yi)
end

---GetFrontID
---@param xi int
---@param yi int
---@return int
function MapUtils.GetFrontID(xi, yi)
end

---GetFrontCenterXY
---@param xi int
---@param yi int
---@return double,double
function MapUtils.GetFrontCenterXY(xi, yi)
end

---@param xi int
---@param yi int
---@return int,int
function MapUtils.GetBodyPos(xi, yi)
end

---GetFrontIDTag
---@param xi int
---@param yi int
---@return int,int
function MapUtils.GetFrontIDTag(xi, yi)
end

---CanSetFrontTag
---@param xi int
---@param yi int
---@return boolean
function MapUtils.CanSetFrontTag(xi, yi)
end

---SetFrontTag
---@param xi int
---@param yi int
---@param tag int
---@return boolean
function MapUtils.SetFrontTag(xi, yi, tag)
end

---CanSetFront
---@overload fun(xi:int, yi:int, frontID:int):boolean
---@overload fun(xi:int, yi:int, frontID:int, isDestroyFragile:boolean):boolean
---@param xi int
---@param yi int
---@param frontID int
---@param isDestroyFragile boolean
---@param isCheckingEntities boolean
---@return boolean
function MapUtils.CanSetFront(xi, yi, frontID, isDestroyFragile, isCheckingEntities)
end

---SetFront
---@overload fun(xi:int, yi:int, frontID:int):boolean
---@overload fun(xi:int, yi:int, frontID:int, isDestroyFragile:boolean):boolean
---@overload fun(xi:int, yi:int, frontID:int, isDestroyFragile:boolean, showEffect:boolean):boolean
---@param xi int
---@param yi int
---@param frontID int
---@param isDestroyFragile boolean
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.SetFront(xi, yi, frontID, isDestroyFragile, showEffect, playSound)
end

---CanPlaceFront
---@overload fun(xi:int, yi:int, frontID:int):boolean
---@overload fun(xi:int, yi:int, frontID:int, isDestroyFragile:boolean):boolean
---@param xi int
---@param yi int
---@param frontID int
---@param isDestroyFragile boolean
---@param isCheckingEntities boolean
---@return boolean
function MapUtils.CanPlaceFront(xi, yi, frontID, isDestroyFragile, isCheckingEntities)
end

---PlaceFront
---@overload fun(xi:int, yi:int, frontID:int):boolean
---@overload fun(xi:int, yi:int, frontID:int, isDestroyFragile:boolean):boolean
---@overload fun(xi:int, yi:int, frontID:int, isDestroyFragile:boolean, showEffect:boolean):boolean
---@param xi int
---@param yi int
---@param frontID int
---@param isDestroyFragile boolean
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.PlaceFront(xi, yi, frontID, isDestroyFragile, showEffect, playSound)
end

---RemoveFront
---@overload fun(xi:int, yi:int):boolean
---@overload fun(xi:int, yi:int, showEffect:boolean):boolean
---@param xi int
---@param yi int
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.RemoveFront(xi, yi, showEffect, playSound)
end

---RemoveFrontAndDrop
---@overload fun(xi:int, yi:int):boolean
---@overload fun(xi:int, yi:int, isDropOriginal:boolean):boolean
---@overload fun(xi:int, yi:int, isDropOriginal:boolean, dropFortune:int):boolean
---@overload fun(xi:int, yi:int, isDropOriginal:boolean, dropFortune:int, showEffect:boolean):boolean
---@param xi int
---@param yi int
---@param isDropOriginal boolean
---@param dropFortune int
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.RemoveFrontAndDrop(xi, yi, isDropOriginal, dropFortune, showEffect, playSound)
end

---HasWall
---@param xi int
---@param yi int
---@return boolean
function MapUtils.HasWall(xi, yi)
end

---GetWallID
---@param xi int
---@param yi int
---@return int
function MapUtils.GetWallID(xi, yi)
end

---CanSetWall
---@param xi int
---@param yi int
---@param wallID int
---@return boolean
function MapUtils.CanSetWall(xi, yi, wallID)
end

---SetWall
---@overload fun(xi:int,yi:int,id:int):boolean
---@overload fun(xi:int,yi:int,id:int,showEffect:boolean):boolean
---@overload fun(xi:int,yi:int,id:int,showEffect:boolean,playSound:boolean):boolean
---@param xi int
---@param yi int
---@param id int
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.SetWall(xi, yi, id, showEffect, playSound)
end

---CanPlaceWall
---@param xi int
---@param yi int
---@param wallID int
---@return boolean
function MapUtils.CanPlaceWall(xi, yi, wallID)
end

---PlaceWall
---@overload fun(xi:int,yi:int,id:int):boolean
---@overload fun(xi:int,yi:int,id:int,showEffect:boolean):boolean
---@overload fun(xi:int,yi:int,id:int,showEffect:boolean,playSound:boolean):boolean
---@param xi int
---@param yi int
---@param id int
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.PlaceWall(xi, yi, id, showEffect, playSound)
end

---RemoveWall
---@overload fun(xi:int,yi:int):boolean
---@overload fun(xi:int,yi:int,showEffect:boolean):boolean
---@param xi int
---@param yi int
---@param showEffect boolean
---@param playSound boolean
function MapUtils.RemoveWall(xi, yi, showEffect, playSound)
end

---RemoveWallAndDrop
---@overload fun(xi:int, yi:int):boolean
---@overload fun(xi:int, yi:int, isDropOriginal:boolean):boolean
---@overload fun(xi:int, yi:int, isDropOriginal:boolean, dropFortune:int):boolean
---@overload fun(xi:int, yi:int, isDropOriginal:boolean, dropFortune:int, showEffect:boolean):boolean
---@param xi int
---@param yi int
---@param isDropOriginal boolean
---@param dropFortune int
---@param showEffect boolean
---@param playSound boolean
---@return boolean
function MapUtils.RemoveWallAndDrop(xi, yi, isDropOriginal, dropFortune, showEffect, playSound)
end

---HasLiquid
---@param xi int
---@param yi int
---@return boolean
function MapUtils.HasLiquid(xi, yi)
end

---GetLiquidID
---@param xi int
---@param yi int
---@return int
function MapUtils.GetLiquidID(xi, yi)
end

---GetLiquidIDAmount
---@param xi int
---@param yi int
---@return int,int
function MapUtils.GetLiquidIDAmount(xi, yi)
end

---SetLiquid
---@overload fun(xi:int,yi:int,liquidID:int):boolean
---@param xi int
---@param yi int
---@param liquidID int
---@param amount int
---@return boolean
function MapUtils.SetLiquid(xi, yi, liquidID, amount)
end

---RemoveLiquid
---@param xi int
---@param yi int
---@return boolean
function MapUtils.RemoveLiquid(xi, yi)
end

---TriggerLiquid
---@param xi int
---@param yi int
function MapUtils.TriggerLiquid(xi, yi)
end

---TriggerSignal
---@param xi int
---@param yi int
---@param isTurningOn boolean
---@return boolean
function MapUtils.TriggerSignal(xi, yi, isTurningOn)
end

---DelayTriggerSignal
---@param xi int
---@param yi int
---@param isTurningOn boolean
---@param delayTicks int
---@return boolean
function MapUtils.DelayTriggerSignal(xi, yi, isTurningOn, delayTicks)
end

---GetBlockEntity
---@param blockEntityID int
---@param xi int
---@param yi int
---@return BlockEntity
function MapUtils.GetBlockEntity(blockEntityID, xi, yi)
end

---CreateBlockEntity
---@param blockEntityID int
---@param xi int
---@param yi int
function MapUtils.CreateBlockEntity(blockEntityID,xi,yi)
end

---WeaponCollideWithMap
---@param obb ObbDouble
---@param isDestroyByWeapon boolean
---@return boolean,boolean
function MapUtils.WeaponCollideWithMap(obb, isDestroyByWeapon)
end

---PlayAnimation
---@param xi int
---@param yi int
---@param startFrameIndex int
---@param totalFrames int
---@param frameSpeed int
---@param isPositiveDirection boolean
function MapUtils.PlayAnimation(xi, yi, startFrameIndex, totalFrames, frameSpeed, isPositiveDirection)
end

---SetAnimationIndex
---@param xi int
---@param yi int
---@param animationIndex int
function MapUtils.SetAnimationIndex(xi, yi, animationIndex)
end

---SyncUnit
---@param xi int
---@param yi int
function MapUtils.SyncUnit(xi, yi)
end

---SetWireVisible
---@param visible boolean
function MapUtils.SetWireVisible(visible)
end

---IsWireVisible
---@return boolean
function MapUtils.IsWireVisible()
end

---HasWire
---@param xi int
---@param yi int
---@return boolean
function MapUtils.HasWire(xi, yi)
end

---GetWireID
---@param xi int
---@param yi int
---@return int
function MapUtils.GetWireID(xi, yi)
end

---SetWire
---@param xi int
---@param yi int
---@param wireID int
---@return boolean
function MapUtils.SetWire(xi, yi, wireID)
end

---RemoveWire
---@param xi int
---@param yi int
---@return boolean
function MapUtils.RemoveWire(xi, yi)
end

---RemoveWireAndDrop
---@overload fun(xi:int,yi:int):boolean
---@param xi int
---@param yi int
---@param playSound boolean
---@return boolean
function MapUtils.RemoveWireAndDrop(xi, yi, playSound)
end

---SetWireActivate
---@param xi int
---@param yi int
---@param activated boolean
function MapUtils.SetWireActivate(xi, yi, activated)
end

---DoRandomTick
---@param xi int
---@param yi int
function MapUtils.DoRandomTick(xi, yi)
end

---SetRenderPreview
---@param blockID int
---@param xi int
---@param yi int
---@param canPlace boolean
---@param playerCenterX double
---@param playerCenterY double
function MapUtils.SetBlockRenderPreview(blockID, centerX, centerY, canPlace, playerCenterX, playerCenterY)
end

function MapUtils.ClearBlockRenderPreview()
end

return MapUtils

================================================
FILE: apis/MiscUtils.lua
================================================
---@class MiscUtils
---@field screenX double
---@field screenY double
---@field screenWidth int
---@field screenHeight int
---@field inGame boolean
---@field isSinglePlayerMode boolean
---@field isNight boolean
local MiscUtils = {}

---CreateExplosion
---@overload fun(xi:int, yi:int, power:double, hurtNpc:boolean, hurtPlayer:boolean)
---@overload fun(xi:int, yi:int, power:double, hurtNpc:boolean, hurtPlayer:boolean, killTiles:boolean)
---@overload fun(xi:int, yi:int, power:double, hurtNpc:boolean, hurtPlayer:boolean, killTiles:boolean, killBack:boolean)
---@overload fun(xi:int, yi:int, power:double, hurtNpc:boolean, hurtPlayer:boolean, killTiles:boolean, killBack:boolean, makeSound:boolean)
---@param xi int
---@param yi int
---@param power double
---@param hurtNpc boolean
---@param hurtPlayer boolean
---@param killTiles boolean
---@param killBack boolean
---@param makeSound boolean
---@param tileLimit int
function MiscUtils.CreateExplosion(xi, yi, power, hurtNpc, hurtPlayer, killTiles, killBack, makeSound, tileLimit)
end

---UnicastUTF8
---@param player Player
---@param message string
function MiscUtils.UnicastUTF8(player, message)
end

---BroadcastUTF8
---@param message string
function MiscUtils.BroadcastUTF8(message)
end

---SetDayTime
---@param dayTime int
function MiscUtils.SetDayTime(dayTime)
end

---GetDayTime
---@return int
function MiscUtils.GetDayTime()
end

---SetDaySpeed
---@param daySpeed int
function MiscUtils.SetDaySpeed(daySpeed)
end

---@return int
function MiscUtils.GetDaySpeed()
end

---SetWeatherTime
---@param weatherTime int
function MiscUtils.SetWeatherTime(weatherTime)
end

---@return int
function MiscUtils.GetWeatherTime()
end

---SetDayTimeFormat
---@param hours int
---@param minutes int
---@param seconds int
function MiscUtils.SetDayTimeFormat(hours, minutes, seconds)
end

---@return int,int,int
function MiscUtils.GetDayTimeFormat()
end

---RayDistance
---@overload fun(fromX:double, fromY:double, shootAngle:double):double
---@param fromX double
---@param fromY double
---@param shootAngle double
---@param maxDistance int
---@return double
function MiscUtils.RayDistance(fromX, fromY, shootAngle, maxDistance)
end

---RayReach
---@param fromX double
---@param fromY double
---@param toX double
---@param toY double
---@return boolean
function MiscUtils.RayReach(fromX, fromY, toX, toY)
end

function MiscUtils.SaveAll()
end

---SetAutoSaveEnabled
---@param enabled boolean
function MiscUtils.SetAutoSaveEnabled(enabled)
end

---GetPortNumber
---@return int
function MiscUtils.GetPortNumber()
end

---SetPVP
---@param enabled boolean
function MiscUtils.SetPVP(enabled)
end

---GetPVP
---@return boolean
function MiscUtils.GetPVP()
end

---SetSafeBlow
---@param enabled boolean
function MiscUtils.SetSafeBlow(enabled)
end

---GetSafeBlow
---@return boolean
function MiscUtils.GetSafeBlow()
end

---SetGameMode
---@param gameMode int
function MiscUtils.SetGameMode(gameMode)
end

---GetGameMode
---@return int
function MiscUtils.GetGameMode()
end

---@return Player[]
function MiscUtils.GetOnlinePlayerList()
end

---KickPlayer
---@param playerName string
function MiscUtils.KickPlayer(playerName)
end

---KickAllPlayers
function MiscUtils.KickAllPlayers()
end

---@return string[]
function MiscUtils.GetBlackList()
end

---Ban
---@param ip string
function MiscUtils.Ban(ip)
end

---RemoveBan
---@param id string
function MiscUtils.RemoveBan(id)
end

---AddTips
---@param x double
---@param y double
---@param tipsText string
---@param color Color
function MiscUtils.AddTips(x, y, tipsText, color)
end

---@return double
function MiscUtils.GetMapDisplayScale()
end

---SetMapDisplayScale
---@param scale double
function MiscUtils.SetMapDisplayScale(scale)
end

return MiscUtils

================================================
FILE: apis/Mod.lua
================================================
---@class Mod 描述一个模组,维护模组的基本信息。
---@field modId string 模组的命名空间。
---@field displayName string 模组显示名称。
---@field version string 模组版本号。
---@field gameVersion string 游戏版本号。
---@field assetRootPath string 模组文件夹在assets系统中的文件夹根目录。
---@field current Mod 返回当前执行的脚本环境的模组。
---@field serverBoundPacket ServerBoundPacket
---@field clientBoundPacket ClientBoundPacket
---@field registry Registry
---@field modList Array
local Mod = {}

---RegisterClientGuiLoaderCallback
---@param callback function|table
---@return ListenerID
function Mod:RegisterClientGuiLoaderCallback(callback)
end

---@param callback function|table
---@return ListenerID
function Mod:RegisterServerGuiLoaderCallback(callback)
end

---RegisterClientGuiLoaderCallback
---@param callback function|table
---@return ListenerID
function Mod:RegisterClientBoundReaderCallback(callback)
end

---@param callback function|table
---@return ListenerID
function Mod:RegisterServerBoundReaderCallback(callback)
end

---@param callback function|table
---@return ListenerID
function Mod:RegisterWorldServerLoader(callback)
end

---@param callback function|table
---@return ListenerID
function Mod:RegisterWorldServerSaver(callback)
end

---通过模组命名空间,返回已加载模组。
---@param modID string 模组的命名空间。
---@return nil|Mod 已加载的模组,如果模组不存在,返回nil。
function Mod.GetByID(modID)
end

return Mod


================================================
FILE: apis/ModBlock.lua
================================================
---@class ModBlock
local ModBlock = {}

---OnPlayerCollide
---@param xi int
---@param yi int
---@param player Player
---@param collisionDirection int
function ModBlock.OnPlayerCollide(xi, yi, player, collisionDirection)
end

---OnPlayerOverlap
---@param xi int
---@param yi int
---@param player Player
function ModBlock.OnPlayerOverlap(xi, yi, player)
end

---UpdateScreen
---@param xi int
---@param yi int
---@param tickTime int
function ModBlock.UpdateScreen(xi, yi, tickTime)
end

---RenderFurniture
---@param xi int
---@param yi int
---@param tickTime int
function ModBlock.RenderFurniture(xi, yi, tickTime)
end

---PreRenderFurniture
---@param xi int
---@param yi int
---@param tickTime int
function ModBlock.PreRenderFurniture(xi, yi, tickTime)
end

---PostRenderFurniture
---@param xi int
---@param yi int
---@param tickTime int
function ModBlock.PostRenderFurniture(xi, yi, tickTime)
end

---OnRandomTick
---@param xi int
---@param yi int
function ModBlock.OnRandomTick(xi, yi)
end

---OnPlaced
---@param xi int
---@param yi int
function ModBlock.OnPlaced(xi, yi)
end

---OnClicked
---@param xi int
---@param yi int
---@param parameterClick ParameterClick
function ModBlock.OnClicked(xi, yi, parameterClick)
end

---OnSignal
---@param xi int
---@param yi int
---@param isActivated boolean
function ModBlock.OnSignal(xi, yi, isActivated)
end

---OnDestroy
---@param xi int
---@param yi int
---@param parameterDestroy ParameterDestroy
function ModBlock.OnDestroy(xi, yi, parameterDestroy)
end

return ModBlock

================================================
FILE: apis/ModBlockEntity.lua
================================================
---@class ModBlockEntity
---@field blockEntity BlockEntity
local ModBlockEntity = {}

function ModBlockEntity:OnPlaced()
end

function ModBlockEntity:Init()
end

function ModBlockEntity:CanUpdate()
end

function ModBlockEntity:Update()
end

---OnKilled
---@param parameterDestroy ParameterDestroy
function ModBlockEntity:OnKilled(parameterDestroy)
end

---OnClicked
---@param parameterClick ParameterClick
function ModBlockEntity:OnClicked(parameterClick)
end

function ModBlockEntity:OnActivated(isActive)
end

---@return table
function ModBlockEntity:Save()
end

---Load
---@param tagTable table
function ModBlockEntity:Load(tagTable)
end

return ModBlockEntity

================================================
FILE: apis/ModItem.lua
================================================
---@class ModItem
---@field itemStack ItemStack
local ModItem = {}

function ModItem:Init()
end

---DrawIcon
---@param position Vector2
---@param color Color
---@param spriteExData SpriteExData
function ModItem:DrawIcon(position, color, spriteExData)
end

---OnHeld
---@param player Player
function ModItem:OnHeld(player)
end

---OnHeldRender
---@param player Player
function ModItem:OnHeldRender(player)
end

---OnUsed
---@param player Player
function ModItem:OnUsed(player)
end

---CanUse
---@param player Player
---@return boolean
function ModItem:CanUse(player)
end

---OnHeldByNpc
---@param npc Npc
function ModItem:OnHeldByNpc(npc)
end

---OnUsedByNpc
---@param npc Npc
function ModItem:OnUsedByNpc(npc)
end

---ModifyHitNpc
---@param npc Npc
---@param baseAttack Attack
---@return boolean
function ModItem:ModifyHitNpc(npc, baseAttack)
end

---ModifyHitPlayer
---@param player Player
---@param baseAttack Attack
---@return boolean
function ModItem:ModifyHitPlayer(player, baseAttack)
end

---Load
---@param tagTable table
function ModItem:Load(tagTable)
end

---@return table
function ModItem:Save()
end

return ModItem

================================================
FILE: apis/ModNpc.lua
================================================
---@class ModNpc
---@field npc Npc
---@field syncData table
local ModNpc = {}

--- This function is called once when the NPC is spawned.
---
--- NPC生成时调用一次该函数。
function ModNpc:Init()
end

---
---
--- NPC每帧运行Update()函数前调用,如果返回true则执行所有Update逻辑,返回false则不执行所有Update逻辑。可在该函数写入新的逻辑,并屏蔽原有逻辑。默认返回true。
---@return boolean
function ModNpc:CanUpdate()
    return true
end

--- Called when NPC runs every update tick, usually write logic in this function.
---
--- NPC每帧运行时调用,通常在该函数内编写运动等逻辑。
function ModNpc:Update()
end

--- Called before the NPC runs the `Update()` function every update tick.
--- It is usually used to insert new logic before the original logic.
---
--- NPC每帧运行`Update()`函数前调用。通常用于在原逻辑前插入新逻辑。
function ModNpc:PreUpdate()
end

--- Called after the NPC runs the `Update()` function every update tick.
--- It is usually used to insert new logic after the original logic.
---
--- NPC每帧运行`Update()`函数后调用。通常用于追加逻辑。
function ModNpc:PostUpdate()
end

---
---
--- NPC每帧绘制前调用,如果返回true则执行所有Draw逻辑,返回false则不执行所有Draw逻辑。可在该函数写入新的逻辑,并屏蔽原有逻辑。默认返回true。
---@return boolean
function ModNpc:CanDraw()
    return true
end

--- Called before each tick of NPC drawing,
--- just write custom drawing behavior in this function.
---
--- NPC每帧绘制前调用,在该函数内编写自定义绘制属性。
function ModNpc:OnDraw()
end

function ModNpc:OnRender()
end

--- Called when NPC was killed.
---
--- NPC死亡时调用一次该函数。
function ModNpc:OnKilled()
end

---ModifyHit
---@param attack Attack
---@return boolean
function ModNpc:ModifyHit(attack)
end

--- Called when NPC collides the tiles.
---
--- NPC与图块碰撞时调用该函数。
--- @param oldSpeedX double The X speed before colliding tiles. (击中图块前一帧的横向速度)
--- @param oldSpeedY double The Y speed before colliding tiles. (击中图块前一帧的纵向速度)
function ModNpc:OnTileCollide(oldSpeedX, oldSpeedY)
end

function ModNpc:OnLoot()
end

---@return table
function ModNpc:Save()
end

---Load
---@param tagTable table
function ModNpc:Load(tagTable)
end

return ModNpc

================================================
FILE: apis/ModProjectile.lua
================================================
---@class ModProjectile
---@field projectile Projectile
local ModProjectile = {}

return ModProjectile

================================================
FILE: apis/ModTextureData.lua
================================================
---@class ModTextureData
---@field textureLocation TextureLocation
---@field width int
---@field height int
---@field frameXs int
---@field frameYs int
---@field frameSpeed int
---@field tagUsage int
---@field loopPlay boolean
---@field userDisabled boolean
local ModTextureData = {}

return ModTextureData

================================================
FILE: apis/ModTextureUtils.lua
================================================
---@class ModTextureUtils
local ModTextureUtils = {}

---GetData
---@param modTextureID int
---@return ModTextureData
function ModTextureUtils.GetData(modTextureID)
end

return ModTextureUtils

================================================
FILE: apis/Npc.lua
================================================
---@API

---@class Npc:Entity 描述一个NPC实体。
---@field entityIndex EntityIndex
---@field id int 当前NPC的动态ID。
---@field dataWatcher DataWatcher
---@field data table
---@field texture TextureLocation
---@field baseAttack Attack 当前NPC的基础攻击属性。
---@field maxSpeed double 当前NPC的最大横向移动速度。每帧重置为所在环境(流体黏性等)决定的最大移动速度。
---@field defaultGravity double Read-only 当前NPC的默认重力加速度。
---@field gravity double 当前NPC的纵向加速度。每帧重置为作用了所在环境纵向受力以及重力后的纵向加速度。
---@field defaultMaxFallSpeed double Read-only 当前NPC的默认最大下落速度。
---@field maxFallSpeed double 当前NPC的最大下落速度。每帧重置为作用了所在环境纵向阻力后的最大下落速度。
---@field jumpForce double 当前NPC的跳跃力度。每帧重置为作用了所在环境纵向阻力后的跳跃力度。
---@field noMove boolean 决定当前NPC是否停止行走。
---@field inLiquid boolean Read-only 当前NPC是否处在流体环境中。
---@field oldInLiquid boolean Read-only 上一帧的NPC是否处在流体环境中。
---@field isEnemy boolean Read-only 当前NPC是否会伤害玩家。
---@field state int NPC当前在简单有限状态机中的状态。
---@field stateTimer int NPC的状态机计时器。
---@field hurry boolean 当前NPC是否为匆忙状态。匆忙状态下随机走模板不会停下来。
---@field maxHealth int 当前NPC的生命值上限。
---@field health int 当前NPC的生命值。
---@field angry boolean 当前NPC是否为愤怒状态。易怒的NPC在被玩家击中后会将该玩家视为目标,并置愤怒状态为true。
---@field animation int NPC当前执行的动画状态。通常用于表示骨骼模型的动画状态。
---@field animationTickTime int NPC在当前动画索引所经过的时间。每帧自动自增1,当动画状态切换时自动重置为0。
---@field watchAngle double Read-only NPC的目视角度。若NPC目标存在,则总是目视目标。否则总是根据朝向水平目视。
---@field type NpcType Read-only NPC类型。
---@field spawnCount double 占用生成量。
---@field defaultKnockBackDefenseValue double 击退抗性。
---@field toolUseRate double 工具使用概率。
---@field maxDisappearTime int 最大消失时间。
---@field defaultDefenseValue int 防御力。
---@field defaultAttackValue int 攻击力。
---@field defaultCritValue int 双倍暴击率百分比。
---@field defaultKnockBackValue int 击退力。
---@field movement int 运动方式。
---@field gfxOffsetX int 贴图偏移量X。
---@field gfxOffsetY int 贴图偏移量Y。
---@field gfxWidth int 贴图宽度。
---@field gfxHeight int 贴图高度。
---@field frameStyle int 贴图方式 0-不分左右 1-分左右。
---@field exps int 经验值。
---@field checkTargetDistance int 检测目标的半径。
---@field special int 特殊值。
---@field magicRate int 产生魔法碎片概率的反比。
---@field friendly boolean 是否友好。
---@field hasGravity boolean 是否受重力。
---@field canClimbWall boolean 是否能爬墙。
---@field isForeground boolean 是否置前。
---@field isAntiLava boolean 是否抵抗岩浆。
---@field noFixByBlock boolean 是否不根据方块修正位置。
---@field willBurnUnderSun boolean 是否白天自燃。
---@field defaultAngry boolean 是否易怒。
---@field isBoss boolean 是否作为BOSS。
---@field noShowHp boolean 是否不显示血条。
---@field noBurnSound boolean 是否不播放燃烧音效。
---@field usingBoneModule boolean Read-only 是否使用骨骼模型。
---@field isCheckPlayerTarget boolean 是否自动检测玩家目标。
---@field isVisionNoCrossTile boolean 是否视野不穿墙。
---@field isAutoSave boolean 是否保存到存档。
---@field noHurt boolean
---@field noCollisionByWeapon boolean
---@field noLooting boolean
---@field isWatchAngleForTarget boolean
---@field netUpdate boolean 是否使用逻辑网络同步。
local Npc = {}

--- 不掉落物品直接清除当前NPC对象。
function Npc:Kill()
end

---KillByStrike
---@overload fun(hitAngle:double)
---@overload fun(hitAngle:double,hurtSound:boolean)
---@param hitAngle double
---@param hurtSound boolean
---@param lootingLevel int
function Npc:KillByStrike(hitAngle, hurtSound, lootingLevel)
end

--- 制造一个对当前NPC的伤害。
---@overload fun(attack:Attack)
---@overload fun(attack:Attack,hitAngle:double)
---@overload fun(attack:Attack,hitAngle:double,immune:boolean)
---@overload fun(attack:Attack,hitAngle:double,immune:boolean,hurtSound:boolean)
---@overload fun(attack:Attack,hitAngle:double,immune:boolean,hurtSound:boolean,lootingLevel:int)
---@param attack Attack 当前伤害属性。
---@param hitAngle double @[ default `0.0` ] 产生伤害的角度。
---@param immune boolean @[ default `true` ] 产生当前伤害后是否让NPC处于无敌帧状态。
---@param hurtSound boolean @[ default `true` ] 是否播放NPC受伤音效。
---@param lootingLevel int @[ default `0` ] 掠夺等级。
function Npc:Strike(attack, hitAngle, immune, hurtSound, lootingLevel)
end

--- 制造一个某玩家对当前NPC的伤害。
---@overload fun(player:Player,attack:Attack)
---@overload fun(player:Player,attack:Attack,hitAngle:double)
---@overload fun(player:Player,attack:Attack,hitAngle:double,immune:boolean)
---@overload fun(player:Player,attack:Attack,hitAngle:double,immune:boolean,hurtSound:boolean)
---@overload fun(player:Player,attack:Attack,hitAngle:double,immune:boolean,hurtSound:boolean,lootingLevel:int)
---@param player Player 表示造成伤害的玩家。
---@param attack Attack 当前伤害属性。
---@param hitAngle double @[ default `0.0` ] 产生伤害的角度。
---@param immune boolean @[ default `true` ] 产生当前伤害后是否让NPC处于无敌帧状态。
---@param hurtSound boolean @[ default `true` ] 是否播放NPC受伤音效。
---@param lootingLevel int @[ default `0` ] 掠夺等级。
function Npc:StrikeFromPlayer(player, attack, hitAngle, immune, hurtSound, lootingLevel)
end

--- 制造一个某玩家对当前NPC的伤害。
---@overload fun(npc:Npc,attack:Attack)
---@overload fun(npc:Npc,attack:Attack,hitAngle:double)
---@overload fun(npc:Npc,attack:Attack,hitAngle:double,immune:boolean)
---@overload fun(npc:Npc,attack:Attack,hitAngle:double,immune:boolean,hurtSound:boolean)
---@overload fun(npc:Npc,attack:Attack,hitAngle:double,immune:boolean,hurtSound:boolean,lootingLevel:int)
---@param npc Npc 表示造成伤害的NPC。
---@param attack Attack 当前伤害属性。
---@param hitAngle double @[ default `0.0` ] 产生伤害的角度。
---@param immune boolean @[ default `true` ] 产生当前伤害后是否让NPC处于无敌帧状态。
---@param hurtSound boolean @[ default `true` ] 是否播放NPC受伤音效。
---@param lootingLevel int @[ default `0` ] 掠夺等级。
function Npc:StrikeFromNpc(npc, attack, hitAngle, immune, hurtSound, lootingLevel)
end

--- 为当前NPC添加一个状态效果。若原状态效果存在,以最长时间为新状态效果的持续时间。
---@param buffID int 状态效果ID。
---@param buffTime int 状态效果持续时间。
function Npc:AddBuff(buffID, buffTime)
end

--- 移除一个状态效果。
---@param buffID int
function Npc:RemoveBuff(buffID)
end

--- 移除全部状态效果。
function Npc:RemoveAllBuff()
end

--- 返回NPC是否拥有指定状态效果。
---@param buffID int 状态效果ID。
---@return boolean
function Npc:HasBuff(buffID)
end

--- 返回NPC是否存在状态效果。
---@return boolean
function Npc:HasAnyBuff()
end

--- NPC尝试发出平时声音。平均经过`tryTimes`次发出一次平时声音。
---@param tryTimes int
function Npc:TryMakeSound(tryTimes)
end

--- NPC发出平时声音。
function Npc:MakeSound()
end

--- 站立静止不动。
---@overload fun()
---@param faceToTarget boolean @[ default `true` ] 是否始终面朝玩家。
function Npc:Stand(faceToTarget)
end

--- 随机地朝一个方向行走或停下或转弯。
--- 停下时闲置`idleTime ± idleTimeOffset`范围内随机时间。
--- 朝一个方向行走时持续`walkTime ± walkTimeOffset`范围内随机时间。
--- 使用内置寻路逻辑,遇到墙壁会尝试跳跃3次。
---@overload fun()
---@overload fun(idleTime:int)
---@overload fun(idleTime:int,idleTimeOffset:int)
---@overload fun(idleTime:int,idleTimeOffset:int,walkTime:int)
---@param idleTime int @[ default `128` ]
---@param idleTimeOffset int @[ default `64` ]
---@param walkTime int @[ default `96` ]
---@param walkTimeOffset int @[ default `32` ]
function Npc:RandomWalk(idleTime, idleTimeOffset, walkTime, walkTimeOffset)
end

--- 持续行走而不停下。使用内置寻路逻辑,遇到墙壁会尝试跳跃3次。
---@overload fun()
---@param followTarget boolean @[ default `true` ] 表示在目标存在的情况下,尽可能靠近目标。
function Npc:KeepWalking(followTarget)
end

--- 目标存在时,调用`KeepWalking(followTarget)`,否则调用`RandomWalk()`。
---@overload fun()
---@param followTarget boolean @[ default `true` ] 表示在目标存在的情况下,尽可能靠近目标。
function Npc:Walk(followTarget)
end

--- 在流体中游泳,在空气中蹦跶。目标不存在时,在流体中随机运动。
---@overload fun()
---@param followTarget boolean @[ default `true` ] 表示在目标存在的情况下,尽可能靠近目标。
function Npc:Swim(followTarget)
end

--- 在空气中飞行。
---@overload fun()
---@overload fun(followTarget:boolean)
---@overload fun(followTarget:boolean,force:double)
---@param followTarget boolean @[ default `true` ] 表示在目标存在的情况下,尽可能靠近目标,否则随机飞行。
---@param force double @[ default '0.1' ] 表示飞向目标的力。
---@param gradientSpeed boolean @[ default `false` ] 表示是否使用渐变速度,否则运动速度的向量大小总是恒定的。
function Npc:Fly(followTarget, force, gradientSpeed)
end

--- 传送NPC自己到以自己为圆心的圆形区域随机位置。
---@overload fun(distance:int):boolean
---@overload fun(distance:int,noToAir:boolean):boolean
---@param distance int 圆形区域的半径。
---@param noToAir boolean @[ default `true` ] 表示是否传送到地面上。
---@param noToLiquid boolean @[ default  true` ] 表示是否不传送到流体内。
---@return boolean 成功传送返回true,失败返回false。
function Npc:RandomTeleport(distance, noToAir, noToLiquid)
end

---
---
---@return ModNpc
function Npc:GetModNpc()
end

---
---
---@param globalNpcName string
---@return GlobalNpc
function Npc:GetGlobalNpc(globalNpcName)
end

function Npc:SyncAll()
end

return Npc

================================================
FILE: apis/NpcType.lua
================================================
---@class NpcType Enum class (Enum Format: `NPC_TYPE_XXX`)
local NpcType = {}

---@type NpcType
NPC_TYPE_NORMAL = nil

---@type NpcType
NPC_TYPE_ANIMAL = nil

---@type NpcType
NPC_TYPE_VILLAGER = nil

---@type NpcType
NPC_TYPE_ARTHROPODS = nil

---@type NpcType
NPC_TYPE_SMITE = nil

---@type NpcType
NPC_TYPE_BOSS = nil

return NpcType

================================================
FILE: apis/NpcUtils.lua
================================================
---@class NpcUtils @NPC Util Module (NPC通用模块)
local NpcUtils = {}

---@return Npc[]
function NpcUtils.GetAllEntities()
end

---Get
---@param entityIndex EntityIndex
---@return Npc
function NpcUtils.Get(entityIndex)
end

---IsAlive
---@param entityIndex EntityIndex
---@return boolean
function NpcUtils.IsAlive(entityIndex)
end

---Create an NPC at the specified location and return the created NPC entity.
---
---在指定位置创建一个NPC,返回创建好的NPC实体。
---@overload fun(id:int,x:double,y:double):Npc
---@overload fun(id:int,x:double,y:double,speedX:double):Npc
---@param id int
---@param x double @The x coordinate (x坐标)
---@param y double @The y coordinate (y坐标)
---@param speedX double @[ default '0.0' ] (横向速度,默认0)
---@param speedY double @[ default '0.0' ] (纵向速度,默认0)
---@return Npc @创建好的NPC实体
function NpcUtils.Create(id, x, y, speedX, speedY)
end

---WeaponCollide
---@overload fun(itemStack:ItemStack,hitAngle:double,obb:ObbDouble,attackInAndOut:Attack,outNpcIndex:EntityIndex):boolean
---@param itemStack ItemStack
---@param hitAngle double
---@param obb ObbDouble
---@param attackInAndOut Attack
---@param ignoreNpcIndex EntityIndex
---@param outNpcIndex EntityIndex
---@return boolean
function NpcUtils.WeaponCollide(itemStack, hitAngle, obb, attackInAndOut, ignoreNpcIndex, outNpcIndex)
end

---SearchByRect
---@param x double
---@param y double
---@param width int
---@param height int
---@return Npc[]
function NpcUtils.SearchByRect(x, y, width, height)
end

---SearchByCircle
---@param x double
---@param y double
---@param radius int
---@return Npc[]
function NpcUtils.SearchByCircle(x, y, radius)
end

---SearchNearestNpc
---@param x double
---@param y double
---@param radius int
---@param noCrossTiles boolean
---@return Npc
function NpcUtils.SearchNearestNpc(x, y, radius, noCrossTiles)
end

---SearchNearestEnemy
---@param x double
---@param y double
---@param radius int
---@param noCrossTiles boolean
---@return Npc
function NpcUtils.SearchNearestEnemy(x, y, radius, noCrossTiles)
end

return NpcUtils

================================================
FILE: apis/OreDataGroup.lua
================================================
---@class OreData
---@field oreID int 矿物的方块id
---@field density int 矿脉密度(每区块生成次数)
---@field radius int 矿脉半径
---@field startYi int 矿脉开始分布的Y值
---@field endYi int 矿脉结束分布的Y值
local OreData = {}

---@class OreDataGroup
---@field name string 矿物组名称
---@field dataList OreData[] 矿物列表
local OreDataGroup = {}

return OreDataGroup

================================================
FILE: apis/ParameterClick.lua
================================================
---@class ParameterClick
---@field playerEntityIndex EntityIndex
local ParameterClick = {}

return ParameterClick

================================================
FILE: apis/ParameterDestroy.lua
================================================
---@class ParameterDestroy
---@field silkTouch int
---@field fortune int
---@field boom boolean
---@field dropItem boolean
---@field showEffect boolean
---@field playSound boolean
local ParameterDestroy = {}

return ParameterDestroy

================================================
FILE: apis/ParameterPlace.lua
================================================
---@class ParameterPlace
---@field placeDir int
local ParameterPlace = {}

return ParameterPlace

================================================
FILE: apis/ParameterStrike.lua
================================================
---@class ParameterStrike
---@field lootingLevel int
local ParameterStrike = {}

return ParameterStrike

================================================
FILE: apis/Player.lua
================================================
---@class Player:Entity
---@field entityIndex EntityIndex
---@field dataWatcher DataWatcher
---@field remoteDataWatcher DataWatcher
---@field lookAngle double
---@field facingDirection boolean
---@field hostXi int
---@field hostYi int
---@field biomeType int
---@field biomeID int
---@field defaultMaxSpeed double
---@field defaultJumpTime int
---@field defaultJumpSpeed double
---@field defaultFallSpeed double
---@field speedRate double
---@field jumpRate double
---@field jumpSpeedRate double
---@field fallSpeedRate double
---@field digSpeedRate double
---@field isInvisibility boolean
---@field health int
---@field maxHealth int
---@field mana int
---@field maxMana int
---@field expLevel int
---@field remainExp int
---@field isNoBreathing boolean
---@field breathRate double
---@field foodLevel int
---@field foodSaturationLevel int
---@field touchLiquidID int
---@field inLiquid boolean
---@field oldInLiquid boolean
---@field gameMode int
---@field op int
---@field name string
---@field ip string
---@field port int
---@field isCurrentClientPlayer boolean
---@field mouseInventory Inventory
---@field backpackInventory Inventory
---@field equipmentInventory Inventory
---@field enderInventory Inventory
---@field heldSlotIndex int
---@field heldSlotIndexJustChanged boolean
---@field smartMode SmartMode_Value
---@field isSmartPositionFound boolean
---@field holdColdTime int
---@field isDownPlatform boolean
---@field baseAttack Attack
---@field baseDefense Defense
---@field ignoreCollisionWithTiles boolean
---@field dying boolean
local Player = {}

---Strike
---@overload fun(deathReason:int, attack:Attack)
---@overload fun(deathReason:int, attack:Attack, hitAngle:double)
---@overload fun(deathReason:int, attack:Attack, hitAngle:double, immune:boolean)
---@param deathReason int
---@param attack Attack
---@param hitAngle double
---@param immune boolean
---@param makeHurtSound boolean
function Player:Strike(deathReason, attack, hitAngle, immune, makeHurtSound)
end

---StrikeFromPlayer
---@overload fun(player:Player, attack:Attack)
---@overload fun(player:Player, attack:Attack, hitAngle:double)
---@overload fun(player:Player, attack:Attack, hitAngle:double, immune:boolean)
---@param player Player
---@param attack Attack
---@param hitAngle double
---@param immune boolean
---@param makeHurtSound boolean
function Player:StrikeFromPlayer(player, attack, hitAngle, immune, makeHurtSound)
end

---StrikeFromNpc
---@overload fun(npc:Npc, attack:Attack)
---@overload fun(npc:Npc, attack:Attack, hitAngle:double)
---@overload fun(npc:Npc, attack:Attack, hitAngle:double, immune:boolean)
---@param npc Npc
---@param attack Attack
---@param hitAngle double
---@param immune boolean
---@param makeHurtSound boolean
function Player:StrikeFromNpc(npc, attack, hitAngle, immune, makeHurtSound)
end

---Heal
---@overload fun(healValue:int)
---@param healValue int
---@param showTip boolean
function Player:Heal(healValue, showTip)
end

---AddMagic
---@overload fun(magicValue:int)
---@param magicValue int
---@param showTip boolean
function Player:AddMagic(magicValue, showTip)
end

---AddBreath
---@param breathValue double
function Player:AddBreath(breathValue)
end

---DecBreath
---@param breathValue double
function Player:DecBreath(breathValue)
end

---SetBreath
---@param breathValue double
function Player:SetBreath(breathValue)
end

---AddFood
---@param foodLevel int
---@param foodSaturationLevel int
function Player:AddFood(foodLevel, foodSaturationLevel)
end

---DecFood
---@overload fun(foodLevel:int)
---@param foodLevel int
---@param foodSaturationLevel int
function Player:DecFood(foodLevel, foodSaturationLevel)
end

---OpenGui
---@param mod Mod
---@param guiID int
---@param xi int
---@param yi int
function Player:OpenGui(mod, guiID, xi, yi)
end

---
---@param mod Mod
---@param guiID int
---@param xi int
---@param yi int
function Player:OpenGuiRemote(mod, guiID, xi, yi)
end

---CloseGui
---@param mod Mod
---@param guiID int
function Player:CloseGui(mod, guiID)
end

---IsGuiOpened
---@param mod Mod
---@param guiID int
---@return boolean
function Player:IsGuiOpened(mod, guiID)
end

---DropItem
---@overload fun(itemStack:ItemStack)
---@param itemStack ItemStack
---@param onlyDropOne boolean
function Player:DropItem(itemStack, onlyDropOne)
end

---RequestPlaceBlock
---@param xi int
---@param yi int
---@param slotIndex int
---@param isPlacingWall boolean
---@return boolean
function Player:RequestPlaceBlock(xi, yi, slotIndex, isPlacingWall)
end

---RequestPlaceWire
---@param xi int
---@param yi int
---@param slotIndex int
---@return boolean
function Player:RequestPlaceWire(xi, yi, slotIndex)
end

---RequestDigBlock
---@param xi int
---@param yi int
---@param slotIndex int
---@param isDiggingWall boolean
---@param toolType string
---@return boolean
function Player:RequestDigBlock(xi, yi, slotIndex, isDiggingWall, toolType)
end

---RequestClickMap
---@param xi int
---@param yi int
---@return boolean
function Player:RequestClickMap(xi, yi)
end

---SetSmartMode
---@overload fun(smartMode:SmartMode_Value)
---@param smartMode SmartMode_Value
---@param pointedXi int
---@param pointedYi int
---@param operatingWall boolean
---@param itemStack ItemStack
---@param toolType string
function Player:SetSmartMode(smartMode, pointedXi, pointedYi, operatingWall, itemStack, toolType)
end

---@return int,int
function Player:GetSmartPosition()
end

---
---
---@param globalPlayerName string
---@return GlobalPlayer
function Player:GetGlobalPlayer(globalPlayerName)
end

---FinishAdvancement
---@param advancementID int
function Player:FinishAdvancement(advancementID)
end

---ClearAdvancement
---@param advancementID int
function Player:ClearAdvancement(advancementID)
end

---ClearAllAdvancement
function Player:ClearAllAdvancement()
end

---IsAdvancementFinished
---@param advancementID int
---@return boolean
function Player:IsAdvancementFinished(advancementID)
end

---GetSaveString
---@return string
function Player:GetSaveString()
end

---GetLevelNeedExp
---@param expLevel int
---@return int
function Player:GetLevelNeedExp(expLevel)
end

---AddExperience
---@param amount int
function Player:AddExperience(amount)
end

---RemoveExpLevel
---@param level int
function Player:RemoveExpLevel(level)
end

---AddBuff
---@param buffID int
---@param buffTime int
function Player:AddBuff(buffID, buffTime)
end

---RemoveBuff
---@param buffID int
function Player:RemoveBuff(buffID)
end

---RemoveAllBuff
function Player:RemoveAllBuff()
end

function Player:RemoveAllBuffExceptHealthCold()
end

---HasBuff
---@param buffID int
function Player:HasBuff(buffID)
end

---HasAnyBuff
function Player:HasAnyBuff()
end

---@return Buff[]
function Player:GetBuffList()
end

---@return boolean
function Player:GoHome()
end

function Player:TeleportToSpawn()
end

function Player:Teleport(x, y)
end

return Player

================================================
FILE: apis/PlayerUtils.lua
================================================
---@class PlayerUtils
local PlayerUtils = {}

---@return Player
function PlayerUtils.GetCurrentClientPlayer()
end

---Get
---@param entityIndex EntityIndex
---@return Player
function PlayerUtils.Get(entityIndex)
end

---IsAlive
---@param entityIndex EntityIndex
---@return boolean
function PlayerUtils.IsAlive(entityIndex)
end

--WeaponCollide
---@overload fun(itemStack:ItemStack,hitAngle:double,obb:ObbDouble,attackInAndOut:Attack,outPlayerIndex:EntityIndex):boolean
---@param itemStack ItemStack
---@param hitAngle double
---@param obb ObbDouble
---@param attackInAndOut Attack
---@param ignorePlayerIndex EntityIndex
---@param outPlayerIndex EntityIndex
---@return boolean
function PlayerUtils.WeaponCollide(itemStack, hitAngle, obb, attackInAndOut, ignorePlayerIndex, outPlayerIndex)
end

---SearchByRect
---@param x double
---@param y double
---@param width int
---@param height int
---@return Player[]
function PlayerUtils.SearchByRect(x, y, width, height)
end

---SearchByCircle
---@param x double
---@param y double
---@param radius int
---@return Player[]
function PlayerUtils.SearchByCircle(x, y, radius)
end

---SearchNearestPlayer
---@param x double
---@param y double
---@param radius int
---@param noCrossTiles boolean
---@return Player
function PlayerUtils.SearchNearestPlayer(x, y, radius, noCrossTiles)
end

return PlayerUtils

================================================
FILE: apis/Point.lua
================================================
-- Document
-- Point Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#point
--
-- Point类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#point
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class Point Represents a point. (表示一个点)
---@field x int The x coordinate of the point. (点的横坐标)
---@field y int The y coordinate of the point. (点的纵坐标)
local Point = {}

return Point

================================================
FILE: apis/Projectile.lua
================================================
---@class Projectile:Entity
---@field id int The dynamic ID of the current projectile. (当前抛射物的动态ID)
---@field entityIndex EntityIndex
---@field common ProjectileCommon The common data of current projectile. (当前抛射物的通用数据)
---@field baseAttack Attack The basic attack property of the current projectile. (当前抛射物的基础攻击属性)
---@field targetTime int The target time of the current projectile. It is generally given when it is created, and is usually used to trigger related logic after reaching the target time. (当前抛射物的目标时间。一般由创建时给定,通常用于实现达到目标时间后触发相关逻辑)
---@field isCheckNpc boolean @[ default `false` ] Whether the current projectile is acting on the NPC. It is generally specified when it is created, and determines whether to collide or damage NPCs. (当前抛射物是否作用于NPC。一般由创建时指定,决定是否碰撞、伤害NPC)
---@field isCheckPlayer boolean @[ default `false` ] Whether the current projectile is acting on the player. It is generally specified when it is created, and determines whether to collide or damage players. (当前抛射物是否作用于玩家。一般由创建时指定,决定是否碰撞、伤害玩家)
---@field state int The current state of the projectile in a simple finite state machine. (抛射物当前在简单有限状态机中的状态)
---@field stateTimer int The timer use for state machine. (抛射物的状态机计时器)
---@field playerTargetIndex EntityIndex
---@field npcTargetIndex EntityIndex
---@field special int
local Projectile = {}

--- Destroy the current projectile object.
---
--- 清除当前抛射物对象。
function Projectile:Kill()
end

return Projectile

================================================
FILE: apis/ProjectileUtils.lua
================================================
---@class ProjectileUtils
local ProjectileUtils = {}

---Get
---@param entityIndex EntityIndex
---@return Projectile
function ProjectileUtils.Get(entityIndex)
end

---IsAlive
---@param entityIndex EntityIndex
---@return boolean
function ProjectileUtils.IsAlive(entityIndex)
end

---@overload fun(id:int,x:double,y:double):Projectile
---@overload fun(id:int,x:double,y:double,speedX:double):Projectile
---@overload fun(id:int,x:double,y:double,speedX:double,speedY:double):Projectile
---@param id int
---@param x double
---@param y double
---@param speedX double
---@param speedY double
---@param attack Attack
---@return Projectile
function ProjectileUtils.Create(id, x, y, speedX, speedY, attack)
end

---@overload fun(player:Player,id:int,x:double,y:double):Projectile
---@overload fun(player:Player,id:int,x:double,y:double,speedX:double):Projectile
---@overload fun(player:Player,id:int,x:double,y:double,speedX:double,speedY:double):Projectile
---@param player Player
---@param id int
---@param x double
---@param y double
---@param speedX double
---@param speedY double
---@param attack Attack
---@return Projectile
function ProjectileUtils.CreateFromPlayer(player, id, x, y, speedX, speedY, attack)
end

---@overload fun(npc:Npc,id:int,x:double,y:double):Projectile
---@overload fun(npc:Npc,id:int,x:double,y:double,speedX:double):Projectile
---@overload fun(npc:Npc,id:int,x:double,y:double,speedX:double,speedY:double):Projectile
---@param npc Npc
---@param id int
---@param x double
---@param y double
---@param speedX double
---@param speedY double
---@param attack Attack
---@return Projectile
function ProjectileUtils.CreateFromNpc(npc, id, x, y, speedX, speedY, attack)
end

return ProjectileUtils

================================================
FILE: apis/Recipe.lua
================================================

---@class RecipeInputSlotType_Value

---@class RecipeInputSlotType
---@field Empty RecipeInputSlotType_Value
---@field Item RecipeInputSlotType_Value
---@field OreDictionary RecipeInputSlotType_Value
local RecipeInputSlotType = {}

---@class RecipeInputSlot
---@field type RecipeInputSlotType_Value
---@field id int
---@field stackSize int
---@field itemStack ItemStack
---@field isImportant boolean
local RecipeInputSlot = {}

---@class Recipe
---@field configID int
---@field inputs RecipeInputSlot[]
---@field outputs Slot[]
---@field exData table
local Recipe = {}

---GetGroupSearchAction
---@param groupIndex int
---@return int
function Recipe:GetGroupSearchAction(groupIndex)
end

---IsValidByMask
---@param mask string
---@return boolean
function Recipe:IsValidByMask(mask)
end

return Recipe

================================================
FILE: apis/RecipeConfig.lua
================================================
---@class RecipeConfig
---@field iconItemID int
---@field inputCount int
---@field outputCount int
local RecipeConfig = {}

return RecipeConfig

================================================
FILE: apis/RecipeSearchAction.lua
================================================
---@class RecipeSearchAction
---@field Fixed int
---@field Unordered int
local RecipeSearchAction = {}

return RecipeSearchAction

================================================
FILE: apis/RecipeUtils.lua
================================================
---@API

---@class RecipeUtils 配方组件。
local RecipeUtils = {}

---通过配方的ID获取配方。
---@param recipeID int 配方ID (请通过搜索配方的方法 RecipeUtils.SearchRecipe() 动态获取)。
---@return Recipe 配方。
function RecipeUtils.GetRecipe(recipeID)
end

---获取某一合成实体的配方配置。
---@param recipeConfigID int 配方配置ID (请通过Reg.RecipeConfigID()动态获取)。
---@return RecipeConfig 配方配置。
function RecipeUtils.GetConfig(recipeConfigID)
end

---搜索配方。
---[Example]
-----获取酿造台的某一配方,使用酿造台中的两个合成的格子作为输入物品
---local recipeID = RecipeUtils.SearchRecipe(Reg.RecipeConfigID("Brew"), self.inventory, 0, 2)
---@overload fun(configID:int,inventory:Inventory):int
---@param configID int 配方配置ID (请通过Reg.RecipeConfigID()动态获取)。
---@param inventory Inventory 物品格子的集合(一般为合成中使用的物品的格子的集合)。
---@param offset int 偏移值(从物品格子的哪里开始)。
---@param length int 长度(调用物品格子的数目)。
---@return int 配方ID
function RecipeUtils.SearchRecipe(configID, inventory, offset, length)
end

---检查某一物品是否有对应的配方
---@param configID int 配方配置ID (请通过Reg.RecipeConfigID()动态获取)。
---@param inputItemStack ItemStack 合成输入的堆叠物品。
---@param inputIndex int 合成输入的Index。
---@return int 配方ID。
function RecipeUtils.HasRecipe(configID, inputItemStack, inputIndex)
end

---检查某一配方配置里所有的配方中是否有对应的输入物品
---@param configID int 配方配置ID (请通过Reg.RecipeConfigID()动态获取)。
---@param inputItemStack ItemStack 搜索对应的堆叠物品。
---@return int[] 搜索到的配方ID的数组。
function RecipeUtils.SearchRecipeHasInputItem(configID, inputItemStack)
end

---检查某一配方配置里所有的配方中是否有对应的输出物品
---@param configID int 配方配置ID (请通过Reg.RecipeConfigID()动态获取)。
---@param outputItemStack ItemStack 搜索对应的堆叠物品。
---@param outputIndex int 合成输出的Index。
---@return int[] 搜索到的配方ID的数组。
function RecipeUtils.SearchRecipeHasOutputItem(configID, outputItemStack, outputIndex)
end

return RecipeUtils

================================================
FILE: apis/Rectangle.lua
================================================
-- Document
-- Rectangle Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#rectangle
--
-- Rectangle类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#rectangle
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class Rectangle Represents an axis-aligned rectangle. (表示一个轴对齐矩形)
---@field x int The x coordinate of the upper left corner of the rectangle. (矩形左上角横坐标)
---@field y int The y coordinate of the upper left corner of the rectangle. (矩形左上角纵坐标)
---@field width int The width of the rectangle. (矩形宽度)
---@field height int The height of the rectangle. (矩形高度)
local Rectangle = {}

--- Set a new rectangle.
---
--- 设置新的矩形。
---@param x int
---@param y int
---@param width int
---@param height int
function Rectangle:Set(x, y, width, height)
end

return Rectangle

================================================
FILE: apis/Reg.lua
================================================
---@API

---@class Reg 描述游戏内的注册信息。
local Reg = {}

---根据物品名返回注册的动态ID。
---@param name string
---@return int
function Reg.ItemID(name)
end

---根据动态ID返回物品的全局ID名称。
---@param id int
---@return string
function Reg.ItemIDName(id)
end

---返回最大物品ID。
---@return int
function Reg.MaxItemID()
end

---根据方块名返回注册的动态ID。
---@param name string
---@return int
function Reg.BlockID(name)
end

---根据动态ID返回方块的全局ID名称。
---@param id int
---@return string
function Reg.BlockIDName(id)
end

---根据方块组名返回注册的动态ID。
---@param name string
---@return int
function Reg.BlockGroupID(name)
end

---根据动态ID返回方块组的全局ID名称。
---@param id int
---@return string
function Reg.BlockGroupIDName(id)
end

---根据方块子组名返回注册的动态ID。
---@param name string
---@return int
function Reg.BlockSubGroupID(name)
end

---根据动态ID返回方块子组的全局ID名称。
---@param id int
---@return string
function Reg.BlockSubGroupIDName(id)
end

---根据方块实体名返回注册的动态ID。
---@param name string
---@return int
function Reg.BlockEntityID(name)
end

---根据动态ID返回方块实体的全局ID名称。
---@param id int
---@return string
function Reg.BlockEntityIDName(id)
end

---根据特效名返回注册的动态ID。
---@param name string
---@return int
function Reg.EffectID(name)
end

---根据动态ID返回特效的全局ID名称。
---@param id int
---@return string
function Reg.EffectIDName(id)
end

---根据BUFF名返回注册的动态ID。
---@param name string
---@return int
function Reg.BuffID(name)
end

---根据动态ID返回BUFF的全局ID名称。
---@param id int
---@return string
function Reg.BuffIDName(id)
end

---根据附魔名返回注册的动态ID。
---@param name string
---@return int
function Reg.EnchantmentID(name)
end

---根据动态ID返回附魔的全局ID名称。
---@param id int
---@return string
function Reg.EnchantmentIDName(id)
end

---返回附魔的最大ID。
---@return int
function Reg.MaxEnchantmentID()
end

---根据NPC名返回注册的动态ID。
---@param name string
---@return int
function Reg.NpcID(name)
end

---根据动态ID返回NPC的全局ID名称。
---@param id int
---@return string
function Reg.NpcIDName(id)
end

---根据抛射物名返回注册的动态ID。
---@param name string
---@return int
function Reg.ProjectileID(name)
end

---根据动态ID返回抛射物的全局ID名称。
---@param id int
---@return string
function Reg.ProjectileIDName(id)
end

---根据音效名返回注册的动态ID。
---@param name string
---@return int
function Reg.SoundID(name)
end

---根据动态ID返回音效的全局ID名称。
---@param id int
---@return string
function Reg.SoundIDName(id)
end

---根据音效组名返回注册的动态ID。
---@param name string
---@return int
function Reg.SoundGroupID(name)
end

---根据动态ID返回音效组的全局ID名称。
---@param id int
---@return string
function Reg.SoundGroupIDName(id)
end

---根据流体名返回注册的动态ID。
---@param name string
---@return int
function Reg.LiquidID(name)
end

---根据动态ID返回流体的全局ID名称。
---@param id int
---@return string
function Reg.LiquidIDName(id)
end

---根据生物群系名返回注册的动态ID。
---@param name string
---@return int
function Reg.BiomeID(name)
end

---根据动态ID返回生物群系的全局ID名称。
---@param id int
---@return string
function Reg.BiomeIDName(id)
end

---返回最大生物群系ID。
---@return int
function Reg.MaxBiomeID()
end

---根据生物群系类型名返回注册的动态ID。
---@param name string
---@return int
function Reg.BiomeTypeID(name)
end

---根据动态ID返回生物群系类型的全局ID名称。
---@param id int
---@return string
function Reg.BiomeTypeIDName(id)
end

---返回最大生物群系类型ID。
---@return int
function Reg.MaxBiomeTypeID()
end

---根据配方配置名返回注册的动态ID。
---@param name string
---@return int
function Reg.RecipeConfigID(name)
end

---根据动态ID返回配方配置的全局ID名称。
---@param id int
---@return string
function Reg.RecipeConfigIDName(id)
end

---返回最大配方配置ID。
---@return int
function Reg.MaxRecipeConfigID()
end

---返回最大配方ID。
---@return int
function Reg.MaxRecipeID()
end

---根据动态ID返回矿物字典的全局ID名称。
---@param id int
---@return string
function Reg.OreDictionaryIDName(id)
end

---根据矿物字典名返回注册的动态ID。
---@param name string
---@return int
function Reg.OreDictionaryID(name)
end

---根据工具优先级名返回注册的动态ID。
---@param gradeName string
---@return int
function Reg.ToolGradePriority(gradeName)
end

---根据弹药名返回注册的动态ID。
---@param name string
---@return int
function Reg.AmmoID(name)
end

---根据动态ID返回弹药的全局ID名称。
---@param id int
---@return string
function Reg.AmmoIDName(id)
end

---根据成就名返回注册的动态ID。
---@param name string
---@return int
function Reg.AdvancementID(name)
end

---根据动态ID返回成就的全局ID名称。
---@param id int
---@return string
function Reg.AdvancementIDName(id)
end

---返回最大成就ID。
---@return int
function Reg.MaxAdvancementID()
end

---@param name string
---@return int
function Reg.ModTextureID(name)
end

---@param id int
---@return string
function Reg.ModTextureIDName(id)
end

---根据建筑名返回注册的动态ID。
---@param name string
---@return int
function Reg.BuildingID(name)
end

---根据动态ID返回建筑的全局ID名称。
---@param id int
---@return string
function Reg.BuildingIDName(id)
end

return Reg

================================================
FILE: apis/ServerBoundPacketWriter.lua
================================================
---@class ServerBoundPacket
---@field writerBuffer ByteStream
---@field readerBuffer ByteStream
local ServerBoundPacket = {}

function ServerBoundPacket:Send()
end

---@return ByteStream
function ServerBoundPacket:GetWriterBuffer()
end

---@return ByteStream
function ServerBoundPacket:GetReaderBuffer()
end

return ServerBoundPacket

================================================
FILE: apis/Shape.lua
================================================
-- Document
-- Shape Enum Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#shape
--
-- Shape枚举类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#shape
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class Shape Enum class (Enum Format: `SHAPE_XXX`)
local Shape = {}

--- The shape of the hitbox is an axis-aligned rectangle.
---
--- 碰撞箱形状为轴对齐矩形。
---
---@type Shape
SHAPE_BOX = nil

--- The shape of the hitbox is a rotating rectangle.
---
--- 碰撞箱形状为旋转矩形。
---
---@type Shape
SHAPE_ROTATE_BOX = nil

return Shape

================================================
FILE: apis/Skeleton.lua
================================================
---@class Skeleton
local Skeleton = {}

return Skeleton

================================================
FILE: apis/Skin.lua
================================================
---@class Skin
---@field headTexture TextureLocation
---@field bodyTexture TextureLocation
---@field legTexture TextureLocation
---@field hairTexture TextureLocation
---@field clothTexture TextureLocation
---@field pantTexture TextureLocation
---@field isFemale boolean
---@field name string
---@field authors Array
---@field mod Mod
local Skin = {}

return Skin

================================================
FILE: apis/SkinUtils.lua
================================================
---@class SkinUtils
---@field maxID int
local SkinUtils = {}

---GetSkin
---@param skinID int
---@return Skin
function SkinUtils.GetSkin(skinID)
end

return SkinUtils

================================================
FILE: apis/Slot.lua
================================================
---@API

---@class Slot 描述一个物品格子,物品格子可能为空格子,也可能包含一个ItemStack。
---@field hasStack boolean 当前格子是否包含物品堆栈。
---@field tag int 格子附加值。
local Slot = {}

---判断格子是否有效。
---@return boolean
function Slot:Valid()
end

---@return ItemStack
function Slot:GetStack()
end

---PushStack
---@param stack ItemStack
function Slot:PushStack(stack)
end

---DecrStackSize
---@param value int
---@return ItemStack
function Slot:DecrStackSize(value)
end

function Slot:ClearStack()
end

---SwapStack
---@param slot Slot
function Slot:SwapStack(slot)
end

---CanPush
---@param itemStack ItemStack
---@return boolean
function Slot:CanPush(itemStack)
end

---
---@param itemStack ItemStack
---@return boolean
function Slot:CanPick(itemStack)
end

---OnPush
---@param itemStack ItemStack
function Slot:OnPush(itemStack)
end

---OnPick
---@param ItemStack ItemStack
function Slot:OnPick(ItemStack)
end

---
---@param listener table|function
---@return ListenerID
function Slot:AddCanPushListener(listener)
end

---
---@param listenerID ListenerID
function Slot:RemoveCanPushListener(listenerID)
end

---
---@param listener table|function
---@return ListenerID
function Slot:AddCanPickListener(listener)
end

---
---@param listenerID ListenerID
function Slot:RemoveCanPickListener(listenerID)
end

---
---@param listener table|function
---@return ListenerID
function Slot:AddOnPushListener(listener)
end

---
---@param listenerID ListenerID
function Slot:RemoveOnPushListener(listenerID)
end

---
---@param listener table|function
---@return ListenerID
function Slot:AddOnPickListener(listener)
end

---
---@param listenerID ListenerID
function Slot:RemoveOnPickListener(listenerID)
end

function Slot:SyncAll()
end

return Slot


================================================
FILE: apis/SlotCommandQueue.lua
================================================
---@class SlotCommandQueue
local SlotCommandQueue = {}

return SlotCommandQueue

================================================
FILE: apis/SmartMode.lua
================================================
---@class SmartMode_Value

---@class SmartMode
---@field None SmartMode_Value
---@field Digging SmartMode_Value
---@field Placing SmartMode_Value
local SmartMode = {}

return SmartMode

================================================
FILE: apis/SoundUtils.lua
================================================
---@class SoundUtils
local SoundUtils = {}

---PlaySound
---@overload fun(soundID:int)
---@param soundID int
---@param xi int
---@param yi int
function SoundUtils.PlaySound(soundID, xi, yi)
end

---PlaySoundGroup
---@overload fun(soundGroupID:int)
---@param soundGroupID int
---@param xi int
---@param yi int
function SoundUtils.PlaySoundGroup(soundGroupID, xi, yi)
end

return SoundUtils

================================================
FILE: apis/SpriteEx.lua
================================================
-- Document
-- SpriteEx Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#spriteex
--
-- SpriteEx类: https://blueyoshi.gitbook.io/terracraft/cn/mod/api/type#spriteex
--
-- Copyright (c) 2021. BlueYoshi(blueyoshi@foxmail.com)

---@class SpriteEx Sprite extension information, has the relevant parameters of drawing. (精灵绘制拓展信息,拥有决定绘制的相关参数)
---@field scaleRateX float @[ default `1.0` ] The horizontal zoom size when the sprite is drawn. (精灵绘制时的横向缩放尺寸)
---@field scaleRateY float @[ default `1.0` ] The vertical zoom size when the sprite is drawn. (精灵绘制时的纵向缩放尺寸)
---@field angle float @[ default `0.0` ] The rotation angle when the sprite is drawn. (精灵绘制时的旋转角度)
---@field rotateX float The center point X of the sprite's rotation. If the drawing object is an entity, the default is the center of the entity, otherwise the default is 0.0. (精灵的旋转中心点X。若绘制对象为实体,默认为实体中心,否则默认为0.0)
---@field rotateY float The center point Y of the sprite's rotation. If the drawing object is an entity, the default is the center of the entity, otherwise the default is 0.0. (精灵的旋转中心点Y。若绘制对象为实体,默认为实体中心,否则默认为0.0)
---@field flipHorizontal boolean @[ default `false` ] Whether to flip horizontally when the sprite is drawn. (精灵绘制时是否水平翻转)
---@field flipVertical boolean @[ default `false` ] Whether to flip vertically when the sprite is drawn. (精灵绘制时是否竖直翻转)
local SpriteEx = {}

--- Restore Defaults.
---
--- 恢复默认值。
function SpriteEx:SetDefault()
end

return SpriteEx

================================================
FILE: apis/Type.lua
================================================
---@class int:number
---@class double:number
---@class float:number

================================================
FILE: apis/Utils.lua
================================================
---@class Utils Util Module (通用模块)
---@field netMode int
---@field E double
---@field LOG2E double
---@field LOG10E double
---@field PI double
---@field TWO_PI double
---@field PI_OVER_2 double
---@field PI_OVER_4 double
local Utils = {}

---If n is greater than 0, return a random integer of [0, n), otherwise return 0.
---
---若n大于0,返回[0, n)的随机整数,否则返回0。
---@param n int
---@return int
function Utils.RandInt(n)
end

---If len is greater than 0, return a random integer of [begin, begin + len), otherwise return begin.
---
---若len大于0,返回[begin, begin + len)的随机整数,否则返回begin。
---@param begin int
---@param len int
---@return int
function Utils.RandIntArea(begin, len)
end

---
---
---若value大于0,返回[0, value)的随机浮点数,否则返回0。
---@param value double
---@return double
function Utils.RandDouble(value)
end

---
---
---若len大于0,返回[begin, begin + len)的随机浮点数,否则返回begin。
---@param begin double
---@param len double
---@return double
function Utils.RandDoubleArea(begin, len)
end

---
---
---返回(-value, value)的随机浮点数。
---@param value double
---@return double
function Utils.RandSym(value)
end

---
---
---当n为正数时1/n概率返回true,否则始终返回false。
---
---例1:Utils.RandTry(3)有1/3概率返回true。
---
---例2:Utils.RandTry(2)有一半概率返回true。
---@param n int
---@return boolean
function Utils.RandTry(n)
end

---
---
---返回实际横/纵坐标对应的格子横/纵坐标。注意每个格子为16像素,实际结果为除以16后向下取整。
---@param a double
---@return int
function Utils.Cell(a)
end

---
---
---返回a与b求余的非负数结果。
---
---例1:Utils.PositiveMod(5, 3)返回2。
---
---例2:Utils.PositiveMod(-5, 3)返回1。
---
---`int c = a % b;`
---
---`if (c < 0) c += b;`
---
---`return c;`
---@param a int
---@param b int
---@return int
function Utils.PositiveMod(a, b)
end

---
---
---若b非0,返回a向下取整整除b的结果,否则返回0。
---
---例1:Utils.FloorDivide(10, 3)返回3。
---
---例2:Utils.FloorDivide(-4, 3)返回-2。
---
---`return a / b - ((a < 0 && a % b != 0) ? 1 : 0);`
---@param a int
---@param b int
---@return int
function Utils.FloorDivide(a, b)
end

---
---
---返回以period为周期、以begin为初相位的正弦波在相位phase的值。
---
---`return sin(begin + 2 * PI * float(phase % period) / period);`
---@overload fun(phase:int,period:int):int
---@param phase int
---@param period int
---@param begin int @[ default `0` ]
---@return double
function Utils.SinValue(phase, period, begin)
end

---
---
---返回以period为周期、以begin为初相位的余弦波在相位phase的值。
---
---`return cos(begin + 2 * PI * float(phase % period) / period);`
---@overload fun(phase:int,period:int):int
---@param phase int
---@param period int
---@param begin int @[ default `0` ]
---@return double
function Utils.CosValue(phase, period, begin)
end

---
---
---返回start值往target值方向移动step长度的结果,若到达target值,则返回target值。
---
---例1:Utils.ToTargetValue(1, 10, 5)返回6。
---
---例2:Utils.ToTargetValue(6, 10, 5)返回10。
---@param start int
---@param target int
---@param step int
---@return int
function Utils.ToTargetValue(start, target, step)
end

---Returns the distance from point (x1, y1) to point (x2, y2).
---
---返回点(x1, y1)到点(x2, y2)的距离。
---
---例:Utils.GetPointsDistance(1.0,0.0,4.0,4.0)返回5.0。
---@param x1 double
---@param y1 double
---@param x2 double
---@param y2 double
---@return double
function Utils.GetPointsDistance(x1, y1, x2, y2)
end

---
---
---返回点(x, y)到原点(0, 0)的距离。
---
---例:Utils.GetDistance(3.0, 4.0)返回5.0。
---@param x double
---@param y double
---@return double
function Utils.GetDistance(x, y)
end

---
---
---返回点(x, y)到以点(x1, y1)和点(x2, y2)为两端点的线段的距离。
---@param x double
---@param y double
---@param x1 double
---@param y1 double
---@param x2 double
---@param y2 double
---@return double
function Utils.GetPointSegmentDistance(x, y, x1, y1, x2, y2)
end

---
---
---返回向量(x, y)与横坐标的夹角。
---
---例1:Utils.GetAngle(1, 1)返回π/4。
---
---例2:Utils.GetAngle(0, 1)返回π/2。
---@param x double
---@param y double
---@return double
function Utils.GetAngle(x, y)
end

---
---
---将角度按2π周期增加或减少,返回最终限定在区间(-π, π]内的结果。
---
---@param angle double
---@return double
function Utils.FixAngle(angle)
end

---
---
---将极坐标转换为直角坐标,返回横坐标和纵坐标。
---
---`x = length * cos(angle);`
---
---`y = length * sin(angle);`
---
---@param length double
---@param angle double
---@return double,double
function Utils.GetXYFromPolar(length, angle)
end

---
---
---将点(x, y)绕原点旋转指定角度,返回旋转后的横坐标和纵坐标。
---
---`double dx = x, dy = y;`
---
---`x = dx * cos(angle) - dy * sin(angle);`
---
---`y = dx * sin(angle) + dy * cos(angle);`
---
---@param x double
---@param y double
---@param angle double
---@return double,double
function Utils.RotateXY(x, y, angle)
end

---
---
---将一个二维速度(speedX, speedY)以恒定速度(dec)降低,返回新的横速度和纵速度。
---@param speedX double
---@param speedY double
---@param dec double
---@return double,double
function Utils.SlowSpeed2D(speedX, speedY, dec)
end

---
---
---将一个速度以恒定速度(dec)降低,返回新的速度。
---@param speed double
---@param dec double
---@return double
function Utils.SlowSpeed1D(speed, dec)
end

---
---
---将一个二维速度(speedX, speedY)进行受力,返回新的横速度和纵速度。
---@param speedX double
---@param speedY double
---@param force double
---@param forceAngle double
---@param maxSpeed double
---@return double,double
function Utils.ForceSpeed2D(speedX, speedY, force, forceAngle, maxSpeed)
end

return Utils

================================================
FILE: apis/WorldData.lua
================================================
---@class WorldData
---@field worldName string
---@field worldSeed int
---@field gameTime int
---@field dayTime int
---@field realDayTime double
---@field daySpeed double
---@field spawnXi int
---@field spawnYi int
---@field weatherTime int
---@field gameMode int
---@field windSpeed double
---@field windAcc double
---@field weatherRate double
---@field isOnWeather boolean
---@field noPvp boolean
---@field noBlowTiles boolean
---@field useLoginSystem boolean
---@field noAllowWrongFormatPlayerName boolean
---@field clientSideCharacters boolean
local WorldData = {}

---@return WorldData
function WorldData.new()
end

return WorldData

================================================
FILE: apis/WorldDataUtils.lua
================================================
---@class WorldDataUtils
local WorldDataUtils = {}

---Load
---@param worldName string
---@param worldData WorldData
---@return boolean
function WorldDataUtils.Load(worldName, worldData)
end

---Save
---@param worldData WorldData
function WorldDataUtils.Save(worldData)
end

---Remove
---@param worldName string
function WorldDataUtils.Remove(worldName)
end

---GenerateSeed
---@param seedString string
---@return int
function WorldDataUtils.GenerateSeed(seedString)
end

return WorldDataUtils

================================================
FILE: apis/WorldGenArea.lua
================================================
---@class WorldGenArea
---@field xi int
---@field yi int
---@field wi int
---@field hi int
local WorldGenArea = {}

---new
---@overload fun():WorldGenArea
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@return WorldGenArea
function WorldGenArea.new(xi, yi, wi, hi)
end

return WorldGenArea

================================================
FILE: apis/WorldGenChunkBuffer.lua
================================================
---@class WorldGenChunkBufferElement
---@field biomeType int
---@field biomeID int
---@field isFrontPreset boolean
---@field isWallPreset boolean
---@field isLiquidPreset boolean
---@field isFrontSettled boolean
---@field isWallSettled boolean
---@field isLiquidSettled boolean
---@field isGrassCoverPreset boolean
local WorldGenChunkBufferElement = {}

---@class WorldGenChunkBufferElementMask
---@field biomeType boolean
---@field biomeID boolean
---@field isFrontPreset boolean
---@field isWallPreset boolean
---@field isLiquidPreset boolean
---@field isFrontSettled boolean
---@field isWallSettled boolean
---@field isLiquidSettled boolean
---@field isGrassCoverPreset boolean
local WorldGenChunkBufferElementMask = {}

---@class WorldGenChunkBuffer
local WorldGenChunkBuffer = {}

---GetUnit
---@param xi int
---@param yi int
---@return WorldGenChunkBufferElement
function WorldGenChunkBuffer:GetUnit(xi, yi)
end

---GetSample
---@param id int
---@return WorldGenChunkBufferElement
function WorldGenChunkBuffer:GetSample(id)
end

---ClearSample
---@param id int
function WorldGenChunkBuffer:ClearSample(id)
end

---GetMask
---@param id int
---@return WorldGenChunkBufferElementMask
function WorldGenChunkBuffer:GetMask(id)
end

---ClearMask
---@param id int
function WorldGenChunkBuffer:ClearMask(id)
end

---ApplySampleByMask
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param sampleID int
---@param maskID int
function WorldGenChunkBuffer:ApplySampleByMask(xi, yi, wi, hi, sampleID, maskID)
end

---ApplySampleByMaskByCondition
---@overload fun(xi:int,yi:int,wi:int,hi:int,sampleID:int,maskID:int,conditionMaskID:int,conditionMaskID:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param sampleID int
---@param maskID int
---@param conditionSampleID int
---@param conditionMaskID int
---@param logicOR boolean
function WorldGenChunkBuffer:ApplySampleByMaskByCondition(xi, yi, wi, hi, sampleID, maskID, conditionSampleID, conditionMaskID, logicOR)
end

---HasAreaSameSampleByMask
---@overload fun(xi:int,yi:int,wi:int,hi:int,sampleID:int,maskID:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param sampleID int
---@param maskID int
---@param logicOR boolean
function WorldGenChunkBuffer:HasAreaSameSampleByMask(xi, yi, wi, hi, sampleID, maskID, logicOR)
end

---CreateAllPlaceableByBiomeType
---@overload fun(xi:int,yi:int,wi:int,hi:int,biomeType:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param biomeType int
---@param boundaryArrayID int
function WorldGenChunkBuffer:CreateAllPlaceableByBiomeType(xi, yi, wi, hi, biomeType, boundaryArrayID)
end

---IsAreaHasSolid
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@return boolean
function WorldGenChunkBuffer:IsAreaHasSolid(xi, yi, wi, hi)
end

---AddBoundaryArray
---@param boundaryArray int[]
---@return int
function WorldGenChunkBuffer:AddBoundaryArray(boundaryArray)
end

---UpdateBoundaryArray
---@param boundaryArrayID int
---@param boundaryArray int[]
function WorldGenChunkBuffer:UpdateBoundaryArray(boundaryArrayID, boundaryArray)
end

---@return WorldGenCode
function WorldGenChunkBuffer:GetCode()
end

---RunCodeArea
---@param xi int
---@param yi int
---@param wi int
---@param hi int
function WorldGenChunkBuffer:RunCodeArea(xi, yi, wi, hi)
end

---SetBiomeArea
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param biomeType int
---@param biomeID int
---@param isApplyFront boolean
---@param isApplyWall boolean
function WorldGenChunkBuffer:SetBiomeArea(xi, yi, wi, hi, biomeType, biomeID, isApplyFront, isApplyWall)
end

---SetBiomeIDAreaByBiomeType
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param biomeType int
---@param biomeID int
function WorldGenChunkBuffer:SetBiomeIDAreaByBiomeType(xi, yi, wi, hi, biomeType, biomeID)
end

---SetBiomeIDFromMatrixByBiomeType
---@param biomeType int
---@param matrixTable int[]
function WorldGenChunkBuffer:SetBiomeIDFromMatrixByBiomeType(biomeType, matrixTable)
end

function WorldGenChunkBuffer:PushAllSubBlocks()
end

---SetTile
---@overload fun(xi:int,yi:int,tileID:int,tag:int)
---@param xi int
---@param yi int
---@param tileID int
---@param tag int
---@param isAllowSlope boolean
function WorldGenChunkBuffer:SetTile(xi, yi, tileID, tag, isAllowSlope)
end

---SetTileArea
---@overload fun(xi:int,yi:int,wi:int,hi:int,tileID:int,tag:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param tileID int
---@param tag int
---@param isAllowSlope boolean
function WorldGenChunkBuffer:SetTileArea(xi, yi, wi, hi, tileID, tag, isAllowSlope)
end

---SetTileAreaByCondition
---@overload fun(xi:int,yi:int,wi:int,hi:int,tileID:int,tag:int,isAllowSlope:boolean,conditionSampleID:int,conditionMaskID:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param tileID int
---@param tag int
---@param isAllowSlope boolean
---@param conditionSampleID int
---@param conditionMaskID int
---@param logicOR boolean
function WorldGenChunkBuffer:SetTileAreaByCondition(xi, yi, wi, hi, tileID, tag, isAllowSlope, conditionSampleID, conditionMaskID, logicOR)
end

---SetWall
---@overload fun(xi:int,yi:int,wallID:int)
---@param xi int
---@param yi int
---@param wallID int
---@param isAllowSlope boolean
function WorldGenChunkBuffer:SetWall(xi, yi, wallID, isAllowSlope)
end

---SetWallArea
---@overload fun(xi:int,yi:int,wi:int,hi:int,wallID:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param wallID int
---@param isAllowSlope boolean
function WorldGenChunkBuffer:SetWallArea(xi, yi, wi, hi, wallID, isAllowSlope)
end

---SetWallAreaByCondition
---@overload fun(xi:int,yi:int,wi:int,hi:int,wallID:int,isAllowSlope:boolean,conditionSampleID:int,conditionMaskID:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param wallID int
---@param isAllowSlope boolean
---@param conditionSampleID int
---@param conditionMaskID int
---@param logicOR boolean
function WorldGenChunkBuffer:SetWallAreaByCondition(xi, yi, wi, hi, wallID, isAllowSlope, conditionSampleID, conditionMaskID, logicOR)
end

---SetLiquid
---@param xi int
---@param yi int
---@param liquidID int
---@param amount int
function WorldGenChunkBuffer:SetLiquid(xi, yi, liquidID, amount)
end

---SetLiquidArea
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param liquidID int
---@param amount int
function WorldGenChunkBuffer:SetLiquidArea(xi, yi, wi, hi, liquidID, amount)
end

---SetLiquidAreaByCondition
---@overload fun(xi:int,yi:int,wi:int,hi:int,liquidID:int,amount:int,conditionSampleID:int,conditionMaskID:int)
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param liquidID int
---@param amount int
---@param conditionSampleID int
---@param conditionMaskID int
---@param logicOR boolean
function WorldGenChunkBuffer:SetLiquidAreaByCondition(xi, yi, wi, hi, liquidID, amount, conditionSampleID, conditionMaskID, logicOR)
end

---ClearFront
---@param xi int
---@param yi int
function WorldGenChunkBuffer:ClearFront(xi, yi)
end

---ClearFrontArea
---@param xi int
---@param yi int
---@param wi int
---@param hi int
function WorldGenChunkBuffer:ClearFrontArea(xi, yi, wi, hi)
end

---
---@param xi int
---@param yi int
function WorldGenChunkBuffer:ClearWall(xi, yi)
end

---
---@param xi int
---@param yi int
---@param wi int
---@param hi int
function WorldGenChunkBuffer:ClearWallArea(xi, yi, wi, hi)
end

---
---@param xi int
---@param yi int
function WorldGenChunkBuffer:ClearFrontAndWall(xi, yi)
end

---
---@param xi int
---@param yi int
---@param wi int
---@param hi int
function WorldGenChunkBuffer:ClearFrontAndWallArea(xi, yi, wi, hi)
end

---ClearLiquid
---@param xi int
---@param yi int
function WorldGenChunkBuffer:ClearLiquid(xi, yi)
end

---ClearLiquidArea
---@param xi int
---@param yi int
---@param wi int
---@param hi int
function WorldGenChunkBuffer:ClearLiquidArea(xi, yi, wi, hi)
end

---PerlinMakeCaveHorizontal
---@param xi int
---@param yi int
---@param size int
---@param height int
---@param scaleX double
---@param persistence double
---@param octaves int
---@param amplitude double
---@param scaleXTop double
---@param persistenceTop double
---@param octavesTop int
---@param amplitudeTop double
---@param scaleXBottom double
---@param persistenceBottom double
---@param octavesBottom int
---@param amplitudeBottom double
function WorldGenChunkBuffer:PerlinMakeCaveHorizontal(xi, yi, size, height, scaleX, persistence, octaves, amplitude, scaleXTop, persistenceTop, octavesTop, amplitudeTop, scaleXBottom, persistenceBottom, octavesBottom, amplitudeBottom)
end

---PerlinMakeCave
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param scaleX double
---@param scaleY double
---@param caveRateBegin double
---@param caveRateEnd double
---@param mapYiFadeIn int
---@param fadeInSize int
---@param mapYiFadeOut int
---@param fadeOutSize int
function WorldGenChunkBuffer:PerlinMakeCave(xi, yi, wi, hi, scaleX, scaleY, caveRateBegin, caveRateEnd, mapYiFadeIn, fadeInSize, mapYiFadeOut, fadeOutSize)
end

---MakeCaveRandomDirection
---@param xi int
---@param yi int
function WorldGenChunkBuffer:MakeCaveRandomDirection(xi, yi)
end

---GetRandomAreas
---@param randomKey int
---@param originalWorldGenArea WorldGenArea
---@param elementWidthMin int
---@param elementWidthMax int
---@param elementHeightMin int
---@param elementHeightMax int
---@param density double
function WorldGenChunkBuffer:GetRandomAreas(randomKey, originalWorldGenArea, elementWidthMin, elementWidthMax, elementHeightMin, elementHeightMax, density)
end

---AddBlockRandomOval
---@overload fun(blockID:int,xi:int,yi:int,wi:int,hi:int)
---@overload fun(blockID:int,xi:int,yi:int,wi:int,hi:int,replaceFront:boolean)
---@overload fun(blockID:int,xi:int,yi:int,wi:int,hi:int,replaceFront:boolean,replaceLiquid:boolean)
---@overload fun(blockID:int,xi:int,yi:int,wi:int,hi:int,replaceFront:boolean,replaceLiquid:boolean,placeFrontAir:boolean)
---@overload fun(blockID:int,xi:int,yi:int,wi:int,hi:int,replaceFront:boolean,replaceLiquid:boolean,placeFrontAir:boolean,replaceWall:boolean)
---@param blockID int
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@param replaceFront boolean
---@param replaceLiquid boolean
---@param placeFrontAir boolean
---@param replaceWall boolean
---@param placeWallAir boolean
function WorldGenChunkBuffer:AddBlockRandomOval(blockID, xi, yi, wi, hi, replaceFront, replaceLiquid, placeFrontAir, replaceWall, placeWallAir)
end

---GenerateLake
---@overload fun(xi:int, yi:int, liquidID:int)
---@param xi int
---@param yi int
---@param liquidID int
---@param maxAllowCount int
---@return boolean
function WorldGenChunkBuffer:GenerateLake(xi, yi, liquidID, maxAllowCount)
end

---写入所有元素。
---
---(1)对于所有预设的前景,根据群系、主次方块信息加入方块,并标记已经放置前景。
---(2)对于所有预设的后景,根据群系、主次方块信息加入方块,并标记已经放置后景。
---(3)对于所有预设的流体,按流体ID加入流体,并标记已经放置流体。
function WorldGenChunkBuffer:SettleAllElementByBiomes()
end

---GetAllFloors
---@param xi int
---@param yi int
---@param wi int
---@param hi int
---@return MapPos[]
function WorldGenChunkBuffer:GetAllFloors(xi, yi, wi, hi)
end

---GenerateTree
---@param xi int
---@param yi int
---@param treeBlockID int
---@return boolean
function WorldGenChunkBuffer:GenerateTree(xi, yi, treeBlockID)
end

---GenerateLargeMushroom
---@param xi int
---@param yi int
---@param capID int
---@param stemID int
---@return boolean
function WorldGenChunkBuffer:GenerateLargeMushroom(xi, yi, capID, stemID)
end

---CreateBuilding
---@overload fun(buildingID:int, xi:int, yi:int)
---@overload fun(buildingID:int, xi:int, yi:int, maxTryTimes:int)
---@overload fun(buildingID:int, xi:int, yi:int, limitXi:int, limitYi:int, limitWi:int, limitHi:int)
---@param buildingID int
---@param xi int
---@param yi int
---@param limitXi int
---@param limitYi int
---@param limitWi int
---@param limitHi int
---@param maxTryTimes int
function WorldGenChunkBuffer:CreateBuilding(buildingID, xi, yi, limitXi, limitYi, limitWi, limitHi, maxTryTimes)
end

function WorldGenChunkBuffer:ApplyBuildings()
end

return WorldGenChunkBuffer

================================================
FILE: apis/WorldGenCode.lua
================================================

---@class WorldGenCodeConfig
local WorldGenCodeConfig = {}

---@class WorldGenCode
local WorldGenCode = {}

---CompileCode
---@param rawCode string
function WorldGenCode:CompileCode(rawCode)
end

---@return WorldGenCodeConfig
function WorldGenCode:GetConfig()
end

---SetConfig
---@param config WorldGenCodeConfig
function WorldGenCode:SetConfig(config)
end

return WorldGenCode

================================================
FILE: apis/WorldGenNoise.lua
================================================
---@class WorldGenNoise
local WorldGenNoise = {}

---SetData
---@param persistence double
---@param octaves int
function WorldGenNoise:SetData(persistence, octaves)
end

---Perlin2D, return (-1.0, 1.0)
---@param x double
---@param y double
---@return double
function WorldGenNoise:Perlin2D(x, y)
end

---Perlin1D, return (-1.0, 1.0)
---@param x double
---@return double
function WorldGenNoise:Perlin1D(x)
end

---GetDoubleFromInt1D, return (-1.0, 1.0)
---@param xi int
---@return double
function WorldGenNoise:GetDoubleFromInt1D(xi)
end

---GetDoubleFromInt2D, return (-1.0, 1.0)
---@param xi int
---@param yi int
---@return double
function WorldGenNoise:GetDoubleFromInt2D(xi, yi)
end

---GetByteFromInt2D, return [0, maxByte)
---@param xi int
---@param yi int
---@param maxByte int
---@return int
function WorldGenNoise:GetByteFromInt2D(xi, yi, maxByte)
end

return WorldGenNoise

================================================
FILE: apis/engine_api/AnimationEvent.lua
================================================
---@class AnimationEvent
local AnimationEvent = {}

---
---@param listener table|function
---@return ListenerID
function AnimationEvent:addListener(listener)
end

---
---@param listenerID ListenerID
function AnimationEvent:removeListener(listenerID)
end

return AnimationEvent

================================================
FILE: apis/engine_api/Animator2D.lua
================================================
---@class Animator2D
local Animator2D = {}

---setFloat
---@param parameterName string
---@param value number
function Animator2D:setFloat(parameterName, value)
end

---getFloat
---@param parameterName string
---@return number
function Animator2D:getFloat(parameterName)
end

---
---@param parameterName string
---@param value number
function Animator2D:setInteger(parameterName, value)
end

---
---@param parameterName string
---@return number
function Animator2D:getInteger(parameterName)
end

---
---@param parameterName string
---@param value boolean
function Animator2D:setBool(parameterName, value)
end

---
---@param parameterName string
---@return boolean
function Animator2D:getBool(parameterName)
end

---setTrigger
---@param parameterName string
function Animator2D:setTrigger(parameterName)
end

---createEventAtTimePoint
---@param clipName string
---@param timePoint number
---@return AnimationEvent
function Animator2D:createEventAtTimePoint(clipName, timePoint)
end

---@param clipName string
---@param timePoint number
---@return AnimationEvent
function Animator2D:getEventAtTimePoint(clipName, timePoint)
end

---@param clipName string
---@param timePoint number
function Animator2D:removeEventAtTimePoint(clipName, timePoint)
end

---setLayerTimeScale
---@param layerIndex number
---@param timeScale number
function Animator2D:setLayerTimeScale(layerIndex, timeScale)
end

---@param layerIndex number
---@return number
function Animator2D:getLayerTimeScale(layerIndex)
end

return Animator2D

================================================
FILE: apis/engine_api/AnimatorData2D.lua
================================================
---@class AnimatorData2D
local AnimatorData2D = {}

---new
---@param dataTable table
---@return AnimatorData2D
function AnimatorData2D.new(dataTable)
end

return AnimatorData2D

================================================
FILE: apis/engine_api/App.lua
================================================
---@class App
---@field appName string
---@field companyName string
---@field dataPath string
---@field persistentDataPath string
---@field engineVersion string
---@field isMobile boolean
---@field isPC boolean
local App = {}

return App

================================================
FILE: apis/engine_api/Array.lua
================================================
---@class Array
---@field count number
local Array = {}

return Array

================================================
FILE: apis/engine_api/AssetBundle.lua
================================================
---@class AssetBundle
local AssetBundle = {}

---
---@return AssetBundle
function AssetBundle.new()
end

---clone
---@param value AssetBundle
---@return AssetBundle
function AssetBundle.clone(value)
end

---
---@param abPath string
---@return string
function AssetBundle:loadFromFileSystem(abPath)
end

---
---@param abPath string
function AssetBundle:saveToFileSystem(abPath)
end

---
---@param filePath string
---@param data Bytes
---@param offset number
---@param size number
function AssetBundle:addFileData(filePath, data, offset, size)
end

---
---@param filePath string
---@return string
function AssetBundle:getFileString(filePath)
end

---
---@param filePath string
---@return Bytes
function AssetBundle:getFileBytes(filePath)
end

function AssetBundle:clear()
end

function AssetBundle:freeMemory()
end

---
---@param filePath string
---@return boolean
function AssetBundle:isFileExist(filePath)
end

---
---@param folderPath string
---@return boolean
function AssetBundle:isFolderExist(folderPath)
end

---
---@param filePath string
---@param isFullPath boolean
---@return table
function AssetBundle:getAllSubFolders(filePath, isFullPath)
end

---
---@param path string
---@param extension string
---@param resultNoExtension boolean
---@param getAbsPath boolean
---@param recursion boolean
---@return table
function AssetBundle:getAllFiles(path, extension, resultNoExtension, getAbsPath, recursion)
end

return AssetBundle

================================================
FILE: apis/engine_api/AssetManager.lua
================================================
---@class AssetManager
local AssetManager = {}

---getLastWriteTime
---@param path string
---@return DateTime
function AssetManager.getLastWriteTime(path)
end

---readAsString
---@param path string
---@return string
function AssetManager.readAsString(path)
end

---readAsBytes
---@param path string
---@return Bytes
function AssetManager.readAsBytes(path)
end

---
---@param filePath string
---@param isFullPath boolean
---@return string[]
function AssetManager.getAllSubFolders(filePath, isFullPath)
end

---
---@param path string
---@param extension string
---@param resultNoExtension boolean
---@param getAbsPath boolean
---@param recursion boolean
---@return string[]
function AssetManager.getAllFiles(path, extension, resultNoExtension, getAbsPath, recursion)
end

---isPathExist
---@param path string
---@return boolean
function AssetManager.isPathExist(path)
end

---genPackFromSource
---@param sourceParentFolderPath string
---@param folderName string
---@param assetMappingPath string
---@return string
function AssetManager.genPackFromSource(sourceParentFolderPath, folderName, assetMappingPath)
end

return AssetManager

================================================
FILE: apis/engine_api/AtlasInfos.lua
================================================
---@class AtlasInfos
local AtlasInfos = {}

return AtlasInfos

================================================
FILE: apis/engine_api/AtlasLoader.lua
================================================
---@class AtlasLoader
local AtlasLoader = {}

---saveToFileSystem
---@param atlasInfos AtlasInfos
---@param folderPath string
function AtlasLoader.saveToFileSystem(atlasInfos, folderPath)
end

---saveToAssetBundle
---@param assetBundle AssetBundle
---@param atlasInfos AtlasInfos
---@param folderPath string
function AtlasLoader.saveToAssetBundle(assetBundle, atlasInfos, folderPath)
end

---loadFromFileSystem
---@param folderPath string
---@return AtlasInfos
function AtlasLoader.loadFromFileSystem(folderPath)
end

---loadFromAssetBundle
---@param assetBundle AssetBundle
---@param folderPath string
---@return AtlasInfos
function AtlasLoader.loadFromAssetBundle(assetBundle, folderPath)
end

return AtlasLoader

================================================
FILE: apis/engine_api/Audio.lua
================================================
---@class Audio
---@field musicVolume number
local Audio = {}

---
---@param filePath string
---@return number
function Audio.loadSoundEffectFromFileSystem(filePath)
end

---
---@param assetBundle AssetBundle
---@param filePath string
---@return number
function Audio.loadSoundEffectFromAssetBundle(assetBundle, filePath)
end

---unloadSoundEffectByID
---@param soundID number
function Audio.unloadSoundEffectByID(soundID)
end

---
---@param bytes Bytes
---@param offset number
---@param size number
---@return number
function Audio.loadSoundEffectFromMemory(bytes, offset, size)
end

---
---@param filePath string
---@return number
function Audio.loadMusicEffectFromFileSystem(filePath)
end

---
---@param assetBundle AssetBundle
---@param filePath string
---@return number
function Audio.loadMusicEffectFromAssetBundle(assetBundle, filePath)
end

---
---@param bytes Bytes
---@param offset number
---@param size number
---@return number
function Audio.loadMusicEffectFromMemory(bytes, offset, size)
end

---unloadMusicEffectByID
---@param musicID number
function Audio.unloadMusicEffectByID(musicID)
end

---
---@overload fun(id:number)
---@overload fun(id:number, loops:number)
---@overload fun(id:number, loops:number, fadeInTime:number)
---@overload fun(id:number, loops:number, fadeInTime:number, beginTime:number)
---@param id number
---@param loops number
---@param fadeInTime number
---@param beginTime number
function Audio.playMusic(id, loops, fadeInTime, beginTime)
end

---stopMusic
---@param fadeOutTime number
function Audio.stopMusic(fadeOutTime)
end

function Audio.pauseMusic()
end

function Audio.resumeMusic()
end

---@return FadingState_Value
function Audio.getMusicFadingState()
end

---getMusicPlayingTimePoint
---@param musicID string
---@return string
function Audio.getMusicPlayingTimePoint(musicID)
end

---
---@param volume number
function Audio.setMusicVolume(volume)
end

---
---@param volume number
function Audio.setAllSoundEffectVolume(volume)
end

function Audio.isMusicPaused()
end

function Audio.isMusicPlaying()
end
---
---@param listener table|function
---@return ListenerID
function Audio:addMusicFinishedListener(listener)
end

---
---@param listenerID ListenerID
function Audio:removeMusicFinishedListener(listenerID)
end

return Audio

================================================
FILE: apis/engine_api/ByteStream.lua
================================================
---@class ByteStream
---@field empty boolean
---@field count number
---@field capacity number
---@field readableCount number
local ByteStream = {}

---
---@overload fun():ByteStream
---@param capacity number
---@return ByteStream
function ByteStream.new(capacity)
end

---clone
---@param value ByteStream
---@return ByteStream
function ByteStream.clone(value)
end

function ByteStream:clear()
end

function ByteStream:freeMemory()
end

---@param value number
function ByteStream:writeInt(value)
end

---@return number
function ByteStream:readInt()
end

---@param value number
function ByteStream:writeIntVarLen(value)
end

---@return number
function ByteStream:readIntVarLen()
end

---@param value number
function ByteStream:writeFloat(value)
end

---@return number
function ByteStream:readFloat()
end

---@param value number
function ByteStream:writeDouble(value)
end

---@return number
function ByteStream:readDouble()
end

---@param value boolean
function ByteStream:writeBoolean(value)
end

---@return boolean
function ByteStream:readBoolean()
end

---@param value string
function ByteStream:writeString(value)
end

---@return string
function ByteStream:readString()
end

return ByteStream

================================================
FILE: apis/engine_api/Bytes.lua
================================================
---@class Bytes
---@field empty boolean
---@field count number
---@field capacity number
local Bytes = {}

---
---@overload fun():Bytes
---@param capacity number
---@return Bytes
function Bytes.new(capacity)
end

---clone
---@param value Bytes
---@return Bytes
function Bytes.clone(value)
end

---
---@param value number
---@return number
function Bytes:add(value)
end

---
---@param index number
---@param value number
function Bytes:insert(index, value)
end

function Bytes:clear()
end

function Bytes:freeMemory()
end

---
---@overload fun(count:number)
---@param count number
---@param fill number
function Bytes:setCount(count, fill)
end

---
---@param capacity number
function Bytes:setCapacity(capacity)
end

---
---@param bytes Bytes
function Bytes:swap(bytes)
end

---
---@overload fun(bytes:Bytes)
---@param bytes Bytes
---@param offset number
---@param count number
function Bytes:addBytes(bytes, offset, count)
end

---
---@param startOverwriteOffset number
---@param sourceBytes Bytes
---@param sourceOffset number
---@param sourceCount number
function Bytes:overwrite(startOverwriteOffset, sourceBytes, sourceOffset, sourceCount)
end

return Bytes

================================================
FILE: apis/engine_api/CameraComponentWrapper.lua
================================================
---@class CameraComponentWrapper:ComponentWrapper
---@field projection CameraProjection_Value
---@field clippingPlaneNear number
---@field clippingPlaneFar number
---@field fov number
---@field viewportRect RectFloatEx
---@field targetDisplay number
local CameraComponentWrapper = {}

return CameraComponentWrapper

================================================
FILE: apis/engine_api/CameraProjection.lua
================================================
---@class CameraProjection_Value

---@class CameraProjection
---@field Perspective CameraProjection_Value
---@field Orthographic CameraProjection_Value
local CameraProjection = {}

return CameraProjection

================================================
FILE: apis/engine_api/CanvasComponentWrapper.lua
================================================
---@class CanvasComponentWrapper:ComponentWrapper
---@field uiRoot UICanvas
---@field displayMode CanvasDisplayMode
---@field targetDisplay number
local CanvasComponentWrapper = {}

return CanvasComponentWrapper

================================================
FILE: apis/engine_api/CanvasDisplayMode.lua
================================================
---@class CanvasDisplayMode_Value

---@class CanvasDisplayMode
---@field ScreenSpaceOverlay CanvasDisplayMode_Value
---@field ScreenSpaceCamera CanvasDisplayMode_Value
---@field WorldSpace CanvasDisplayMode_Value
local CanvasDisplayMode = {}

return CanvasDisplayMode

================================================
FILE: apis/engine_api/ClipCollection2D.lua
================================================
---@class ClipCollection2D
local ClipCollection2D = {}

---new
---@param jointCollection2D JointCollection2D
---@return ClipCollection2D
function ClipCollection2D.new(jointCollection2D)
end

---addClip
---@param clipTable table
function ClipCollection2D:addClip(clipTable)
end

return ClipCollection2D

================================================
FILE: apis/engine_api/Color.lua
================================================
---@API

---@class Color:SerializableType 描述一个颜色。
---@field red number 红色通道分量。取值为[0, 255]。
---@field green number 绿色通道分量。取值为[0, 255]。
---@field blue number 蓝色通道分量。取值为[0, 255]。
---@field alpha number 透明度通道分量。取值为[0, 255]。
---@field Red Color 返回红色对象。
---@field Black Color 返回黑色对象。
---@field Gray Color 返回灰色对象。
---@field Green Color 返回绿色对象。
---@field Blue Color 返回蓝色对象。
---@field LightBlue Color 返回淡蓝色对象。
---@field Yellow Color 返回黄色对象。
---@field FrenchGray Color 返回淡灰色对象。
---@field White Color 返回白色对象。
local Color = {}

---创建一个颜色对象。
---@overload fun():Color
---@overload fun(red:number,green:number,blue:number):Color
---@param red number 红色通道分量。取值为[0, 255]。
---@param green number 绿色通道分量。取值为[0, 255]。
---@param blue number 蓝色通道分量。取值为[0, 255]。
---@param alpha number 透明度通道分量。取值为[0, 255]。
---@return Color 新的颜色对象。
function Color.new(red, green, blue, alpha)
end

---@param value Color
---@return Color
function Color.clone(value)
end

return Color

================================================
FILE: apis/engine_api/ComponentID.lua
================================================
---@class ComponentID_Value:number
local ComponentID_Value = {}
---@class ComponentID
---@field Transform ComponentID_Value
---@field Rigidbody ComponentID_Value
local ComponentID = {}

return ComponentID

================================================
FILE: apis/engine_api/ComponentWrapper.lua
================================================
---@class ComponentWrapper
local ComponentWrapper = {}

function ComponentWrapper:init()
end

function ComponentWrapper:destroy()
end

return ComponentWrapper

================================================
FILE: apis/engine_api/DateTime.lua
================================================
---@class DateTime
local DateTime = {}

return DateTime

================================================
FILE: apis/engine_api/FadingState.lua
================================================
---@class FadingState_Value

---@class FadingState
---@field NoFading FadingState_Value
---@field FadingIn FadingState_Value
---@field FadingOut FadingState_Value
local FadingState = {}

return FadingState

================================================
FILE: apis/engine_api/File.lua
================================================
---@class File
local File = {}

---getLastWriteTime
---@param path string
---@return DateTime
function File.getLastWriteTime(path)
end

---
---@param filePath string
---@param isFullPath boolean
---@return string[]
function File.getAllSubFolders(filePath, isFullPath)
end

---
---@param path string
---@param extension string
---@param resultNoExtension boolean
---@param getAbsPath boolean
---@param recursion boolean
---@return string[]
function File.getAllFiles(path, extension, resultNoExtension, getAbsPath, recursion)
end

---saveString
---@param path string
---@param str string
function File.saveString(path, str)
end

---saveBytes
---@param path string
---@param bytes Bytes
function File.saveBytes(path, bytes)
end

---readAsString
---@param path string
---@return string
function File.readAsString(path)
end

---readAsBytes
---@param path string
---@return Bytes
function File.readAsBytes(path)
end

---isPathExist
---@param path string
---@return boolean
function File.isPathExist(path)
end

---openFolderWindow
---@param path string
function File.openFolderWindow(path)
end

---makeFolder
---@param path string
function File.makeFolder(path)
end

return File

================================================
FILE: apis/engine_api/FileTimeType.lua
================================================
---@class FileTimeType
local FileTimeType = {}

return FileTimeType

================================================
FILE: apis/engine_api/FontManager.lua
================================================
---@class FontManager
local FontManager = {}

---load
---@param filePath string
---@param fontName string
---@return number
function FontManager.load(filePath, fontName)
end

return FontManager

================================================
FILE: apis/engine_api/FontSprite.lua
================================================
---@class FontSprite
local FontSprite = {}

---drawText
---@param text string
---@param pos Vector2
---@param size Size
---@param textStyle TextStyle
function FontSprite.drawText(text, pos, size, textStyle)
end

---drawTextBuffer
---@param pos Vector2
---@param textBuffer TextBuffer
function FontSprite.drawTextBuffer(pos, textBuffer)
end

---getBuffer
---@param text string
---@param size Size
---@param textStyle TextStyle
---@return TextBuffer
function FontSprite.getBuffer(text, size, textStyle)
end

return FontSprite

================================================
FILE: apis/engine_api/GameObject.lua
================================================
---@class GameObject
---@field transform TransformComponentWrapper
---@field camera CameraComponentWrapper
---@field meshFilter MeshFilterComponentWrapper
---@field meshRenderer MeshRendererComponentWrapper
---@field canvas CanvasComponentWrapper
---@field rigidbody Rigidbody
---@field children table
local GameObject = {}

---
---@return GameObject
function GameObject.instantiate(gameObject)
end

---
---@param gameObject GameObject
function GameObject.destroy(gameObject)
end

function GameObject.flush()
end

---
---@param componentID ComponentID_Value
function GameObject:addComponent(componentID)
end

---
---@param componentID ComponentID_Value
function GameObject:removeComponent(componentID)
end

---
---@param gameObject GameObject
function GameObject:addChild(gameObject)
end

return GameObject

================================================
FILE: apis/engine_api/GameWindow.lua
================================================
---@class GameWindow
---@field caption string
---@field width number
---@field height number
---@field fullScreen boolean
---@field displayResolution Size
local GameWindow = {}

return GameWindow

================================================
FILE: apis/engine_api/GlobalHook.lua
================================================
---@class GlobalHook
local GlobalHook = {}

---
---@param hookName string
---@param listener table|function
function GlobalHook.add(hookName, listener)
end

return GlobalHook

================================================
FILE: apis/engine_api/GraphicsDevice.lua
================================================
---@class GraphicsDevice
---@field vendorName string
---@field rendererName string
---@field drawCalls number
---@field primitiveCount number
local GraphicsDevice = {}

---clear
---@param color Color
function GraphicsDevice.clear(color)
end

---
---@overload fun(a:Vector2,b:Vector2,color:Color)
---@param a Vector2
---@param b Vector2
---@param color Color
---@param depth number
function GraphicsDevice.drawLine2D(a, b, color, depth)
end

---
---@overload fun(point:Vector2,color:Color)
---@param point Vector2
---@param color Color
---@param depth number
function GraphicsDevice.drawPoint2D(point, color, depth)
end

---
---@overload fun(rect:RectFloat,color:Color)
---@param rect RectFloat
---@param color Color
---@param depth number
function GraphicsDevice.drawRect2D(rect, color, depth)
end

---
---@overload fun(rect:RectFloat,color:Color)
---@param rect RectFloat
---@param color Color
---@param depth number
function GraphicsDevice.drawRectHollow2D(rect, color, depth)
end

return GraphicsDevice

================================================
FILE: apis/engine_api/HotKeyCombination.lua
================================================
---@class HotKeyCombination
local HotKeyCombination = {}

---
---@param listener table|function
---@return ListenerID
function HotKeyCombination:addListener(listener)
end

---
---@param listenerID ListenerID
function HotKeyCombination:removeListener(listenerID)
end

return HotKeyCombination

================================================
FILE: apis/engine_api/Hotfix.lua
================================================
---@class Hotfix
local Hotfix = {}

---
function Hotfix.updateNextTick()
end

return Hotfix

================================================
FILE: apis/engine_api/Image.lua
================================================
---@class Image
local Image = {}

---loadPngFromMemory
---@param bytes Bytes
---@param offset number
---@param size number
---@param flip boolean
---@return ImageInfo
function Image.loadPngFromMemory(bytes, offset, size, flip)
end

---loadPngFromFileSystem
---@param filePath string
---@param flip boolean
---@return ImageInfo
function Image.loadPngFromFileSystem(filePath, flip)
end

---loadPngFromAssetBundle
---@param assetBundle AssetBundle
---@param filePath string
---@param flip boolean
---@return ImageInfo
function Image.loadPngFromAssetBundle(assetBundle, filePath, flip)
end

---saveAsPngToMemory
---@param imageInfo ImageInfo
---@param bytes Bytes
function Image.saveAsPngToMemory(imageInfo, bytes)
end

---saveAsPngToFileSystem
---@param imageInfo ImageInfo
---@param filePath string
function Image.saveAsPngToFileSystem(imageInfo, filePath)
end

---saveAsPngToAssetBundle
---@param imageInfo ImageInfo
---@param assetBundle AssetBundle
---@param filePath string
function Image.saveAsPngToAssetBundle(imageInfo, assetBundle, filePath)
end

return Image

================================================
FILE: apis/engine_api/ImageInfo.lua
================================================
---@class ImageInfo
---@field width number
---@field height number
---@field channelCount number
---@field byteData Bytes
local ImageInfo = {}

---
---@param width number
---@param height number
---@param channelCount number
---@return ImageInfo
function ImageInfo.new(width, height, channelCount)
end

---clone
---@param value ImageInfo
---@return ImageInfo
function ImageInfo.clone(value)
end

return ImageInfo

================================================
FILE: apis/engine_api/Input.lua
================================================
---@class Input
---@field mouse Mouse
---@field keyboard Keyboard
---@field joystick JoystickDevice[]
local Input = {}

return Input

================================================
FILE: apis/engine_api/IntegratedClient.lua
================================================
---@class IntegratedClient : IntegratedEnv
---@field main IntegratedClient
local IntegratedClient = {}

---
---@param listener table|function
---@return ListenerID
function IntegratedClient:addOnRenderListener(listener)
end

---
---@param listenerID ListenerID
function IntegratedClient:removeOnRenderListener(listenerID)
end

---
---@param listener table|function
---@return ListenerID
function IntegratedClient:addOnWindowResizeListener(listener)
end

---
---@param listenerID ListenerID
function IntegratedClient:removeOnWindowResizeListener(listenerID)
end

return IntegratedClient

================================================
FILE: apis/engine_api/IntegratedEnv.lua
================================================
---@class IntegratedEnv
---@field fps number
---@field gameSpeed number
---@field isMaxFPS boolean
---@field registry Registry
local IntegratedEnv = {}

---
---@param listener table|function
---@return ListenerID
function IntegratedEnv:addOnStartListener(listener)
end

---
---@param listenerID ListenerID
function IntegratedEnv:removeOnStartListener(listenerID)
end

---
---@param listener table|function
---@return ListenerID
function IntegratedEnv:addOnUpdateListener(listener)
end

---
---@param listenerID ListenerID
function IntegratedEnv:removeOnUpdateListener(listenerID)
end

---
---@overload fun():ScheduleID
---@param intervalTicks number
---@return ScheduleID
function IntegratedEnv:createSchedule(intervalTicks)
end

---getSchedule
---@param scheduleID ScheduleID
---@return Schedule
function IntegratedEnv:getSchedule(scheduleID)
end

---
---@param scheduleID ScheduleID
function IntegratedEnv:removeSchedule(scheduleID)
end

return IntegratedEnv

================================================
FILE: apis/engine_api/Joint2D.lua
================================================
---@class Joint2D
---@field transform Transform2D
---@field size Size
---@field angle number
---@field visible boolean
local Joint2D = {}

---new
---@param name string
---@param originalPos Vector2
---@param size Size
---@return Joint2D
function Joint2D.new(name, originalPos, size)
end

---addChild
---@overload fun(pos:Vector2,skeletonNode:Joint2D)
---@param pos Vector2
---@param skeletonNode Joint2D
---@param overlapping boolean
function Joint2D:addChild(pos, skeletonNode, overlapping)
end

---getChild
---@param name string
---@return Joint2D
function Joint2D:getChild(name)
end

---@return ObbDouble
function Joint2D:getWorldObb()
end

---setTexture
---@param textureName string
---@param textureLocation TextureLocation
---@param positionOffset Vector2
---@param sourceRect Rect
function Joint2D:setTexture(textureName, textureLocation, positionOffset, sourceRect)
end

return Joint2D

================================================
FILE: apis/engine_api/JointBody2D.lua
================================================
---@class JointBody2D
---@field joints JointCollection2D
---@field animator Animator2D
local JointBody2D = {}

---new
---@param jointCollection2D JointCollection2D
---@return JointBody2D
function JointBody2D.new(jointCollection2D)
end

---@return JointBody2D
function JointBody2D:clone()
end

---update
---@overload fun()
---@param withAnimation boolean
function JointBody2D:update(withAnimation)
end

---setAnimator
---@param clipCollection2D ClipCollection2D
---@param animatorData2D Animator2D
function JointBody2D:setAnimator(clipCollection2D, animatorData2D)
end

---solveIK
---@overload fun(nodeEndName:string,nodeStartName:string,targetPos:Vector2):boolean
---@param nodeStartName string
---@param nodeEndName string
---@param nodeEnd Joint2D
---@param nodeStart Joint2D
---@param targetPos Vector2
---@return boolean
function JointBody2D:solveIK(nodeEnd, nodeStart, targetPos)
end

return JointBody2D

================================================
FILE: apis/engine_api/JointCollection2D.lua
================================================
---@class JointCollection2D
---@field root Joint2D
---@field position Vector2
---@field rotation number
---@field scale Vector2
---@field flip boolean
local JointCollection2D = {}

---new
---@return JointCollection2D
function JointCollection2D.new()
end

---getJoint
---@param name string
---@return Joint2D
function JointCollection2D:getJoint(name)
end

---render
---@overload fun()
---@param camera CameraComponentWrapper
function JointCollection2D:render(camera)
end

return JointCollection2D

================================================
FILE: apis/engine_api/Joystick.lua
================================================
---@
Download .txt
gitextract_ll5d4bnt/

├── DebugHelper.lua
├── DebugHelperConfig.lua
├── LICENSE
├── README.md
├── advancements/
│   ├── AdvancementTriggers.lua
│   ├── ancient_ingot.json
│   ├── ancient_wear.json
│   ├── blaze_rod.json
│   ├── bow.json
│   ├── bread.json
│   ├── brew.json
│   ├── bronze.json
│   ├── cake.json
│   ├── crafting_table.json
│   ├── crison_eye.json
│   ├── crison_eye_killed.json
│   ├── crossbow.json
│   ├── diamond.json
│   ├── diamond_ingot.json
│   ├── diamond_wear.json
│   ├── dungeon_eater.json
│   ├── dungeon_eater_killed.json
│   ├── enchant.json
│   ├── ender_chest.json
│   ├── ender_pearl.json
│   ├── farm.json
│   ├── flesh_ingot.json
│   ├── flesh_wear.json
│   ├── furnace.json
│   ├── ghast.json
│   ├── ghost.json
│   ├── ghost_crystal.json
│   ├── go_bone_dungeon.json
│   ├── go_dark_dungeon.json
│   ├── go_deep_snow.json
│   ├── go_desert_dungeon.json
│   ├── go_ghost_house.json
│   ├── go_ice_dungeon.json
│   ├── go_lava_dungeon.json
│   ├── gold.json
│   ├── gold_wear.json
│   ├── guardian.json
│   ├── gun.json
│   ├── hunter.json
│   ├── ice_element_ball.json
│   ├── inventory.json
│   ├── iron.json
│   ├── knight_ingot.json
│   ├── knight_wear.json
│   ├── lava.json
│   ├── leather.json
│   ├── magic_gold_wear.json
│   ├── magic_limit.json
│   ├── mine.json
│   ├── mine_bronze.json
│   ├── mine_copper.json
│   ├── mine_diamond.json
│   ├── mine_gold.json
│   ├── mine_iron.json
│   ├── mine_netherite.json
│   ├── mine_up.json
│   ├── mirror.json
│   ├── nether.json
│   ├── nether_destroyer.json
│   ├── nether_destroyer_killed.json
│   ├── netherite.json
│   ├── netherite_full_wear.json
│   ├── portal.json
│   ├── pumpkin_helmet.json
│   ├── recipe_book.json
│   ├── redstone.json
│   ├── redstone_wire.json
│   ├── repair.json
│   ├── rocket_boost.json
│   ├── snow_guard.json
│   ├── snow_queen.json
│   ├── snow_queen_killed.json
│   ├── staff.json
│   ├── star_wear.json
│   ├── steel.json
│   ├── stone.json
│   ├── strange_len.json
│   ├── super_diamond_sword.json
│   ├── super_diamond_wear.json
│   ├── sword.json
│   └── wood.json
├── api.lua
├── apis/
│   ├── Account.lua
│   ├── AccountUtils.lua
│   ├── Advancement.lua
│   ├── AdvancementUtils.lua
│   ├── Attack.lua
│   ├── BiomeData.lua
│   ├── BiomeUtils.lua
│   ├── BlockData.lua
│   ├── BlockEntity.lua
│   ├── BlockUtils.lua
│   ├── Buff.lua
│   ├── ClientBoundPacketWriter.lua
│   ├── ClientState.lua
│   ├── ClientStateManager.lua
│   ├── Container.lua
│   ├── DataWatcher.lua
│   ├── DeathReason.lua
│   ├── Defense.lua
│   ├── Direction.lua
│   ├── Effect.lua
│   ├── EffectUtils.lua
│   ├── Enchantment.lua
│   ├── EnchantmentData.lua
│   ├── EnchantmentUtils.lua
│   ├── Entity.lua
│   ├── EntityIndex.lua
│   ├── GameMode.lua
│   ├── GlobalBlock.lua
│   ├── GlobalNpc.lua
│   ├── GlobalPlayer.lua
│   ├── GuiContainer.lua
│   ├── Hitbox.lua
│   ├── Inventory.lua
│   ├── Item.lua
│   ├── ItemRegistry.lua
│   ├── ItemStack.lua
│   ├── ItemType.lua
│   ├── ItemUtils.lua
│   ├── JoinData.lua
│   ├── LangUtils.lua
│   ├── LightingUtils.lua
│   ├── MapPos.lua
│   ├── MapUtils.lua
│   ├── MiscUtils.lua
│   ├── Mod.lua
│   ├── ModBlock.lua
│   ├── ModBlockEntity.lua
│   ├── ModItem.lua
│   ├── ModNpc.lua
│   ├── ModProjectile.lua
│   ├── ModTextureData.lua
│   ├── ModTextureUtils.lua
│   ├── Npc.lua
│   ├── NpcType.lua
│   ├── NpcUtils.lua
│   ├── OreDataGroup.lua
│   ├── ParameterClick.lua
│   ├── ParameterDestroy.lua
│   ├── ParameterPlace.lua
│   ├── ParameterStrike.lua
│   ├── Player.lua
│   ├── PlayerUtils.lua
│   ├── Point.lua
│   ├── Projectile.lua
│   ├── ProjectileUtils.lua
│   ├── Recipe.lua
│   ├── RecipeConfig.lua
│   ├── RecipeSearchAction.lua
│   ├── RecipeUtils.lua
│   ├── Rectangle.lua
│   ├── Reg.lua
│   ├── ServerBoundPacketWriter.lua
│   ├── Shape.lua
│   ├── Skeleton.lua
│   ├── Skin.lua
│   ├── SkinUtils.lua
│   ├── Slot.lua
│   ├── SlotCommandQueue.lua
│   ├── SmartMode.lua
│   ├── SoundUtils.lua
│   ├── SpriteEx.lua
│   ├── Type.lua
│   ├── Utils.lua
│   ├── WorldData.lua
│   ├── WorldDataUtils.lua
│   ├── WorldGenArea.lua
│   ├── WorldGenChunkBuffer.lua
│   ├── WorldGenCode.lua
│   ├── WorldGenNoise.lua
│   └── engine_api/
│       ├── AnimationEvent.lua
│       ├── Animator2D.lua
│       ├── AnimatorData2D.lua
│       ├── App.lua
│       ├── Array.lua
│       ├── AssetBundle.lua
│       ├── AssetManager.lua
│       ├── AtlasInfos.lua
│       ├── AtlasLoader.lua
│       ├── Audio.lua
│       ├── ByteStream.lua
│       ├── Bytes.lua
│       ├── CameraComponentWrapper.lua
│       ├── CameraProjection.lua
│       ├── CanvasComponentWrapper.lua
│       ├── CanvasDisplayMode.lua
│       ├── ClipCollection2D.lua
│       ├── Color.lua
│       ├── ComponentID.lua
│       ├── ComponentWrapper.lua
│       ├── DateTime.lua
│       ├── FadingState.lua
│       ├── File.lua
│       ├── FileTimeType.lua
│       ├── FontManager.lua
│       ├── FontSprite.lua
│       ├── GameObject.lua
│       ├── GameWindow.lua
│       ├── GlobalHook.lua
│       ├── GraphicsDevice.lua
│       ├── HotKeyCombination.lua
│       ├── Hotfix.lua
│       ├── Image.lua
│       ├── ImageInfo.lua
│       ├── Input.lua
│       ├── IntegratedClient.lua
│       ├── IntegratedEnv.lua
│       ├── Joint2D.lua
│       ├── JointBody2D.lua
│       ├── JointCollection2D.lua
│       ├── Joystick.lua
│       ├── JoystickDevice.lua
│       ├── JsonUtil.lua
│       ├── KeyTrigger.lua
│       ├── Keyboard.lua
│       ├── Keys.lua
│       ├── ListenerID.lua
│       ├── Log.lua
│       ├── MathHelper.lua
│       ├── Matrix.lua
│       ├── MeshFilterComponentWrapper.lua
│       ├── MeshRendererComponentWrapper.lua
│       ├── Mouse.lua
│       ├── NetMode.lua
│       ├── ObbDouble.lua
│       ├── Path.lua
│       ├── Quaternion.lua
│       ├── Random.lua
│       ├── Rect.lua
│       ├── RectFloat.lua
│       ├── RectFloatEx.lua
│       ├── Registry.lua
│       ├── Rigidbody.lua
│       ├── Schedule.lua
│       ├── ScheduleID.lua
│       ├── SerializableType.lua
│       ├── Size.lua
│       ├── SliderDirection.lua
│       ├── Sprite.lua
│       ├── SpriteExData.lua
│       ├── TextAlignment.lua
│       ├── TextBuffer.lua
│       ├── TextEditLineType.lua
│       ├── TextHorizontalOverflow.lua
│       ├── TextStyle.lua
│       ├── TextVerticalOverflow.lua
│       ├── Texture.lua
│       ├── TextureLocation.lua
│       ├── TextureManager.lua
│       ├── TexturePacker.lua
│       ├── Time.lua
│       ├── TimeDiff.lua
│       ├── Touch.lua
│       ├── Transform.lua
│       ├── Transform2D.lua
│       ├── TransformComponentWrapper.lua
│       ├── UIButton.lua
│       ├── UICanvas.lua
│       ├── UIImage.lua
│       ├── UIInputField.lua
│       ├── UIJoystick.lua
│       ├── UINode.lua
│       ├── UINodeDrawLayer.lua
│       ├── UIPanel.lua
│       ├── UIScrollView.lua
│       ├── UISerializable.lua
│       ├── UISlices9.lua
│       ├── UISlider.lua
│       ├── UISprite.lua
│       ├── UISpriteStyle.lua
│       ├── UISwitch.lua
│       ├── UIText.lua
│       ├── UITexturePool.lua
│       ├── Vector2.lua
│       ├── Vector3.lua
│       ├── Vector4.lua
│       ├── cls.lua
│       └── utf8string.lua
├── atlas_config.json
├── biome_types/
│   ├── Nether.json
│   ├── Radiation.json
│   ├── Space.json
│   ├── Surface.json
│   ├── TwilightForest.json
│   └── Underground.json
├── biomes/
│   ├── nethers/
│   │   └── nether.json
│   ├── surfaces/
│   │   ├── badland.json
│   │   ├── desert.json
│   │   ├── flesh.json
│   │   ├── forest.json
│   │   ├── jungle.json
│   │   ├── mushroom_fields.json
│   │   ├── ocean.json
│   │   ├── snow_land.json
│   │   ├── soft_snow_land.json
│   │   ├── super_volcano.json
│   │   ├── tainted_land.json
│   │   └── volcano.json
│   └── undergrounds/
│       ├── andesite_cave.json
│       ├── blue_cave.json
│       ├── blue_mushroom_cave.json
│       ├── deep_ice_cave.json
│       ├── deep_magma_cave.json
│       ├── desert_cave.json
│       ├── diorite_cave.json
│       ├── flesh_cave.json
│       ├── granite_cave.json
│       ├── ice_cave.json
│       ├── jungle_cave.json
│       ├── lava_cave.json
│       ├── magma_cave.json
│       ├── mud_cave.json
│       ├── mushroom_cave.json
│       ├── normal_cave.json
│       ├── stone_cave.json
│       ├── tainted_cave.json
│       └── waste_cave.json
├── block_entity_ai/
│   ├── BrewingEntity.json
│   ├── BrewingEntity.lua
│   ├── Chest30Entity.json
│   ├── Chest30Entity.lua
│   ├── IChestEntity.lua
│   ├── IShooterEntity.lua
│   ├── Shooter9Entity.json
│   ├── Shooter9Entity.lua
│   ├── SmeltEntity.json
│   └── SmeltEntity.lua
├── block_presets/
│   ├── Anvil.json
│   ├── Anvil.lua
│   ├── Bed.json
│   ├── Brewing.json
│   ├── BurnerTower.json
│   ├── Button.json
│   ├── Cake.json
│   ├── Cobweb.json
│   ├── Cobweb.lua
│   ├── CraftingTable.json
│   ├── CraftingTable.lua
│   ├── Crop.json
│   ├── CrystalTower.json
│   ├── DaylightTrigger.json
│   ├── DoorClosed.json
│   ├── DoorOpened.json
│   ├── Enchantment.json
│   ├── EnchantmentTable.lua
│   ├── EndRod.json
│   ├── EnderStorage.json
│   ├── EnderStorage.lua
│   ├── Facing.json
│   ├── Farmland.json
│   ├── Furnace.json
│   ├── Furnace.lua
│   ├── Grass.json
│   ├── GrowGrass.json
│   ├── HeartCrystal.json
│   ├── HeartCrystal.lua
│   ├── IceSmelt.json
│   ├── InsideStorage.json
│   ├── Kelp.json
│   ├── MagmaBlock.json
│   ├── MagmaBlock.lua
│   ├── Melon.json
│   ├── MelonStem.json
│   ├── MoonlightTrigger.json
│   ├── NetherAltar.json
│   ├── NetherAltar.lua
│   ├── Painting.json
│   ├── PortalDoor.json
│   ├── Pot.json
│   ├── Pumpkin.json
│   ├── RandomDisplay.json
│   ├── RedstoneLamp.json
│   ├── RedstonePlate.json
│   ├── RedstonePlate.lua
│   ├── RedstoneTorch.json
│   ├── Sapling.json
│   ├── Shooter.json
│   ├── SnowQueenBall.json
│   ├── SnowQueenBall.lua
│   ├── SoulSand.json
│   ├── SoulSand.lua
│   ├── Sponge.json
│   ├── Stalactite.json
│   ├── Storage.json
│   ├── Sugarcane.json
│   ├── TNT.json
│   ├── Torch.json
│   ├── TrapStorage.json
│   ├── Vine.json
│   └── WetSponge.json
├── blocks/
│   ├── furnitures/
│   │   ├── beds/
│   │   │   ├── wooden_bed_black.json
│   │   │   ├── wooden_bed_blue.json
│   │   │   ├── wooden_bed_brown.json
│   │   │   ├── wooden_bed_cyan.json
│   │   │   ├── wooden_bed_gray.json
│   │   │   ├── wooden_bed_green.json
│   │   │   ├── wooden_bed_light_blue.json
│   │   │   ├── wooden_bed_light_gray.json
│   │   │   ├── wooden_bed_lime.json
│   │   │   ├── wooden_bed_magenta.json
│   │   │   ├── wooden_bed_orange.json
│   │   │   ├── wooden_bed_pink.json
│   │   │   ├── wooden_bed_purple.json
│   │   │   ├── wooden_bed_red.json
│   │   │   ├── wooden_bed_white.json
│   │   │   └── wooden_bed_yellow.json
│   │   ├── benches/
│   │   │   ├── bench_acacia.json
│   │   │   ├── bench_birch.json
│   │   │   ├── bench_dark_oak.json
│   │   │   ├── bench_jungle.json
│   │   │   ├── bench_nether.json
│   │   │   ├── bench_oak.json
│   │   │   ├── bench_palm.json
│   │   │   ├── bench_spruce.json
│   │   │   ├── bench_tainted.json
│   │   │   └── bench_volcano.json
│   │   ├── bookcases/
│   │   │   ├── bookcase_acacia.json
│   │   │   ├── bookcase_birch.json
│   │   │   ├── bookcase_dark_oak.json
│   │   │   ├── bookcase_jungle.json
│   │   │   ├── bookcase_nether.json
│   │   │   ├── bookcase_oak.json
│   │   │   ├── bookcase_palm.json
│   │   │   ├── bookcase_spruce.json
│   │   │   ├── bookcase_tainted.json
│   │   │   └── bookcase_volcano.json
│   │   ├── bosses/
│   │   │   ├── nether_altar.json
│   │   │   └── snow_glass_ball.json
│   │   ├── cabinet/
│   │   │   ├── cabinet_acacia.json
│   │   │   ├── cabinet_birch.json
│   │   │   ├── cabinet_dark_oak.json
│   │   │   ├── cabinet_jungle.json
│   │   │   ├── cabinet_nether.json
│   │   │   ├── cabinet_oak.json
│   │   │   ├── cabinet_palm.json
│   │   │   ├── cabinet_spruce.json
│   │   │   ├── cabinet_tainted.json
│   │   │   └── cabinet_volcano.json
│   │   ├── chairs/
│   │   │   ├── chair_acacia.json
│   │   │   ├── chair_birch.json
│   │   │   ├── chair_dark_oak.json
│   │   │   ├── chair_jungle.json
│   │   │   ├── chair_nether.json
│   │   │   ├── chair_oak.json
│   │   │   ├── chair_palm.json
│   │   │   ├── chair_spruce.json
│   │   │   ├── chair_tainted.json
│   │   │   └── chair_volcano.json
│   │   ├── chests/
│   │   │   ├── barrel.json
│   │   │   ├── chest.json
│   │   │   ├── ender_chest.json
│   │   │   ├── nether_chest.json
│   │   │   ├── shulker_box.json
│   │   │   ├── stone_chest.json
│   │   │   └── trapped_chest.json
│   │   ├── doors/
│   │   │   ├── door_nether.json
│   │   │   ├── door_nether_open.json
│   │   │   ├── iron_door.json
│   │   │   ├── iron_door_open.json
│   │   │   ├── wooden_door_acacia.json
│   │   │   ├── wooden_door_acacia_open.json
│   │   │   ├── wooden_door_birch.json
│   │   │   ├── wooden_door_birch_open.json
│   │   │   ├── wooden_door_dark_oak.json
│   │   │   ├── wooden_door_dark_oak_open.json
│   │   │   ├── wooden_door_jungle.json
│   │   │   ├── wooden_door_jungle_open.json
│   │   │   ├── wooden_door_oak.json
│   │   │   ├── wooden_door_oak_open.json
│   │   │   ├── wooden_door_palm.json
│   │   │   ├── wooden_door_palm_open.json
│   │   │   ├── wooden_door_spruce.json
│   │   │   ├── wooden_door_spruce_open.json
│   │   │   ├── wooden_door_tainted.json
│   │   │   ├── wooden_door_tainted_open.json
│   │   │   ├── wooden_door_volcano.json
│   │   │   └── wooden_door_volcano_open.json
│   │   ├── farms/
│   │   │   ├── carrot.json
│   │   │   ├── melon_stem.json
│   │   │   ├── nether_wart.json
│   │   │   ├── potato.json
│   │   │   ├── pumpkin.json
│   │   │   ├── pumpkin_carved.json
│   │   │   ├── pumpkin_stem.json
│   │   │   ├── sugar_cane.json
│   │   │   ├── watermelon.json
│   │   │   └── wheat.json
│   │   ├── flowers/
│   │   │   ├── allium.json
│   │   │   ├── azure_bluet.json
│   │   │   ├── blue_orchid.json
│   │   │   ├── dandelion.json
│   │   │   ├── fern.json
│   │   │   ├── lilac.json
│   │   │   ├── orange_tulip.json
│   │   │   ├── peony.json
│   │   │   ├── pink_tulip.json
│   │   │   ├── poppy.json
│   │   │   ├── red_tulip.json
│   │   │   ├── rose_bush.json
│   │   │   ├── sunflower.json
│   │   │   └── white_tulip.json
│   │   ├── grasses/
│   │   │   ├── blood_grass.json
│   │   │   ├── eyeball_grass.json
│   │   │   ├── grass.json
│   │   │   ├── large_eyeball_grass.json
│   │   │   └── tainted_grass.json
│   │   ├── lightings/
│   │   │   ├── candle.json
│   │   │   ├── candle_holder.json
│   │   │   ├── chandeliers.json
│   │   │   ├── fire_lamp.json
│   │   │   ├── jack_o_lantern.json
│   │   │   ├── lantern.json
│   │   │   └── nether_lamp.json
│   │   ├── misc/
│   │   │   ├── anvil.json
│   │   │   ├── book.json
│   │   │   ├── brewing_stand.json
│   │   │   ├── cake.json
│   │   │   ├── campfire.json
│   │   │   ├── cauldron.json
│   │   │   ├── cobweb.json
│   │   │   ├── crafting_table.json
│   │   │   ├── enchantment_table.json
│   │   │   ├── flower_pot.json
│   │   │   ├── flower_pot_large.json
│   │   │   ├── furnace.json
│   │   │   ├── health_crystal.json
│   │   │   ├── jukebox.json
│   │   │   ├── pot.json
│   │   │   ├── potion.json
│   │   │   ├── sign.json
│   │   │   ├── skull.json
│   │   │   └── thorn.json
│   │   ├── mushrooms/
│   │   │   ├── brown_mushroom.json
│   │   │   ├── glowing_mushroom.json
│   │   │   ├── large_brown_mushroom.json
│   │   │   ├── large_poison_mushroom.json
│   │   │   ├── large_red_mushroom.json
│   │   │   ├── poison_mushroom.json
│   │   │   └── red_mushroom.json
│   │   ├── paintings/
│   │   │   ├── painting.json
│   │   │   ├── painting_2x2.json
│   │   │   ├── painting_2x4.json
│   │   │   ├── painting_4x2.json
│   │   │   ├── painting_4x4.json
│   │   │   ├── painting_8x4.json
│   │   │   ├── painting_8x6.json
│   │   │   └── painting_8x8.json
│   │   ├── plants/
│   │   │   └── bush.json
│   │   ├── redstones/
│   │   │   ├── daylight_sensor.json
│   │   │   ├── daylight_sensor_inverted.json
│   │   │   ├── dispenser.json
│   │   │   ├── lever.json
│   │   │   ├── pressure_plates/
│   │   │   │   ├── pressure_plate_golden.json
│   │   │   │   ├── pressure_plate_iron.json
│   │   │   │   ├── pressure_plate_stone.json
│   │   │   │   └── pressure_plate_wooden.json
│   │   │   ├── redstone_lamp.json
│   │   │   ├── stone_button.json
│   │   │   └── wooden_button.json
│   │   ├── rocks/
│   │   │   ├── rock.json
│   │   │   └── rock_waste.json
│   │   ├── saplings/
│   │   │   ├── sapling_acacia.json
│   │   │   ├── sapling_bare_oak.json
│   │   │   ├── sapling_birch.json
│   │   │   ├── sapling_cactus.json
│   │   │   ├── sapling_dark_oak.json
│   │   │   ├── sapling_jungle.json
│   │   │   ├── sapling_oak.json
│   │   │   ├── sapling_palm.json
│   │   │   ├── sapling_spruce.json
│   │   │   ├── sapling_tainted.json
│   │   │   └── sapling_volcano.json
│   │   ├── seas/
│   │   │   ├── coral.json
│   │   │   ├── kelp.json
│   │   │   ├── sea_grass.json
│   │   │   └── sea_shell.json
│   │   ├── small_trees/
│   │   │   ├── small_tree_desert.json
│   │   │   ├── small_tree_normal.json
│   │   │   ├── small_tree_snowy.json
│   │   │   ├── small_tree_tainted.json
│   │   │   └── small_tree_waste.json
│   │   ├── stabs/
│   │   │   ├── stab_hanging_tainted.json
│   │   │   └── stab_tainted.json
│   │   ├── stalactites/
│   │   │   ├── stalactite_andesite.json
│   │   │   ├── stalactite_desert.json
│   │   │   ├── stalactite_diorite.json
│   │   │   ├── stalactite_granite.json
│   │   │   ├── stalactite_hanging_andesite.json
│   │   │   ├── stalactite_hanging_desert.json
│   │   │   ├── stalactite_hanging_diorite.json
│   │   │   ├── stalactite_hanging_granite.json
│   │   │   ├── stalactite_hanging_ice.json
│   │   │   ├── stalactite_hanging_small_andesite.json
│   │   │   ├── stalactite_hanging_small_desert.json
│   │   │   ├── stalactite_hanging_small_diorite.json
│   │   │   ├── stalactite_hanging_small_granite.json
│   │   │   ├── stalactite_hanging_small_ice.json
│   │   │   ├── stalactite_hanging_small_stone.json
│   │   │   ├── stalactite_hanging_small_tainted.json
│   │   │   ├── stalactite_hanging_small_waste.json
│   │   │   ├── stalactite_hanging_stone.json
│   │   │   ├── stalactite_hanging_tainted.json
│   │   │   ├── stalactite_hanging_waste.json
│   │   │   ├── stalactite_ice.json
│   │   │   ├── stalactite_small_andesite.json
│   │   │   ├── stalactite_small_desert.json
│   │   │   ├── stalactite_small_diorite.json
│   │   │   ├── stalactite_small_granite.json
│   │   │   ├── stalactite_small_ice.json
│   │   │   ├── stalactite_small_stone.json
│   │   │   ├── stalactite_small_tainted.json
│   │   │   ├── stalactite_small_waste.json
│   │   │   ├── stalactite_stone.json
│   │   │   ├── stalactite_tainted.json
│   │   │   └── stalactite_waste.json
│   │   ├── stone_decoses/
│   │   │   ├── stone_decos_ice.json
│   │   │   ├── stone_decos_mossy.json
│   │   │   ├── stone_decos_normal.json
│   │   │   ├── stone_decos_tainted.json
│   │   │   └── stone_decos_waste.json
│   │   ├── stone_pillars/
│   │   │   ├── stone_pillar_desert.json
│   │   │   ├── stone_pillar_ice.json
│   │   │   ├── stone_pillar_normal.json
│   │   │   └── stone_pillar_tainted.json
│   │   ├── tables/
│   │   │   ├── table_acacia.json
│   │   │   ├── table_birch.json
│   │   │   ├── table_dark_oak.json
│   │   │   ├── table_jungle.json
│   │   │   ├── table_nether.json
│   │   │   ├── table_oak.json
│   │   │   ├── table_palm.json
│   │   │   ├── table_spruce.json
│   │   │   ├── table_tainted.json
│   │   │   └── table_volcano.json
│   │   ├── tentacles/
│   │   │   ├── flesh_tentacle.json
│   │   │   └── flesh_tentacle_hanging.json
│   │   ├── torches/
│   │   │   ├── blue_torch.json
│   │   │   ├── end_rod.json
│   │   │   ├── green_torch.json
│   │   │   ├── red_torch.json
│   │   │   ├── redstone_torch.json
│   │   │   ├── torch.json
│   │   │   ├── white_torch.json
│   │   │   └── yellow_torch.json
│   │   └── vines/
│   │       ├── eyeball_vine.json
│   │       ├── tainted_vine.json
│   │       └── vine.json
│   └── tiles/
│       ├── andesites/
│       │   ├── andesite.json
│       │   └── andesite_polished.json
│       ├── auroras/
│       │   ├── aurora_block.json
│       │   └── aurora_pillar.json
│       ├── diorites/
│       │   ├── diorite.json
│       │   └── diorite_polished.json
│       ├── ends/
│       │   ├── end_stone.json
│       │   └── end_stone_brick.json
│       ├── fences/
│       │   ├── cobblestone_fence.json
│       │   ├── fence_acacia.json
│       │   ├── fence_birch.json
│       │   ├── fence_dark_oak.json
│       │   ├── fence_jungle.json
│       │   ├── fence_nether.json
│       │   ├── fence_oak.json
│       │   ├── fence_palm.json
│       │   ├── fence_spruce.json
│       │   ├── fence_tainted.json
│       │   ├── fence_volcano.json
│       │   ├── iron_bar.json
│       │   └── mossy_cobblestone_fence.json
│       ├── fleshes/
│       │   ├── flesh_dirt.json
│       │   ├── flesh_gut.json
│       │   └── flesh_stone.json
│       ├── glasses/
│       │   ├── glass.json
│       │   ├── stained_glass_black.json
│       │   ├── stained_glass_blue.json
│       │   ├── stained_glass_brown.json
│       │   ├── stained_glass_cyan.json
│       │   ├── stained_glass_gray.json
│       │   ├── stained_glass_green.json
│       │   ├── stained_glass_light_blue.json
│       │   ├── stained_glass_light_gray.json
│       │   ├── stained_glass_lime.json
│       │   ├── stained_glass_magenta.json
│       │   ├── stained_glass_orange.json
│       │   ├── stained_glass_pink.json
│       │   ├── stained_glass_purple.json
│       │   ├── stained_glass_red.json
│       │   ├── stained_glass_white.json
│       │   └── stained_glass_yellow.json
│       ├── granites/
│       │   ├── granite.json
│       │   └── granite_polished.json
│       ├── ices/
│       │   ├── blue_ice.json
│       │   ├── ice.json
│       │   ├── ice_brick.json
│       │   ├── ice_cobblestone.json
│       │   ├── ice_packed.json
│       │   └── ice_thin.json
│       ├── misc/
│       │   ├── bedrock.json
│       │   ├── bone_block.json
│       │   ├── brick.json
│       │   ├── clay.json
│       │   ├── coarse_dirt.json
│       │   ├── dirt.json
│       │   ├── dirt.mdp
│       │   ├── dirt2.mdp
│       │   ├── dried_kelp_block.json
│       │   ├── farmland.json
│       │   ├── gravel.json
│       │   ├── hay_bale.json
│       │   ├── obsidian.json
│       │   ├── slime_block.json
│       │   └── tnt.json
│       ├── mushrooms/
│       │   ├── brown_mushroom_block.json
│       │   ├── mushroom_stem.json
│       │   ├── mycelium.json
│       │   └── red_mushroom_block.json
│       ├── nethers/
│       │   ├── glowstone.json
│       │   ├── nether_brick.json
│       │   ├── netherrack.json
│       │   ├── red_nether_brick.json
│       │   └── soul_sand.json
│       ├── ore_blocks/
│       │   ├── block_coal.json
│       │   ├── block_diamond.json
│       │   ├── block_emerald.json
│       │   ├── block_gold.json
│       │   ├── block_iron.json
│       │   ├── block_lapis.json
│       │   ├── block_netherite.json
│       │   ├── block_quartz.json
│       │   └── block_redstone.json
│       ├── ores/
│       │   ├── ore_ancient_debris.json
│       │   ├── ore_coal.json
│       │   ├── ore_copper.json
│       │   ├── ore_diamond.json
│       │   ├── ore_emerald.json
│       │   ├── ore_gold.json
│       │   ├── ore_iron.json
│       │   ├── ore_lapis.json
│       │   ├── ore_lead.json
│       │   ├── ore_nether_quartz.json
│       │   ├── ore_redstone.json
│       │   ├── ore_silver.json
│       │   └── ore_tin.json
│       ├── planks/
│       │   ├── plank_acacia.json
│       │   ├── plank_birch.json
│       │   ├── plank_dark_oak.json
│       │   ├── plank_jungle.json
│       │   ├── plank_oak.json
│       │   ├── plank_palm.json
│       │   ├── plank_spruce.json
│       │   ├── plank_tainted.json
│       │   └── plank_volcano.json
│       ├── platforms/
│       │   ├── platform_acacia.json
│       │   ├── platform_birch.json
│       │   ├── platform_dark_oak.json
│       │   ├── platform_end_stone.json
│       │   ├── platform_jungle.json
│       │   ├── platform_nether_brick.json
│       │   ├── platform_oak.json
│       │   ├── platform_palm.json
│       │   ├── platform_prismarine.json
│       │   ├── platform_prismarine_dark.json
│       │   ├── platform_purpur.json
│       │   ├── platform_quartz.json
│       │   ├── platform_red_sand_stone.json
│       │   ├── platform_sandstone.json
│       │   ├── platform_spruce.json
│       │   ├── platform_stone_brick.json
│       │   ├── platform_tainted.json
│       │   └── platform_volcano.json
│       ├── prismarines/
│       │   ├── prismarine.json
│       │   ├── prismarine_brick.json
│       │   ├── prismarine_dark.json
│       │   ├── prismarine_mud.json
│       │   └── sea_lantern.json
│       ├── purpurs/
│       │   └── purpur_block.json
│       ├── red_sands/
│       │   ├── red_sand.json
│       │   ├── red_sand_carved.json
│       │   ├── red_sand_smooth.json
│       │   └── red_sand_stone.json
│       ├── sands/
│       │   ├── sand.json
│       │   ├── sandstone.json
│       │   ├── sandstone_carved.json
│       │   └── sandstone_smooth.json
│       ├── snows/
│       │   ├── snow.json
│       │   └── snow_brick.json
│       ├── sponges/
│       │   ├── sponge.json
│       │   └── wet_sponge.json
│       ├── stones/
│       │   ├── cobblestone.json
│       │   ├── cobblestone_mossy.json
│       │   ├── stone.json
│       │   ├── stone_brick.json
│       │   ├── stone_brick_carved.json
│       │   ├── stone_brick_cracked.json
│       │   └── stone_brick_mossy.json
│       ├── tainted/
│       │   ├── tainted_dirt.json
│       │   └── tainted_stone.json
│       ├── terracottas/
│       │   ├── terracotta_black.json
│       │   ├── terracotta_blue.json
│       │   ├── terracotta_brown.json
│       │   ├── terracotta_cyan.json
│       │   ├── terracotta_gray.json
│       │   ├── terracotta_green.json
│       │   ├── terracotta_light_blue.json
│       │   ├── terracotta_light_gray.json
│       │   ├── terracotta_lime.json
│       │   ├── terracotta_magenta.json
│       │   ├── terracotta_orange.json
│       │   ├── terracotta_pink.json
│       │   ├── terracotta_purple.json
│       │   ├── terracotta_red.json
│       │   ├── terracotta_white.json
│       │   └── terracotta_yellow.json
│       ├── test/
│       │   ├── blue_mushroom.json
│       │   ├── blue_mushroom_dirt.json
│       │   ├── blue_mushroom_stem.json
│       │   ├── ice_cobblestone_hard.json
│       │   ├── large_blue_mushroom.json
│       │   ├── lava_block_pile.json
│       │   ├── pile_cobblestone.json
│       │   ├── snow_soft.json
│       │   ├── volcano_burn_stone.json
│       │   └── volcano_cobblestone.json
│       ├── volcanos/
│       │   ├── magma_block.json
│       │   ├── volcano_dirt.json
│       │   └── volcano_stone.json
│       ├── woods/
│       │   ├── wood_acacia.json
│       │   ├── wood_birch.json
│       │   ├── wood_dark_oak.json
│       │   ├── wood_jungle.json
│       │   ├── wood_oak.json
│       │   ├── wood_palm.json
│       │   ├── wood_spruce.json
│       │   ├── wood_stripped_acacia.json
│       │   ├── wood_stripped_birch.json
│       │   ├── wood_stripped_dark_oak.json
│       │   ├── wood_stripped_jungle.json
│       │   ├── wood_stripped_oak.json
│       │   ├── wood_stripped_palm.json
│       │   ├── wood_stripped_spruce.json
│       │   ├── wood_stripped_tainted.json
│       │   ├── wood_stripped_volcano.json
│       │   ├── wood_tainted.json
│       │   └── wood_volcano.json
│       └── wools/
│           ├── wool_black.json
│           ├── wool_blue.json
│           ├── wool_brown.json
│           ├── wool_cyan.json
│           ├── wool_gray.json
│           ├── wool_green.json
│           ├── wool_light_blue.json
│           ├── wool_light_gray.json
│           ├── wool_lime.json
│           ├── wool_magenta.json
│           ├── wool_orange.json
│           ├── wool_pink.json
│           ├── wool_purple.json
│           ├── wool_red.json
│           ├── wool_white.json
│           └── wool_yellow.json
├── bone2d/
│   ├── ItemJointHelper.lua
│   ├── NpcHumanAnimator.lua
│   ├── NpcHumanBoneInfo.lua
│   ├── NpcHumanClips.lua
│   ├── NpcHumanJoints.lua
│   ├── NpcHumanJointsTall.lua
│   ├── PlayerAnimator.lua
│   ├── PlayerBoneInfo.lua
│   ├── PlayerClips.lua
│   └── PlayerJoints.lua
├── buffs/
│   ├── BaseBuffProxy.lua
│   ├── BuffBlindness.lua
│   ├── BuffFire.lua
│   ├── BuffGlowing.lua
│   ├── BuffHappiness.lua
│   ├── BuffHealthBoost.lua
│   ├── BuffHunger.lua
│   ├── BuffHurt.lua
│   ├── BuffInvisibility.lua
│   ├── BuffJumpBoost.lua
│   ├── BuffLevitation.lua
│   ├── BuffMiningFatigue.lua
│   ├── BuffPoison.lua
│   ├── BuffProxies.lua
│   ├── BuffRegeneration.lua
│   ├── BuffResistance.lua
│   ├── BuffSadness.lua
│   ├── BuffSlowFalling.lua
│   ├── BuffSlowMining.lua
│   ├── BuffSlowness.lua
│   ├── BuffSpeed.lua
│   ├── BuffStrength.lua
│   ├── BuffVision.lua
│   ├── BuffWeak.lua
│   ├── BuffWither.lua
│   ├── absorption.json
│   ├── blindness.json
│   ├── fire.json
│   ├── fire_defense.json
│   ├── glowing.json
│   ├── happiness.json
│   ├── health_boost.json
│   ├── health_cold.json
│   ├── hunger.json
│   ├── hurt.json
│   ├── invisibility.json
│   ├── jump_boost.json
│   ├── levitation.json
│   ├── luck.json
│   ├── mining_fatique.json
│   ├── nausea.json
│   ├── poison.json
│   ├── regeneration.json
│   ├── resistance.json
│   ├── sadness.json
│   ├── slow_falling.json
│   ├── slow_mining.json
│   ├── slowness.json
│   ├── speed.json
│   ├── strength.json
│   ├── vision.json
│   ├── water_breathing.json
│   ├── weak.json
│   └── wither.json
├── buildings/
│   ├── aurora_palace/
│   │   └── aurora_palace.json
│   ├── by_house/
│   │   └── by_house.json
│   ├── desert_house/
│   │   └── desert_house.json
│   ├── end_outpost/
│   │   └── end_outpost.json
│   ├── forest_house/
│   │   └── forest_house.json
│   ├── fossils/
│   │   └── fossils.json
│   ├── heart/
│   │   └── heart.json
│   ├── jungle_temple/
│   │   └── jungle_temple.json
│   ├── mineshaft/
│   │   └── mineshaft.json
│   ├── mini_house/
│   │   └── mini_house.json
│   ├── monument_ocean/
│   │   └── monument_ocean.json
│   ├── nether_fortress/
│   │   └── nether_fortress.json
│   ├── pyramid/
│   │   └── pyramid.json
│   ├── under_dark_oak_cabin/
│   │   └── under_dark_oak_cabin.json
│   ├── under_desert_cabin/
│   │   └── under_desert_cabin.json
│   ├── under_jungle_cabin/
│   │   └── under_jungle_cabin.json
│   ├── under_oak_cabin/
│   │   └── under_oak_cabin.json
│   ├── under_spruce_cabin/
│   │   └── under_spruce_cabin.json
│   ├── under_stone_cabin/
│   │   └── under_stone_cabin.json
│   └── under_tainted_cabin/
│       └── under_tainted_cabin.json
├── client/
│   ├── CameraInGame.lua
│   ├── ControlAimMode.lua
│   ├── InputControl.lua
│   ├── MenuJoinInfo.lua
│   ├── ModClient.lua
│   ├── ModMusicSceneProxy.lua
│   ├── MusicCopyright.lua
│   ├── MusicPool.lua
│   ├── MusicScene.lua
│   ├── MusicSceneProxy.lua
│   └── MusicSystem.lua
├── constants/
│   └── Constants.lua
├── contents/
│   ├── IGNORE_THIS_FOLDER.txt
│   └── commands/
│       ├── admin.json
│       ├── admin.lua
│       ├── autosave-off.json
│       ├── autosave-on.json
│       ├── autosaveoff.lua
│       ├── autosaveon.lua
│       ├── banip.json
│       ├── banip.lua
│       ├── blacklist.json
│       ├── blacklist.lua
│       ├── blueyoshiiscool.json
│       ├── buff.json
│       ├── buff.lua
│       ├── buffp.json
│       ├── byiscool.lua
│       ├── clear.json
│       ├── clear.lua
│       ├── clearp.json
│       ├── day.json
│       ├── day.lua
│       ├── dayf.json
│       ├── dayf.lua
│       ├── daylock.json
│       ├── daylock.lua
│       ├── dayspeed.json
│       ├── dayspeed.lua
│       ├── dayunlock.json
│       ├── dayunlock.lua
│       ├── effect.json
│       ├── effect.lua
│       ├── enchant.json
│       ├── enchant.lua
│       ├── ex.json
│       ├── ex.lua
│       ├── exp.json
│       ├── gamemode.json
│       ├── gamemodep.json
│       ├── gamemodep.lua
│       ├── gamemodew.json
│       ├── gamemodew.lua
│       ├── give.json
│       ├── give.lua
│       ├── givep.json
│       ├── home.json
│       ├── home.lua
│       ├── kick.json
│       ├── kick.lua
│       ├── kickall.json
│       ├── kickall.lua
│       ├── kill.json
│       ├── kill.lua
│       ├── killp.json
│       ├── master.json
│       ├── master.lua
│       ├── me.json
│       ├── me.lua
│       ├── msg.json
│       ├── msg.lua
│       ├── noadmin.json
│       ├── noadmin.lua
│       ├── nobanip.json
│       ├── nobanip.lua
│       ├── nomaster.json
│       ├── nomaster.lua
│       ├── npc.json
│       ├── npc.lua
│       ├── players.json
│       ├── players.lua
│       ├── port.json
│       ├── port.lua
│       ├── pvp-off.json
│       ├── pvp-on.json
│       ├── pvpoff.lua
│       ├── pvpon.lua
│       ├── safeblow-off.json
│       ├── safeblow-on.json
│       ├── safeblowoff.lua
│       ├── safeblowon.lua
│       ├── save.json
│       ├── save.lua
│       ├── say.json
│       ├── say.lua
│       ├── spawn.json
│       ├── spawn.lua
│       ├── state.json
│       ├── stopwea.json
│       ├── stopwea.lua
│       ├── tp.json
│       ├── tp.lua
│       ├── tpp.json
│       ├── wea.json
│       └── wea.lua
├── data/
│   ├── backgrounds.json
│   ├── block_config.json
│   ├── item_config.json
│   ├── sound_config.json
│   └── sounds.json
├── effect_ai/
│   ├── Explosion.json
│   ├── GlowingFlow.json
│   ├── Gore.json
│   └── Smoke.json
├── effects/
│   ├── arrow_paticular.json
│   ├── chasting_word.json
│   ├── chip.json
│   ├── chip_fast.json
│   ├── circle.json
│   ├── ender_flash.json
│   ├── exp_paticular.json
│   ├── explosion.json
│   ├── fallen_flame_star.json
│   ├── fire.json
│   ├── fire_flame.json
│   ├── fire_flame_long.json
│   ├── fire_smoke.json
│   ├── flame_star.json
│   ├── flash.json
│   ├── flash2.json
│   ├── flow_particular.json
│   ├── gores/
│   │   ├── gore_angry_skeleton.json
│   │   ├── gore_arrow_zombie.json
│   │   ├── gore_bald_zombie.json
│   │   ├── gore_bat.json
│   │   ├── gore_black_rabbit.json
│   │   ├── gore_black_skeleton.json
│   │   ├── gore_blood_bat.json
│   │   ├── gore_blood_eye.json
│   │   ├── gore_blood_skeleton.json
│   │   ├── gore_bone_lee.json
│   │   ├── gore_bone_officer.json
│   │   ├── gore_bone_sniper.json
│   │   ├── gore_boney_skeleton.json
│   │   ├── gore_brown_mushroom_cow.json
│   │   ├── gore_brown_rabbit.json
│   │   ├── gore_chicken.json
│   │   ├── gore_cow.json
│   │   ├── gore_creeper.json
│   │   ├── gore_cursed_skull.json
│   │   ├── gore_dark_mage.json
│   │   ├── gore_dead_mage.json
│   │   ├── gore_doge_zombie.json
│   │   ├── gore_dolphin.json
│   │   ├── gore_drowned.json
│   │   ├── gore_dungeon_creeper.json
│   │   ├── gore_dungeon_knight.json
│   │   ├── gore_eagle.json
│   │   ├── gore_enderman.json
│   │   ├── gore_evil.json
│   │   ├── gore_evoker.json
│   │   ├── gore_eye_guard.json
│   │   ├── gore_eye_guard_laser.json
│   │   ├── gore_flower_creeper.json
│   │   ├── gore_fly_eye.json
│   │   ├── gore_fly_mouth.json
│   │   ├── gore_fly_skeleton.json
│   │   ├── gore_giant_cursed_skull.json
│   │   ├── gore_grass_walker.json
│   │   ├── gore_grim_reaper.json
│   │   ├── gore_husk.json
│   │   ├── gore_ice_sprite_girl.json
│   │   ├── gore_iron_zombie.json
│   │   ├── gore_jungle_bat.json
│   │   ├── gore_large_bat.json
│   │   ├── gore_large_jungle_bat.json
│   │   ├── gore_large_spider.json
│   │   ├── gore_lava_snake_body.json
│   │   ├── gore_lava_snake_head.json
│   │   ├── gore_lava_snake_tail.json
│   │   ├── gore_mad_skeleton.json
│   │   ├── gore_mad_skeleton_armed.json
│   │   ├── gore_mad_skeleton_tall.json
│   │   ├── gore_mad_skeleton_tall_armed.json
│   │   ├── gore_mad_skeleton_tall_helmet_armed.json
│   │   ├── gore_magma_birdo.json
│   │   ├── gore_man_eater.json
│   │   ├── gore_mummy.json
│   │   ├── gore_paimon.json
│   │   ├── gore_phantom.json
│   │   ├── gore_pig.json
│   │   ├── gore_ragged_mage.json
│   │   ├── gore_red_mage.json
│   │   ├── gore_red_mushroom_cow.json
│   │   ├── gore_red_phantom.json
│   │   ├── gore_rock_man.json
│   │   ├── gore_sheep.json
│   │   ├── gore_shulker.json
│   │   ├── gore_skeleton_assaulter.json
│   │   ├── gore_skeleton_blue_armed.json
│   │   ├── gore_skeleton_blue_armed_masked.json
│   │   ├── gore_skeleton_blue_knight.json
│   │   ├── gore_skeleton_fire_armed.json
│   │   ├── gore_skeleton_fire_armed_swordsman.json
│   │   ├── gore_skeleton_guard.json
│   │   ├── gore_skeleton_kid.json
│   │   ├── gore_skull.json
│   │   ├── gore_small_hell_eater.json
│   │   ├── gore_snow_guner.json
│   │   ├── gore_spider.json
│   │   ├── gore_squid.json
│   │   ├── gore_tainted_creeper.json
│   │   ├── gore_tainted_skeleton.json
│   │   ├── gore_turtle.json
│   │   ├── gore_undead_miner.json
│   │   ├── gore_vampire_miner.json
│   │   ├── gore_villager_zombie.json
│   │   ├── gore_waste_mummy.json
│   │   ├── gore_white_rabbit.json
│   │   ├── gore_wither_skeleton.json
│   │   ├── gore_worm_body.json
│   │   ├── gore_worm_head.json
│   │   ├── gore_worm_tail.json
│   │   ├── gore_yellow_rabbit.json
│   │   ├── gore_zombie.json
│   │   └── gore_zombie_pigman.json
│   ├── heal.json
│   ├── laser_flash.json
│   ├── liquid_paticular.json
│   ├── poison.json
│   ├── pot_break.json
│   ├── redstone_smoke.json
│   ├── smoke.json
│   ├── star.json
│   └── white_smoke.json
├── enchantments/
│   ├── BaseEnchantmentProxy.lua
│   ├── EnchantmentAquaAffinity.lua
│   ├── EnchantmentBlastProtection.lua
│   ├── EnchantmentDepthStrider.lua
│   ├── EnchantmentFeatherFalling.lua
│   ├── EnchantmentFireProtection.lua
│   ├── EnchantmentFrostWalker.lua
│   ├── EnchantmentKnockBack.lua
│   ├── EnchantmentPhyton.lua
│   ├── EnchantmentProjectileProtection.lua
│   ├── EnchantmentProtection.lua
│   ├── EnchantmentProxies.lua
│   ├── EnchantmentRespiration.lua
│   ├── EnchantmentSharpness.lua
│   ├── EnchantmentThorns.lua
│   ├── aqua_affinity.json
│   ├── bane_of_arthropods.json
│   ├── blast_protection.json
│   ├── curse_of_binding.json
│   ├── curse_of_vanishing.json
│   ├── depth_strider.json
│   ├── efficiency.json
│   ├── feather_falling.json
│   ├── fire_aspect.json
│   ├── fire_protection.json
│   ├── flame.json
│   ├── fortune.json
│   ├── frost_walker.json
│   ├── infinity.json
│   ├── knockback.json
│   ├── looting.json
│   ├── luck_of_the_sea.json
│   ├── lure.json
│   ├── multishot.json
│   ├── phyton.json
│   ├── piercing.json
│   ├── power.json
│   ├── projectile_protection.json
│   ├── protection.json
│   ├── punch.json
│   ├── quick_charge.json
│   ├── respiration.json
│   ├── sharpness.json
│   ├── silk_touch.json
│   ├── smite.json
│   ├── thorns.json
│   └── unbreaking.json
├── game_debug.json
├── init.lua
├── item_ai/
│   ├── Axe.json
│   ├── Axe.lua
│   ├── BaseAccessory.lua
│   ├── BaseRangedWeapon.lua
│   ├── BaseTool.lua
│   ├── BlueTalisman.json
│   ├── BlueTalisman.lua
│   ├── BossCaller.json
│   ├── BossCaller.lua
│   ├── Bow.json
│   ├── Bow.lua
│   ├── CrisonEye.json
│   ├── CrisonEye.lua
│   ├── DungeonEater.json
│   ├── DungeonEater.lua
│   ├── EnderMirror.json
│   ├── EnderMirror.lua
│   ├── Food.json
│   ├── Food.lua
│   ├── Gun.json
│   ├── Gun.lua
│   ├── InfBow.json
│   ├── InfBow.lua
│   ├── Ingot.json
│   ├── Ingot.lua
│   ├── LavaNecklace.json
│   ├── LavaNecklace.lua
│   ├── LavaSword.json
│   ├── LavaSword.lua
│   ├── LightingTalisman.json
│   ├── LightingTalisman.lua
│   ├── Pickaxe.json
│   ├── Pickaxe.lua
│   ├── Potion.json
│   ├── Potion.lua
│   ├── RedTalisman.json
│   ├── RedTalisman.lua
│   ├── RocketBoost.json
│   ├── RocketBoost.lua
│   ├── Staff.json
│   ├── Staff.lua
│   ├── Sword.json
│   ├── Sword.lua
│   ├── Torch.json
│   ├── Torch.lua
│   ├── cross_bow.json
│   ├── cross_bow.lua
│   ├── dirt.json
│   ├── dirt.lua
│   ├── drill.json
│   ├── drill.lua
│   ├── fire_gun.json
│   ├── fishing_rod.json
│   ├── fishing_rod.lua
│   ├── laser_gun.json
│   ├── magic_sword.json
│   ├── rocket_launcher.json
│   ├── saw.json
│   ├── swordA.json
│   └── swordA.lua
├── items/
│   ├── accessory/
│   │   ├── blue_talisman.json
│   │   ├── gold_talisman.json
│   │   ├── heart_talisman.json
│   │   ├── lava_necklace.json
│   │   ├── lighting_talisman.json
│   │   └── rocket_boost.json
│   ├── armors/
│   │   ├── ancient/
│   │   │   ├── ancient_chestplate.json
│   │   │   ├── ancient_helmet.json
│   │   │   └── ancient_leggings.json
│   │   ├── bronze/
│   │   │   ├── bronze_chestplate.json
│   │   │   ├── bronze_helmet.json
│   │   │   └── bronze_leggings.json
│   │   ├── copper/
│   │   │   ├── copper_chestplate.json
│   │   │   ├── copper_helmet.json
│   │   │   └── copper_leggings.json
│   │   ├── diamond/
│   │   │   ├── diamond_chestplate.json
│   │   │   ├── diamond_helmet.json
│   │   │   └── diamond_leggings.json
│   │   ├── fine_tin/
│   │   │   ├── fine_tin_chestplate.json
│   │   │   ├── fine_tin_helmet.json
│   │   │   └── fine_tin_leggings.json
│   │   ├── flesh/
│   │   │   ├── flesh_chestplate.json
│   │   │   ├── flesh_helmet.json
│   │   │   └── flesh_leggings.json
│   │   ├── gold/
│   │   │   ├── golden_chestplate.json
│   │   │   ├── golden_helmet.json
│   │   │   └── golden_leggings.json
│   │   ├── iron/
│   │   │   ├── iron_chestplate.json
│   │   │   ├── iron_helmet.json
│   │   │   └── iron_leggings.json
│   │   ├── knight/
│   │   │   ├── knight_chestplate.json
│   │   │   ├── knight_helmet.json
│   │   │   └── knight_leggings.json
│   │   ├── lava/
│   │   │   ├── lava_chestplate.json
│   │   │   ├── lava_helmet.json
│   │   │   └── lava_leggings.json
│   │   ├── lead/
│   │   │   ├── lead_chestplate.json
│   │   │   ├── lead_helmet.json
│   │   │   └── lead_leggings.json
│   │   ├── leather/
│   │   │   ├── leather_chestplate.json
│   │   │   ├── leather_helmet.json
│   │   │   └── leather_leggings.json
│   │   ├── magic_gold/
│   │   │   ├── magic_gold_chestplate.json
│   │   │   ├── magic_gold_helmet.json
│   │   │   └── magic_gold_leggings.json
│   │   ├── magic_shadow/
│   │   │   ├── magic_shadow_chestplate.json
│   │   │   ├── magic_shadow_helmet.json
│   │   │   └── magic_shadow_leggings.json
│   │   ├── magic_silver/
│   │   │   ├── magic_silver_chestplate.json
│   │   │   ├── magic_silver_helmet.json
│   │   │   └── magic_silver_leggings.json
│   │   ├── nether/
│   │   │   ├── nether_chestplate.json
│   │   │   ├── nether_helmet.json
│   │   │   └── nether_leggings.json
│   │   ├── pumpkin/
│   │   │   └── pumpkin_helmet.json
│   │   ├── shadow/
│   │   │   ├── shadow_chestplate.json
│   │   │   ├── shadow_helmet.json
│   │   │   └── shadow_leggings.json
│   │   ├── silver/
│   │   │   ├── silver_chestplate.json
│   │   │   ├── silver_helmet.json
│   │   │   └── silver_leggings.json
│   │   ├── star/
│   │   │   ├── star_chestplate.json
│   │   │   ├── star_helmet.json
│   │   │   └── star_leggings.json
│   │   ├── steel/
│   │   │   ├── steel_chestplate.json
│   │   │   ├── steel_helmet.json
│   │   │   └── steel_leggings.json
│   │   ├── super_diamond/
│   │   │   ├── super_diamond_chestplate.json
│   │   │   ├── super_diamond_helmet.json
│   │   │   └── super_diamond_leggings.json
│   │   └── tin/
│   │       ├── tin_chestplate.json
│   │       ├── tin_helmet.json
│   │       └── tin_leggings.json
│   ├── arrows/
│   │   ├── blood_arrow.json
│   │   ├── blue_arrow.json
│   │   ├── ice_arrow.json
│   │   ├── lighting_arrow.json
│   │   ├── star_arrow.json
│   │   ├── sword_arrow.json
│   │   └── wooden_arrow.json
│   ├── axes/
│   │   ├── bronze_axe.json
│   │   ├── copper_axe.json
│   │   ├── diamond_axe.json
│   │   ├── golden_axe.json
│   │   ├── grass_axe.json
│   │   ├── iron_axe.json
│   │   ├── lead_axe.json
│   │   ├── nether_axe.json
│   │   ├── silver_axe.json
│   │   ├── steel_axe.json
│   │   ├── stone_axe.json
│   │   ├── tin_axe.json
│   │   └── wooden_axe.json
│   ├── bombs/
│   │   ├── bomb.json
│   │   ├── glow_bomb.json
│   │   └── grenade.json
│   ├── boomerangs/
│   │   ├── boomerang.json
│   │   ├── fire_boomerang.json
│   │   └── wooden_boomerang.json
│   ├── bows/
│   │   ├── blood_bow.json
│   │   ├── blue_shot_bow.json
│   │   ├── blue_stone_bow.json
│   │   ├── chast_bow.json
│   │   ├── cross_bow.json
│   │   ├── curse_bow.json
│   │   ├── ice_bow.json
│   │   ├── lighting_bow.json
│   │   ├── shot_bow.json
│   │   ├── super_cross_bow.json
│   │   ├── super_fire_shot_bow.json
│   │   ├── super_spike_shot_bow.json
│   │   └── wooden_bow.json
│   ├── buckets/
│   │   ├── bucket_empty.json
│   │   ├── bucket_lava.json
│   │   ├── bucket_milk.json
│   │   └── bucket_water.json
│   ├── bullets/
│   │   ├── fire_bullet.json
│   │   ├── iron_bullet.json
│   │   └── silver_bullet.json
│   ├── dyes/
│   │   ├── dye_black.json
│   │   ├── dye_blue.json
│   │   ├── dye_brown.json
│   │   ├── dye_cyan.json
│   │   ├── dye_gray.json
│   │   ├── dye_green.json
│   │   ├── dye_light_blue.json
│   │   ├── dye_light_gray.json
│   │   ├── dye_lime.json
│   │   ├── dye_magenta.json
│   │   ├── dye_orange.json
│   │   ├── dye_pink.json
│   │   ├── dye_purple.json
│   │   ├── dye_red.json
│   │   ├── dye_white.json
│   │   └── dye_yellow.json
│   ├── foods/
│   │   ├── apple.json
│   │   ├── baked_potato.json
│   │   ├── beetroot.json
│   │   ├── bread.json
│   │   ├── cake_piece.json
│   │   ├── carrot.json
│   │   ├── chorus_fruit.json
│   │   ├── cooked_chicken.json
│   │   ├── cooked_cod.json
│   │   ├── cooked_mutton.json
│   │   ├── cooked_porkchop.json
│   │   ├── cooked_rabbit.json
│   │   ├── cooked_salmon.json
│   │   ├── cookie.json
│   │   ├── golden_apple.json
│   │   ├── golden_carrot.json
│   │   ├── melon_slice.json
│   │   ├── mushroom_stew.json
│   │   ├── potato.json
│   │   ├── pufferfish.json
│   │   ├── pumpkin_pie.json
│   │   ├── raw_beef.json
│   │   ├── raw_chicken.json
│   │   ├── raw_cod.json
│   │   ├── raw_mutton.json
│   │   ├── raw_porkchop.json
│   │   ├── raw_rabbit.json
│   │   ├── raw_salmon.json
│   │   └── steak.json
│   ├── guns/
│   │   ├── fire_gun.json
│   │   ├── fire_shooter.json
│   │   ├── handgun.json
│   │   ├── rifle.json
│   │   ├── rocket_launcher.json
│   │   ├── shotgun.json
│   │   └── sniper.json
│   ├── hoes/
│   │   ├── stone_hoe.json
│   │   └── wooden_hoe.json
│   ├── ingots/
│   │   ├── aluminum_ingot.json
│   │   ├── antimony_ingot.json
│   │   ├── beryllium_ingot.json
│   │   ├── bismuth_ingot.json
│   │   ├── bronze_ingot.json
│   │   ├── chromium_ingot.json
│   │   ├── cobalt_ingot.json
│   │   ├── copper_ingot.json
│   │   ├── gallium_ingot.json
│   │   ├── gold_ingot.json
│   │   ├── indium_ingot.json
│   │   ├── iridium_ingot.json
│   │   ├── iron_ingot.json
│   │   ├── lead_ingot.json
│   │   ├── lithium_ingot.json
│   │   ├── magnesium_ingot.json
│   │   ├── manganese_ingot.json
│   │   ├── molybdenum_ingot.json
│   │   ├── netherite_ingot.json
│   │   ├── nickel_ingot.json
│   │   ├── niobium_ingot.json
│   │   ├── osmium_ingot.json
│   │   ├── palladium_ingot.json
│   │   ├── platinum_ingot.json
│   │   ├── redstone_ingot.json
│   │   ├── rhenium_ingot.json
│   │   ├── silver_ingot.json
│   │   ├── sodium_ingot.json
│   │   ├── steel_ingot.json
│   │   ├── tantalum_ingot.json
│   │   ├── tin_ingot.json
│   │   ├── titanium_ingot.json
│   │   ├── vanadium_ingot.json
│   │   ├── vibranium_ingot.json
│   │   ├── wolfram_ingot.json
│   │   ├── yttrium_ingot.json
│   │   └── zinc_ingot.json
│   ├── loots/
│   │   ├── guardian.json
│   │   ├── nether_destroyer_loot.json
│   │   └── snow_queen_loot.json
│   ├── magic/
│   │   ├── bone_gun.json
│   │   ├── dark_staff.json
│   │   ├── fire_book.json
│   │   ├── mini_laser_gun.json
│   │   ├── mini_rocket_launcher.json
│   │   ├── soul_laserer.json
│   │   ├── super_shark.json
│   │   ├── super_shark_ghost.json
│   │   ├── sword_fish.json
│   │   ├── sword_fish_gun.json
│   │   └── water_book.json
│   ├── misc/
│   │   ├── blaze_powder.json
│   │   ├── blaze_rod.json
│   │   ├── bone.json
│   │   ├── bone_meal.json
│   │   ├── book.json
│   │   ├── bowl.json
│   │   ├── charcoal.json
│   │   ├── clay.json
│   │   ├── coal.json
│   │   ├── cocoa_bean.json
│   │   ├── diamond.json
│   │   ├── dried_kelp.json
│   │   ├── egg.json
│   │   ├── emerald.json
│   │   ├── enchanted_book.json
│   │   ├── ender_eye.json
│   │   ├── ender_pearl.json
│   │   ├── feather.json
│   │   ├── fermented_spider_eye.json
│   │   ├── fire_charge.json
│   │   ├── firework_rocket.json
│   │   ├── fishing_rod.json
│   │   ├── flint.json
│   │   ├── ghast_tear.json
│   │   ├── glistering_melon_slice.json
│   │   ├── glow_ball.json
│   │   ├── glowstone_dust.json
│   │   ├── gray_feather.json
│   │   ├── gunpowder.json
│   │   ├── heart_of_sea.json
│   │   ├── ink_sac.json
│   │   ├── kelp.json
│   │   ├── lapis_lazuli.json
│   │   ├── leather.json
│   │   ├── lighter.json
│   │   ├── magma_cream.json
│   │   ├── mana_piece.json
│   │   ├── map_paper.json
│   │   ├── nautilus_shell.json
│   │   ├── nether_brick.json
│   │   ├── nether_star.json
│   │   ├── nether_wart.json
│   │   ├── netherite_scrap.json
│   │   ├── paper.json
│   │   ├── phantom_membrane.json
│   │   ├── popped_chorus_fruits.json
│   │   ├── prismarine_crystals.json
│   │   ├── prismarine_shard.json
│   │   ├── quartz.json
│   │   ├── rabbit_foot.json
│   │   ├── rabbit_hide.json
│   │   ├── red_brick.json
│   │   ├── redstone.json
│   │   ├── rocket.json
│   │   ├── rotten_flesh.json
│   │   ├── scute.json
│   │   ├── shears.json
│   │   ├── shulker_shell.json
│   │   ├── slimeball.json
│   │   ├── snowball.json
│   │   ├── spider_eye.json
│   │   ├── stick.json
│   │   ├── string.json
│   │   ├── sugar_cane.json
│   │   ├── suger.json
│   │   ├── totem_of_undying.json
│   │   ├── vine.json
│   │   ├── wheat.json
│   │   └── wire_cutter.json
│   ├── misc2/
│   │   ├── ancient_ingot.json
│   │   ├── ancient_sample.json
│   │   ├── blood.json
│   │   ├── blue_crystal.json
│   │   ├── dark_shadow_ingot.json
│   │   ├── dark_shadow_part.json
│   │   ├── diamond_ingot.json
│   │   ├── ender_mirror.json
│   │   ├── evil_part.json
│   │   ├── flesh_ingot.json
│   │   ├── flesh_machine_part.json
│   │   ├── flesh_part.json
│   │   ├── ghost.json
│   │   ├── ghost_crystal.json
│   │   ├── ghost_element.json
│   │   ├── ice_element.json
│   │   ├── ice_element_ball.json
│   │   ├── knight_ingot.json
│   │   ├── machine_part.json
│   │   ├── magic_cell.json
│   │   ├── magic_cell_group.json
│   │   ├── magic_crystal.json
│   │   ├── magic_silver_ingot.json
│   │   ├── magma_gold_ingot.json
│   │   ├── nether_destroyer.json
│   │   ├── pure_red_stone.json
│   │   ├── red_crystal.json
│   │   ├── red_gold_ingot.json
│   │   ├── soul_element.json
│   │   ├── star_ingot.json
│   │   ├── strange_eye.json
│   │   ├── strange_len.json
│   │   ├── tower_core.json
│   │   ├── white_crystal.json
│   │   └── yellow_crystal.json
│   ├── nuggets/
│   │   ├── gold_nugget.json
│   │   └── iron_nugget.json
│   ├── pickaxes/
│   │   ├── bronze_pickaxe.json
│   │   ├── copper_pickaxe.json
│   │   ├── diamond_pickaxe.json
│   │   ├── golden_pickaxe.json
│   │   ├── grass_pickaxe.json
│   │   ├── iron_pickaxe.json
│   │   ├── lead_pickaxe.json
│   │   ├── nether_pickaxe.json
│   │   ├── silver_pickaxe.json
│   │   ├── steel_pickaxe.json
│   │   ├── stone_pickaxe.json
│   │   ├── tin_pickaxe.json
│   │   └── wooden_pickaxe.json
│   ├── potions/
│   │   ├── glass_bottle.json
│   │   ├── potion_awkward.json
│   │   ├── potion_fire_resistance.json
│   │   ├── potion_fire_resistance_long.json
│   │   ├── potion_glowing.json
│   │   ├── potion_glowing_long.json
│   │   ├── potion_harming.json
│   │   ├── potion_harming_super.json
│   │   ├── potion_healing.json
│   │   ├── potion_healing_super.json
│   │   ├── potion_invisibility.json
│   │   ├── potion_invisibility_long.json
│   │   ├── potion_leaping.json
│   │   ├── potion_leaping_long.json
│   │   ├── potion_night_vision.json
│   │   ├── potion_night_vision_long.json
│   │   ├── potion_poison.json
│   │   ├── potion_poison_long.json
│   │   ├── potion_regeneration.json
│   │   ├── potion_regeneration_long.json
│   │   ├── potion_slow_falling.json
│   │   ├── potion_slow_falling_long.json
│   │   ├── potion_slowness.json
│   │   ├── potion_slowness_long.json
│   │   ├── potion_strength.json
│   │   ├── potion_strength_long.json
│   │   ├── potion_swiftness.json
│   │   ├── potion_swiftness_long.json
│   │   ├── potion_water.json
│   │   ├── potion_water_breathing.json
│   │   ├── potion_water_breathing_long.json
│   │   ├── potion_weakness.json
│   │   └── potion_weakness_long.json
│   ├── seeds/
│   │   ├── melon_seed.json
│   │   ├── pumpkin_seed.json
│   │   └── seed.json
│   ├── staffs/
│   │   ├── amethyst_staff.json
│   │   ├── fire_staff.json
│   │   ├── frosen_staff.json
│   │   ├── ice_staff.json
│   │   ├── lighting_staff.json
│   │   ├── shadow_staff.json
│   │   ├── soul_staff.json
│   │   └── water_staff.json
│   ├── swords/
│   │   ├── air_sword.json
│   │   ├── bronze_sword.json
│   │   ├── copper_sword.json
│   │   ├── diamond_sword.json
│   │   ├── ghost_sword.json
│   │   ├── golden_sword.json
│   │   ├── grass_sword.json
│   │   ├── iron_sword.json
│   │   ├── lava_sword.json
│   │   ├── lead_sword.json
│   │   ├── nether_sword.json
│   │   ├── silver_sword.json
│   │   ├── steel_sword.json
│   │   ├── stone_sword.json
│   │   ├── super_air_sword.json
│   │   ├── super_bronze_sword.json
│   │   ├── super_copper_sword.json
│   │   ├── super_diamond_sword.json
│   │   ├── super_golden_sword.json
│   │   ├── super_iron_sword.json
│   │   ├── super_lead_sword.json
│   │   ├── super_nether_sword.json
│   │   ├── super_silver_sword.json
│   │   ├── super_steel_sword.json
│   │   ├── super_tin_sword.json
│   │   ├── tin_sword.json
│   │   └── wooden_sword.json
│   └── wires/
│       ├── blue_wire.json
│       ├── green_wire.json
│       ├── red_wire.json
│       └── yellow_wire.json
├── languages/
│   ├── Locale.lua
│   ├── LocaleHelper.lua
│   ├── chinese.json
│   └── english.json
├── liquids/
│   ├── lava.json
│   └── water.json
├── mod_textures/
│   ├── ModTextures.lua
│   ├── blade.json
│   ├── candle_fire.json
│   ├── candle_fire_blue.json
│   ├── crack.json
│   ├── electric_direction.json
│   ├── fire.json
│   ├── flesh_grass.json
│   ├── fly_book.json
│   ├── grass.json
│   ├── mycelium_grass.json
│   ├── tainted_grass.json
│   ├── torch_fire.json
│   ├── torch_fire_blue.json
│   ├── torch_fire_green.json
│   ├── torch_fire_red.json
│   ├── torch_fire_white.json
│   ├── torch_fire_yellow.json
│   └── torch_redstone.json
├── network/
│   ├── ClientBoundResponse.lua
│   ├── ModNetworkProxyHandler.lua
│   ├── NetworkProxy.lua
│   ├── RPC_ID.lua
│   └── TCNetworkProxyHandler.lua
├── npc_ai/
│   ├── AngrySkeleton.json
│   ├── AngrySkeleton.lua
│   ├── Animal.json
│   ├── Animal.lua
│   ├── Archer.json
│   ├── Archer.lua
│   ├── BallMagic.json
│   ├── BallMagic.lua
│   ├── BaseSnake.lua
│   ├── BaseSnakeBody.lua
│   ├── Bat.json
│   ├── Bat.lua
│   ├── BlackSkeleton.json
│   ├── BlackSkeleton.lua
│   ├── Blaze.json
│   ├── Blaze.lua
│   ├── BlockSlime.json
│   ├── BlockSlime.lua
│   ├── BloodSkeleton.json
│   ├── BloodSkeleton.lua
│   ├── BloodyEye.json
│   ├── BloodyEye.lua
│   ├── BoneArcher.json
│   ├── BoneArcher.lua
│   ├── BoneLee.json
│   ├── BoneLee.lua
│   ├── BoneOfficer.json
│   ├── BoneOfficer.lua
│   ├── BoneSniper.json
│   ├── BoneSniper.lua
│   ├── BoneySkeleton.json
│   ├── BoneySkeleton.lua
│   ├── BouncySlime.json
│   ├── BouncySlime.lua
│   ├── Butterfly.json
│   ├── Butterfly.lua
│   ├── Cat.json
│   ├── Cat.lua
│   ├── Chicken.json
│   ├── Chicken.lua
│   ├── Creeper.json
│   ├── Creeper.lua
│   ├── CrisonEye.json
│   ├── CrisonEye.lua
│   ├── CrystalMonster.json
│   ├── CrystalMonster.lua
│   ├── CursedSkull.json
│   ├── CursedSkull.lua
│   ├── DarkMage.json
│   ├── DarkMage.lua
│   ├── DeadMage.json
│   ├── DeadMage.lua
│   ├── Dolphin.json
│   ├── Dolphin.lua
│   ├── DungeonCreeper.json
│   ├── DungeonCreeper.lua
│   ├── DungeonEater.lua
│   ├── DungeonEaterBody.lua
│   ├── DungeonEater_Body.json
│   ├── DungeonEater_Head.json
│   ├── DungeonKnight.json
│   ├── DungeonKnight.lua
│   ├── DungeonSkeleton.json
│   ├── DungeonSkeleton.lua
│   ├── DungeonSoul.json
│   ├── DungeonSoul.lua
│   ├── Eagle.json
│   ├── Eagle.lua
│   ├── Ender_Dragon.json
│   ├── Enderman.json
│   ├── Enderman.lua
│   ├── Evil.json
│   ├── Evil.lua
│   ├── Evoker.json
│   ├── Evoker.lua
│   ├── EyeGuard.json
│   ├── EyeGuard.lua
│   ├── EyeGuardLaser.json
│   ├── EyeGuardLaser.lua
│   ├── Fighter.json
│   ├── Fighter.lua
│   ├── FireHellEater.json
│   ├── FireHellEater.lua
│   ├── FlameSoul.json
│   ├── FlameSoul.lua
│   ├── FlyEye.json
│   ├── FlyEye.lua
│   ├── FlySkeleton.json
│   ├── FlySkeleton.lua
│   ├── Ghast.json
│   ├── Ghast.lua
│   ├── GhostGunner.json
│   ├── GhostGunner.lua
│   ├── GhostSoul.json
│   ├── GhostSoul.lua
│   ├── GiantCursedSkull.json
│   ├── GiantCursedSkull.lua
│   ├── GrimReaper.json
│   ├── GrimReaper.lua
│   ├── Guardian.json
│   ├── Guardian.lua
│   ├── HellDestroyer.lua
│   ├── HellDestroyer_Head.json
│   ├── HellEater.json
│   ├── HellEater.lua
│   ├── HumanFighter.json
│   ├── HumanFighter.lua
│   ├── IceElf.json
│   ├── IceElf.lua
│   ├── JungleSnake.lua
│   ├── JungleSnake_Head.json
│   ├── LargeBat.json
│   ├── LargeBat.lua
│   ├── LargeSpider.json
│   ├── LargeSpider.lua
│   ├── MagmaBirdo.json
│   ├── MagmaBirdo.lua
│   ├── MagmaElf.json
│   ├── MagmaElf.lua
│   ├── MagmaSlime.json
│   ├── MagmaSlime.lua
│   ├── ManEater.json
│   ├── ManEater.lua
│   ├── Meteor.json
│   ├── Meteor.lua
│   ├── MiniGhast.json
│   ├── MiniGhast.lua
│   ├── Paimon.json
│   ├── Paimon.lua
│   ├── Phantom.json
│   ├── Phantom.lua
│   ├── Pufferfish.json
│   ├── Pufferfish.lua
│   ├── RaggedMage.json
│   ├── RaggedMage.lua
│   ├── RedMage.json
│   ├── RedMage.lua
│   ├── RedPhantom.json
│   ├── RedPhantom.lua
│   ├── RockMan.json
│   ├── RockMan.lua
│   ├── RollingFireBall.json
│   ├── RollingFireBall.lua
│   ├── Sheep.json
│   ├── Shulker.json
│   ├── Shulker.lua
│   ├── SkeletonAssaulter.json
│   ├── SkeletonAssaulter.lua
│   ├── SkeletonGuard.json
│   ├── SkeletonGuard.lua
│   ├── Slime.json
│   ├── Slime.lua
│   ├── Snake_Body.json
│   ├── Snake_Head.json
│   ├── SnowGuardian.json
│   ├── SnowGuardian.lua
│   ├── SnowGuardianArcher.json
│   ├── SnowGuardianArcher.lua
│   ├── SnowQueen.json
│   ├── SnowQueen.lua
│   ├── Squid.json
│   ├── Squid.lua
│   ├── SwordHumanFighter.lua
│   ├── TaintedSlime.json
│   ├── TaintedSlime.lua
│   ├── UndeadMiner.json
│   ├── UndeadMiner.lua
│   ├── Villager.json
│   ├── WasteGhost.json
│   ├── WasteGhost.lua
│   ├── WitherSkeleton.json
│   ├── WitherSkeleton.lua
│   ├── Wolf.json
│   ├── Wolf.lua
│   ├── Zombie.json
│   ├── Zombie.lua
│   ├── Zpig.json
│   └── Zpig.lua
├── npc_ai_global/
│   ├── GNpc.lua
│   └── GlobalNpc.json
├── npcs/
│   ├── angry_skeleton.json
│   ├── arrow_zombie.json
│   ├── bald_zombie.json
│   ├── bat.json
│   ├── black_rabbit.json
│   ├── black_skeleton.json
│   ├── blaze.json
│   ├── block_slime.json
│   ├── blood_bat.json
│   ├── blood_eye.json
│   ├── blood_skeleton.json
│   ├── blood_slime.json
│   ├── blue_slime.json
│   ├── bone_lee.json
│   ├── bone_officer.json
│   ├── bone_sniper.json
│   ├── boney_skeleton.json
│   ├── bouncy_slime.json
│   ├── brown_mushroom_cow.json
│   ├── brown_rabbit.json
│   ├── cat.json
│   ├── chicken.json
│   ├── cow.json
│   ├── creeper.json
│   ├── crison_eye.json
│   ├── crystal_monster.json
│   ├── cursed_skull.json
│   ├── dark_mage.json
│   ├── dead_mage.json
│   ├── desert_slime.json
│   ├── doge_zombie.json
│   ├── dolphin.json
│   ├── dragon_skull.json
│   ├── drowned.json
│   ├── dungeon_creeper.json
│   ├── dungeon_eater_body.json
│   ├── dungeon_eater_head.json
│   ├── dungeon_eater_tail.json
│   ├── dungeon_knight.json
│   ├── dungeon_slime.json
│   ├── dungeon_soul.json
│   ├── eagle.json
│   ├── ender_dragon.json
│   ├── enderman.json
│   ├── evil.json
│   ├── evoker.json
│   ├── eye_guard.json
│   ├── eye_guard_laser.json
│   ├── flame_soul.json
│   ├── flower_creeper.json
│   ├── fly_eye.json
│   ├── fly_mouth.json
│   ├── fly_skeleton.json
│   ├── ghast.json
│   ├── ghost_gunner.json
│   ├── ghost_soul.json
│   ├── giant_cursed_skull.json
│   ├── green_slime.json
│   ├── grim_reaper.json
│   ├── guardian.json
│   ├── husk.json
│   ├── ice_elf.json
│   ├── ice_slime.json
│   ├── iron_zombie.json
│   ├── jungle_bat.json
│   ├── large_bat.json
│   ├── large_black_slime.json
│   ├── large_block_slime.json
│   ├── large_desert_slime.json
│   ├── large_green_slime.json
│   ├── large_ice_slime.json
│   ├── large_jungle_bat.json
│   ├── large_spider.json
│   ├── large_tainted_slime.json
│   ├── large_waste_block_slime.json
│   ├── large_waste_slime.json
│   ├── light_blue_butterfly.json
│   ├── mad_skeleton.json
│   ├── mad_skeleton_armed.json
│   ├── mad_skeleton_tall.json
│   ├── mad_skeleton_tall_armed.json
│   ├── mad_skeleton_tall_helmet_armed.json
│   ├── magma_birdo.json
│   ├── magma_elf.json
│   ├── magma_slime.json
│   ├── man_eater.json
│   ├── meteor.json
│   ├── mini_ghast.json
│   ├── mummy.json
│   ├── phantom.json
│   ├── pig.json
│   ├── pufferfish.json
│   ├── purple_slime.json
│   ├── ragged_mage.json
│   ├── red_butterfly.json
│   ├── red_mage.json
│   ├── red_mushroom_cow.json
│   ├── red_phantom.json
│   ├── rock_man.json
│   ├── rolling_fire_ball.json
│   ├── sheep.json
│   ├── shulker.json
│   ├── skeleton.json
│   ├── skeleton_assaulter.json
│   ├── skeleton_blue_armed.json
│   ├── skeleton_blue_armed_masked.json
│   ├── skeleton_blue_knight.json
│   ├── skeleton_fire_armed.json
│   ├── skeleton_fire_armed_swordsman.json
│   ├── skeleton_guard.json
│   ├── small_fire_hell_eater.json
│   ├── small_hell_eater.json
│   ├── snow_guardian.json
│   ├── snow_guardian_archer.json
│   ├── snow_queen.json
│   ├── snow_slime.json
│   ├── spider.json
│   ├── squid.json
│   ├── tainted_creeper.json
│   ├── tainted_skeleton.json
│   ├── tainted_slime.json
│   ├── turtle.json
│   ├── undead_miner.json
│   ├── vampire_miner.json
│   ├── villager_zombie.json
│   ├── vine_man_eater_body.json
│   ├── vine_man_eater_head.json
│   ├── vine_man_eater_tail.json
│   ├── waste_block_slime.json
│   ├── waste_ghost.json
│   ├── waste_mummy.json
│   ├── white_rabbit.json
│   ├── wither_skeleton.json
│   ├── wolf.json
│   ├── worm_body.json
│   ├── worm_head.json
│   ├── worm_tail.json
│   ├── yellow_butterfly.json
│   ├── yellow_rabbit.json
│   ├── yellow_slime.json
│   ├── zombie.json
│   └── zombie_pigman.json
├── package.json
├── player/
│   ├── GPlayer.lua
│   ├── GlobalPlayer.json
│   └── PlayerConstants.lua
├── projectile_ai/
│   ├── AirBullet.json
│   ├── AirBullet.lua
│   ├── AirWave.json
│   ├── AirWave.lua
│   ├── AmethystMagic.json
│   ├── AmethystMagic.lua
│   ├── Arrow.json
│   ├── Arrow.lua
│   ├── BlackHole.json
│   ├── BlackHole.lua
│   ├── BlazeRod.json
│   ├── BlazeRod.lua
│   ├── BloodArrow.json
│   ├── BloodArrow.lua
│   ├── BlueArrow.json
│   ├── BlueArrow.lua
│   ├── BlueBullet.json
│   ├── BlueBullet.lua
│   ├── BlueWave.json
│   ├── BlueWave.lua
│   ├── Bomb.json
│   ├── Bomb.lua
│   ├── Boomerang.json
│   ├── Boomerang.lua
│   ├── Bullet.json
│   ├── Bullet.lua
│   ├── CrystalMagic.json
│   ├── CrystalMagic.lua
│   ├── CursedArrow.json
│   ├── CursedArrow.lua
│   ├── Fire.json
│   ├── Fire.lua
│   ├── FireArrow.json
│   ├── FireArrow.lua
│   ├── FireElement.json
│   ├── FireElement.lua
│   ├── FireFlow.json
│   ├── FireFlow.lua
│   ├── FireFlowLarge.json
│   ├── FireFlowLarge.lua
│   ├── FireMagic.json
│   ├── FireMagic.lua
│   ├── Fireball.json
│   ├── Fireball.lua
│   ├── GlowBomb.json
│   ├── GlowBomb.lua
│   ├── Glowball.json
│   ├── Glowball.lua
│   ├── Grenade.json
│   ├── Grenade.lua
│   ├── IceArrow.json
│   ├── IceArrow.lua
│   ├── IceBullet.json
│   ├── IceBullet.lua
│   ├── IceMagic.json
│   ├── IceMagic.lua
│   ├── LaserBullet.json
│   ├── LaserBullet.lua
│   ├── LightingArrow.json
│   ├── LightingArrow.lua
│   ├── LightingBulletYellow.json
│   ├── LightingBulletYellow.lua
│   ├── LightingWheel.json
│   ├── LightingWheel.lua
│   ├── MagicWave.json
│   ├── MagicWave.lua
│   ├── MiniRocket.json
│   ├── MiniRocket.lua
│   ├── RedSpeedUp.json
│   ├── RedSpeedUp.lua
│   ├── Rocket.json
│   ├── Rocket.lua
│   ├── ShadowMagic.json
│   ├── ShadowMagic.lua
│   ├── ShulkerBullet.json
│   ├── ShulkerBullet.lua
│   ├── SnowFlake.json
│   ├── SnowFlake.lua
│   ├── Spike.json
│   ├── Spike.lua
│   ├── StarArrow.json
│   ├── StarArrow.lua
│   ├── StarMagic.json
│   ├── StarMagic.lua
│   ├── SuperBullet.json
│   ├── SuperBullet.lua
│   ├── SuperFire.json
│   ├── SuperFire.lua
│   ├── SwordArrow.json
│   ├── SwordArrow.lua
│   ├── WaterFlow.json
│   ├── WaterFlow.lua
│   ├── WaterMagic.json
│   └── WaterMagic.lua
├── projectile_ai_global/
│   ├── GProjectile.lua
│   └── GlobalProjectile.json
├── projectiles/
│   ├── air_bullet.json
│   ├── air_wave.json
│   ├── amethyst_magic.json
│   ├── black_hole.json
│   ├── blaze_rod.json
│   ├── blood_arrow.json
│   ├── blue_arrow.json
│   ├── bomb.json
│   ├── bone.json
│   ├── boomerang.json
│   ├── bullet.json
│   ├── bullet_laser.json
│   ├── bullet_super.json
│   ├── crystal_magic.json
│   ├── cursed_arrow.json
│   ├── fire_arrow.json
│   ├── fire_boomerang.json
│   ├── fire_charge.json
│   ├── fire_element.json
│   ├── fire_flow.json
│   ├── fire_flow_large.json
│   ├── fire_magic.json
│   ├── fire_wave.json
│   ├── glow_ball.json
│   ├── glow_bomb.json
│   ├── grenade.json
│   ├── gun_fire.json
│   ├── ice_arrow.json
│   ├── ice_bullet.json
│   ├── ice_magic.json
│   ├── light_bullet_laser.json
│   ├── lighting_arrow.json
│   ├── lighting_bullet_blue.json
│   ├── lighting_bullet_red_invert2.json
│   ├── lighting_bullet_yellow.json
│   ├── lighting_wheel.json
│   ├── magic_wave.json
│   ├── magic_wave3.json
│   ├── mini_rocket.json
│   ├── rocket.json
│   ├── shadow_magic.json
│   ├── shulker_bullet.json
│   ├── small_air_bullet.json
│   ├── snow_flake.json
│   ├── spike.json
│   ├── star.json
│   ├── star_arrow.json
│   ├── super_fire.json
│   ├── sword_arrow.json
│   ├── tnt.json
│   ├── water_flow.json
│   ├── water_magic.json
│   ├── wooden_arrow.json
│   └── wooden_boomerang.json
├── recipe_config/
│   ├── Brew.json
│   ├── Craft3x.json
│   ├── Repair.json
│   └── Smelt.json
├── recipes/
│   ├── brew/
│   │   ├── potion_awkward.json
│   │   ├── potion_fire_resistance.json
│   │   ├── potion_fire_resistance_long.json
│   │   ├── potion_glowing.json
│   │   ├── potion_harming.json
│   │   ├── potion_harming_2.json
│   │   ├── potion_harming_super.json
│   │   ├── potion_healing.json
│   │   ├── potion_healing_super.json
│   │   ├── potion_invisibility.json
│   │   ├── potion_invisibility_long.json
│   │   ├── potion_leaping.json
│   │   ├── potion_leaping_long.json
│   │   ├── potion_night_vision.json
│   │   ├── potion_night_vision_long.json
│   │   ├── potion_poison.json
│   │   ├── potion_poison_2.json
│   │   ├── potion_poison_long.json
│   │   ├── potion_regeneration.json
│   │   ├── potion_regeneration_long.json
│   │   ├── potion_slow_falling.json
│   │   ├── potion_slow_falling_long.json
│   │   ├── potion_slowness.json
│   │   ├── potion_slowness_2.json
│   │   ├── potion_slowness_long.json
│   │   ├── potion_strength.json
│   │   ├── potion_strength_long.json
│   │   ├── potion_swiftness.json
│   │   ├── potion_swiftness_long.json
│   │   ├── potion_water_breathing.json
│   │   ├── potion_water_breathing_long.json
│   │   ├── potion_weakness.json
│   │   ├── potion_weakness_2.json
│   │   └── potion_weakness_long.json
│   ├── craft3x/
│   │   ├── acacia_plank.json
│   │   ├── amethyst_staff.json
│   │   ├── amethyst_staff_2.json
│   │   ├── ancient_ingot.json
│   │   ├── andesite.json
│   │   ├── andesite_polished.json
│   │   ├── anvil.json
│   │   ├── barrel.json
│   │   ├── bench_acacia.json
│   │   ├── bench_birch.json
│   │   ├── bench_dark_oak.json
│   │   ├── bench_jungle.json
│   │   ├── bench_nether.json
│   │   ├── bench_oak.json
│   │   ├── bench_palm.json
│   │   ├── bench_spruce.json
│   │   ├── bench_tainted.json
│   │   ├── bench_volcano.json
│   │   ├── birch_plank.json
│   │   ├── blaze_powder.json
│   │   ├── block_coal.json
│   │   ├── block_diamond.json
│   │   ├── block_emerald.json
│   │   ├── block_gold.json
│   │   ├── block_iron.json
│   │   ├── block_lapis.json
│   │   ├── block_netherite.json
│   │   ├── block_quartz.json
│   │   ├── block_redstone.json
│   │   ├── blood_arrow.json
│   │   ├── blood_arrow_2.json
│   │   ├── blood_bow.json
│   │   ├── blue_ice.json
│   │   ├── blue_stone_bow.json
│   │   ├── blue_torch.json
│   │   ├── blue_wire.json
│   │   ├── bomb.json
│   │   ├── bomb_2.json
│   │   ├── bone_block.json
│   │   ├── bone_meal.json
│   │   ├── bone_meal_2.json
│   │   ├── book.json
│   │   ├── book_block.json
│   │   ├── bookcase_acacia.json
│   │   ├── bookcase_birch.json
│   │   ├── bookcase_dark_oak.json
│   │   ├── bookcase_jungle.json
│   │   ├── bookcase_nether.json
│   │   ├── bookcase_oak.json
│   │   ├── bookcase_palm.json
│   │   ├── bookcase_spruce.json
│   │   ├── bookcase_tainted.json
│   │   ├── bookcase_volcano.json
│   │   ├── boomerang.json
│   │   ├── boomerang_2.json
│   │   ├── bowl.json
│   │   ├── bread.json
│   │   ├── brewing_stand.json
│   │   ├── brick.json
│   │   ├── bronze_axe.json
│   │   ├── bronze_chestplate.json
│   │   ├── bronze_helmet.json
│   │   ├── bronze_ingot.json
│   │   ├── bronze_leggings.json
│   │   ├── bronze_pickaxe.json
│   │   ├── bronze_sword.json
│   │   ├── brown_mushroom.json
│   │   ├── brown_mushroom_2.json
│   │   ├── bucket_empty.json
│   │   ├── cabinet_acacia.json
│   │   ├── cabinet_birch.json
│   │   ├── cabinet_dark_oak.json
│   │   ├── cabinet_jungle.json
│   │   ├── cabinet_nether.json
│   │   ├── cabinet_oak.json
│   │   ├── cabinet_palm.json
│   │   ├── cabinet_spruce.json
│   │   ├── cabinet_tainted.json
│   │   ├── cabinet_volcano.json
│   │   ├── cake.json
│   │   ├── cake_piece.json
│   │   ├── campfire.json
│   │   ├── campfire_2.json
│   │   ├── campfire_3.json
│   │   ├── campfire_4.json
│   │   ├── candle.json
│   │   ├── candle_holder.json
│   │   ├── cauldron.json
│   │   ├── chair_acacia.json
│   │   ├── chair_birch.json
│   │   ├── chair_dark_oak.json
│   │   ├── chair_jungle.json
│   │   ├── chair_nether.json
│   │   ├── chair_oak.json
│   │   ├── chair_palm.json
│   │   ├── chair_spruce.json
│   │   ├── chair_tainted.json
│   │   ├── chair_volcano.json
│   │   ├── chandeliers.json
│   │   ├── chest.json
│   │   ├── clay.json
│   │   ├── clay_block.json
│   │   ├── coal.json
│   │   ├── coarse_dirt.json
│   │   ├── cobblestone_fence.json
│   │   ├── cobblestone_mossy.json
│   │   ├── cobweb.json
│   │   ├── cookie.json
│   │   ├── copper_axe.json
│   │   ├── copper_chestplate.json
│   │   ├── copper_helmet.json
│   │   ├── copper_leggings.json
│   │   ├── copper_pickaxe.json
│   │   ├── copper_sword.json
│   │   ├── crafting_table.json
│   │   ├── cross_bow.json
│   │   ├── dark_oak_plank.json
│   │   ├── dark_shadow_ingot.json
│   │   ├── daylight_sensor.json
│   │   ├── daylight_sensor_inverted.json
│   │   ├── diamond.json
│   │   ├── diamond_axe.json
│   │   ├── diamond_chestplate.json
│   │   ├── diamond_helmet.json
│   │   ├── diamond_ingot.json
│   │   ├── diamond_leggings.json
│   │   ├── diamond_pickaxe.json
│   │   ├── diamond_sword.json
│   │   ├── diorite.json
│   │   ├── diorite_polished.json
│   │   ├── dirt.json
│   │   ├── door_nether.json
│   │   ├── dried_kelp.json
│   │   ├── dried_kelp_block.json
│   │   ├── dungeon_eater.json
│   │   ├── dye_black.json
│   │   ├── dye_blue.json
│   │   ├── dye_brown.json
│   │   ├── dye_cyan.json
│   │   ├── dye_cyan_2.json
│   │   ├── dye_gray.json
│   │   ├── dye_light_blue.json
│   │   ├── dye_light_blue_2.json
│   │   ├── dye_light_blue_3.json
│   │   ├── dye_light_gray.json
│   │   ├── dye_light_gray_2.json
│   │   ├── dye_light_gray_3.json
│   │   ├── dye_light_gray_4.json
│   │   ├── dye_lime.json
│   │   ├── dye_lime_2.json
│   │   ├── dye_magenta.json
│   │   ├── dye_magenta_2.json
│   │   ├── dye_magenta_3.json
│   │   ├── dye_magenta_4.json
│   │   ├── dye_magenta_5.json
│   │   ├── dye_orange.json
│   │   ├── dye_orange_2.json
│   │   ├── dye_pink.json
│   │   ├── dye_pink_2.json
│   │   ├── dye_pink_3.json
│   │   ├── dye_pink_4.json
│   │   ├── dye_purple.json
│   │   ├── dye_purple_2.json
│   │   ├── dye_red.json
│   │   ├── dye_red_2.json
│   │   ├── dye_red_3.json
│   │   ├── dye_white.json
│   │   ├── dye_yellow.json
│   │   ├── dye_yellow_2.json
│   │   ├── emerald.json
│   │   ├── enchantment_table.json
│   │   ├── end_rod.json
│   │   ├── end_stone_brick.json
│   │   ├── ender_chest.json
│   │   ├── ender_eye.json
│   │   ├── ender_mirror.json
│   │   ├── farmland.json
│   │   ├── farmland_2.json
│   │   ├── fence_acacia.json
│   │   ├── fence_birch.json
│   │   ├── fence_dark_oak.json
│   │   ├── fence_jungle.json
│   │   ├── fence_nether.json
│   │   ├── fence_oak.json
│   │   ├── fence_palm.json
│   │   ├── fence_spruce.json
│   │   ├── fence_tainted.json
│   │   ├── fence_volcano.json
│   │   ├── fermented_spider_eye.json
│   │   ├── fire_boomerang.json
│   │   ├── fire_boomerang_2.json
│   │   ├── fire_bullet.json
│   │   ├── fire_bullet_2.json
│   │   ├── fire_charge.json
│   │   ├── fire_charge_2.json
│   │   ├── fire_lamp.json
│   │   ├── flesh_chestplate.json
│   │   ├── flesh_helmet.json
│   │   ├── flesh_ingot.json
│   │   ├── flesh_leggings.json
│   │   ├── flesh_machine_part.json
│   │   ├── flower_pot.json
│   │   ├── flower_pot_large.json
│   │   ├── furnace.json
│   │   ├── ghost.json
│   │   ├── glass_bottle.json
│   │   ├── glistering_melon_slice.json
│   │   ├── glow_ball.json
│   │   ├── glow_bomb.json
│   │   ├── glowing_mushroom.json
│   │   ├── glowing_mushroom_2.json
│   │   ├── glowstone.json
│   │   ├── gold_ingot.json
│   │   ├── gold_ingot_2.json
│   │   ├── gold_nugget.json
│   │   ├── golden_apple.json
│   │   ├── golden_axe.json
│   │   ├── golden_carrot.json
│   │   ├── golden_chestplate.json
│   │   ├── golden_helmet.json
│   │   ├── golden_leggings.json
│   │   ├── golden_pickaxe.json
│   │   ├── golden_pressure_plate.json
│   │   ├── golden_sword.json
│   │   ├── granite.json
│   │   ├── granite_polished.json
│   │   ├── grass_axe.json
│   │   ├── grass_pickaxe.json
│   │   ├── grass_sword.json
│   │   ├── green_torch.json
│   │   ├── green_wire.json
│   │   ├── grenade.json
│   │   ├── grenade_2.json
│   │   ├── hay_bale.json
│   │   ├── ice_arrow.json
│   │   ├── ice_bow.json
│   │   ├── ice_brick.json
│   │   ├── ice_element_ball.json
│   │   ├── ice_packed.json
│   │   ├── ice_staff.json
│   │   ├── iron_axe.json
│   │   ├── iron_bar.json
│   │   ├── iron_bullet.json
│   │   ├── iron_bullet_2.json
│   │   ├── iron_chestplate.json
│   │   ├── iron_door.json
│   │   ├── iron_helmet.json
│   │   ├── iron_ingot.json
│   │   ├── iron_ingot_2.json
│   │   ├── iron_leggings.json
│   │   ├── iron_nugget.json
│   │   ├── iron_pickaxe.json
│   │   ├── iron_pressure_plate.json
│   │   ├── iron_sword.json
│   │   ├── jack_o_lantern.json
│   │   ├── jukebox.json
│   │   ├── jungle_plank.json
│   │   ├── knight_chestplate.json
│   │   ├── knight_helmet.json
│   │   ├── knight_leggings.json
│   │   ├── lantern.json
│   │   ├── lapis_lazuli.json
│   │   ├── lava_chestplate.json
│   │   ├── lava_helmet.json
│   │   ├── lava_leggings.json
│   │   ├── lead_axe.json
│   │   ├── lead_chestplate.json
│   │   ├── lead_helmet.json
│   │   ├── lead_leggings.json
│   │   ├── lead_pickaxe.json
│   │   ├── lead_sword.json
│   │   ├── leather.json
│   │   ├── leather_chestplate.json
│   │   ├── leather_helmet.json
│   │   ├── leather_leggings.json
│   │   ├── lever.json
│   │   ├── lighter.json
│   │   ├── lighting_arrow.json
│   │   ├── lighting_bow.json
│   │   ├── lighting_staff.json
│   │   ├── machine_part.json
│   │   ├── magic_cell_group.json
│   │   ├── magic_gold_chestplate.json
│   │   ├── magic_gold_helmet.json
│   │   ├── magic_gold_leggings.json
│   │   ├── magic_silver_chestplate.json
│   │   ├── magic_silver_helmet.json
│   │   ├── magic_silver_ingot.json
│   │   ├── magic_silver_leggings.json
│   │   ├── magma_block.json
│   │   ├── magma_cream.json
│   │   ├── magma_gold_ingot.json
│   │   ├── melon_seed.json
│   │   ├── mossy_cobblestone_fence.json
│   │   ├── mushroom_stew.json
│   │   ├── nether_brick_block.json
│   │   ├── nether_chest.json
│   │   ├── nether_lamp.json
│   │   ├── netherite_ingot.json
│   │   ├── netherite_ingot_2.json
│   │   ├── oak_plank.json
│   │   ├── painting_2x2.json
│   │   ├── painting_2x2_2.json
│   │   ├── painting_2x4.json
│   │   ├── painting_4x2.json
│   │   ├── painting_4x4.json
│   │   ├── painting_8x4.json
│   │   ├── painting_8x6.json
│   │   ├── painting_8x8.json
│   │   ├── palm_plank.json
│   │   ├── paper.json
│   │   ├── platform_acacia.json
│   │   ├── platform_birch.json
│   │   ├── platform_dark_oak.json
│   │   ├── platform_end_stone.json
│   │   ├── platform_jungle.json
│   │   ├── platform_nether_brick.json
│   │   ├── platform_oak.json
│   │   ├── platform_palm.json
│   │   ├── platform_prismarine.json
│   │   ├── platform_prismarine_dark.json
│   │   ├── platform_purpur.json
│   │   ├── platform_quartz.json
│   │   ├── platform_red_sand_stone.json
│   │   ├── platform_sandstone.json
│   │   ├── platform_spruce.json
│   │   ├── platform_stone_brick.json
│   │   ├── platform_tainted.json
│   │   ├── platform_volcano.json
│   │   ├── poison_mushroom.json
│   │   ├── prismarine.json
│   │   ├── prismarine_brick.json
│   │   ├── prismarine_dark.json
│   │   ├── prismarine_dark_2.json
│   │   ├── pumpkin_helmet.json
│   │   ├── pumpkin_pie.json
│   │   ├── pumpkin_seed.json
│   │   ├── purpur_block.json
│   │   ├── quartz.json
│   │   ├── red_gold_ingot.json
│   │   ├── red_mushroom.json
│   │   ├── red_mushroom_2.json
│   │   ├── red_nether_brick.json
│   │   ├── red_sand_carved.json
│   │   ├── red_sand_stone.json
│   │   ├── red_torch.json
│   │   ├── red_wire.json
│   │   ├── redstone.json
│   │   ├── redstone_lamp.json
│   │   ├── redstone_torch.json
│   │   ├── rocket.json
│   │   ├── rocket_boost.json
│   │   ├── rotten_flesh.json
│   │   ├── sandstone.json
│   │   ├── sandstone_carved.json
│   │   ├── sea_lantern.json
│   │   ├── shadow_staff.json
│   │   ├── shears.json
│   │   ├── shot_bow.json
│   │   ├── shot_bow_2.json
│   │   ├── shulker_box.json
│   │   ├── sign.json
│   │   ├── silver_axe.json
│   │   ├── silver_bullet.json
│   │   ├── silver_chestplate.json
│   │   ├── silver_helmet.json
│   │   ├── silver_leggings.json
│   │   ├── silver_pickaxe.json
│   │   ├── silver_sword.json
│   │   ├── slime_block.json
│   │   ├── slimeball.json
│   │   ├── snow.json
│   │   ├── snow_brick.json
│   │   ├── snowball.json
│   │   ├── spruce_plank.json
│   │   ├── stained_glass_black.json
│   │   ├── stained_glass_blue.json
│   │   ├── stained_glass_brown.json
│   │   ├── stained_glass_cyan.json
│   │   ├── stained_glass_gray.json
│   │   ├── stained_glass_green.json
│   │   ├── stained_glass_light_blue.json
│   │   ├── stained_glass_light_gray.json
│   │   ├── stained_glass_lime.json
│   │   ├── stained_glass_magenta.json
│   │   ├── stained_glass_orange.json
│   │   ├── stained_glass_pink.json
│   │   ├── stained_glass_purple.json
│   │   ├── stained_glass_red.json
│   │   ├── stained_glass_white.json
│   │   ├── stained_glass_yellow.json
│   │   ├── star_arrow.json
│   │   ├── star_chestplate.json
│   │   ├── star_helmet.json
│   │   ├── star_leggings.json
│   │   ├── steel_axe.json
│   │   ├── steel_chestplate.json
│   │   ├── steel_helmet.json
│   │   ├── steel_leggings.json
│   │   ├── steel_pickaxe.json
│   │   ├── steel_sword.json
│   │   ├── stick.json
│   │   ├── stone.json
│   │   ├── stone_2.json
│   │   ├── stone_axe.json
│   │   ├── stone_brick.json
│   │   ├── stone_brick_carved.json
│   │   ├── stone_brick_mossy.json
│   │   ├── stone_button.json
│   │   ├── stone_chest.json
│   │   ├── stone_hoe.json
│   │   ├── stone_pickaxe.json
│   │   ├── stone_pressure_plate.json
│   │   ├── stone_sword.json
│   │   ├── strange_eye.json
│   │   ├── string.json
│   │   ├── suger.json
│   │   ├── super_bronze_sword.json
│   │   ├── super_copper_sword.json
│   │   ├── super_cross_bow.json
│   │   ├── super_diamond_chestplate.json
│   │   ├── super_diamond_helmet.json
│   │   ├── super_diamond_leggings.json
│   │   ├── super_diamond_sword.json
│   │   ├── super_golden_sword.json
│   │   ├── super_iron_sword.json
│   │   ├── super_lead_sword.json
│   │   ├── super_silver_sword.json
│   │   ├── super_steel_sword.json
│   │   ├── super_tin_sword.json
│   │   ├── sword_arrow.json
│   │   ├── sword_arrow_2.json
│   │   ├── sword_arrow_3.json
│   │   ├── table_acacia.json
│   │   ├── table_birch.json
│   │   ├── table_dark_oak.json
│   │   ├── table_jungle.json
│   │   ├── table_nether.json
│   │   ├── table_oak.json
│   │   ├── table_palm.json
│   │   ├── table_spruce.json
│   │   ├── table_tainted.json
│   │   ├── table_volcano.json
│   │   ├── tainted_plank.json
│   │   ├── terracotta_black.json
│   │   ├── terracotta_black_2.json
│   │   ├── terracotta_blue.json
│   │   ├── terracotta_blue_2.json
│   │   ├── terracotta_brown.json
│   │   ├── terracotta_cyan.json
│   │   ├── terracotta_gray.json
│   │   ├── terracotta_green.json
│   │   ├── terracotta_light_blue.json
│   │   ├── terracotta_light_gray.json
│   │   ├── terracotta_lime.json
│   │   ├── terracotta_magenta.json
│   │   ├── terracotta_orange.json
│   │   ├── terracotta_pink.json
│   │   ├── terracotta_purple.json
│   │   ├── terracotta_red.json
│   │   ├── terracotta_white.json
│   │   ├── terracotta_white_2.json
│   │   ├── terracotta_yellow.json
│   │   ├── tin_axe.json
│   │   ├── tin_chestplate.json
│   │   ├── tin_helmet.json
│   │   ├── tin_leggings.json
│   │   ├── tin_pickaxe.json
│   │   ├── tin_sword.json
│   │   ├── tnt.json
│   │   ├── tnt_2.json
│   │   ├── torch.json
│   │   ├── torch_2.json
│   │   ├── torch_3.json
│   │   ├── tower_core.json
│   │   ├── trapped_chest.json
│   │   ├── volcano_plank.json
│   │   ├── water_staff.json
│   │   ├── watermelon.json
│   │   ├── wheat.json
│   │   ├── white_torch.json
│   │   ├── wire_cutter.json
│   │   ├── wooden_arrow.json
│   │   ├── wooden_arrow_2.json
│   │   ├── wooden_arrow_3.json
│   │   ├── wooden_arrow_4.json
│   │   ├── wooden_axe.json
│   │   ├── wooden_bed_black.json
│   │   ├── wooden_bed_black_2.json
│   │   ├── wooden_bed_blue.json
│   │   ├── wooden_bed_blue_2.json
│   │   ├── wooden_bed_brown.json
│   │   ├── wooden_bed_brown_2.json
│   │   ├── wooden_bed_cyan.json
│   │   ├── wooden_bed_cyan_2.json
│   │   ├── wooden_bed_gray.json
│   │   ├── wooden_bed_gray_2.json
│   │   ├── wooden_bed_green.json
│   │   ├── wooden_bed_green_2.json
│   │   ├── wooden_bed_light_blue.json
│   │   ├── wooden_bed_light_blue_2.json
│   │   ├── wooden_bed_light_gray.json
│   │   ├── wooden_bed_light_gray_2.json
│   │   ├── wooden_bed_lime.json
│   │   ├── wooden_bed_lime_2.json
│   │   ├── wooden_bed_magenta.json
│   │   ├── wooden_bed_magenta_2.json
│   │   ├── wooden_bed_orange.json
│   │   ├── wooden_bed_orange_2.json
│   │   ├── wooden_bed_pink.json
│   │   ├── wooden_bed_pink_2.json
│   │   ├── wooden_bed_purple.json
│   │   ├── wooden_bed_purple_2.json
│   │   ├── wooden_bed_red.json
│   │   ├── wooden_bed_red_2.json
│   │   ├── wooden_bed_white.json
│   │   ├── wooden_bed_yellow.json
│   │   ├── wooden_bed_yellow_2.json
│   │   ├── wooden_boomerang.json
│   │   ├── wooden_bow.json
│   │   ├── wooden_button.json
│   │   ├── wooden_door_acacia.json
│   │   ├── wooden_door_birch.json
│   │   ├── wooden_door_dark_oak.json
│   │   ├── wooden_door_jungle.json
│   │   ├── wooden_door_oak.json
│   │   ├── wooden_door_palm.json
│   │   ├── wooden_door_spruce.json
│   │   ├── wooden_door_tainted.json
│   │   ├── wooden_door_volcano.json
│   │   ├── wooden_hoe.json
│   │   ├── wooden_pickaxe.json
│   │   ├── wooden_pressure_plate.json
│   │   ├── wooden_sword.json
│   │   ├── wool_black.json
│   │   ├── wool_black_2.json
│   │   ├── wool_blue.json
│   │   ├── wool_blue_2.json
│   │   ├── wool_brown.json
│   │   ├── wool_cyan.json
│   │   ├── wool_gray.json
│   │   ├── wool_green.json
│   │   ├── wool_light_blue.json
│   │   ├── wool_light_gray.json
│   │   ├── wool_lime.json
│   │   ├── wool_magenta.json
│   │   ├── wool_orange.json
│   │   ├── wool_pink.json
│   │   ├── wool_purple.json
│   │   ├── wool_red.json
│   │   ├── wool_white.json
│   │   ├── wool_yellow.json
│   │   ├── yellow_torch.json
│   │   └── yellow_wire.json
│   ├── repair/
│   │   ├── ancient_chestplate.json
│   │   ├── ancient_chestplate_2.json
│   │   ├── ancient_helmet.json
│   │   ├── ancient_helmet_2.json
│   │   ├── ancient_leggings.json
│   │   ├── ancient_leggings_2.json
│   │   ├── bronze_axe.json
│   │   ├── bronze_chestplate.json
│   │   ├── bronze_helmet.json
│   │   ├── bronze_leggings.json
│   │   ├── bronze_pickaxe.json
│   │   ├── bronze_sword.json
│   │   ├── copper_axe.json
│   │   ├── copper_chestplate.json
│   │   ├── copper_helmet.json
│   │   ├── copper_leggings.json
│   │   ├── copper_pickaxe.json
│   │   ├── copper_sword.json
│   │   ├── diamond_axe.json
│   │   ├── diamond_chestplate.json
│   │   ├── diamond_helmet.json
│   │   ├── diamond_leggings.json
│   │   ├── diamond_pickaxe.json
│   │   ├── diamond_sword.json
│   │   ├── golden_axe.json
│   │   ├── golden_chestplate.json
│   │   ├── golden_helmet.json
│   │   ├── golden_leggings.json
│   │   ├── golden_pickaxe.json
│   │   ├── golden_sword.json
│   │   ├── iron_axe.json
│   │   ├── iron_chestplate.json
│   │   ├── iron_helmet.json
│   │   ├── iron_leggings.json
│   │   ├── iron_pickaxe.json
│   │   ├── iron_sword.json
│   │   ├── lead_axe.json
│   │   ├── lead_chestplate.json
│   │   ├── lead_helmet.json
│   │   ├── lead_leggings.json
│   │   ├── lead_pickaxe.json
│   │   ├── lead_sword.json
│   │   ├── leather_chestplate.json
│   │   ├── leather_helmet.json
│   │   ├── leather_leggings.json
│   │   ├── nether_axe.json
│   │   ├── nether_axe_2.json
│   │   ├── nether_chestplate.json
│   │   ├── nether_chestplate_2.json
│   │   ├── nether_helmet.json
│   │   ├── nether_helmet_2.json
│   │   ├── nether_helmet_3.json
│   │   ├── nether_leggings.json
│   │   ├── nether_leggings_2.json
│   │   ├── nether_pickaxe.json
│   │   ├── nether_pickaxe_2.json
│   │   ├── nether_sword.json
│   │   ├── nether_sword_2.json
│   │   ├── silver_axe.json
│   │   ├── silver_chestplate.json
│   │   ├── silver_helmet.json
│   │   ├── silver_leggings.json
│   │   ├── silver_pickaxe.json
│   │   ├── silver_sword.json
│   │   ├── steel_axe.json
│   │   ├── steel_chestplate.json
│   │   ├── steel_helmet.json
│   │   ├── steel_leggings.json
│   │   ├── steel_pickaxe.json
│   │   ├── steel_sword.json
│   │   ├── stone_axe.json
│   │   ├── stone_hoe.json
│   │   ├── stone_pickaxe.json
│   │   ├── stone_sword.json
│   │   ├── super_bronze_sword.json
│   │   ├── super_copper_sword.json
│   │   ├── super_diamond_sword.json
│   │   ├── super_golden_sword.json
│   │   ├── super_iron_sword.json
│   │   ├── super_lead_sword.json
│   │   ├── super_nether_sword.json
│   │   ├── super_nether_sword_2.json
│   │   ├── super_silver_sword.json
│   │   ├── super_steel_sword.json
│   │   ├── super_tin_sword.json
│   │   ├── tin_axe.json
│   │   ├── tin_chestplate.json
│   │   ├── tin_helmet.json
│   │   ├── tin_leggings.json
│   │   ├── tin_pickaxe.json
│   │   └── tin_sword.json
│   └── smelt/
│       ├── baked_potato.json
│       ├── charcoal.json
│       ├── charcoal_10.json
│       ├── charcoal_11.json
│       ├── charcoal_12.json
│       ├── charcoal_13.json
│       ├── charcoal_14.json
│       ├── charcoal_15.json
│       ├── charcoal_16.json
│       ├── charcoal_17.json
│       ├── charcoal_18.json
│       ├── charcoal_2.json
│       ├── charcoal_3.json
│       ├── charcoal_4.json
│       ├── charcoal_5.json
│       ├── charcoal_6.json
│       ├── charcoal_7.json
│       ├── charcoal_8.json
│       ├── charcoal_9.json
│       ├── coal.json
│       ├── cooked_chicken.json
│       ├── cooked_cod.json
│       ├── cooked_mutton.json
│       ├── cooked_porkchop.json
│       ├── cooked_rabbit.json
│       ├── cooked_salmon.json
│       ├── copper_ingot.json
│       ├── diamond.json
│       ├── dried_kelp.json
│       ├── dye_green.json
│       ├── emerald.json
│       ├── glass.json
│       ├── glass_2.json
│       ├── glass_3.json
│       ├── gold_ingot.json
│       ├── iron_ingot.json
│       ├── lapis_lazuli.json
│       ├── lead_ingot.json
│       ├── nether_brick.json
│       ├── netherite_scrap.json
│       ├── popped_chorus_fruits.json
│       ├── quartz.json
│       ├── red_brick.json
│       ├── red_sand_smooth.json
│       ├── redstone.json
│       ├── sandstone_smooth.json
│       ├── silver_ingot.json
│       ├── sponge.json
│       ├── steak.json
│       ├── steel_ingot.json
│       ├── stone.json
│       ├── stone_brick_cracked.json
│       ├── terracotta_pink.json
│       └── tin_ingot.json
├── record/
│   └── RecordData.lua
├── settings/
│   ├── Settings.lua
│   └── SettingsData.lua
├── skins/
│   ├── skin_22.json
│   ├── skin_33.json
│   ├── skin_my.json
│   ├── skin_plin.json
│   ├── skin_redust.json
│   ├── skin_steve.json
│   ├── skin_ym.json
│   ├── skin_yy.json
│   ├── skin_zk.json
│   ├── xqz/
│   │   ├── cloth.mdp
│   │   └── hair.mdp
│   └── xqz.json
├── sounds/
│   ├── README.txt
│   ├── affectionate_scream.ogg
│   ├── anvil_land.ogg
│   ├── anvil_use.ogg
│   ├── attack1.ogg
│   ├── attack2.ogg
│   ├── barrel_open.ogg
│   ├── bat_death.ogg
│   ├── bat_hurt1.ogg
│   ├── bat_hurt2.ogg
│   ├── bat_hurt3.ogg
│   ├── bazooka_fire.ogg
│   ├── blaze_death.ogg
│   ├── blaze_hit1.ogg
│   ├── blaze_hit2.ogg
│   ├── blaze_hit3.ogg
│   ├── bow.ogg
│   ├── bowhit.ogg
│   ├── bowhit2.ogg
│   ├── broken.ogg
│   ├── button1.ogg
│   ├── cannon.ogg
│   ├── cat_hit1.ogg
│   ├── cat_hit2.ogg
│   ├── cat_hit3.ogg
│   ├── cat_meow1.ogg
│   ├── cat_meow2.ogg
│   ├── cat_meow3.ogg
│   ├── chain_gun_fire.ogg
│   ├── chest.ogg
│   ├── chestclosed.ogg
│   ├── chicken_hurt1.ogg
│   ├── chicken_hurt2.ogg
│   ├── chicken_say1.ogg
│   ├── chicken_say2.ogg
│   ├── chicken_say3.ogg
│   ├── click.ogg
│   ├── cloth1.ogg
│   ├── cloth2.ogg
│   ├── cloth3.ogg
│   ├── cow_hurt1.ogg
│   ├── cow_hurt2.ogg
│   ├── cow_hurt3.ogg
│   ├── cow_say1.ogg
│   ├── cow_say2.ogg
│   ├── cow_say3.ogg
│   ├── creeper1.ogg
│   ├── creeper2.ogg
│   ├── creeper3.ogg
│   ├── creeper_death.ogg
│   ├── dirt1.ogg
│   ├── dirt2.ogg
│   ├── dirt3.ogg
│   ├── dolphin_death.ogg
│   ├── dolphin_hurt1.ogg
│   ├── dolphin_hurt2.ogg
│   ├── dolphin_hurt3.ogg
│   ├── dolphin_play1.ogg
│   ├── dolphin_play2.ogg
│   ├── door1.ogg
│   ├── door2.ogg
│   ├── drink.ogg
│   ├── eat1.ogg
│   ├── eat2.ogg
│   ├── eat3.ogg
│   ├── enchant1.ogg
│   ├── enchant2.ogg
│   ├── enchant3.ogg
│   ├── enderman_death.ogg
│   ├── enderman_hit1.ogg
│   ├── enderman_hit2.ogg
│   ├── enderman_hit3.ogg
│   ├── enderman_idle1.ogg
│   ├── enderman_idle2.ogg
│   ├── enderman_idle3.ogg
│   ├── explode1.ogg
│   ├── explode2.ogg
│   ├── explode3.ogg
│   ├── explode4.ogg
│   ├── female_hit1.ogg
│   ├── female_hit2.ogg
│   ├── female_hit3.ogg
│   ├── fireball.ogg
│   ├── fireball2.ogg
│   ├── fizz.ogg
│   ├── fuse.ogg
│   ├── ghast_charge.ogg
│   ├── ghast_death.ogg
│   ├── ghast_moan1.ogg
│   ├── ghast_moan2.ogg
│   ├── ghast_moan3.ogg
│   ├── ghast_moan4.ogg
│   ├── glass1.ogg
│   ├── glass2.ogg
│   ├── glass3.ogg
│   ├── gore1.ogg
│   ├── gore2.ogg
│   ├── gore3.ogg
│   ├── grass.ogg
│   ├── grass1.ogg
│   ├── grass2.ogg
│   ├── grass3.ogg
│   ├── grenade_fire.ogg
│   ├── hit1.ogg
│   ├── hit2.ogg
│   ├── hit3.ogg
│   ├── laser.ogg
│   ├── launch.ogg
│   ├── lavapop.ogg
│   ├── levelup.ogg
│   ├── monster.ogg
│   ├── orb.ogg
│   ├── phantom_death.ogg
│   ├── phantom_hurt1.ogg
│   ├── phantom_hurt2.ogg
│   ├── phantom_hurt3.ogg
│   ├── pig_death.ogg
│   ├── pig_say1.ogg
│   ├── pig_say2.ogg
│   ├── pig_say3.ogg
│   ├── pistol_fire.ogg
│   ├── pop.ogg
│   ├── portal.ogg
│   ├── portal2.ogg
│   ├── pufferfish_blow_out.ogg
│   ├── pufferfish_blow_up.ogg
│   ├── pufferfish_death.ogg
│   ├── pufferfish_hurt1.ogg
│   ├── pufferfish_hurt2.ogg
│   ├── rabbit_hurt1.ogg
│   ├── rabbit_hurt2.ogg
│   ├── rabbit_hurt3.ogg
│   ├── rain1.ogg
│   ├── rain2.ogg
│   ├── rain3.ogg
│   ├── rain4.ogg
│   ├── rifle_fire.ogg
│   ├── sand1.ogg
│   ├── sand2.ogg
│   ├── sand3.ogg
│   ├── shatter.ogg
│   ├── shatter1.ogg
│   ├── shatter2.ogg
│   ├── shatter3.ogg
│   ├── shear.ogg
│   ├── sheep_say1.ogg
│   ├── sheep_say2.ogg
│   ├── sheep_say3.ogg
│   ├── shotgun_fire.ogg
│   ├── shulker_ambient1.ogg
│   ├── shulker_box_open.ogg
│   ├── shulker_close.ogg
│   ├── shulker_death.ogg
│   ├── shulker_hit1.ogg
│   ├── shulker_hit2.ogg
│   ├── shulker_hit3.ogg
│   ├── shulker_hurt1.ogg
│   ├── shulker_hurt2.ogg
│   ├── shulker_hurt3.ogg
│   ├── shulker_open.ogg
│   ├── shulker_shoot.ogg
│   ├── skeleton1.ogg
│   ├── skeleton2.ogg
│   ├── skeleton3.ogg
│   ├── skeleton_death.ogg
│   ├── slime_attack1.ogg
│   ├── slime_attack2.ogg
│   ├── snow1.ogg
│   ├── snow2.ogg
│   ├── snow3.ogg
│   ├── spider_death.ogg
│   ├── spider_say1.ogg
│   ├── spider_say2.ogg
│   ├── spider_say3.ogg
│   ├── splash.ogg
│   ├── step_cloth.ogg
│   ├── step_grass1.ogg
│   ├── step_grass2.ogg
│   ├── step_grass3.ogg
│   ├── step_grass4.ogg
│   ├── step_grass5.ogg
│   ├── step_grass6.ogg
│   ├── step_ladder.ogg
│   ├── step_sand.ogg
│   ├── step_snow1.ogg
│   ├── step_snow2.ogg
│   ├── step_snow3.ogg
│   ├── step_snow4.ogg
│   ├── step_stone1.ogg
│   ├── step_stone2.ogg
│   ├── step_stone3.ogg
│   ├── step_stone4.ogg
│   ├── step_stone5.ogg
│   ├── step_stone6.ogg
│   ├── step_wood1.ogg
│   ├── step_wood2.ogg
│   ├── step_wood3.ogg
│   ├── step_wood4.ogg
│   ├── step_wood5.ogg
│   ├── step_wood6.ogg
│   ├── stone1.ogg
│   ├── stone2.ogg
│   ├── stone3.ogg
│   ├── strip1.ogg
│   ├── strip2.ogg
│   ├── strip3.ogg
│   ├── strip4.ogg
│   ├── swim1.ogg
│   ├── swim2.ogg
│   ├── swim3.ogg
│   ├── swim4.ogg
│   ├── sys3.ogg
│   ├── system1.ogg
│   ├── system2.ogg
│   ├── thorns_hit1.ogg
│   ├── thorns_hit2.ogg
│   ├── thorns_hit3.ogg
│   ├── thorns_hit4.ogg
│   ├── thunder1.ogg
│   ├── thunder2.ogg
│   ├── thunder3.ogg
│   ├── tink1.ogg
│   ├── tink2.ogg
│   ├── tink3.ogg
│   ├── travel.ogg
│   ├── trigger.ogg
│   ├── turtle_death.ogg
│   ├── turtle_hurt1.ogg
│   ├── turtle_hurt2.ogg
│   ├── turtle_hurt3.ogg
│   ├── villager_death.ogg
│   ├── villager_hit1.ogg
│   ├── villager_hit2.ogg
│   ├── villager_hit3.ogg
│   ├── villager_say1.ogg
│   ├── villager_say2.ogg
│   ├── villager_say3.ogg
│   ├── wand1.ogg
│   ├── wand2.ogg
│   ├── wand3.ogg
│   ├── wandfail.ogg
│   ├── weapon.ogg
│   ├── wolf_bark1.ogg
│   ├── wolf_bark2.ogg
│   ├── wolf_bark3.ogg
│   ├── wolf_death.ogg
│   ├── wolf_hurt1.ogg
│   ├── wolf_hurt2.ogg
│   ├── wolf_hurt3.ogg
│   ├── wood1.ogg
│   ├── wood2.ogg
│   ├── wood3.ogg
│   ├── zombie_death.ogg
│   ├── zombie_hurt1.ogg
│   ├── zombie_hurt2.ogg
│   ├── zombie_say1.ogg
│   ├── zombie_say2.ogg
│   ├── zombie_say3.ogg
│   ├── zpig1.ogg
│   ├── zpig2.ogg
│   ├── zpig3.ogg
│   ├── zpigdeath.ogg
│   ├── zpighurt1.ogg
│   └── zpighurt2.ogg
├── spawns/
│   ├── aurora_palace.json
│   ├── end_outpost.json
│   └── monument_ocean.json
├── textures/
│   └── backgrounds/
│       └── atlas_config.json
├── trees/
│   ├── acacia/
│   │   └── acacia.json
│   ├── bare_oak/
│   │   └── bare_oak.json
│   ├── birch/
│   │   ├── birch.json
│   │   └── leaf.mdp
│   ├── blue_mushroom/
│   │   └── blue_mushroom.json
│   ├── cactus/
│   │   └── cactus.json
│   ├── dark_oak/
│   │   └── dark_oak.json
│   ├── jungle/
│   │   └── jungle.json
│   ├── oak/
│   │   ├── leaf.mdp
│   │   └── oak.json
│   ├── palm/
│   │   └── palm.json
│   ├── spruce/
│   │   └── spruce.json
│   ├── tainted/
│   │   └── tainted.json
│   └── volcano_oak/
│       └── volcano_oak.json
├── ui/
│   ├── ContainerHelper.lua
│   ├── DeathUI.lua
│   ├── GuiID.lua
│   ├── GuiLoader.lua
│   ├── GuiLoaderProxy.lua
│   ├── HotkeyUIHelper.lua
│   ├── InfoPopupUI.lua
│   ├── LanguageUI.lua
│   ├── ModListUI.lua
│   ├── MouseItemData.lua
│   ├── NewPlayerUI.lua
│   ├── NewServerUI.lua
│   ├── NewWorldUI.lua
│   ├── OptionUI.lua
│   ├── PendingUI.lua
│   ├── PlayerListUI.lua
│   ├── RawHotkeyUIHelper.lua
│   ├── ServerListUI.lua
│   ├── SettingUI.lua
│   ├── StartUI.lua
│   ├── TipUI.lua
│   ├── TipsOfTheDay.lua
│   ├── UIDefault.lua
│   ├── UIDesign.lua
│   ├── UILayerDefine.lua
│   ├── UIManager.lua
│   ├── UISlotOp.lua
│   ├── UISpritePool.lua
│   ├── UIUtil.lua
│   ├── UIWindow.lua
│   ├── WorldListUI.lua
│   ├── advancement/
│   │   ├── AdvancementContainerClient.lua
│   │   ├── AdvancementTree.lua
│   │   ├── AdvancementUI.lua
│   │   └── AdvancementUIData.lua
│   ├── backpack/
│   │   ├── BackpackContainerClient.lua
│   │   ├── BackpackContainerServer.lua
│   │   ├── BackpackUI.lua
│   │   └── BackpackUIData.lua
│   ├── brewing/
│   │   ├── BrewingContainerClient.lua
│   │   ├── BrewingContainerServer.lua
│   │   ├── BrewingUI.lua
│   │   └── BrewingUIData.lua
│   ├── chest/
│   │   ├── Chest30ContainerClient.lua
│   │   ├── Chest30ContainerServer.lua
│   │   ├── Chest30UI.lua
│   │   ├── ChestUIData.lua
│   │   ├── EnderChest30ContainerServer.lua
│   │   ├── EnderChest30UI.lua
│   │   ├── IChestContainerClient.lua
│   │   ├── IChestContainerServer.lua
│   │   └── IChestUI.lua
│   ├── craft3x/
│   │   ├── Craft3xContainerClient.lua
│   │   ├── Craft3xContainerServer.lua
│   │   ├── Craft3xHelper.lua
│   │   ├── Craft3xUI.lua
│   │   └── Craft3xUIData.lua
│   ├── enchant/
│   │   ├── EnchantContainerClient.lua
│   │   ├── EnchantContainerServer.lua
│   │   ├── EnchantUI.lua
│   │   └── EnchantUIData.lua
│   ├── hud/
│   │   └── HudUI.lua
│   ├── nei/
│   │   ├── NeiDataBrewing.lua
│   │   ├── NeiDataCrafting.lua
│   │   ├── NeiDataProxy.lua
│   │   ├── NeiDataRepairing.lua
│   │   ├── NeiDataSmelting.lua
│   │   └── NeiUI.lua
│   ├── recipe_book/
│   │   ├── RecipeBookServer.lua
│   │   └── RecipeBookUI.lua
│   ├── repair/
│   │   ├── RepairContainerClient.lua
│   │   ├── RepairContainerServer.lua
│   │   ├── RepairUI.lua
│   │   └── RepairUIData.lua
│   ├── shooter/
│   │   ├── IShooterContainerClient.lua
│   │   ├── IShooterContainerServer.lua
│   │   ├── IShooterUI.lua
│   │   ├── Shooter9ContainerClient.lua
│   │   ├── Shooter9ContainerServer.lua
│   │   └── Shooter9UI.lua
│   └── smelt/
│       ├── SmeltContainerClient.lua
│       ├── SmeltContainerServer.lua
│       ├── SmeltUI.lua
│       └── SmeltUIData.lua
├── ui_res/
│   ├── advance_tip.json
│   ├── advancement_cell.json
│   ├── base.json
│   ├── base2.json
│   ├── base3.json
│   ├── base_list_cell.json
│   ├── base_list_cell_highlight.json
│   ├── base_list_cell_highlight_2.json
│   ├── black.json
│   ├── button_disabled.json
│   ├── button_highlight.json
│   ├── button_normal.json
│   ├── button_pressed.json
│   ├── cell_empty.json
│   ├── cell_empty_2.json
│   ├── cell_empty_3.json
│   ├── cell_empty_4.json
│   ├── cell_normal.json
│   ├── cell_selected.json
│   ├── cell_selected_2.json
│   ├── cell_selected_3.json
│   ├── cell_selected_4.json
│   ├── cursor.cur
│   ├── round_rect_white.json
│   ├── tab.json
│   ├── tab_clicked.json
│   ├── tipbox.json
│   ├── white.json
│   ├── white_circle.json
│   └── window_frame_01.json
├── util/
│   ├── Algorithm.lua
│   ├── DictUtil.lua
│   ├── MiscHelper.lua
│   ├── OrderedArray.lua
│   ├── PhysicsUtil.lua
│   ├── SnakeModel.lua
│   ├── StringUtil.lua
│   └── ValidChecker.lua
├── world/
│   ├── Portals.lua
│   └── TCModWorldData.lua
├── world_gen/
│   ├── ChunkGenerator.lua
│   ├── ModChunkGenerator.lua
│   ├── SpecialTerrainProxies.lua
│   ├── TerrainProxies.lua
│   ├── TransitionProxies.lua
│   └── WorldGenDefine.lua
└── world_gen_init.lua
Condensed preview — 3382 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,329K chars).
[
  {
    "path": "DebugHelper.lua",
    "chars": 5839,
    "preview": "local DebugHelper = class(\"DebugHelper\")\nlocal DebugHelperConfig = require(\"DebugHelperConfig\")\n\nlocal function PrintRec"
  },
  {
    "path": "DebugHelperConfig.lua",
    "chars": 4503,
    "preview": "local DebugHelperConfig = {\n    Enable = true,\n\n    FlyDebug = {\n        HotKey = Keys.P,\n    },\n\n    DayDebug = {\n     "
  },
  {
    "path": "LICENSE",
    "chars": 1069,
    "preview": "MIT License\n\nCopyright (c) 2022 skyblueyoshi\n\nPermission is hereby granted, free of charge, to any person obtaining a co"
  },
  {
    "path": "README.md",
    "chars": 50,
    "preview": "# TerraCraft\nThe TerraCraft official vanilla mod.\n"
  },
  {
    "path": "advancements/AdvancementTriggers.lua",
    "chars": 7597,
    "preview": "---@class TC.AdvancementTriggers\nlocal AdvancementTriggers = class(\"AdvancementProxies\")\n\nlocal s_instance\n---@return TC"
  },
  {
    "path": "advancements/ancient_ingot.json",
    "chars": 133,
    "preview": "\n{\n  \"ancient_ingot\": {\n    \"itemId\": \"ancient_ingot\",\n    \"parentId\": \"netherite\",\n    \"showTip\": true,\n    \"broadcase\""
  },
  {
    "path": "advancements/ancient_wear.json",
    "chars": 137,
    "preview": "\n{\n  \"ancient_wear\": {\n    \"itemId\": \"ancient_helmet\",\n    \"parentId\": \"ancient_ingot\",\n    \"showTip\": true,\n    \"broadc"
  },
  {
    "path": "advancements/blaze_rod.json",
    "chars": 122,
    "preview": "\n{\n  \"blaze_rod\": {\n    \"itemId\": \"blaze_rod\",\n    \"parentId\": \"nether\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n"
  },
  {
    "path": "advancements/bow.json",
    "chars": 125,
    "preview": "\n{\n  \"bow\": {\n    \"itemId\": \"wooden_bow\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broadcase\": true\n "
  },
  {
    "path": "advancements/bread.json",
    "chars": 112,
    "preview": "\n{\n  \"bread\": {\n    \"itemId\": \"bread\",\n    \"parentId\": \"farm\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/brew.json",
    "chars": 124,
    "preview": "\n{\n  \"brew\": {\n    \"itemId\": \"brewing_stand\",\n    \"parentId\": \"blaze_rod\",\n    \"showTip\": true,\n    \"broadcase\": true\n  "
  },
  {
    "path": "advancements/bronze.json",
    "chars": 120,
    "preview": "\n{\n  \"bronze\": {\n    \"itemId\": \"bronze_ingot\",\n    \"parentId\": \"iron\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/cake.json",
    "chars": 110,
    "preview": "\n{\n  \"cake\": {\n    \"itemId\": \"cake\",\n    \"parentId\": \"farm\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/crafting_table.json",
    "chars": 130,
    "preview": "\n{\n  \"crafting_table\": {\n    \"itemId\": \"crafting_table\",\n    \"parentId\": \"wood\",\n    \"showTip\": true,\n    \"broadcase\": t"
  },
  {
    "path": "advancements/crison_eye.json",
    "chars": 130,
    "preview": "\n{\n  \"crison_eye\": {\n    \"itemId\": \"strange_eye\",\n    \"parentId\": \"strange_len\",\n    \"showTip\": true,\n    \"broadcase\": t"
  },
  {
    "path": "advancements/crison_eye_killed.json",
    "chars": 136,
    "preview": "\n{\n  \"crison_eye_killed\": {\n    \"itemId\": \"strange_eye\",\n    \"parentId\": \"crison_eye\",\n    \"showTip\": true,\n    \"broadca"
  },
  {
    "path": "advancements/crossbow.json",
    "chars": 118,
    "preview": "\n{\n  \"crossbow\": {\n    \"itemId\": \"cross_bow\",\n    \"parentId\": \"bow\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/diamond.json",
    "chars": 116,
    "preview": "\n{\n  \"diamond\": {\n    \"itemId\": \"diamond\",\n    \"parentId\": \"iron\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/diamond_ingot.json",
    "chars": 131,
    "preview": "\n{\n  \"diamond_ingot\": {\n    \"itemId\": \"diamond_ingot\",\n    \"parentId\": \"diamond\",\n    \"showTip\": true,\n    \"broadcase\": "
  },
  {
    "path": "advancements/diamond_wear.json",
    "chars": 135,
    "preview": "\n{\n  \"diamond_wear\": {\n    \"itemId\": \"diamond_chestplate\",\n    \"parentId\": \"diamond\",\n    \"showTip\": true,\n    \"broadcas"
  },
  {
    "path": "advancements/dungeon_eater.json",
    "chars": 139,
    "preview": "\n{\n  \"dungeon_eater\": {\n    \"itemId\": \"dungeon_eater\",\n    \"parentId\": \"go_dark_dungeon\",\n    \"showTip\": true,\n    \"broa"
  },
  {
    "path": "advancements/dungeon_eater_killed.json",
    "chars": 144,
    "preview": "\n{\n  \"dungeon_eater_killed\": {\n    \"itemId\": \"dungeon_eater\",\n    \"parentId\": \"dungeon_eater\",\n    \"showTip\": true,\n    "
  },
  {
    "path": "advancements/enchant.json",
    "chars": 129,
    "preview": "\n{\n  \"enchant\": {\n    \"itemId\": \"enchantment_table\",\n    \"parentId\": \"diamond\",\n    \"showTip\": true,\n    \"broadcase\": tr"
  },
  {
    "path": "advancements/ender_chest.json",
    "chars": 131,
    "preview": "\n{\n  \"ender_chest\": {\n    \"itemId\": \"ender_chest\",\n    \"parentId\": \"ender_pearl\",\n    \"showTip\": true,\n    \"broadcase\": "
  },
  {
    "path": "advancements/ender_pearl.json",
    "chars": 126,
    "preview": "\n{\n  \"ender_pearl\": {\n    \"itemId\": \"ender_pearl\",\n    \"parentId\": \"hunter\",\n    \"showTip\": true,\n    \"broadcase\": true\n"
  },
  {
    "path": "advancements/farm.json",
    "chars": 125,
    "preview": "\n{\n  \"farm\": {\n    \"itemId\": \"stone_hoe\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broadcase\": true\n "
  },
  {
    "path": "advancements/flesh_ingot.json",
    "chars": 124,
    "preview": "\n{\n  \"flesh_ingot\": {\n    \"itemId\": \"flesh_ingot\",\n    \"parentId\": \"gold\",\n    \"showTip\": true,\n    \"broadcase\": true\n  "
  },
  {
    "path": "advancements/flesh_wear.json",
    "chars": 131,
    "preview": "\n{\n  \"flesh_wear\": {\n    \"itemId\": \"flesh_helmet\",\n    \"parentId\": \"flesh_ingot\",\n    \"showTip\": true,\n    \"broadcase\": "
  },
  {
    "path": "advancements/furnace.json",
    "chars": 117,
    "preview": "\n{\n  \"furnace\": {\n    \"itemId\": \"furnace\",\n    \"parentId\": \"stone\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/ghast.json",
    "chars": 119,
    "preview": "\n{\n  \"ghast\": {\n    \"itemId\": \"ghast_tear\",\n    \"parentId\": \"nether\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/ghost.json",
    "chars": 121,
    "preview": "\n{\n  \"ghost\": {\n    \"itemId\": \"ghost\",\n    \"parentId\": \"ghost_crystal\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}"
  },
  {
    "path": "advancements/ghost_crystal.json",
    "chars": 138,
    "preview": "\n{\n  \"ghost_crystal\": {\n    \"itemId\": \"ghost_crystal\",\n    \"parentId\": \"go_ghost_house\",\n    \"showTip\": true,\n    \"broad"
  },
  {
    "path": "advancements/go_bone_dungeon.json",
    "chars": 152,
    "preview": "\n{\n  \"go_bone_dungeon\": {\n    \"itemId\": \"more_dungeons:skull_block\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": tr"
  },
  {
    "path": "advancements/go_dark_dungeon.json",
    "chars": 159,
    "preview": "\n{\n  \"go_dark_dungeon\": {\n    \"itemId\": \"more_dungeons:dungeon_wall_green\",\n    \"parentId\": \"go_ghost_house\",\n    \"showT"
  },
  {
    "path": "advancements/go_deep_snow.json",
    "chars": 131,
    "preview": "\n{\n  \"go_deep_snow\": {\n    \"itemId\": \"tc:snow\",\n    \"parentId\": \"go_ghost_house\",\n    \"showTip\": true,\n    \"broadcase\": "
  },
  {
    "path": "advancements/go_desert_dungeon.json",
    "chars": 161,
    "preview": "\n{\n  \"go_desert_dungeon\": {\n    \"itemId\": \"more_dungeons:castle_pile_block\",\n    \"parentId\": \"go_dark_dungeon\",\n    \"sho"
  },
  {
    "path": "advancements/go_ghost_house.json",
    "chars": 157,
    "preview": "\n{\n  \"go_ghost_house\": {\n    \"itemId\": \"more_dungeons:statue_mini_ghast\",\n    \"parentId\": \"crafting_table\",\n    \"showTip"
  },
  {
    "path": "advancements/go_ice_dungeon.json",
    "chars": 155,
    "preview": "\n{\n  \"go_ice_dungeon\": {\n    \"itemId\": \"more_dungeons:dungeon_wall_blue\",\n    \"parentId\": \"go_deep_snow\",\n    \"showTip\":"
  },
  {
    "path": "advancements/go_lava_dungeon.json",
    "chars": 138,
    "preview": "\n{\n  \"go_lava_dungeon\": {\n    \"itemId\": \"bucket_lava\",\n    \"parentId\": \"go_ice_dungeon\",\n    \"showTip\": true,\n    \"broad"
  },
  {
    "path": "advancements/gold.json",
    "chars": 116,
    "preview": "\n{\n  \"gold\": {\n    \"itemId\": \"gold_ingot\",\n    \"parentId\": \"iron\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/gold_wear.json",
    "chars": 128,
    "preview": "\n{\n  \"gold_wear\": {\n    \"itemId\": \"golden_chestplate\",\n    \"parentId\": \"gold\",\n    \"showTip\": true,\n    \"broadcase\": tru"
  },
  {
    "path": "advancements/guardian.json",
    "chars": 120,
    "preview": "\n{\n  \"guardian\": {\n    \"itemId\": \"guardian\",\n    \"parentId\": \"hunter\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/gun.json",
    "chars": 114,
    "preview": "\n{\n  \"gun\": {\n    \"itemId\": \"handgun\",\n    \"parentId\": \"nether\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/hunter.json",
    "chars": 113,
    "preview": "\n{\n  \"hunter\": {\n    \"itemId\": \"bone\",\n    \"parentId\": \"sword\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/ice_element_ball.json",
    "chars": 140,
    "preview": "\n{\n  \"ice_element_ball\": {\n    \"itemId\": \"ice_element_ball\",\n    \"parentId\": \"snow_guard\",\n    \"showTip\": true,\n    \"bro"
  },
  {
    "path": "advancements/inventory.json",
    "chars": 170,
    "preview": "{\n  \"inventory\": {\n    \"itemId\": \"book\",\n    \"showTip\": true,\n    \"broadcase\": true,\n    \"trigger\": {\n      \"name\": \"ope"
  },
  {
    "path": "advancements/iron.json",
    "chars": 236,
    "preview": "\n{\n  \"iron\": {\n    \"itemId\": \"iron_ingot\",\n    \"parentId\": \"furnace\",\n    \"showTip\": true,\n    \"broadcase\": true,\n    \"t"
  },
  {
    "path": "advancements/knight_ingot.json",
    "chars": 137,
    "preview": "\n{\n  \"knight_ingot\": {\n    \"itemId\": \"knight_ingot\",\n    \"parentId\": \"go_dark_dungeon\",\n    \"showTip\": true,\n    \"broadc"
  },
  {
    "path": "advancements/knight_wear.json",
    "chars": 134,
    "preview": "\n{\n  \"knight_wear\": {\n    \"itemId\": \"knight_helmet\",\n    \"parentId\": \"knight_ingot\",\n    \"showTip\": true,\n    \"broadcase"
  },
  {
    "path": "advancements/lava.json",
    "chars": 117,
    "preview": "\n{\n  \"lava\": {\n    \"itemId\": \"bucket_lava\",\n    \"parentId\": \"iron\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/leather.json",
    "chars": 117,
    "preview": "\n{\n  \"leather\": {\n    \"itemId\": \"leather\",\n    \"parentId\": \"sword\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/magic_gold_wear.json",
    "chars": 134,
    "preview": "\n{\n  \"magic_gold_wear\": {\n    \"itemId\": \"magic_gold_helmet\",\n    \"parentId\": \"gold\",\n    \"showTip\": true,\n    \"broadcase"
  },
  {
    "path": "advancements/magic_limit.json",
    "chars": 124,
    "preview": "\n{\n  \"magic_limit\": {\n    \"itemId\": \"mana_piece\",\n    \"parentId\": \"staff\",\n    \"showTip\": true,\n    \"broadcase\": true\n  "
  },
  {
    "path": "advancements/mine.json",
    "chars": 130,
    "preview": "\n{\n  \"mine\": {\n    \"itemId\": \"wooden_pickaxe\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broadcase\": t"
  },
  {
    "path": "advancements/mine_bronze.json",
    "chars": 132,
    "preview": "\n{\n  \"mine_bronze\": {\n    \"itemId\": \"bronze_pickaxe\",\n    \"parentId\": \"mine_iron\",\n    \"showTip\": true,\n    \"broadcase\":"
  },
  {
    "path": "advancements/mine_copper.json",
    "chars": 130,
    "preview": "\n{\n  \"mine_copper\": {\n    \"itemId\": \"copper_pickaxe\",\n    \"parentId\": \"mine_up\",\n    \"showTip\": true,\n    \"broadcase\": t"
  },
  {
    "path": "advancements/mine_diamond.json",
    "chars": 134,
    "preview": "\n{\n  \"mine_diamond\": {\n    \"itemId\": \"diamond_pickaxe\",\n    \"parentId\": \"mine_gold\",\n    \"showTip\": true,\n    \"broadcase"
  },
  {
    "path": "advancements/mine_gold.json",
    "chars": 132,
    "preview": "\n{\n  \"mine_gold\": {\n    \"itemId\": \"golden_pickaxe\",\n    \"parentId\": \"mine_bronze\",\n    \"showTip\": true,\n    \"broadcase\":"
  },
  {
    "path": "advancements/mine_iron.json",
    "chars": 130,
    "preview": "\n{\n  \"mine_iron\": {\n    \"itemId\": \"iron_pickaxe\",\n    \"parentId\": \"mine_copper\",\n    \"showTip\": true,\n    \"broadcase\": t"
  },
  {
    "path": "advancements/mine_netherite.json",
    "chars": 138,
    "preview": "\n{\n  \"mine_netherite\": {\n    \"itemId\": \"nether_pickaxe\",\n    \"parentId\": \"mine_diamond\",\n    \"showTip\": true,\n    \"broad"
  },
  {
    "path": "advancements/mine_up.json",
    "chars": 123,
    "preview": "\n{\n  \"mine_up\": {\n    \"itemId\": \"stone_pickaxe\",\n    \"parentId\": \"stone\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }"
  },
  {
    "path": "advancements/mirror.json",
    "chars": 127,
    "preview": "\n{\n  \"mirror\": {\n    \"itemId\": \"ender_mirror\",\n    \"parentId\": \"ender_pearl\",\n    \"showTip\": true,\n    \"broadcase\": true"
  },
  {
    "path": "advancements/nether.json",
    "chars": 120,
    "preview": "\n{\n  \"nether\": {\n    \"itemId\": \"soul_sand\",\n    \"parentId\": \"diamond\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/nether_destroyer.json",
    "chars": 218,
    "preview": "\n{\n  \"nether_destroyer\": {\n    \"itemId\": \"nether_altar\",\n    \"parentId\": \"nether\",\n    \"showTip\": true,\n    \"broadcase\":"
  },
  {
    "path": "advancements/nether_destroyer_killed.json",
    "chars": 246,
    "preview": "\n{\n  \"nether_destroyer_killed\": {\n    \"itemId\": \"nether_destroyer_loot\",\n    \"parentId\": \"nether_destroyer\",\n    \"showTi"
  },
  {
    "path": "advancements/netherite.json",
    "chars": 131,
    "preview": "\n{\n  \"netherite\": {\n    \"itemId\": \"ore_ancient_debris\",\n    \"parentId\": \"nether\",\n    \"showTip\": true,\n    \"broadcase\": "
  },
  {
    "path": "advancements/netherite_full_wear.json",
    "chars": 272,
    "preview": "\n{\n  \"netherite_full_wear\": {\n    \"itemId\": \"nether_helmet\",\n    \"parentId\": \"netherite\",\n    \"showTip\": true,\n    \"broa"
  },
  {
    "path": "advancements/portal.json",
    "chars": 138,
    "preview": "\n{\n  \"portal\": {\n    \"itemId\": \"portal:nature_portal\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broad"
  },
  {
    "path": "advancements/pumpkin_helmet.json",
    "chars": 130,
    "preview": "\n{\n  \"pumpkin_helmet\": {\n    \"itemId\": \"pumpkin_helmet\",\n    \"parentId\": \"farm\",\n    \"showTip\": true,\n    \"broadcase\": t"
  },
  {
    "path": "advancements/recipe_book.json",
    "chars": 127,
    "preview": "\n{\n  \"recipe_book\": {\n    \"itemId\": \"book\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broadcase\": true"
  },
  {
    "path": "advancements/redstone.json",
    "chars": 119,
    "preview": "\n{\n  \"redstone\": {\n    \"itemId\": \"redstone\",\n    \"parentId\": \"stone\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/redstone_wire.json",
    "chars": 127,
    "preview": "\n{\n  \"redstone_wire\": {\n    \"itemId\": \"red_wire\",\n    \"parentId\": \"redstone\",\n    \"showTip\": true,\n    \"broadcase\": true"
  },
  {
    "path": "advancements/repair.json",
    "chars": 113,
    "preview": "\n{\n  \"repair\": {\n    \"itemId\": \"anvil\",\n    \"parentId\": \"iron\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/rocket_boost.json",
    "chars": 136,
    "preview": "\n{\n  \"rocket_boost\": {\n    \"itemId\": \"rocket_boost\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broadca"
  },
  {
    "path": "advancements/snow_guard.json",
    "chars": 126,
    "preview": "\n{\n  \"snow_guard\": {\n    \"itemId\": \"steel_helmet\",\n    \"parentId\": \"hunter\",\n    \"showTip\": true,\n    \"broadcase\": true\n"
  },
  {
    "path": "advancements/snow_queen.json",
    "chars": 213,
    "preview": "\n{\n  \"snow_queen\": {\n    \"itemId\": \"snow_glass_ball\",\n    \"parentId\": \"snow_guard\",\n    \"showTip\": true,\n    \"broadcase\""
  },
  {
    "path": "advancements/snow_queen_killed.json",
    "chars": 221,
    "preview": "\n{\n  \"snow_queen_killed\": {\n    \"itemId\": \"snow_queen_loot\",\n    \"parentId\": \"snow_queen\",\n    \"showTip\": true,\n    \"bro"
  },
  {
    "path": "advancements/staff.json",
    "chars": 123,
    "preview": "\n{\n  \"staff\": {\n    \"itemId\": \"amethyst_staff\",\n    \"parentId\": \"hunter\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }"
  },
  {
    "path": "advancements/star_wear.json",
    "chars": 135,
    "preview": "\n{\n  \"star_wear\": {\n    \"itemId\": \"star_helmet\",\n    \"parentId\": \"crison_eye_killed\",\n    \"showTip\": true,\n    \"broadcas"
  },
  {
    "path": "advancements/steel.json",
    "chars": 118,
    "preview": "\n{\n  \"steel\": {\n    \"itemId\": \"steel_ingot\",\n    \"parentId\": \"iron\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/stone.json",
    "chars": 118,
    "preview": "\n{\n  \"stone\": {\n    \"itemId\": \"stone_brick\",\n    \"parentId\": \"mine\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "advancements/strange_len.json",
    "chars": 126,
    "preview": "\n{\n  \"strange_len\": {\n    \"itemId\": \"strange_len\",\n    \"parentId\": \"hunter\",\n    \"showTip\": true,\n    \"broadcase\": true\n"
  },
  {
    "path": "advancements/super_diamond_sword.json",
    "chars": 143,
    "preview": "\n{\n  \"super_diamond_sword\": {\n    \"itemId\": \"super_diamond_sword\",\n    \"parentId\": \"diamond\",\n    \"showTip\": true,\n    \""
  },
  {
    "path": "advancements/super_diamond_wear.json",
    "chars": 149,
    "preview": "\n{\n  \"super_diamond_wear\": {\n    \"itemId\": \"super_diamond_helmet\",\n    \"parentId\": \"diamond_ingot\",\n    \"showTip\": true,"
  },
  {
    "path": "advancements/sword.json",
    "chars": 129,
    "preview": "\n{\n  \"sword\": {\n    \"itemId\": \"wooden_sword\",\n    \"parentId\": \"crafting_table\",\n    \"showTip\": true,\n    \"broadcase\": tr"
  },
  {
    "path": "advancements/wood.json",
    "chars": 119,
    "preview": "\n{\n  \"wood\": {\n    \"itemId\": \"wood_oak\",\n    \"parentId\": \"inventory\",\n    \"showTip\": true,\n    \"broadcase\": true\n  }\n}\n"
  },
  {
    "path": "api.lua",
    "chars": 663,
    "preview": "---@class TC.API\nlocal API = class(\"API\")\n\nlocal s_instance\n---@return TC.API\nfunction API.getInstance()\n    if s_instan"
  },
  {
    "path": "apis/Account.lua",
    "chars": 203,
    "preview": "---@API\n\n---@class Account 描述一个账号信息。\n---@field name string 当前账号的名称。\n---@field skinID int 当前账号的皮肤ID。\nlocal Account = {}\n\n"
  },
  {
    "path": "apis/AccountUtils.lua",
    "chars": 462,
    "preview": "---@API\n\n---@class AccountUtils 账号通用类,封装了账号相关操作函数。\nlocal AccountUtils = {}\n\n---从存档中加载一个账号。\n---@param accountName string "
  },
  {
    "path": "apis/Advancement.lua",
    "chars": 265,
    "preview": "---@API\n\n---@class Advancement 描述一项成就。\n---@field itemID int 成就使用的物品ID,用于在成就树界面显示物品图标。\n---@field parentID int 成就在成就树的父成就I"
  },
  {
    "path": "apis/AdvancementUtils.lua",
    "chars": 228,
    "preview": "---@API\n\n---@class AdvancementUtils 成就通用类。\nlocal AdvancementUtils = {}\n\n---由成就ID,获得一个成就信息。\n---@param advancementID int 成"
  },
  {
    "path": "apis/Attack.lua",
    "chars": 434,
    "preview": "---@API\n\n---@class Attack 表示一个攻击属性。\n---@field attack int 伤害值。\n---@field knockBack int 击退值。\n---@field crit int 攻击的百分暴击率。1"
  },
  {
    "path": "apis/BiomeData.lua",
    "chars": 1155,
    "preview": "---@API\n\n---@class BiomeTerrain 描述一个地形信息。\n---@field name string 地形名称。\n---@field times double 生成次数(小于1表示概率)\n---@field siz"
  },
  {
    "path": "apis/BiomeUtils.lua",
    "chars": 535,
    "preview": "---@API\n\n---@class BiomeUtils 生物群系通用类。\nlocal BiomeUtils = {}\n\n---由指定生物群系类型和在该生物群系类型的索引,返回生物群系数据。\n---@param biomeTypeID i"
  },
  {
    "path": "apis/BlockData.lua",
    "chars": 876,
    "preview": "---@API\n\n---@class BlockData 描述一个方块数据。\n---@field textureLocation TextureLocation 方块渲染在地图中的纹理。\n---@field group int 方块组,决定"
  },
  {
    "path": "apis/BlockEntity.lua",
    "chars": 423,
    "preview": "---@API\n\n---@class BlockEntity\n---@field id int\n---@field xi int\n---@field yi int\n---@field dataWatcher DataWatcher\nloca"
  },
  {
    "path": "apis/BlockUtils.lua",
    "chars": 201,
    "preview": "---@class BlockUtils\n---@field maxID int\n---@field oreGroups OreDataGroup[]\nlocal BlockUtils = {}\n\n---@param blockID int"
  },
  {
    "path": "apis/Buff.lua",
    "chars": 164,
    "preview": "---@class Buff\n---@field id int\n---@field time int\nlocal Buff = {}\n\n---@param id int\n---@param time int\n---@return Buff\n"
  },
  {
    "path": "apis/ClientBoundPacketWriter.lua",
    "chars": 371,
    "preview": "---@class ClientBoundPacket\n---@field writerBuffer ByteStream\n---@field readerBuffer ByteStream\nlocal ClientBoundPacket "
  },
  {
    "path": "apis/ClientState.lua",
    "chars": 286,
    "preview": "---@class ClientState\n---@field LoadingResource int\n---@field InMenu int\n---@field Joining int\n---@field LoadingWorld in"
  },
  {
    "path": "apis/ClientStateManager.lua",
    "chars": 307,
    "preview": "---@class ClientStateManager\nlocal ClientStateManager = class(\"ClientStateManager\")\n\n---StartJoining\n---@param joinData "
  },
  {
    "path": "apis/Container.lua",
    "chars": 1952,
    "preview": "---@class Container\nlocal Container = {}\n\n---AddSlotToContainer\n---@overload function(inventory:Inventory,slotIndex:int)"
  },
  {
    "path": "apis/DataWatcher.lua",
    "chars": 2486,
    "preview": "---@API\n\n---@class DataWatcher 数据同步类,内部封装了网络同步逻辑。\nlocal DataWatcher = {}\n\n---\n---@overload fun(value:int):int\n---@param "
  },
  {
    "path": "apis/DeathReason.lua",
    "chars": 265,
    "preview": "---@class DeathReason\n---@field UNKNOWN int\n---@field SUICIDE int\n---@field FALL int\n---@field DROWN int\n---@field BOOM "
  },
  {
    "path": "apis/Defense.lua",
    "chars": 808,
    "preview": "-- Document\n-- Defense Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#defense\n--\n-- Defense类: https://bl"
  },
  {
    "path": "apis/Direction.lua",
    "chars": 515,
    "preview": "-- Document\n-- Direction Enum Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#direction\n--\n-- Direction枚举"
  },
  {
    "path": "apis/Effect.lua",
    "chars": 1584,
    "preview": "---@class Effect:Entity\n---@field decSpeed double\n---@field decScale double\n---@field decAlpha double\n---@field decRotat"
  },
  {
    "path": "apis/EffectUtils.lua",
    "chars": 2232,
    "preview": "---@class EffectUtils\nlocal EffectUtils = {}\n\n---\n---\n---@overload fun(id:int,centerX:double,centerY:double):Effect\n---@"
  },
  {
    "path": "apis/Enchantment.lua",
    "chars": 202,
    "preview": "---@class Enchantment\n---@field id int\n---@field level int\nlocal Enchantment = {}\n\n---@param id int\n---@param level int\n"
  },
  {
    "path": "apis/EnchantmentData.lua",
    "chars": 284,
    "preview": "---@class EnchantmentData\n---@field allowMaxLevel int\n---@field minCreatingLevel int\n---@field noCreating boolean\nlocal "
  },
  {
    "path": "apis/EnchantmentUtils.lua",
    "chars": 351,
    "preview": "---@class EnchantmentUtils\nlocal EnchantmentUtils = {}\n\n---@param enchantmentID int\n---@return EnchantmentData\nfunction "
  },
  {
    "path": "apis/Entity.lua",
    "chars": 2974,
    "preview": "---@API\n\n---@class Entity 描述一个基本实体类。\n---@field x double 实体左上角x坐标。\n---@field y double 实体左上角y坐标。\n---@field centerX double "
  },
  {
    "path": "apis/EntityIndex.lua",
    "chars": 260,
    "preview": "---@class EntityIndex\n---@field entityID int\n---@field uniqueID int\nlocal EntityIndex = {}\n\n---@overload fun():EntityInd"
  },
  {
    "path": "apis/GameMode.lua",
    "chars": 125,
    "preview": "---@class GameMode\n---@field Survival int\n---@field Creative int\n---@field Adventure int\nlocal GameMode = {}\n\nreturn Gam"
  },
  {
    "path": "apis/GlobalBlock.lua",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "apis/GlobalNpc.lua",
    "chars": 2994,
    "preview": "---@class GlobalNpc\n---@field npc Npc\nlocal GlobalNpc = {}\n\n--- This function is called once when the NPC is spawned.\n--"
  },
  {
    "path": "apis/GlobalPlayer.lua",
    "chars": 4131,
    "preview": "---@class GlobalPlayer\n---@field player Player\nlocal GlobalPlayer = {}\n\nfunction GlobalPlayer:Awake()\nend\n\n--- This func"
  },
  {
    "path": "apis/GuiContainer.lua",
    "chars": 599,
    "preview": "---@class GuiContainer\n---@field container Container\nlocal GuiContainer = {}\n\n---__init\n---@param container Container\nfu"
  },
  {
    "path": "apis/Hitbox.lua",
    "chars": 1658,
    "preview": "-- Document\n-- Hitbox Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#hitbox\n--\n-- Hitbox类: https://bluey"
  },
  {
    "path": "apis/Inventory.lua",
    "chars": 1604,
    "preview": "---@API\n\n---@class Inventory 描述物品格子集合。\n---@field slotCount int 物品格子的总数。\nlocal Inventory = {}\n\n---场景一个物品格子集合对象。\n---@param"
  },
  {
    "path": "apis/Item.lua",
    "chars": 1868,
    "preview": "---@class Item\n---@field id int\n---@field idName string\n---@field mod Mod\n---@field type ItemType_Value\n---@field maxSta"
  },
  {
    "path": "apis/ItemRegistry.lua",
    "chars": 268,
    "preview": "---@class ItemRegistry\nlocal ItemRegistry = {}\n\n---GetItemByID\n---@param id int\n---@return Item\nfunction ItemRegistry.Ge"
  },
  {
    "path": "apis/ItemStack.lua",
    "chars": 4309,
    "preview": "---@API\n\n---@class ItemStack 描述一组堆叠物品。\n---@field stackSize int Read-only 当前堆叠数量。\n---@field durable double 当前物品耐久。\n---@fi"
  },
  {
    "path": "apis/ItemType.lua",
    "chars": 242,
    "preview": "---@class ItemType_Value\n\n---@class ItemType\n---@field Block ItemType_Value\n---@field Tool ItemType_Value\n---@field Mate"
  },
  {
    "path": "apis/ItemUtils.lua",
    "chars": 1023,
    "preview": "---@class ItemUtils\n---@field maxRootGroupCount int\nlocal ItemUtils = {}\n\n---CreateDrop\n---@overload fun(itemStack:ItemS"
  },
  {
    "path": "apis/JoinData.lua",
    "chars": 233,
    "preview": "---@class JoinData\n---@field playerName string\n---@field worldName string\n---@field address string\n---@field port int\n--"
  },
  {
    "path": "apis/LangUtils.lua",
    "chars": 780,
    "preview": "---@class LangUtils\nlocal LangUtils = {}\n\n---\n---@param itemID int\n---@return string\nfunction LangUtils.ItemName(itemID)"
  },
  {
    "path": "apis/LightingUtils.lua",
    "chars": 979,
    "preview": "---@class LightingUtils\nlocal LightingUtils = {}\n\n---Add\n---@overload fun(xi:int,yi:int,alpha:int)\n---@overload fun(xi:i"
  },
  {
    "path": "apis/MapPos.lua",
    "chars": 83,
    "preview": "---@class MapPos\n---@field xi int\n---@field yi int\nlocal MapPos = {}\n\nreturn MapPos"
  },
  {
    "path": "apis/MapUtils.lua",
    "chars": 9536,
    "preview": "---@class MapUtils\nlocal MapUtils = {}\n\n---IsValid\n---@param xi int\n---@param yi int\n---@return boolean\nfunction MapUtil"
  },
  {
    "path": "apis/MiscUtils.lua",
    "chars": 3733,
    "preview": "---@class MiscUtils\n---@field screenX double\n---@field screenY double\n---@field screenWidth int\n---@field screenHeight i"
  },
  {
    "path": "apis/Mod.lua",
    "chars": 1317,
    "preview": "---@class Mod 描述一个模组,维护模组的基本信息。\n---@field modId string 模组的命名空间。\n---@field displayName string 模组显示名称。\n---@field version s"
  },
  {
    "path": "apis/ModBlock.lua",
    "chars": 1515,
    "preview": "---@class ModBlock\nlocal ModBlock = {}\n\n---OnPlayerCollide\n---@param xi int\n---@param yi int\n---@param player Player\n---"
  },
  {
    "path": "apis/ModBlockEntity.lua",
    "chars": 663,
    "preview": "---@class ModBlockEntity\n---@field blockEntity BlockEntity\nlocal ModBlockEntity = {}\n\nfunction ModBlockEntity:OnPlaced()"
  },
  {
    "path": "apis/ModItem.lua",
    "chars": 1126,
    "preview": "---@class ModItem\n---@field itemStack ItemStack\nlocal ModItem = {}\n\nfunction ModItem:Init()\nend\n\n---DrawIcon\n---@param p"
  },
  {
    "path": "apis/ModNpc.lua",
    "chars": 1926,
    "preview": "---@class ModNpc\n---@field npc Npc\n---@field syncData table\nlocal ModNpc = {}\n\n--- This function is called once when the"
  },
  {
    "path": "apis/ModProjectile.lua",
    "chars": 102,
    "preview": "---@class ModProjectile\n---@field projectile Projectile\nlocal ModProjectile = {}\n\nreturn ModProjectile"
  },
  {
    "path": "apis/ModTextureData.lua",
    "chars": 306,
    "preview": "---@class ModTextureData\n---@field textureLocation TextureLocation\n---@field width int\n---@field height int\n---@field fr"
  },
  {
    "path": "apis/ModTextureUtils.lua",
    "chars": 192,
    "preview": "---@class ModTextureUtils\nlocal ModTextureUtils = {}\n\n---GetData\n---@param modTextureID int\n---@return ModTextureData\nfu"
  },
  {
    "path": "apis/Npc.lua",
    "chars": 8114,
    "preview": "---@API\n\n---@class Npc:Entity 描述一个NPC实体。\n---@field entityIndex EntityIndex\n---@field id int 当前NPC的动态ID。\n---@field dataWa"
  },
  {
    "path": "apis/NpcType.lua",
    "chars": 336,
    "preview": "---@class NpcType Enum class (Enum Format: `NPC_TYPE_XXX`)\nlocal NpcType = {}\n\n---@type NpcType\nNPC_TYPE_NORMAL = nil\n\n-"
  },
  {
    "path": "apis/NpcUtils.lua",
    "chars": 2009,
    "preview": "---@class NpcUtils @NPC Util Module (NPC通用模块)\nlocal NpcUtils = {}\n\n---@return Npc[]\nfunction NpcUtils.GetAllEntities()\ne"
  },
  {
    "path": "apis/OreDataGroup.lua",
    "chars": 319,
    "preview": "---@class OreData\n---@field oreID int 矿物的方块id\n---@field density int 矿脉密度(每区块生成次数)\n---@field radius int 矿脉半径\n---@field st"
  },
  {
    "path": "apis/ParameterClick.lua",
    "chars": 113,
    "preview": "---@class ParameterClick\n---@field playerEntityIndex EntityIndex\nlocal ParameterClick = {}\n\nreturn ParameterClick"
  },
  {
    "path": "apis/ParameterDestroy.lua",
    "chars": 232,
    "preview": "---@class ParameterDestroy\n---@field silkTouch int\n---@field fortune int\n---@field boom boolean\n---@field dropItem boole"
  },
  {
    "path": "apis/ParameterPlace.lua",
    "chars": 96,
    "preview": "---@class ParameterPlace\n---@field placeDir int\nlocal ParameterPlace = {}\n\nreturn ParameterPlace"
  },
  {
    "path": "apis/ParameterStrike.lua",
    "chars": 103,
    "preview": "---@class ParameterStrike\n---@field lootingLevel int\nlocal ParameterStrike = {}\n\nreturn ParameterStrike"
  },
  {
    "path": "apis/Player.lua",
    "chars": 6833,
    "preview": "---@class Player:Entity\n---@field entityIndex EntityIndex\n---@field dataWatcher DataWatcher\n---@field remoteDataWatcher "
  },
  {
    "path": "apis/PlayerUtils.lua",
    "chars": 1344,
    "preview": "---@class PlayerUtils\nlocal PlayerUtils = {}\n\n---@return Player\nfunction PlayerUtils.GetCurrentClientPlayer()\nend\n\n---Ge"
  },
  {
    "path": "apis/Point.lua",
    "chars": 410,
    "preview": "-- Document\n-- Point Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#point\n--\n-- Point类: https://blueyosh"
  },
  {
    "path": "apis/Projectile.lua",
    "chars": 1440,
    "preview": "---@class Projectile:Entity\n---@field id int The dynamic ID of the current projectile. (当前抛射物的动态ID)\n---@field entityInde"
  },
  {
    "path": "apis/ProjectileUtils.lua",
    "chars": 1711,
    "preview": "---@class ProjectileUtils\nlocal ProjectileUtils = {}\n\n---Get\n---@param entityIndex EntityIndex\n---@return Projectile\nfun"
  },
  {
    "path": "apis/Recipe.lua",
    "chars": 801,
    "preview": "\n---@class RecipeInputSlotType_Value\n\n---@class RecipeInputSlotType\n---@field Empty RecipeInputSlotType_Value\n---@field "
  },
  {
    "path": "apis/RecipeConfig.lua",
    "chars": 143,
    "preview": "---@class RecipeConfig\n---@field iconItemID int\n---@field inputCount int\n---@field outputCount int\nlocal RecipeConfig = "
  },
  {
    "path": "apis/RecipeSearchAction.lua",
    "chars": 129,
    "preview": "---@class RecipeSearchAction\n---@field Fixed int\n---@field Unordered int\nlocal RecipeSearchAction = {}\n\nreturn RecipeSea"
  },
  {
    "path": "apis/RecipeUtils.lua",
    "chars": 1699,
    "preview": "---@API\n\n---@class RecipeUtils 配方组件。\nlocal RecipeUtils = {}\n\n---通过配方的ID获取配方。\n---@param recipeID int 配方ID (请通过搜索配方的方法 Rec"
  },
  {
    "path": "apis/Rectangle.lua",
    "chars": 799,
    "preview": "-- Document\n-- Rectangle Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#rectangle\n--\n-- Rectangle类: http"
  },
  {
    "path": "apis/Reg.lua",
    "chars": 4505,
    "preview": "---@API\n\n---@class Reg 描述游戏内的注册信息。\nlocal Reg = {}\n\n---根据物品名返回注册的动态ID。\n---@param name string\n---@return int\nfunction Reg."
  },
  {
    "path": "apis/ServerBoundPacketWriter.lua",
    "chars": 333,
    "preview": "---@class ServerBoundPacket\n---@field writerBuffer ByteStream\n---@field readerBuffer ByteStream\nlocal ServerBoundPacket "
  },
  {
    "path": "apis/Shape.lua",
    "chars": 548,
    "preview": "-- Document\n-- Shape Enum Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#shape\n--\n-- Shape枚举类: https://b"
  },
  {
    "path": "apis/Skeleton.lua",
    "chars": 55,
    "preview": "---@class Skeleton\nlocal Skeleton = {}\n\nreturn Skeleton"
  },
  {
    "path": "apis/Skin.lua",
    "chars": 362,
    "preview": "---@class Skin\n---@field headTexture TextureLocation\n---@field bodyTexture TextureLocation\n---@field legTexture TextureL"
  },
  {
    "path": "apis/SkinUtils.lua",
    "chars": 166,
    "preview": "---@class SkinUtils\n---@field maxID int\nlocal SkinUtils = {}\n\n---GetSkin\n---@param skinID int\n---@return Skin\nfunction S"
  },
  {
    "path": "apis/Slot.lua",
    "chars": 1696,
    "preview": "---@API\n\n---@class Slot 描述一个物品格子,物品格子可能为空格子,也可能包含一个ItemStack。\n---@field hasStack boolean 当前格子是否包含物品堆栈。\n---@field tag int"
  },
  {
    "path": "apis/SlotCommandQueue.lua",
    "chars": 79,
    "preview": "---@class SlotCommandQueue\nlocal SlotCommandQueue = {}\n\nreturn SlotCommandQueue"
  },
  {
    "path": "apis/SmartMode.lua",
    "chars": 184,
    "preview": "---@class SmartMode_Value\n\n---@class SmartMode\n---@field None SmartMode_Value\n---@field Digging SmartMode_Value\n---@fiel"
  },
  {
    "path": "apis/SoundUtils.lua",
    "chars": 388,
    "preview": "---@class SoundUtils\nlocal SoundUtils = {}\n\n---PlaySound\n---@overload fun(soundID:int)\n---@param soundID int\n---@param x"
  },
  {
    "path": "apis/SpriteEx.lua",
    "chars": 1450,
    "preview": "-- Document\n-- SpriteEx Class: https://blueyoshi.gitbook.io/terracraft/en/mod/api/type#spriteex\n--\n-- SpriteEx类: https:/"
  },
  {
    "path": "apis/Type.lua",
    "chars": 67,
    "preview": "---@class int:number\n---@class double:number\n---@class float:number"
  },
  {
    "path": "apis/Utils.lua",
    "chars": 5031,
    "preview": "---@class Utils Util Module (通用模块)\n---@field netMode int\n---@field E double\n---@field LOG2E double\n---@field LOG10E doub"
  },
  {
    "path": "apis/WorldData.lua",
    "chars": 637,
    "preview": "---@class WorldData\n---@field worldName string\n---@field worldSeed int\n---@field gameTime int\n---@field dayTime int\n---@"
  },
  {
    "path": "apis/WorldDataUtils.lua",
    "chars": 493,
    "preview": "---@class WorldDataUtils\nlocal WorldDataUtils = {}\n\n---Load\n---@param worldName string\n---@param worldData WorldData\n---"
  },
  {
    "path": "apis/WorldGenArea.lua",
    "chars": 313,
    "preview": "---@class WorldGenArea\n---@field xi int\n---@field yi int\n---@field wi int\n---@field hi int\nlocal WorldGenArea = {}\n\n---n"
  },
  {
    "path": "apis/WorldGenChunkBuffer.lua",
    "chars": 12170,
    "preview": "---@class WorldGenChunkBufferElement\n---@field biomeType int\n---@field biomeID int\n---@field isFrontPreset boolean\n---@f"
  },
  {
    "path": "apis/WorldGenCode.lua",
    "chars": 379,
    "preview": "\n---@class WorldGenCodeConfig\nlocal WorldGenCodeConfig = {}\n\n---@class WorldGenCode\nlocal WorldGenCode = {}\n\n---CompileC"
  },
  {
    "path": "apis/WorldGenNoise.lua",
    "chars": 881,
    "preview": "---@class WorldGenNoise\nlocal WorldGenNoise = {}\n\n---SetData\n---@param persistence double\n---@param octaves int\nfunction"
  },
  {
    "path": "apis/engine_api/AnimationEvent.lua",
    "chars": 276,
    "preview": "---@class AnimationEvent\nlocal AnimationEvent = {}\n\n---\n---@param listener table|function\n---@return ListenerID\nfunction"
  },
  {
    "path": "apis/engine_api/Animator2D.lua",
    "chars": 1509,
    "preview": "---@class Animator2D\nlocal Animator2D = {}\n\n---setFloat\n---@param parameterName string\n---@param value number\nfunction A"
  },
  {
    "path": "apis/engine_api/AnimatorData2D.lua",
    "chars": 176,
    "preview": "---@class AnimatorData2D\nlocal AnimatorData2D = {}\n\n---new\n---@param dataTable table\n---@return AnimatorData2D\nfunction "
  },
  {
    "path": "apis/engine_api/App.lua",
    "chars": 237,
    "preview": "---@class App\n---@field appName string\n---@field companyName string\n---@field dataPath string\n---@field persistentDataPa"
  },
  {
    "path": "apis/engine_api/Array.lua",
    "chars": 69,
    "preview": "---@class Array\n---@field count number\nlocal Array = {}\n\nreturn Array"
  },
  {
    "path": "apis/engine_api/AssetBundle.lua",
    "chars": 1433,
    "preview": "---@class AssetBundle\nlocal AssetBundle = {}\n\n---\n---@return AssetBundle\nfunction AssetBundle.new()\nend\n\n---clone\n---@pa"
  },
  {
    "path": "apis/engine_api/AssetManager.lua",
    "chars": 1130,
    "preview": "---@class AssetManager\nlocal AssetManager = {}\n\n---getLastWriteTime\n---@param path string\n---@return DateTime\nfunction A"
  },
  {
    "path": "apis/engine_api/AtlasInfos.lua",
    "chars": 61,
    "preview": "---@class AtlasInfos\nlocal AtlasInfos = {}\n\nreturn AtlasInfos"
  },
  {
    "path": "apis/engine_api/AtlasLoader.lua",
    "chars": 714,
    "preview": "---@class AtlasLoader\nlocal AtlasLoader = {}\n\n---saveToFileSystem\n---@param atlasInfos AtlasInfos\n---@param folderPath s"
  },
  {
    "path": "apis/engine_api/Audio.lua",
    "chars": 2277,
    "preview": "---@class Audio\n---@field musicVolume number\nlocal Audio = {}\n\n---\n---@param filePath string\n---@return number\nfunction "
  },
  {
    "path": "apis/engine_api/ByteStream.lua",
    "chars": 1193,
    "preview": "---@class ByteStream\n---@field empty boolean\n---@field count number\n---@field capacity number\n---@field readableCount nu"
  },
  {
    "path": "apis/engine_api/Bytes.lua",
    "chars": 1161,
    "preview": "---@class Bytes\n---@field empty boolean\n---@field count number\n---@field capacity number\nlocal Bytes = {}\n\n---\n---@overl"
  },
  {
    "path": "apis/engine_api/CameraComponentWrapper.lua",
    "chars": 314,
    "preview": "---@class CameraComponentWrapper:ComponentWrapper\n---@field projection CameraProjection_Value\n---@field clippingPlaneNea"
  },
  {
    "path": "apis/engine_api/CameraProjection.lua",
    "chars": 204,
    "preview": "---@class CameraProjection_Value\n\n---@class CameraProjection\n---@field Perspective CameraProjection_Value\n---@field Orth"
  },
  {
    "path": "apis/engine_api/CanvasComponentWrapper.lua",
    "chars": 211,
    "preview": "---@class CanvasComponentWrapper:ComponentWrapper\n---@field uiRoot UICanvas\n---@field displayMode CanvasDisplayMode\n---@"
  },
  {
    "path": "apis/engine_api/CanvasDisplayMode.lua",
    "chars": 267,
    "preview": "---@class CanvasDisplayMode_Value\n\n---@class CanvasDisplayMode\n---@field ScreenSpaceOverlay CanvasDisplayMode_Value\n---@"
  },
  {
    "path": "apis/engine_api/ClipCollection2D.lua",
    "chars": 301,
    "preview": "---@class ClipCollection2D\nlocal ClipCollection2D = {}\n\n---new\n---@param jointCollection2D JointCollection2D\n---@return "
  },
  {
    "path": "apis/engine_api/Color.lua",
    "chars": 942,
    "preview": "---@API\n\n---@class Color:SerializableType 描述一个颜色。\n---@field red number 红色通道分量。取值为[0, 255]。\n---@field green number 绿色通道分量"
  },
  {
    "path": "apis/engine_api/ComponentID.lua",
    "chars": 204,
    "preview": "---@class ComponentID_Value:number\nlocal ComponentID_Value = {}\n---@class ComponentID\n---@field Transform ComponentID_Va"
  },
  {
    "path": "apis/engine_api/ComponentWrapper.lua",
    "chars": 158,
    "preview": "---@class ComponentWrapper\nlocal ComponentWrapper = {}\n\nfunction ComponentWrapper:init()\nend\n\nfunction ComponentWrapper:"
  },
  {
    "path": "apis/engine_api/DateTime.lua",
    "chars": 55,
    "preview": "---@class DateTime\nlocal DateTime = {}\n\nreturn DateTime"
  },
  {
    "path": "apis/engine_api/FadingState.lua",
    "chars": 205,
    "preview": "---@class FadingState_Value\n\n---@class FadingState\n---@field NoFading FadingState_Value\n---@field FadingIn FadingState_V"
  },
  {
    "path": "apis/engine_api/File.lua",
    "chars": 1171,
    "preview": "---@class File\nlocal File = {}\n\n---getLastWriteTime\n---@param path string\n---@return DateTime\nfunction File.getLastWrite"
  },
  {
    "path": "apis/engine_api/FileTimeType.lua",
    "chars": 67,
    "preview": "---@class FileTimeType\nlocal FileTimeType = {}\n\nreturn FileTimeType"
  }
]

// ... and 3182 more files (download for full content)

About this extraction

This page contains the full source code of the skyblueyoshi/TerraCraft GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3382 files (2.7 MB), approximately 850.0k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!