Repository: mc-server/MCServer
Branch: master
Commit: 7fd3fa5c9345
Files: 1280
Total size: 16.2 MB
Directory structure:
gitextract_eeezw5ae/
├── .clang-format
├── .clang-tidy
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── config.yml
│ │ └── issue-template.md
│ └── workflows/
│ ├── Build.yml
│ └── StyleCheck.yml
├── .gitignore
├── .gitmodules
├── BACKERS
├── CMake/
│ ├── AddDependencies.cmake
│ ├── Fixups.cmake
│ ├── GenerateBindings.cmake
│ ├── GroupSources.cmake
│ └── StampBuild.cmake
├── CMakeLists.txt
├── COMPILING.md
├── CONTRIBUTING.md
├── CONTRIBUTORS
├── CheckLua.cmake
├── Doxyfile
├── GETTING-STARTED.md
├── Jenkinsfile
├── LICENSE
├── README.md
├── Server/
│ ├── .gitignore
│ ├── Install/
│ │ ├── .gitignore
│ │ ├── Cuberite_high_detail_debug.cmd
│ │ ├── Cuberite_medium_detail_debug.cmd
│ │ ├── PackWindowsExecutables.cmd
│ │ ├── ThirdPartyLicenses/
│ │ │ ├── LibEvent-LICENSE.txt
│ │ │ ├── Lua-LICENSE.txt
│ │ │ ├── LuaExpat-license.html
│ │ │ ├── LuaSQLite3-LICENSE.txt
│ │ │ ├── MersenneTwister-LICENSE.txt
│ │ │ ├── SQLiteCpp-LICENSE.txt
│ │ │ └── fmt-LICENSE.rst
│ │ ├── UnixExecutables.list
│ │ ├── WindowsExecutables.list
│ │ └── WindowsPDBs.list
│ ├── Plugins/
│ │ ├── .gitignore
│ │ ├── APIDump/
│ │ │ ├── APIDesc.lua
│ │ │ ├── Classes/
│ │ │ │ ├── BlockArea.lua
│ │ │ │ ├── BlockEntities.lua
│ │ │ │ ├── Geometry.lua
│ │ │ │ ├── Network.lua
│ │ │ │ ├── Plugins.lua
│ │ │ │ ├── Projectiles.lua
│ │ │ │ ├── RankManager.lua
│ │ │ │ ├── WebAdmin.lua
│ │ │ │ └── World.lua
│ │ │ ├── Hooks/
│ │ │ │ ├── OnBlockSpread.lua
│ │ │ │ ├── OnBlockToPickups.lua
│ │ │ │ ├── OnBrewingCompleted.lua
│ │ │ │ ├── OnBrewingCompleting.lua
│ │ │ │ ├── OnChat.lua
│ │ │ │ ├── OnChunkAvailable.lua
│ │ │ │ ├── OnChunkGenerated.lua
│ │ │ │ ├── OnChunkGenerating.lua
│ │ │ │ ├── OnChunkUnloaded.lua
│ │ │ │ ├── OnChunkUnloading.lua
│ │ │ │ ├── OnCollectingPickup.lua
│ │ │ │ ├── OnCraftingNoRecipe.lua
│ │ │ │ ├── OnDisconnect.lua
│ │ │ │ ├── OnDropSpense.lua
│ │ │ │ ├── OnEntityAddEffect.lua
│ │ │ │ ├── OnEntityChangedWorld.lua
│ │ │ │ ├── OnEntityChangingWorld.lua
│ │ │ │ ├── OnEntityTeleport.lua
│ │ │ │ ├── OnExecuteCommand.lua
│ │ │ │ ├── OnExploded.lua
│ │ │ │ ├── OnExploding.lua
│ │ │ │ ├── OnHandshake.lua
│ │ │ │ ├── OnHopperPullingItem.lua
│ │ │ │ ├── OnHopperPushingItem.lua
│ │ │ │ ├── OnKilled.lua
│ │ │ │ ├── OnKilling.lua
│ │ │ │ ├── OnLogin.lua
│ │ │ │ ├── OnPlayerAnimation.lua
│ │ │ │ ├── OnPlayerBreakingBlock.lua
│ │ │ │ ├── OnPlayerBrokenBlock.lua
│ │ │ │ ├── OnPlayerCrouched.lua
│ │ │ │ ├── OnPlayerDestroyed.lua
│ │ │ │ ├── OnPlayerEating.lua
│ │ │ │ ├── OnPlayerFished.lua
│ │ │ │ ├── OnPlayerFishing.lua
│ │ │ │ ├── OnPlayerFoodLevelChange.lua
│ │ │ │ ├── OnPlayerJoined.lua
│ │ │ │ ├── OnPlayerLeftClick.lua
│ │ │ │ ├── OnPlayerMoving.lua
│ │ │ │ ├── OnPlayerOpeningWindow.lua
│ │ │ │ ├── OnPlayerPlacedBlock.lua
│ │ │ │ ├── OnPlayerPlacingBlock.lua
│ │ │ │ ├── OnPlayerRightClick.lua
│ │ │ │ ├── OnPlayerRightClickingEntity.lua
│ │ │ │ ├── OnPlayerShooting.lua
│ │ │ │ ├── OnPlayerSpawned.lua
│ │ │ │ ├── OnPlayerTossingItem.lua
│ │ │ │ ├── OnPlayerUsedBlock.lua
│ │ │ │ ├── OnPlayerUsedItem.lua
│ │ │ │ ├── OnPlayerUsingBlock.lua
│ │ │ │ ├── OnPlayerUsingItem.lua
│ │ │ │ ├── OnPluginMessage.lua
│ │ │ │ ├── OnPluginsLoaded.lua
│ │ │ │ ├── OnPostCrafting.lua
│ │ │ │ ├── OnPreCrafting.lua
│ │ │ │ ├── OnProjectileHitBlock.lua
│ │ │ │ ├── OnProjectileHitEntity.lua
│ │ │ │ ├── OnServerPing.lua
│ │ │ │ ├── OnSpawnedEntity.lua
│ │ │ │ ├── OnSpawnedMonster.lua
│ │ │ │ ├── OnSpawningEntity.lua
│ │ │ │ ├── OnSpawningMonster.lua
│ │ │ │ ├── OnTakeDamage.lua
│ │ │ │ ├── OnTick.lua
│ │ │ │ ├── OnUpdatedSign.lua
│ │ │ │ ├── OnUpdatingSign.lua
│ │ │ │ ├── OnWeatherChanged.lua
│ │ │ │ ├── OnWeatherChanging.lua
│ │ │ │ ├── OnWorldStarted.lua
│ │ │ │ └── OnWorldTick.lua
│ │ │ ├── InfoFile.html
│ │ │ ├── LICENSE-prettify.txt
│ │ │ ├── SettingUpDecoda.html
│ │ │ ├── SettingUpLuaLanguageServer.html
│ │ │ ├── SettingUpZeroBrane.html
│ │ │ ├── Static/
│ │ │ │ └── .gitignore
│ │ │ ├── UsingChunkStays.html
│ │ │ ├── WebWorldThreads.html
│ │ │ ├── Writing-a-Cuberite-plugin.html
│ │ │ ├── _preload.lua
│ │ │ ├── lang-lua.js
│ │ │ ├── lualanguageserver.lua
│ │ │ ├── main.css
│ │ │ ├── main_APIDump.lua
│ │ │ ├── prettify.css
│ │ │ └── prettify.js
│ │ ├── Debuggers/
│ │ │ ├── Debuggers.lua
│ │ │ ├── Info.lua
│ │ │ └── Inject.lua
│ │ ├── DumpInfo/
│ │ │ └── Init.lua
│ │ ├── HookNotify/
│ │ │ └── HookNotify.lua
│ │ ├── InfoDump.lua
│ │ ├── InfoReg.lua
│ │ ├── NetworkTest/
│ │ │ ├── Info.lua
│ │ │ ├── NetworkTest.lua
│ │ │ └── splashes.txt
│ │ └── TestLuaRocks/
│ │ └── TestLuaRocks.lua
│ ├── Prefabs/
│ │ ├── PieceStructures/
│ │ │ ├── NetherFort.cubeset
│ │ │ ├── RainbowRoad.cubeset
│ │ │ ├── TestRails.cubeset
│ │ │ ├── TreePaths.cubeset
│ │ │ └── UnderwaterBase.cubeset
│ │ ├── SinglePieceStructures/
│ │ │ ├── DesertPyramid.cubeset
│ │ │ ├── DesertWell.cubeset
│ │ │ ├── JungleTemple.cubeset
│ │ │ └── WitchHut.cubeset
│ │ └── Villages/
│ │ ├── AlchemistVillage.cubeset
│ │ ├── JapaneseVillage.cubeset
│ │ ├── PlainsVillage.cubeset
│ │ ├── SandFlatRoofVillage.cubeset
│ │ └── SandVillage.cubeset
│ ├── Protocol/
│ │ ├── 1.12.2/
│ │ │ └── base.recipes.txt
│ │ ├── 1.13/
│ │ │ └── base.btp.txt
│ │ ├── 1.14.4/
│ │ │ └── base.btp.txt
│ │ └── UpgradeBlockTypePalette.txt
│ ├── README.txt
│ ├── brewing.txt
│ ├── delete_windows_service.cmd
│ ├── furnace.txt
│ ├── hg
│ ├── hg.supp
│ ├── install_windows_service.cmd
│ ├── vg
│ ├── vg.supp
│ └── webadmin/
│ ├── GenerateSelfSignedHTTPSCertUsingOpenssl.cmd
│ ├── GenerateSelfSignedHTTPSCertUsingOpenssl.sh
│ ├── files/
│ │ ├── guest.html
│ │ └── style.css
│ ├── login_template.html
│ └── template.lua
├── SetFlags.cmake
├── TESTING.md
├── Tools/
│ ├── .gitignore
│ ├── AnvilStats/
│ │ ├── .gitignore
│ │ ├── AnvilStats.cpp
│ │ ├── AnvilStats.txt
│ │ ├── BiomeMap.cpp
│ │ ├── BiomeMap.h
│ │ ├── CMakeLists.txt
│ │ ├── Callback.h
│ │ ├── ChunkExtract.cpp
│ │ ├── ChunkExtract.h
│ │ ├── Globals.cpp
│ │ ├── Globals.h
│ │ ├── HeightBiomeMap.cpp
│ │ ├── HeightBiomeMap.h
│ │ ├── HeightMap.cpp
│ │ ├── HeightMap.h
│ │ ├── ImageComposingCallback.cpp
│ │ ├── ImageComposingCallback.h
│ │ ├── Processor.cpp
│ │ ├── Processor.h
│ │ ├── SpringStats.cpp
│ │ ├── SpringStats.h
│ │ ├── Statistics.cpp
│ │ ├── Statistics.h
│ │ ├── Utils.cpp
│ │ ├── Utils.h
│ │ └── profile_run.cmd
│ ├── BlockTypePaletteGenerator/
│ │ ├── .gitignore
│ │ ├── Generator.lua
│ │ ├── UpgradeGenerator.lua
│ │ └── UpgradePaletteCheck.lua
│ ├── BlockZapper/
│ │ ├── .gitignore
│ │ ├── BlockZapper.cpp
│ │ ├── BlockZapper.txt
│ │ ├── GNUmakefile
│ │ ├── Globals.cpp
│ │ ├── Globals.h
│ │ ├── Regions.cpp
│ │ ├── Regions.h
│ │ ├── Zapper.cpp
│ │ └── Zapper.h
│ ├── GeneratorPerformanceTest/
│ │ ├── CMakeLists.txt
│ │ └── GeneratorPerformanceTest.cpp
│ ├── GrownBiomeGenVisualiser/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── Globals.cpp
│ │ ├── Globals.h
│ │ ├── GrownBiomeGenVisualiser.cpp
│ │ └── README.md
│ ├── MCADefrag/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── MCADefrag.cpp
│ │ └── MCADefrag.h
│ ├── MemDumpAnalysis/
│ │ ├── .gitignore
│ │ ├── Globals.cpp
│ │ ├── Globals.h
│ │ ├── MemDumpAnalysis.cpp
│ │ └── targetver.h
│ ├── NoiseSpeedTest/
│ │ ├── CMakeLists.txt
│ │ ├── NoiseSpeedTest.cpp
│ │ ├── NoiseSpeedTest.h
│ │ └── SimplexNoise.h
│ ├── ProtoProxy/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── Connection.cpp
│ │ ├── Connection.h
│ │ ├── ProtoProxy.cpp
│ │ ├── ProtoProxy.txt
│ │ ├── Server.cpp
│ │ └── Server.h
│ ├── QtBiomeVisualiser/
│ │ ├── .gitignore
│ │ ├── BiomeView.cpp
│ │ ├── BiomeView.h
│ │ ├── ChunkSource.cpp
│ │ ├── ChunkSource.h
│ │ ├── GeneratorSetup.cpp
│ │ ├── GeneratorSetup.h
│ │ ├── Globals.h
│ │ ├── MainWindow.cpp
│ │ ├── MainWindow.h
│ │ ├── QtBiomeVisualiser.cpp
│ │ ├── QtBiomeVisualiser.pro
│ │ ├── QtChunk.cpp
│ │ ├── QtChunk.h
│ │ ├── Region.cpp
│ │ ├── Region.h
│ │ ├── RegionCache.cpp
│ │ ├── RegionCache.h
│ │ ├── RegionLoader.cpp
│ │ └── RegionLoader.h
│ ├── RCONClient/
│ │ ├── .gitignore
│ │ ├── Globals.cpp
│ │ ├── Globals.h
│ │ └── RCONClient.cpp
│ └── ToLuaDoxy/
│ ├── Doxyfile
│ ├── Globals.cpp
│ ├── Globals.h
│ └── ToLuaDoxy.cpp
├── android/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ └── compile.sh
├── app.yml
├── appveyor.yml
├── cibuild.sh
├── clang-tidy.sh
├── cloc-exclude.txt
├── compile.sh
├── dev-docs/
│ ├── .gitignore
│ ├── API class inheritance - blockentities.gv
│ ├── API class inheritance - entities.gv
│ ├── Cubeset file format.html
│ ├── ExportingAPI.html
│ ├── Generator.html
│ ├── Login sequence.txt
│ ├── NBT Examples/
│ │ ├── single chunk NBT data.txt
│ │ └── tile entities.txt
│ ├── Object ownership.gv
│ ├── Plugin API.md
│ ├── SocketThreads states.gv
│ ├── Springs.ods
│ ├── _files.txt
│ ├── js/
│ │ ├── ValueMap.js
│ │ └── grown.js
│ └── style.css
├── easyinstall.sh
├── nightlybuild.sh
├── src/
│ ├── Bindings/
│ │ ├── .gitignore
│ │ ├── AllToLua.bat
│ │ ├── AllToLua.pkg
│ │ ├── AllToLua.sh
│ │ ├── AllToLua_lua.bat
│ │ ├── BindingsProcessor.lua
│ │ ├── BlockState.cpp
│ │ ├── BlockState.h
│ │ ├── BlockTypePalette.cpp
│ │ ├── BlockTypePalette.h
│ │ ├── BlockTypeRegistry.cpp
│ │ ├── BlockTypeRegistry.h
│ │ ├── CMakeLists.txt
│ │ ├── CheckBindingsDependencies.lua
│ │ ├── DeprecatedBindings.cpp
│ │ ├── DeprecatedBindings.h
│ │ ├── DiffAPIDesc.lua
│ │ ├── LuaChunkStay.cpp
│ │ ├── LuaChunkStay.h
│ │ ├── LuaFunctions.h
│ │ ├── LuaJson.cpp
│ │ ├── LuaJson.h
│ │ ├── LuaNameLookup.cpp
│ │ ├── LuaNameLookup.h
│ │ ├── LuaServerHandle.cpp
│ │ ├── LuaServerHandle.h
│ │ ├── LuaState.cpp
│ │ ├── LuaState.h
│ │ ├── LuaTCPLink.cpp
│ │ ├── LuaTCPLink.h
│ │ ├── LuaUDPEndpoint.cpp
│ │ ├── LuaUDPEndpoint.h
│ │ ├── LuaWindow.cpp
│ │ ├── LuaWindow.h
│ │ ├── ManualBindings.cpp
│ │ ├── ManualBindings.h
│ │ ├── ManualBindings_BlockArea.cpp
│ │ ├── ManualBindings_Network.cpp
│ │ ├── ManualBindings_RankManager.cpp
│ │ ├── ManualBindings_World.cpp
│ │ ├── Plugin.cpp
│ │ ├── Plugin.h
│ │ ├── PluginLua.cpp
│ │ ├── PluginLua.h
│ │ ├── PluginManager.cpp
│ │ ├── PluginManager.h
│ │ └── tolua++.h
│ ├── BiomeDef.cpp
│ ├── BiomeDef.h
│ ├── BlockArea.cpp
│ ├── BlockArea.h
│ ├── BlockEntities/
│ │ ├── BannerEntity.cpp
│ │ ├── BannerEntity.h
│ │ ├── BeaconEntity.cpp
│ │ ├── BeaconEntity.h
│ │ ├── BedEntity.cpp
│ │ ├── BedEntity.h
│ │ ├── BlockEntity.cpp
│ │ ├── BlockEntity.h
│ │ ├── BlockEntityWithItems.cpp
│ │ ├── BlockEntityWithItems.h
│ │ ├── BrewingstandEntity.cpp
│ │ ├── BrewingstandEntity.h
│ │ ├── CMakeLists.txt
│ │ ├── ChestEntity.cpp
│ │ ├── ChestEntity.h
│ │ ├── CommandBlockEntity.cpp
│ │ ├── CommandBlockEntity.h
│ │ ├── DispenserEntity.cpp
│ │ ├── DispenserEntity.h
│ │ ├── DropSpenserEntity.cpp
│ │ ├── DropSpenserEntity.h
│ │ ├── DropperEntity.cpp
│ │ ├── DropperEntity.h
│ │ ├── EnchantingTableEntity.cpp
│ │ ├── EnchantingTableEntity.h
│ │ ├── EndPortalEntity.cpp
│ │ ├── EndPortalEntity.h
│ │ ├── EnderChestEntity.cpp
│ │ ├── EnderChestEntity.h
│ │ ├── FlowerPotEntity.cpp
│ │ ├── FlowerPotEntity.h
│ │ ├── FurnaceEntity.cpp
│ │ ├── FurnaceEntity.h
│ │ ├── HopperEntity.cpp
│ │ ├── HopperEntity.h
│ │ ├── JukeboxEntity.cpp
│ │ ├── JukeboxEntity.h
│ │ ├── MobHeadEntity.cpp
│ │ ├── MobHeadEntity.h
│ │ ├── MobSpawnerEntity.cpp
│ │ ├── MobSpawnerEntity.h
│ │ ├── NoteEntity.cpp
│ │ ├── NoteEntity.h
│ │ ├── SignEntity.cpp
│ │ └── SignEntity.h
│ ├── BlockInServerPluginInterface.h
│ ├── BlockInfo.cpp
│ ├── BlockInfo.h
│ ├── BlockState.h
│ ├── BlockTracer.h
│ ├── BlockType.cpp
│ ├── BlockType.h
│ ├── Blocks/
│ │ ├── BlockAir.h
│ │ ├── BlockAnvil.h
│ │ ├── BlockBed.cpp
│ │ ├── BlockBed.h
│ │ ├── BlockBigFlower.h
│ │ ├── BlockBookShelf.h
│ │ ├── BlockBrewingStand.h
│ │ ├── BlockButton.h
│ │ ├── BlockCactus.h
│ │ ├── BlockCake.h
│ │ ├── BlockCarpet.h
│ │ ├── BlockCauldron.h
│ │ ├── BlockChest.h
│ │ ├── BlockCloth.h
│ │ ├── BlockCobWeb.h
│ │ ├── BlockCocoaPod.h
│ │ ├── BlockCommandBlock.h
│ │ ├── BlockComparator.h
│ │ ├── BlockConcretePowder.h
│ │ ├── BlockCrops.h
│ │ ├── BlockDaylightSensor.h
│ │ ├── BlockDeadBush.h
│ │ ├── BlockDefaultBlock.h
│ │ ├── BlockDirt.h
│ │ ├── BlockDoor.cpp
│ │ ├── BlockDoor.h
│ │ ├── BlockDropSpenser.h
│ │ ├── BlockEnchantingTable.h
│ │ ├── BlockEndPortalFrame.h
│ │ ├── BlockEnderChest.h
│ │ ├── BlockEntity.h
│ │ ├── BlockFarmland.h
│ │ ├── BlockFence.h
│ │ ├── BlockFenceGate.h
│ │ ├── BlockFire.h
│ │ ├── BlockFlower.h
│ │ ├── BlockFlowerPot.h
│ │ ├── BlockFluid.h
│ │ ├── BlockFurnace.h
│ │ ├── BlockGlass.h
│ │ ├── BlockGlazedTerracotta.h
│ │ ├── BlockGlowstone.h
│ │ ├── BlockGrass.h
│ │ ├── BlockGravel.h
│ │ ├── BlockHandler.cpp
│ │ ├── BlockHandler.h
│ │ ├── BlockHopper.h
│ │ ├── BlockHugeMushroom.h
│ │ ├── BlockIce.h
│ │ ├── BlockInfested.h
│ │ ├── BlockJukebox.h
│ │ ├── BlockLadder.h
│ │ ├── BlockLeaves.h
│ │ ├── BlockLever.h
│ │ ├── BlockLilypad.h
│ │ ├── BlockMelon.h
│ │ ├── BlockMobHead.h
│ │ ├── BlockMobSpawner.h
│ │ ├── BlockMushroom.h
│ │ ├── BlockMycelium.h
│ │ ├── BlockNetherWart.h
│ │ ├── BlockNetherrack.h
│ │ ├── BlockNoteBlock.h
│ │ ├── BlockObserver.h
│ │ ├── BlockOre.h
│ │ ├── BlockPackedIce.h
│ │ ├── BlockPiston.cpp
│ │ ├── BlockPiston.h
│ │ ├── BlockPlanks.h
│ │ ├── BlockPlant.h
│ │ ├── BlockPluginInterface.h
│ │ ├── BlockPortal.h
│ │ ├── BlockPressurePlate.h
│ │ ├── BlockPumpkin.h
│ │ ├── BlockQuartz.h
│ │ ├── BlockRail.h
│ │ ├── BlockRedstoneLamp.h
│ │ ├── BlockRedstoneOre.h
│ │ ├── BlockRedstoneRepeater.h
│ │ ├── BlockRedstoneWire.h
│ │ ├── BlockSand.h
│ │ ├── BlockSapling.h
│ │ ├── BlockSeaLantern.h
│ │ ├── BlockSideways.h
│ │ ├── BlockSignPost.h
│ │ ├── BlockSlab.h
│ │ ├── BlockSlime.h
│ │ ├── BlockSnow.h
│ │ ├── BlockSponge.h
│ │ ├── BlockStairs.h
│ │ ├── BlockStandingBanner.h
│ │ ├── BlockStems.h
│ │ ├── BlockStone.h
│ │ ├── BlockSugarCane.h
│ │ ├── BlockTNT.h
│ │ ├── BlockTallGrass.h
│ │ ├── BlockTorch.h
│ │ ├── BlockTrapdoor.h
│ │ ├── BlockTripwire.h
│ │ ├── BlockTripwireHook.h
│ │ ├── BlockVines.h
│ │ ├── BlockWallBanner.h
│ │ ├── BlockWallSign.h
│ │ ├── BlockWorkbench.h
│ │ ├── BroadcastInterface.h
│ │ ├── CMakeLists.txt
│ │ ├── ChunkInterface.cpp
│ │ ├── ChunkInterface.h
│ │ ├── GetHandlerCompileTimeTemplate.h
│ │ ├── Mixins/
│ │ │ ├── DirtLikeUnderneath.h
│ │ │ ├── Mixins.h
│ │ │ └── SolidSurfaceUnderneath.h
│ │ └── WorldInterface.h
│ ├── BoundingBox.cpp
│ ├── BoundingBox.h
│ ├── BrewingRecipes.cpp
│ ├── BrewingRecipes.h
│ ├── Broadcaster.cpp
│ ├── BuildInfo.h.cmake
│ ├── ByteBuffer.cpp
│ ├── ByteBuffer.h
│ ├── CMakeLists.txt
│ ├── ChatColor.cpp
│ ├── ChatColor.h
│ ├── CheckBasicStyle.lua
│ ├── Chunk.cpp
│ ├── Chunk.h
│ ├── ChunkData.cpp
│ ├── ChunkData.h
│ ├── ChunkDataCallback.h
│ ├── ChunkDef.h
│ ├── ChunkGeneratorThread.cpp
│ ├── ChunkGeneratorThread.h
│ ├── ChunkMap.cpp
│ ├── ChunkMap.h
│ ├── ChunkSender.cpp
│ ├── ChunkSender.h
│ ├── ChunkStay.cpp
│ ├── ChunkStay.h
│ ├── CircularBufferCompressor.cpp
│ ├── CircularBufferCompressor.h
│ ├── ClientHandle.cpp
│ ├── ClientHandle.h
│ ├── Color.cpp
│ ├── Color.h
│ ├── CommandOutput.cpp
│ ├── CommandOutput.h
│ ├── CompositeChat.cpp
│ ├── CompositeChat.h
│ ├── CraftingRecipes.cpp
│ ├── CraftingRecipes.h
│ ├── Cuboid.cpp
│ ├── Cuboid.h
│ ├── DeadlockDetect.cpp
│ ├── DeadlockDetect.h
│ ├── Defines.cpp
│ ├── Defines.h
│ ├── EffectID.h
│ ├── Enchantments.cpp
│ ├── Enchantments.h
│ ├── Endianness.h
│ ├── Entities/
│ │ ├── ArrowEntity.cpp
│ │ ├── ArrowEntity.h
│ │ ├── Boat.cpp
│ │ ├── Boat.h
│ │ ├── CMakeLists.txt
│ │ ├── EnderCrystal.cpp
│ │ ├── EnderCrystal.h
│ │ ├── Entity.cpp
│ │ ├── Entity.h
│ │ ├── EntityEffect.cpp
│ │ ├── EntityEffect.h
│ │ ├── ExpBottleEntity.cpp
│ │ ├── ExpBottleEntity.h
│ │ ├── ExpOrb.cpp
│ │ ├── ExpOrb.h
│ │ ├── FallingBlock.cpp
│ │ ├── FallingBlock.h
│ │ ├── FireChargeEntity.cpp
│ │ ├── FireChargeEntity.h
│ │ ├── FireworkEntity.cpp
│ │ ├── FireworkEntity.h
│ │ ├── Floater.cpp
│ │ ├── Floater.h
│ │ ├── GhastFireballEntity.cpp
│ │ ├── GhastFireballEntity.h
│ │ ├── HangingEntity.cpp
│ │ ├── HangingEntity.h
│ │ ├── ItemFrame.cpp
│ │ ├── ItemFrame.h
│ │ ├── LeashKnot.cpp
│ │ ├── LeashKnot.h
│ │ ├── Minecart.cpp
│ │ ├── Minecart.h
│ │ ├── Painting.cpp
│ │ ├── Painting.h
│ │ ├── Pawn.cpp
│ │ ├── Pawn.h
│ │ ├── Pickup.cpp
│ │ ├── Pickup.h
│ │ ├── Player.cpp
│ │ ├── Player.h
│ │ ├── ProjectileEntity.cpp
│ │ ├── ProjectileEntity.h
│ │ ├── SplashPotionEntity.cpp
│ │ ├── SplashPotionEntity.h
│ │ ├── TNTEntity.cpp
│ │ ├── TNTEntity.h
│ │ ├── ThrownEggEntity.cpp
│ │ ├── ThrownEggEntity.h
│ │ ├── ThrownEnderPearlEntity.cpp
│ │ ├── ThrownEnderPearlEntity.h
│ │ ├── ThrownSnowballEntity.cpp
│ │ ├── ThrownSnowballEntity.h
│ │ ├── WitherSkullEntity.cpp
│ │ └── WitherSkullEntity.h
│ ├── FastRandom.cpp
│ ├── FastRandom.h
│ ├── ForEachChunkProvider.h
│ ├── FunctionRef.h
│ ├── FurnaceRecipe.cpp
│ ├── FurnaceRecipe.h
│ ├── Generating/
│ │ ├── BioGen.cpp
│ │ ├── BioGen.h
│ │ ├── CMakeLists.txt
│ │ ├── Caves.cpp
│ │ ├── Caves.h
│ │ ├── ChunkDesc.cpp
│ │ ├── ChunkDesc.h
│ │ ├── ChunkGenerator.cpp
│ │ ├── ChunkGenerator.h
│ │ ├── CompoGen.cpp
│ │ ├── CompoGen.h
│ │ ├── CompoGenBiomal.cpp
│ │ ├── CompoGenBiomal.h
│ │ ├── ComposableGenerator.cpp
│ │ ├── ComposableGenerator.h
│ │ ├── CompositedHeiGen.h
│ │ ├── DistortedHeightmap.cpp
│ │ ├── DistortedHeightmap.h
│ │ ├── DungeonRoomsFinisher.cpp
│ │ ├── DungeonRoomsFinisher.h
│ │ ├── EndGen.cpp
│ │ ├── EndGen.h
│ │ ├── EnderDragonFightStructuresGen.cpp
│ │ ├── EnderDragonFightStructuresGen.h
│ │ ├── FinishGen.cpp
│ │ ├── FinishGen.h
│ │ ├── GridStructGen.cpp
│ │ ├── GridStructGen.h
│ │ ├── HeiGen.cpp
│ │ ├── HeiGen.h
│ │ ├── IntGen.h
│ │ ├── MineShafts.cpp
│ │ ├── MineShafts.h
│ │ ├── Noise3DGenerator.cpp
│ │ ├── Noise3DGenerator.h
│ │ ├── PieceGeneratorBFSTree.cpp
│ │ ├── PieceGeneratorBFSTree.h
│ │ ├── PieceModifier.cpp
│ │ ├── PieceModifier.h
│ │ ├── PiecePool.cpp
│ │ ├── PiecePool.h
│ │ ├── PieceStructuresGen.cpp
│ │ ├── PieceStructuresGen.h
│ │ ├── Prefab.cpp
│ │ ├── Prefab.h
│ │ ├── PrefabPiecePool.cpp
│ │ ├── PrefabPiecePool.h
│ │ ├── PrefabStructure.cpp
│ │ ├── PrefabStructure.h
│ │ ├── ProtIntGen.h
│ │ ├── Ravines.cpp
│ │ ├── Ravines.h
│ │ ├── RoughRavines.cpp
│ │ ├── RoughRavines.h
│ │ ├── ShapeGen.cpp
│ │ ├── SinglePieceStructuresGen.cpp
│ │ ├── SinglePieceStructuresGen.h
│ │ ├── StructGen.cpp
│ │ ├── StructGen.h
│ │ ├── Trees.cpp
│ │ ├── Trees.h
│ │ ├── TwoHeights.cpp
│ │ ├── TwoHeights.h
│ │ ├── VerticalLimit.cpp
│ │ ├── VerticalLimit.h
│ │ ├── VerticalStrategy.cpp
│ │ ├── VerticalStrategy.h
│ │ ├── VillageGen.cpp
│ │ └── VillageGen.h
│ ├── Globals.cpp
│ ├── Globals.h
│ ├── HTTP/
│ │ ├── CMakeLists.txt
│ │ ├── EnvelopeParser.cpp
│ │ ├── EnvelopeParser.h
│ │ ├── HTTPFormParser.cpp
│ │ ├── HTTPFormParser.h
│ │ ├── HTTPMessage.cpp
│ │ ├── HTTPMessage.h
│ │ ├── HTTPMessageParser.cpp
│ │ ├── HTTPMessageParser.h
│ │ ├── HTTPServer.cpp
│ │ ├── HTTPServer.h
│ │ ├── HTTPServerConnection.cpp
│ │ ├── HTTPServerConnection.h
│ │ ├── MultipartParser.cpp
│ │ ├── MultipartParser.h
│ │ ├── NameValueParser.cpp
│ │ ├── NameValueParser.h
│ │ ├── SslHTTPServerConnection.cpp
│ │ ├── SslHTTPServerConnection.h
│ │ ├── TransferEncodingParser.cpp
│ │ ├── TransferEncodingParser.h
│ │ ├── UrlClient.cpp
│ │ ├── UrlClient.h
│ │ ├── UrlParser.cpp
│ │ └── UrlParser.h
│ ├── IniFile.cpp
│ ├── IniFile.h
│ ├── Inventory.cpp
│ ├── Inventory.h
│ ├── Item.cpp
│ ├── Item.h
│ ├── ItemGrid.cpp
│ ├── ItemGrid.h
│ ├── Items/
│ │ ├── CMakeLists.txt
│ │ ├── ItemAnvil.h
│ │ ├── ItemArmor.h
│ │ ├── ItemAxe.h
│ │ ├── ItemBanner.h
│ │ ├── ItemBed.h
│ │ ├── ItemBigFlower.h
│ │ ├── ItemBoat.h
│ │ ├── ItemBottle.h
│ │ ├── ItemBow.h
│ │ ├── ItemBucket.h
│ │ ├── ItemButton.h
│ │ ├── ItemChest.h
│ │ ├── ItemChorusFruit.h
│ │ ├── ItemCloth.h
│ │ ├── ItemComparator.h
│ │ ├── ItemCookedFish.h
│ │ ├── ItemDefaultItem.h
│ │ ├── ItemDoor.h
│ │ ├── ItemDropSpenser.h
│ │ ├── ItemDye.h
│ │ ├── ItemEmptyMap.h
│ │ ├── ItemEnchantingTable.h
│ │ ├── ItemEndCrystal.h
│ │ ├── ItemEndPortalFrame.h
│ │ ├── ItemEnderChest.h
│ │ ├── ItemEyeOfEnder.h
│ │ ├── ItemFenceGate.h
│ │ ├── ItemFishingRod.h
│ │ ├── ItemFood.h
│ │ ├── ItemFoodSeeds.h
│ │ ├── ItemFurnace.h
│ │ ├── ItemGlazedTerracotta.h
│ │ ├── ItemGoldenApple.h
│ │ ├── ItemHandler.cpp
│ │ ├── ItemHandler.h
│ │ ├── ItemHoe.h
│ │ ├── ItemHopper.h
│ │ ├── ItemItemFrame.h
│ │ ├── ItemJackOLantern.h
│ │ ├── ItemLadder.h
│ │ ├── ItemLeaves.h
│ │ ├── ItemLever.h
│ │ ├── ItemLighter.h
│ │ ├── ItemLilypad.h
│ │ ├── ItemMap.h
│ │ ├── ItemMilk.h
│ │ ├── ItemMinecart.h
│ │ ├── ItemMobHead.h
│ │ ├── ItemNetherWart.h
│ │ ├── ItemObserver.h
│ │ ├── ItemPainting.h
│ │ ├── ItemPickaxe.h
│ │ ├── ItemPiston.h
│ │ ├── ItemPlanks.h
│ │ ├── ItemPoisonousPotato.h
│ │ ├── ItemPotion.h
│ │ ├── ItemPumpkin.h
│ │ ├── ItemQuartz.h
│ │ ├── ItemRail.h
│ │ ├── ItemRawChicken.h
│ │ ├── ItemRawFish.h
│ │ ├── ItemRedstoneDust.h
│ │ ├── ItemRedstoneRepeater.h
│ │ ├── ItemRottenFlesh.h
│ │ ├── ItemSapling.h
│ │ ├── ItemSeeds.h
│ │ ├── ItemShears.h
│ │ ├── ItemShovel.h
│ │ ├── ItemSideways.h
│ │ ├── ItemSign.h
│ │ ├── ItemSlab.h
│ │ ├── ItemSnow.h
│ │ ├── ItemSoup.h
│ │ ├── ItemSpawnEgg.h
│ │ ├── ItemSpiderEye.h
│ │ ├── ItemStairs.h
│ │ ├── ItemSword.h
│ │ ├── ItemThrowable.h
│ │ ├── ItemTorch.h
│ │ ├── ItemTrapdoor.h
│ │ ├── ItemTripwireHook.h
│ │ ├── ItemVines.h
│ │ └── SimplePlaceableItemHandler.h
│ ├── JsonUtils.cpp
│ ├── JsonUtils.h
│ ├── LazyArray.h
│ ├── LightingThread.cpp
│ ├── LightingThread.h
│ ├── LineBlockTracer.cpp
│ ├── LineBlockTracer.h
│ ├── LinearInterpolation.cpp
│ ├── LinearInterpolation.h
│ ├── LinearUpscale.h
│ ├── Logger.cpp
│ ├── Logger.h
│ ├── LoggerListeners.cpp
│ ├── LoggerListeners.h
│ ├── LoggerSimple.h
│ ├── Map.cpp
│ ├── Map.h
│ ├── MapManager.cpp
│ ├── MapManager.h
│ ├── Matrix4.h
│ ├── MemorySettingsRepository.cpp
│ ├── MemorySettingsRepository.h
│ ├── MobCensus.cpp
│ ├── MobCensus.h
│ ├── MobFamilyCollecter.cpp
│ ├── MobFamilyCollecter.h
│ ├── MobProximityCounter.cpp
│ ├── MobProximityCounter.h
│ ├── MobSpawner.cpp
│ ├── MobSpawner.h
│ ├── Mobs/
│ │ ├── AggressiveMonster.cpp
│ │ ├── AggressiveMonster.h
│ │ ├── Bat.cpp
│ │ ├── Bat.h
│ │ ├── Blaze.cpp
│ │ ├── Blaze.h
│ │ ├── CMakeLists.txt
│ │ ├── CaveSpider.cpp
│ │ ├── CaveSpider.h
│ │ ├── Chicken.cpp
│ │ ├── Chicken.h
│ │ ├── Cow.cpp
│ │ ├── Cow.h
│ │ ├── Creeper.cpp
│ │ ├── Creeper.h
│ │ ├── EnderDragon.cpp
│ │ ├── EnderDragon.h
│ │ ├── Enderman.cpp
│ │ ├── Enderman.h
│ │ ├── Endermite.cpp
│ │ ├── Endermite.h
│ │ ├── Ghast.cpp
│ │ ├── Ghast.h
│ │ ├── Giant.cpp
│ │ ├── Giant.h
│ │ ├── Guardian.cpp
│ │ ├── Guardian.h
│ │ ├── Horse.cpp
│ │ ├── Horse.h
│ │ ├── IncludeAllMonsters.h
│ │ ├── IronGolem.cpp
│ │ ├── IronGolem.h
│ │ ├── MagmaCube.cpp
│ │ ├── MagmaCube.h
│ │ ├── Monster.cpp
│ │ ├── Monster.h
│ │ ├── MonsterTypes.h
│ │ ├── Mooshroom.cpp
│ │ ├── Mooshroom.h
│ │ ├── Ocelot.cpp
│ │ ├── Ocelot.h
│ │ ├── PassiveAggressiveMonster.cpp
│ │ ├── PassiveAggressiveMonster.h
│ │ ├── PassiveMonster.cpp
│ │ ├── PassiveMonster.h
│ │ ├── Path.cpp
│ │ ├── Path.h
│ │ ├── PathFinder.cpp
│ │ ├── PathFinder.h
│ │ ├── Pig.cpp
│ │ ├── Pig.h
│ │ ├── Rabbit.cpp
│ │ ├── Rabbit.h
│ │ ├── Sheep.cpp
│ │ ├── Sheep.h
│ │ ├── Silverfish.cpp
│ │ ├── Silverfish.h
│ │ ├── Skeleton.cpp
│ │ ├── Skeleton.h
│ │ ├── Slime.cpp
│ │ ├── Slime.h
│ │ ├── SnowGolem.cpp
│ │ ├── SnowGolem.h
│ │ ├── Spider.cpp
│ │ ├── Spider.h
│ │ ├── Squid.cpp
│ │ ├── Squid.h
│ │ ├── Villager.cpp
│ │ ├── Villager.h
│ │ ├── Witch.cpp
│ │ ├── Witch.h
│ │ ├── Wither.cpp
│ │ ├── Wither.h
│ │ ├── WitherSkeleton.cpp
│ │ ├── WitherSkeleton.h
│ │ ├── Wolf.cpp
│ │ ├── Wolf.h
│ │ ├── Zombie.cpp
│ │ ├── Zombie.h
│ │ ├── ZombiePigman.cpp
│ │ ├── ZombiePigman.h
│ │ ├── ZombieVillager.cpp
│ │ └── ZombieVillager.h
│ ├── MonsterConfig.cpp
│ ├── MonsterConfig.h
│ ├── NetherPortalScanner.cpp
│ ├── NetherPortalScanner.h
│ ├── Noise/
│ │ ├── CMakeLists.txt
│ │ ├── InterpolNoise.h
│ │ ├── Noise.cpp
│ │ ├── Noise.h
│ │ ├── OctavedNoise.h
│ │ └── RidgedNoise.h
│ ├── OSSupport/
│ │ ├── AtomicUniquePtr.h
│ │ ├── CMakeLists.txt
│ │ ├── ConsoleSignalHandler.h
│ │ ├── CriticalSection.cpp
│ │ ├── CriticalSection.h
│ │ ├── Event.cpp
│ │ ├── Event.h
│ │ ├── File.cpp
│ │ ├── File.h
│ │ ├── GZipFile.cpp
│ │ ├── GZipFile.h
│ │ ├── GetAddressInfoError.h
│ │ ├── HostnameLookup.cpp
│ │ ├── HostnameLookup.h
│ │ ├── IPLookup.cpp
│ │ ├── IPLookup.h
│ │ ├── IsThread.cpp
│ │ ├── IsThread.h
│ │ ├── MiniDumpWriter.h
│ │ ├── Network.h
│ │ ├── NetworkInterfaceEnum.cpp
│ │ ├── NetworkLookup.cpp
│ │ ├── NetworkLookup.h
│ │ ├── NetworkSingleton.cpp
│ │ ├── NetworkSingleton.h
│ │ ├── Queue.h
│ │ ├── ServerHandleImpl.cpp
│ │ ├── ServerHandleImpl.h
│ │ ├── SleepResolutionBooster.h
│ │ ├── StackTrace.cpp
│ │ ├── StackTrace.h
│ │ ├── StartAsService.h
│ │ ├── Stopwatch.h
│ │ ├── TCPLinkImpl.cpp
│ │ ├── TCPLinkImpl.h
│ │ ├── UDPEndpointImpl.cpp
│ │ ├── UDPEndpointImpl.h
│ │ ├── WinStackWalker.cpp
│ │ └── WinStackWalker.h
│ ├── OpaqueWorld.h
│ ├── OverridesSettingsRepository.cpp
│ ├── OverridesSettingsRepository.h
│ ├── PalettedBlockArea.cpp
│ ├── PalettedBlockArea.h
│ ├── Physics/
│ │ ├── CMakeLists.txt
│ │ ├── Explodinator.cpp
│ │ └── Explodinator.h
│ ├── ProbabDistrib.cpp
│ ├── ProbabDistrib.h
│ ├── Protocol/
│ │ ├── Authenticator.cpp
│ │ ├── Authenticator.h
│ │ ├── CMakeLists.txt
│ │ ├── ChunkDataSerializer.cpp
│ │ ├── ChunkDataSerializer.h
│ │ ├── ForgeHandshake.cpp
│ │ ├── ForgeHandshake.h
│ │ ├── MojangAPI.cpp
│ │ ├── MojangAPI.h
│ │ ├── Packetizer.cpp
│ │ ├── Packetizer.h
│ │ ├── Palettes/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Palette_1_13.cpp
│ │ │ ├── Palette_1_13.h
│ │ │ ├── Palette_1_13_1.cpp
│ │ │ ├── Palette_1_13_1.h
│ │ │ ├── Palette_1_14.cpp
│ │ │ ├── Palette_1_14.h
│ │ │ ├── Palette_1_15.cpp
│ │ │ ├── Palette_1_15.h
│ │ │ ├── Palette_1_16.cpp
│ │ │ ├── Palette_1_16.h
│ │ │ ├── Upgrade.cpp
│ │ │ └── Upgrade.h
│ │ ├── Protocol.h
│ │ ├── ProtocolRecognizer.cpp
│ │ ├── ProtocolRecognizer.h
│ │ ├── Protocol_1_10.cpp
│ │ ├── Protocol_1_10.h
│ │ ├── Protocol_1_11.cpp
│ │ ├── Protocol_1_11.h
│ │ ├── Protocol_1_12.cpp
│ │ ├── Protocol_1_12.h
│ │ ├── Protocol_1_13.cpp
│ │ ├── Protocol_1_13.h
│ │ ├── Protocol_1_14.cpp
│ │ ├── Protocol_1_14.h
│ │ ├── Protocol_1_8.cpp
│ │ ├── Protocol_1_8.h
│ │ ├── Protocol_1_9.cpp
│ │ ├── Protocol_1_9.h
│ │ ├── RecipeMapper.cpp
│ │ └── RecipeMapper.h
│ ├── RCONServer.cpp
│ ├── RCONServer.h
│ ├── RankManager.cpp
│ ├── RankManager.h
│ ├── Registries/
│ │ ├── BlockStates.cpp
│ │ ├── BlockStates.h
│ │ ├── BlockTypes.h
│ │ ├── CMakeLists.txt
│ │ ├── CustomStatistics.h
│ │ └── Items.h
│ ├── Resources/
│ │ └── Cuberite.rc
│ ├── Root.cpp
│ ├── Root.h
│ ├── Scoreboard.cpp
│ ├── Scoreboard.h
│ ├── Server.cpp
│ ├── Server.h
│ ├── SetChunkData.cpp
│ ├── SetChunkData.h
│ ├── SettingsRepositoryInterface.h
│ ├── Simulator/
│ │ ├── CMakeLists.txt
│ │ ├── DelayedFluidSimulator.cpp
│ │ ├── DelayedFluidSimulator.h
│ │ ├── FireSimulator.cpp
│ │ ├── FireSimulator.h
│ │ ├── FloodyFluidSimulator.cpp
│ │ ├── FloodyFluidSimulator.h
│ │ ├── FluidSimulator.cpp
│ │ ├── FluidSimulator.h
│ │ ├── IncrementalRedstoneSimulator/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CommandBlockHandler.h
│ │ │ ├── DaylightSensorHandler.h
│ │ │ ├── DoorHandler.h
│ │ │ ├── DropSpenserHandler.h
│ │ │ ├── ForEachSourceCallback.cpp
│ │ │ ├── ForEachSourceCallback.h
│ │ │ ├── HopperHandler.h
│ │ │ ├── IncrementalRedstoneSimulator.cpp
│ │ │ ├── IncrementalRedstoneSimulator.h
│ │ │ ├── NoteBlockHandler.h
│ │ │ ├── ObserverHandler.h
│ │ │ ├── PistonHandler.h
│ │ │ ├── PoweredRailHandler.h
│ │ │ ├── PressurePlateHandler.h
│ │ │ ├── RedstoneBlockHandler.h
│ │ │ ├── RedstoneComparatorHandler.h
│ │ │ ├── RedstoneDataHelper.h
│ │ │ ├── RedstoneHandler.cpp
│ │ │ ├── RedstoneHandler.h
│ │ │ ├── RedstoneLampHandler.h
│ │ │ ├── RedstoneRepeaterHandler.h
│ │ │ ├── RedstoneSimulatorChunkData.h
│ │ │ ├── RedstoneToggleHandler.h
│ │ │ ├── RedstoneTorchHandler.h
│ │ │ ├── RedstoneWireHandler.h
│ │ │ ├── SmallGateHandler.h
│ │ │ ├── TNTHandler.h
│ │ │ ├── TrappedChestHandler.h
│ │ │ └── TripwireHookHandler.h
│ │ ├── NoopFluidSimulator.h
│ │ ├── NoopRedstoneSimulator.h
│ │ ├── RedstoneSimulator.h
│ │ ├── SandSimulator.cpp
│ │ ├── SandSimulator.h
│ │ ├── Simulator.cpp
│ │ ├── Simulator.h
│ │ ├── SimulatorManager.cpp
│ │ ├── SimulatorManager.h
│ │ ├── VanillaFluidSimulator.cpp
│ │ ├── VanillaFluidSimulator.h
│ │ ├── VaporizeFluidSimulator.cpp
│ │ └── VaporizeFluidSimulator.h
│ ├── SpawnPrepare.cpp
│ ├── SpawnPrepare.h
│ ├── StatisticsManager.cpp
│ ├── StatisticsManager.h
│ ├── StringCompression.cpp
│ ├── StringCompression.h
│ ├── StringUtils.cpp
│ ├── StringUtils.h
│ ├── UI/
│ │ ├── AnvilWindow.cpp
│ │ ├── AnvilWindow.h
│ │ ├── BeaconWindow.cpp
│ │ ├── BeaconWindow.h
│ │ ├── BrewingstandWindow.cpp
│ │ ├── BrewingstandWindow.h
│ │ ├── CMakeLists.txt
│ │ ├── ChestWindow.cpp
│ │ ├── ChestWindow.h
│ │ ├── CraftingWindow.cpp
│ │ ├── CraftingWindow.h
│ │ ├── DropSpenserWindow.cpp
│ │ ├── DropSpenserWindow.h
│ │ ├── EnchantingWindow.cpp
│ │ ├── EnchantingWindow.h
│ │ ├── EnderChestWindow.cpp
│ │ ├── EnderChestWindow.h
│ │ ├── FurnaceWindow.cpp
│ │ ├── FurnaceWindow.h
│ │ ├── HopperWindow.cpp
│ │ ├── HopperWindow.h
│ │ ├── HorseWindow.cpp
│ │ ├── HorseWindow.h
│ │ ├── InventoryWindow.cpp
│ │ ├── InventoryWindow.h
│ │ ├── MinecartWithChestWindow.h
│ │ ├── SlotArea.cpp
│ │ ├── SlotArea.h
│ │ ├── Window.cpp
│ │ ├── Window.h
│ │ └── WindowOwner.h
│ ├── UUID.cpp
│ ├── UUID.h
│ ├── Vector3.h
│ ├── VoronoiMap.cpp
│ ├── VoronoiMap.h
│ ├── WebAdmin.cpp
│ ├── WebAdmin.h
│ ├── World.cpp
│ ├── World.h
│ ├── WorldStorage/
│ │ ├── CMakeLists.txt
│ │ ├── EnchantmentSerializer.cpp
│ │ ├── EnchantmentSerializer.h
│ │ ├── FastNBT.cpp
│ │ ├── FastNBT.h
│ │ ├── FireworksSerializer.cpp
│ │ ├── FireworksSerializer.h
│ │ ├── MapSerializer.cpp
│ │ ├── MapSerializer.h
│ │ ├── NBTChunkSerializer.cpp
│ │ ├── NBTChunkSerializer.h
│ │ ├── NamespaceSerializer.cpp
│ │ ├── NamespaceSerializer.h
│ │ ├── SchematicFileSerializer.cpp
│ │ ├── SchematicFileSerializer.h
│ │ ├── ScoreboardSerializer.cpp
│ │ ├── ScoreboardSerializer.h
│ │ ├── StatisticsSerializer.cpp
│ │ ├── StatisticsSerializer.h
│ │ ├── WSSAnvil.cpp
│ │ ├── WSSAnvil.h
│ │ ├── WorldStorage.cpp
│ │ └── WorldStorage.h
│ ├── XMLParser.h
│ ├── fmt.h
│ ├── main.cpp
│ ├── main.h
│ └── mbedTLS++/
│ ├── AesCfb128Decryptor.cpp
│ ├── AesCfb128Decryptor.h
│ ├── AesCfb128Encryptor.cpp
│ ├── AesCfb128Encryptor.h
│ ├── BlockingSslClientSocket.cpp
│ ├── BlockingSslClientSocket.h
│ ├── BufferedSslContext.cpp
│ ├── BufferedSslContext.h
│ ├── CMakeLists.txt
│ ├── CallbackSslContext.cpp
│ ├── CallbackSslContext.h
│ ├── CryptoKey.cpp
│ ├── CryptoKey.h
│ ├── CtrDrbgContext.cpp
│ ├── CtrDrbgContext.h
│ ├── EntropyContext.cpp
│ ├── EntropyContext.h
│ ├── ErrorCodes.h
│ ├── RsaPrivateKey.cpp
│ ├── RsaPrivateKey.h
│ ├── Sha1Checksum.cpp
│ ├── Sha1Checksum.h
│ ├── SslConfig.cpp
│ ├── SslConfig.h
│ ├── SslContext.cpp
│ ├── SslContext.h
│ ├── X509Cert.cpp
│ └── X509Cert.h
├── stats.cmd
└── tests/
├── BlockTypeRegistry/
│ ├── BlockStateTest.cpp
│ ├── BlockTypePaletteTest.cpp
│ ├── BlockTypeRegistryTest.cpp
│ ├── CMakeLists.txt
│ └── PalettedBlockAreaTest.cpp
├── BoundingBox/
│ ├── BoundingBoxTest.cpp
│ └── CMakeLists.txt
├── ByteBuffer/
│ ├── ByteBufferTest.cpp
│ ├── CMakeLists.txt
│ └── Stubs.cpp
├── CMakeLists.txt
├── ChunkData/
│ ├── ArraytoCoord.cpp
│ ├── CMakeLists.txt
│ ├── Coordinates.cpp
│ ├── Copies.cpp
│ └── Creatable.cpp
├── CompositeChat/
│ ├── CMakeLists.txt
│ ├── ClientHandle.cpp
│ └── CompositeChatTest.cpp
├── ConsoleColors/
│ └── ConsoleColors.cpp
├── FastRandom/
│ ├── CMakeLists.txt
│ └── FastRandomTest.cpp
├── Generating/
│ ├── BasicGeneratorTest.cpp
│ ├── Bindings.h
│ ├── CMakeLists.txt
│ ├── LoadablePieces.cpp
│ ├── LuaState_Declaration.inc
│ ├── LuaState_Typedefs.inc
│ ├── PieceGeneratorBFSTreeTest.cpp
│ ├── PieceRotationTest.cpp
│ ├── Stubs.cpp
│ ├── Test.cubeset
│ └── Test1.schematic
├── HTTP/
│ ├── CMakeLists.txt
│ ├── HTTPMessageParser_file.cpp
│ ├── HTTPRequest1.data
│ ├── HTTPRequest2.data
│ ├── HTTPRequestParser_file.cpp
│ ├── HTTPResponse1.data
│ ├── HTTPResponse2.data
│ ├── HTTPResponseParser_file.cpp
│ └── UrlClientTest.cpp
├── LoadablePieces/
│ └── CMakeLists.txt
├── LuaThreadStress/
│ ├── Bindings.h
│ ├── CMakeLists.txt
│ ├── LuaState_Declaration.inc
│ ├── LuaState_Typedefs.inc
│ ├── LuaThreadStress.cpp
│ ├── Stubs.cpp
│ └── Test.lua
├── Network/
│ ├── CMakeLists.txt
│ ├── EchoServer.cpp
│ ├── EnumInterfaces.cpp
│ ├── Google.cpp
│ └── NameLookup.cpp
├── NoiseTest/
│ ├── GNUmakefile
│ └── NoiseTest.cpp
├── OSSupport/
│ ├── CMakeLists.txt
│ └── StressEvent.cpp
├── SchematicFileSerializer/
│ ├── CMakeLists.txt
│ ├── SchematicFileSerializerTest.cpp
│ └── Stubs.cpp
├── TestHelpers.h
└── UUID/
├── CMakeLists.txt
└── UUIDTest.cpp
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
# Not the exact style guide but enough for basic clang-tidy fix-its
Language: Cpp
BasedOnStyle: LLVM
AlignAfterOpenBracket: AlwaysBreak
BreakConstructorInitializers: AfterColon
ConstructorInitializerAllOnOneLineOrOnePerLine: true
PointerAlignment: Middle
SortIncludes: false
SpacesBeforeTrailingComments: 2
UseTab: Always
MaxEmptyLinesToKeep: 5
TabWidth: 4
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
IndentWidth: 4
IndentCaseLabels: true
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterExternBlock: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
# Always include globals first
IncludeCategories:
- Regex: 'Globals.h'
Priority: -1
================================================
FILE: .clang-tidy
================================================
Checks: >-
-*,
readability-identifier-naming,
readability-redundant-string-cstr,
readability-redundant-string-init,
readability-simplify-boolean-expr,
performance-unnecessary-value-param,
performance-unnecessary-copy-initialization,
performance-for-range-copy,
performance-implicit-conversion-in-loop,
CheckOptions:
- key: readability-identifier-naming.PrivateMemberPrefix
value: 'm_'
- key: readability-identifier-naming.ClassConstantCase
value: aNy_CasE
# an empty *Prefix needs a *Case to work
- key: readability-identifier-naming.ClassConstantPrefix
value: ''
#- key: readability-identifier-naming.PrivateMemberCase
# value: CamelCase
#- key: readability-identifier-naming.FunctionCase
# value: CamelCase
#- key: readability-identifier-naming.EnumCase
# value: camelBack
- key: performance-unnecessary-value-param.AllowedTypes
value: 'cEntityEffect;cNoise'
WarningsAsErrors: '*'
HeaderFilterRegex: '/cuberite/src/\.?[^\.]'
FormatStyle: 'file'
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
================================================
FILE: .gitattributes
================================================
# Set the *.data files to be checked out as binary files.
# Used for the HTTP test data files, they need to have the CRLF line endings
# even on Linux, because they're HTTP protocol dumps.
*.data binary
================================================
FILE: .github/FUNDING.yml
================================================
liberapay: Cuberite
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/issue-template.md
================================================
---
name: Issue Template
about: Report a bug, feature request or another sort of issue
title: ''
labels: ''
assignees: ''
---
Client version: x.x.x
Server OS: Windows/Linux/macOS/BSD/...
Cuberite Commit id: (Found at the top of the server's console output)
### Expected behavior
### Actual behavior
### Steps to reproduce the behavior
### Server log
```
Relevant part of server log
```
================================================
FILE: .github/workflows/Build.yml
================================================
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: Build
on:
push:
tags-ignore:
- release-*
branches:
- '**'
pull_request:
branches:
- '**'
jobs:
build:
timeout-minutes: 60
permissions: {}
runs-on: ${{ matrix.os }}
strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false
# Set up a matrix to run the following 3 configurations:
# 1.
# 2.
# 3.
#
# To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list.
# The excluded ones are needed so some configs don't run.
# The included ones are needed because the cpp_compiler field is not set otherwise, leading CMake to fail.
matrix:
os: [ubuntu-latest, windows-latest]
build_type: [Release]
c_compiler: [gcc, clang, cl]
include:
- os: windows-latest
c_compiler: cl
cpp_compiler: cl
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
exclude:
- os: windows-latest
c_compiler: gcc
- os: windows-latest
c_compiler: clang
- os: ubuntu-latest
c_compiler: cl
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DBUILD_TOOLS=Yes
-DSELF_TEST=Yes
-S ${{ github.workspace }}
- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
- if: runner.os == 'Windows'
name: Create Zip Windows
run: powershell Compress-Archive build/Server Cuberite-${{ matrix.os }}-${{ matrix.c_compiler }}-${{ matrix.build_type }}.zip
- if: runner.os != 'Windows'
name: Create Zip Linux
run: zip -r Cuberite-${{ matrix.os }}-${{ matrix.c_compiler }}-${{ matrix.build_type }}.zip build/Server
- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --build-config ${{ matrix.build_type }} --output-on-failure
- if: runner.os != 'Windows'
name: Docs
run: |
cd build/Server
touch apiCheckFailed.flag
./Cuberite <<- EOF
load APIDump
api
apicheck
restart
stop
EOF
if [ -f ./NewlyUndocumented.lua ]; then
echo "ERROR: Newly undocumented API symbols found:"
cat ./NewlyUndocumented.lua
exit 1
fi
if [ -f ./DuplicateDocs.txt ]; then
echo "ERROR: API documentation has duplicate symbol warnings:"
cat ./DuplicateDocs.txt
exit 1
fi
if [ -f ./apiCheckFailed.flag ]; then
echo "ERROR: API check has failed with an unknown error"
exit 1
fi
- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/experimental'
name: Upload artifact
uses: actions/upload-artifact@v4
with:
if-no-files-found: 'error'
name: Cuberite-${{ matrix.os }}-${{ matrix.c_compiler }}-${{ matrix.build_type }}
path: Cuberite-${{ matrix.os }}-${{ matrix.c_compiler }}-${{ matrix.build_type }}.zip
upload_release:
# Disable the job until a proper release process is made
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/experimental') && false
permissions:
contents: write
needs: build
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: release-${{ steps.extract_branch.outputs.branch }}
name: Release ${{ steps.extract_branch.outputs.branch }}
body: Automatically uploaded release by GitHub actions
fail_on_unmatched_files: true
files: |
${{ github.workspace }}/Cuberite-ubuntu-latest-clang-Release.zip
${{ github.workspace }}/Cuberite-ubuntu-latest-gcc-Release.zip
${{ github.workspace }}/Cuberite-windows-latest-cl-Release.zip
prerelease: true
# Taken from here https://stackoverflow.com/questions/68895194/github-actions-create-or-update-a-git-tag
- if: ${{ success() }}
name: Fix tag
uses: actions/github-script@v7
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/release-${{ steps.extract_branch.outputs.branch }}',
sha: context.sha
}).catch(err => {
if (err.status !== 422) throw err;
github.rest.git.updateRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'tags/release-${{ steps.extract_branch.outputs.branch }}',
sha: context.sha
});
})
================================================
FILE: .github/workflows/StyleCheck.yml
================================================
name: Style Check
permissions: {}
on:
push:
tags-ignore:
- release-*
branches:
- '**'
pull_request:
branches:
- '**'
jobs:
build:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: leafo/gh-actions-lua@v11
- name: Find Files
run: cd src && find . -name "*.cpp" -or -name "*.h" > AllFiles.lst
- name: Check Basic Style
run: cd src && lua CheckBasicStyle.lua
- name: Check Bindings and Deps
run: cd src/Bindings && lua CheckBindingsDependencies.lua
================================================
FILE: .gitignore
================================================
build/
build*/
nbproject/
ipch/
Win32/
MCServer
Server/Cuberite
Server/buildinfo
Server/CONTRIBUTORS
Server/LICENSE
Server/Licenses
Server/itemblacklist
Tools/MCADefrag/MCADefrag
Tools/ProtoProxy/ProtoProxy
Testing/
ChunkWorxSave.ini
doxy/
.vscode/
Profiling
Symbols
cloc-ignored.txt
cloc.xml
cloc.xsl
*.ncb
*.user
*.suo
*.sqlite
/EveryNight.cmd
/UploadLuaAPI.cmd
GPUCache
AllFiles.lst
GPUCache
# IDE Stuff
## Sublime Text
*.sublime-*
## emacs
*.*~
*~
*.orig
## CLion
.idea
## Eclipse
.cproject
.project
*.cbp
## KDevelop
*.kdev*
## Vim
.cache/
# world inside source
ChunkWorx.ini
groups.ini
items.ini
monsters.ini
settings.ini
terrain.ini
users.ini
webadmin.ini
world.ini
crafting.txt
motd.txt
logs
players
world
world_nether
# cmake stuff
CMakeFiles/
cmake_install.cmake
CMakeCache.txt
CTestTestfile.cmake
Makefile
*.a
*.d
*.so
tests/*/*-exe
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
install_mainfest.txt
src/Cuberite
lib/tolua++/tolua
src/Bindings/Bindings.*
src/Bindings/BindingDependencies.txt
Cuberite.dir/
src/AllFiles.lst
# win32 cmake stuff
*.vcxproj
*.vcproj
*.vcxproj.filters
*.opensdf
*.sdf
*.sln
*.VC.opendb
*.VC.db
*.idb
.vs/
# cmake output folders and files
ZERO_CHECK.dir/
Debug/
DebugProfile/
Release/
ReleaseProfile/
*.dir/
CPackConfig.cmake
CPackSourceConfig.cmake
cmake-build-*
# APIDump-generated status files:
Server/cuberite_api.lua
Server/official_undocumented.lua
Server/NewlyUndocumented.lua
Server/.luacheckrc
compile_commands.json
# compile.sh folder
build-cuberite
# clang-tidy
tidy-build
run-clang-tidy.py
# ctags output
tags
# mac things
.DS_Store
================================================
FILE: .gitmodules
================================================
[submodule "Server/Plugins/Core"]
path = Server/Plugins/Core
url = https://github.com/cuberite/Core.git
[submodule "Server/Plugins/ProtectionAreas"]
path = Server/Plugins/ProtectionAreas
url = https://github.com/cuberite/ProtectionAreas.git
[submodule "Server/Plugins/ChatLog"]
path = Server/Plugins/ChatLog
url = https://github.com/cuberite/ChatLog.git
[submodule "lib/mbedtls"]
path = lib/mbedtls
url = https://github.com/cuberite/polarssl.git
ignore = dirty
[submodule "lib/SQLiteCpp"]
path = lib/SQLiteCpp
url = https://github.com/cuberite/SQLiteCpp.git
ignore = dirty
[submodule "lib/libevent"]
path = lib/libevent
url = https://github.com/cuberite/libevent.git
ignore = dirty
[submodule "lib/jsoncpp"]
path = lib/jsoncpp
url = https://github.com/open-source-parsers/jsoncpp.git
ignore = dirty
[submodule "lib/TCLAP"]
path = lib/TCLAP
url = https://github.com/cuberite/TCLAP.git
ignore = dirty
[submodule "lib/cmake-coverage"]
path = lib/cmake-coverage
url = https://github.com/cuberite/cmake-coverage.git
ignore = dirty
[submodule "lib/expat"]
path = lib/expat
url = https://github.com/cuberite/expat.git
ignore = dirty
[submodule "lib/lua"]
path = lib/lua
url = https://github.com/cuberite/lua.git
ignore = dirty
[submodule "lib/luaexpat"]
path = lib/luaexpat
url = https://github.com/cuberite/luaexpat.git
ignore = dirty
[submodule "lib/luaproxy"]
path = lib/luaproxy
url = https://github.com/cuberite/luaproxy.git
ignore = dirty
[submodule "lib/sqlite"]
path = lib/sqlite
url = https://github.com/cuberite/sqlite.git
ignore = dirty
[submodule "lib/tolua++"]
path = lib/tolua++
url = https://github.com/cuberite/toluapp.git
ignore = dirty
[submodule "lib/fmt"]
path = lib/fmt
url = https://github.com/fmtlib/fmt.git
ignore = dirty
[submodule "Tools/BlockTypePaletteGenerator/lib/lunajson"]
path = Tools/BlockTypePaletteGenerator/lib/lunajson
url = https://github.com/grafi-tt/lunajson.git
[submodule "lib/libdeflate"]
path = lib/libdeflate
url = https://github.com/cuberite/libdeflate
================================================
FILE: BACKERS
================================================
Thanks to the following people for supporting the Cuberite project with a donation:
- Alvin
- Anonymous
- chrobione
- DrMasik
- Fllamber
- JimSVMI83
- Lordake
- ltdTM
- Phillip Inman
- PureTryOut
- Robert Cringely
- spekdrum
- SphinxC0re
- TooAngel
- Utking
- VaiN474
If you enjoy Cuberite, feel free to donate to the project on Liberapay:
https://liberapay.com/Cuberite
================================================
FILE: CMake/AddDependencies.cmake
================================================
function(build_dependencies)
# Set options for SQLiteCpp, disable all their lints and other features we don't need:
set(SQLITE_ENABLE_COLUMN_METADATA OFF CACHE BOOL "Enable Column::getColumnOriginName(). Require support from sqlite3 library.")
set(SQLITE_ENABLE_JSON1 OFF CACHE BOOL "Enable JSON1 extension when building internal sqlite3 library.")
set(SQLITECPP_INCLUDE_SCRIPT OFF CACHE BOOL "Include config & script files.")
set(SQLITECPP_RUN_CPPCHECK OFF CACHE BOOL "Run cppcheck C++ static analysis tool.")
set(SQLITECPP_RUN_CPPLINT OFF CACHE BOOL "Run cpplint.py tool for Google C++ StyleGuide.")
set(SQLITECPP_USE_STACK_PROTECTION OFF CACHE BOOL "USE Stack Protection hardening.")
set(SQLITECPP_USE_STATIC_RUNTIME OFF CACHE BOOL "Use MSVC static runtime (default for internal googletest).")
# Set options for LibEvent, disable all their tests and benchmarks:
set(EVENT__DISABLE_OPENSSL YES CACHE BOOL "Disable OpenSSL in LibEvent")
set(EVENT__DISABLE_BENCHMARK YES CACHE BOOL "Disable LibEvent benchmarks")
set(EVENT__DISABLE_TESTS YES CACHE BOOL "Disable LibEvent tests")
set(EVENT__DISABLE_REGRESS YES CACHE BOOL "Disable LibEvent regression tests")
set(EVENT__DISABLE_SAMPLES YES CACHE BOOL "Disable LibEvent samples")
set(EVENT__LIBRARY_TYPE "STATIC" CACHE STRING "Use static LibEvent libraries")
# Set options for JsonCPP, disabling all of their tests:
set(JSONCPP_WITH_TESTS OFF CACHE BOOL "Compile and (for jsoncpp_check) run JsonCpp test executables")
set(JSONCPP_WITH_POST_BUILD_UNITTEST OFF CACHE BOOL "Automatically run unit-tests as a post build step")
set(JSONCPP_WITH_PKGCONFIG_SUPPORT OFF CACHE BOOL "Generate and install .pc files")
set(JSONCPP_WITH_CMAKE_PACKAGE OFF CACHE BOOL "Generate and install cmake package files")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build jsoncpp_lib as a shared library.")
set(BUILD_OBJECT_LIBS OFF CACHE BOOL "Build jsoncpp_lib as a object library.")
# Set options for mbedtls:
set(ENABLE_PROGRAMS OFF CACHE BOOL "Build mbed TLS programs.")
set(ENABLE_TESTING OFF CACHE BOOL "Build mbed TLS tests.")
# Enumerate all submodule libraries
# SQLiteCpp needs to be included before sqlite so the lsqlite target is available:
set(DEPENDENCIES expat fmt jsoncpp libdeflate libevent lua luaexpat mbedtls SQLiteCpp sqlite tolua++)
foreach(DEPENDENCY ${DEPENDENCIES})
# Check that the libraries are present:
if (NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/${DEPENDENCY}/CMakeLists.txt")
message(FATAL_ERROR "${DEPENDENCY} is missing in folder lib/${DEPENDENCY}. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
# Include all the libraries
# We use EXCLUDE_FROM_ALL so that only the explicit dependencies are compiled
# (mbedTLS also has test and example programs in their CMakeLists.txt, we don't want those):
add_subdirectory("lib/${DEPENDENCY}" EXCLUDE_FROM_ALL)
endforeach()
if (WIN32)
add_subdirectory(lib/luaproxy)
endif()
endfunction()
function(link_dependencies TARGET)
# Add required includes:
target_include_directories(
${TARGET} SYSTEM PRIVATE
lib/mbedtls/include
lib/TCLAP/include
lib # TODO fix files including zlib/x instead of x
)
# Link dependencies as private:
target_link_libraries(
${TARGET} PRIVATE
event_core
event_extra
fmt::fmt
jsoncpp_static
libdeflate
lsqlite
lualib
luaexpat
mbedtls
SQLiteCpp
tolualib
)
# Link process information, multimedia (for sleep resolution) libraries:
if (WIN32)
target_link_libraries(${TARGET} PRIVATE Psapi.lib Winmm.lib)
endif()
# Special case handling for libevent pthreads:
if(NOT WIN32)
target_link_libraries(${TARGET} PRIVATE event_pthreads)
endif()
# Prettify jsoncpp_static name in VS solution explorer:
set_property(TARGET jsoncpp_static PROPERTY PROJECT_LABEL "jsoncpp")
if(${CMAKE_SYSTEM_NAME} MATCHES FreeBSD)
target_link_libraries(${TARGET} PRIVATE kvm)
endif()
endfunction()
================================================
FILE: CMake/Fixups.cmake
================================================
function(emit_fixups)
if(NOT MSVC AND "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm")
# mbed TLS uses the frame pointer's register in inline assembly for its bignum implementation:
# https://tls.mbed.org/kb/development/arm-thumb-error-r7-cannot-be-used-in-asm-here
target_compile_options(mbedcrypto PRIVATE -fomit-frame-pointer)
endif()
if(UNIX)
execute_process(COMMAND ldd OUTPUT_VARIABLE LDD_OUTPUT ERROR_VARIABLE LDD_OUTPUT)
if (LDD_OUTPUT MATCHES musl)
# Bring musl stack size in line with other platforms:
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,stack-size=1048576")
endif()
endif()
endfunction()
================================================
FILE: CMake/GenerateBindings.cmake
================================================
function(enable_bindings_generation)
# Enumerate every Lua-exported class.
# Changes to these files will cause binding regen:
set(BINDING_DEPENDENCIES
Bindings/AllToLua.pkg
Bindings/BindingsProcessor.lua
Bindings/LuaFunctions.h
Bindings/LuaWindow.h
Bindings/Plugin.h
Bindings/PluginLua.h
Bindings/PluginManager.h
BiomeDef.h
BlockArea.h
BlockEntities/BeaconEntity.h
BlockEntities/BedEntity.h
BlockEntities/BlockEntity.h
BlockEntities/BlockEntityWithItems.h
BlockEntities/BrewingstandEntity.h
BlockEntities/ChestEntity.h
BlockEntities/CommandBlockEntity.h
BlockEntities/DispenserEntity.h
BlockEntities/DropSpenserEntity.h
BlockEntities/DropperEntity.h
BlockEntities/FurnaceEntity.h
BlockEntities/HopperEntity.h
BlockEntities/JukeboxEntity.h
BlockEntities/MobSpawnerEntity.h
BlockEntities/NoteEntity.h
BlockEntities/SignEntity.h
BlockEntities/MobHeadEntity.h
BlockEntities/FlowerPotEntity.h
BlockType.h
BlockInfo.h
BoundingBox.h
ChatColor.h
ChunkDef.h
ClientHandle.h
Color.h
CompositeChat.h
CraftingRecipes.h
Cuboid.h
Defines.h
EffectID.h
Enchantments.h
Entities/Boat.h
Entities/ArrowEntity.h
Entities/Entity.h
Entities/ExpOrb.h
Entities/EnderCrystal.h
Entities/EntityEffect.h
Entities/ExpBottleEntity.h
Entities/FallingBlock.h
Entities/FireChargeEntity.h
Entities/FireworkEntity.h
Entities/Floater.h
Entities/GhastFireballEntity.h
Entities/HangingEntity.h
Entities/ItemFrame.h
Entities/LeashKnot.h
Entities/Pawn.h
Entities/Player.h
Entities/Painting.h
Entities/Pickup.h
Entities/ProjectileEntity.h
Entities/SplashPotionEntity.h
Entities/ThrownEggEntity.h
Entities/ThrownEnderPearlEntity.h
Entities/ThrownSnowballEntity.h
Entities/TNTEntity.h
Entities/WitherSkullEntity.h
Generating/ChunkDesc.h
IniFile.h
Inventory.h
Item.h
ItemGrid.h
Map.h
MapManager.h
Mobs/Monster.h
Mobs/MonsterTypes.h
OSSupport/File.h
Protocol/MojangAPI.h
Registries/CustomStatistics.h
Root.h
Scoreboard.h
Server.h
StatisticsManager.h
StringUtils.h
UI/Window.h
UUID.h
Vector3.h
WebAdmin.h
World.h
)
# List all the files that are generated as part of the Bindings build process:
set(BINDING_OUTPUTS
Bindings.cpp
Bindings.h
LuaState_Declaration.inc
LuaState_Implementation.cpp
LuaState_Typedefs.inc
)
# Make the file paths absolute and pointing to the bindings folder:
set(BINDINGS_FOLDER "${PROJECT_SOURCE_DIR}/src/Bindings/")
list(TRANSFORM BINDING_OUTPUTS PREPEND ${BINDINGS_FOLDER})
list(TRANSFORM BINDING_DEPENDENCIES PREPEND "${PROJECT_SOURCE_DIR}/src/")
# Generate the bindings:
add_custom_command(
OUTPUT ${BINDING_OUTPUTS}
COMMAND lua BindingsProcessor.lua
WORKING_DIRECTORY ${BINDINGS_FOLDER}
DEPENDS ${BINDING_DEPENDENCIES}
)
endfunction()
================================================
FILE: CMake/GroupSources.cmake
================================================
function(group_sources)
# Enable the support for solution folders in MSVC
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Put projects into solution folders in MSVC:
set_target_properties(
event_core_static
event_extra_static
expat
fmt
jsoncpp_static
libdeflate
lualib
luaexpat
mbedcrypto
mbedtls
mbedx509
lsqlite
sqlite3
SQLiteCpp
tolualib
PROPERTIES FOLDER Libraries
)
# luaproxy not generated on anything else
if(WIN32)
set_target_properties(
luaproxy
PROPERTIES FOLDER Support
)
endif()
if(${BUILD_TOOLS})
set_target_properties(
MCADefrag
ProtoProxy
PROPERTIES FOLDER Tools
)
endif()
# Put all files into one project, separate by the folders:
get_property(TARGET_SOURCE_FILES TARGET ${CMAKE_PROJECT_NAME} PROPERTY SOURCES)
source_group(TREE "${PROJECT_SOURCE_DIR}/src" FILES ${TARGET_SOURCE_FILES})
endfunction()
================================================
FILE: CMake/StampBuild.cmake
================================================
# These env variables are used for configuring Travis CI builds.
if(DEFINED ENV{TRAVIS_CUBERITE_FORCE32})
set(FORCE32 $ENV{TRAVIS_CUBERITE_FORCE32})
endif()
if(DEFINED ENV{TRAVIS_BUILD_WITH_COVERAGE})
set(BUILD_WITH_COVERAGE $ENV{TRAVIS_BUILD_WITH_COVERAGE})
endif()
if(DEFINED ENV{CUBERITE_BUILD_ID})
# The build info is defined by the build system (Travis / Jenkins)
set(BUILD_ID $ENV{CUBERITE_BUILD_ID})
set(BUILD_SERIES_NAME $ENV{CUBERITE_BUILD_SERIES_NAME})
set(BUILD_DATETIME $ENV{CUBERITE_BUILD_DATETIME})
if(DEFINED ENV{CUBERITE_BUILD_COMMIT_ID})
set(BUILD_COMMIT_ID $ENV{CUBERITE_BUILD_COMMIT_ID})
else()
message("Commit id not set, attempting to determine id from git")
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_COMMIT_ID
)
string(STRIP ${BUILD_COMMIT_ID} BUILD_COMMIT_ID)
if (NOT (GIT_EXECUTED EQUAL 0))
message(FATAL_ERROR "Could not identifiy git commit id")
endif()
endif()
else()
# This is a local build, stuff in some basic info:
set(BUILD_ID "Unknown")
set(BUILD_SERIES_NAME "local build")
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_COMMIT_ID
)
if (NOT(GIT_EXECUTED EQUAL 0))
set(BUILD_COMMIT_ID "Unknown")
endif()
string(STRIP ${BUILD_COMMIT_ID} BUILD_COMMIT_ID)
execute_process(
COMMAND git log -1 --date=iso --pretty=format:%ai
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_DATETIME
)
if (NOT(GIT_EXECUTED EQUAL 0))
set(BUILD_DATETIME "Unknown")
endif()
string(STRIP ${BUILD_DATETIME} BUILD_DATETIME)
# The BUILD_COMMIT_ID and BUILD_DATETIME aren't updated on each repo pull
# They are only updated when cmake re-configures the project
# Therefore mark them as "approx: "
set(BUILD_COMMIT_ID "approx: ${BUILD_COMMIT_ID}")
set(BUILD_DATETIME "approx: ${BUILD_DATETIME}")
endif()
================================================
FILE: CMakeLists.txt
================================================
# This is the top-level CMakeLists.txt file for the Cuberite project
#
# Use CMake to generate the build files for your platform
cmake_minimum_required (VERSION 3.13)
cmake_policy(VERSION 3.13...3.17.2)
project(
Cuberite
DESCRIPTION "A lightweight, fast and extensible game server for Minecraft"
HOMEPAGE_URL "https://cuberite.org"
LANGUAGES C CXX
)
option(BUILD_TOOLS "Sets up additional executables to be built along with the server" OFF)
option(BUILD_UNSTABLE_TOOLS "Sets up yet more executables to be built, these can be broken and generally are obsolete" OFF)
option(NO_NATIVE_OPTIMIZATION "Disables CPU-specific optimisations for the current machine, allows use on other CPUs of the same platform" OFF)
option(PRECOMPILE_HEADERS "Enable precompiled headers for faster builds" ON)
option(SELF_TEST "Enables testing code to be built" OFF)
option(UNITY_BUILDS "Enables source aggregation for faster builds" ON)
option(WHOLE_PROGRAM_OPTIMISATION "Enables link time optimisation for Release" ON)
include("CMake/AddDependencies.cmake")
include("CMake/Fixups.cmake")
include("CMake/GenerateBindings.cmake")
include("CMake/GroupSources.cmake")
include("SetFlags.cmake")
# Add build timestamp and details:
include("CMake/StampBuild.cmake")
# We need C++17 features:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Static CRT:
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>")
# TODO: set_build_stamp()
set_global_flags()
build_dependencies()
add_executable(${CMAKE_PROJECT_NAME})
add_subdirectory(src)
set_exe_flags(${CMAKE_PROJECT_NAME})
link_dependencies(${CMAKE_PROJECT_NAME})
# Set the startup project to Cuberite, and the debugger dir:
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${CMAKE_PROJECT_NAME})
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/Server")
# Enable PCH and jumbo builds on supporting CMake:
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.16")
if (PRECOMPILE_HEADERS)
target_precompile_headers(${CMAKE_PROJECT_NAME} PRIVATE src/Globals.h)
endif()
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES UNITY_BUILD ${UNITY_BUILDS})
else()
message(WARNING "Precompiled headers for FASTER BUILDS not enabled, upgrade to CMake 3.16 or newer!")
endif()
# Selectively disable warnings in the level where the target is created:
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Generated file has old-style casts, missing prototypes, and deprecated declarations
set_source_files_properties("${PROJECT_SOURCE_DIR}/src/Bindings/Bindings.cpp" PROPERTIES COMPILE_OPTIONS -Wno-everything)
# File failed to follow NHS guidelines on handwashing and has not maintained good hygiene
set_source_files_properties("${PROJECT_SOURCE_DIR}/src/IniFile.cpp" PROPERTIES COMPILE_OPTIONS -Wno-header-hygiene)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set_source_files_properties("${PROJECT_SOURCE_DIR}/src/Bindings/Bindings.cpp" PROPERTIES COMPILE_OPTIONS -w)
endif()
if(BUILD_TOOLS)
message(STATUS "Building tools")
add_subdirectory(Tools/GrownBiomeGenVisualiser/)
add_subdirectory(Tools/MCADefrag/)
add_subdirectory(Tools/NoiseSpeedTest/)
add_subdirectory(Tools/ProtoProxy/)
endif()
if(BUILD_UNSTABLE_TOOLS)
message(STATUS "Building unstable tools")
add_subdirectory(Tools/GeneratorPerformanceTest/)
endif()
# Self Test Mode enables extra checks at startup
if(SELF_TEST)
message(STATUS "Tests enabled")
enable_testing()
add_subdirectory(tests)
endif()
# The need for speed (in Release):
if(WHOLE_PROGRAM_OPTIMISATION)
include(CheckIPOSupported)
check_ipo_supported(RESULT IPO_SUPPORTED OUTPUT IPO_CHECK_OUTPUT)
if(IPO_SUPPORTED)
set_property(TARGET ${CMAKE_PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
message(WARNING "IPO is not supported: ${IPO_CHECK_OUTPUT}")
endif()
endif()
emit_fixups()
group_sources()
enable_bindings_generation()
================================================
FILE: COMPILING.md
================================================
Compiling Cuberite
==================
To compile Cuberite from source, you need the following set of software:
- CMake
- Platform-specific make tool (Windows would be MSVC, Linux/macOS GNU make, etc.)
- C compiler
- Modern C++17 capable compiler and linker
To contribute code, you also need a Git client.
Windows
-------
We use Microsoft Visual Studio for Windows compilation. It is possible to use other toolchains, but we don't test against them and they aren't supported. Visual Studio 2017 Community and above are being actively used for development.
You can find download links for VS2019 Community [here][1].
Next, you need to download and install [CMake][2]. You should download a full installation package, so that the installer will set everything up for you (especially the paths).
To contribute your changes to the source back to the repository, you need a Git client. Options are:
- [Git for Windows][3]
- [GitHub Desktop][4]
- [TortoiseGit][5]
Alternatively, if you want only to compile the source, without contributing, you can [download the sources in a ZIP file directly from GitHub][6].
If you're using Git to get the source, use the following command to set up the local workspace correctly:
```
git clone --recursive https://github.com/cuberite/cuberite.git
```
Now that you have the source, it's time to prepare the project files for your favorite compiler. Open a command window in the folder with the source and type in:
```
mkdir build
cd build
cmake ..
```
This creates a `build` folder where the build will take place, then runs CMake, which will auto-detect your Visual Studio version and produce the appropriate project and solution files.
Finally, open the newly created file, `Cuberite.sln`, in your Visual Studio.
If you want to run Cuberite from within VS, you need to first make sure that it will be run with the correct home folder. Normally this happens automatically, but for some Visual Studio versions the process doesn't stick. Right-click on the Cuberite project in the Solution Explorer tool window, and select Properties. In the dialog, navigate to Configuration properties -> Debugging in the tree on the left, then make sure the value `Working Directory` is set to `../Server`. If you don't do this, the server won't be able to find crafting recipes, item names or plugins.
### Release Configuration
To make Visual Studio produce the version with the best performance, you will need to select a Release configuration. Go to menu Build -> Configuration Manager, and in the opened dialog, change the top left combo box (Active solution configuration) to Release. Close the dialog and build the solution. The resulting executable is called `Cuberite.exe` in the `Server` folder.
### Debug Configuration
In order to tinker with the code, you'll more than likely need to use the debugging features of your IDE. To make them the easiest to use, you should switch to the Debug configuration - this provides the highest level of information while debugging, for the price of the executable being 2 - 10 times slower. Go to menu Build -> Configuration Manager, and in the opened dialog, change the top left combo box (Active solution configuration) to Debug. Close the dialog and build the solution. The resulting executable is called `Cuberite_debug.exe` in the `Server` folder.
macOS
-----
- Install git from its [website][7] or homebrew: `brew install git`.
- Install Xcode (commandline tools are recommended) from the App Store or [the website][8].
- Install CMake from its [website][9] or homebrew: `brew install cmake`.
Cuberite requires Xcode 11.3 or newer.
### Getting the Source
```
git clone --recursive https://github.com/cuberite/cuberite.git
```
### Building
Follow the instructions at [CMake on Unix-based platforms](#cmake-on-unix-based-platforms), using Xcode as cmake's generator. If no generator is specified, CMake will use the Makefile generator, in which case you must build with the `make` command.
After doing so, run the command `xcodebuild lib/polarssl/POLARSSL.xcodeproj` in the build directory, in order to build polarssl, a library that is required by Cuberite. Lastly, run the command `xcodebuild` to build Cuberite. Optionally, you may open the project files for polarssl and then Cuberite in Xcode and build there.
Linux, FreeBSD etc.
-------------------
Install git, make, cmake and clang (or gcc), using your platform's package manager. Debian/Ubuntu:
```
sudo apt-get install git make cmake clang
```
Ensure that you have modern C++ compiler and linker (Clang 7.0+, GCC 7.4+, or VS 2017+).
Cuberite also requires CMake 3.13 or newer. You might find that your distribution
defaults are too out of date, in which case you may need to add a new `apt` source,
or download directly from the projects' websites:
- [Clang][Clang-download]
- [CMake][2]
### Getting the Source
```
git clone --recursive https://github.com/cuberite/cuberite.git
```
### Building
Run the following commands to build Cuberite:
```
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
make -j`nproc`
```
This will build Cuberite in release mode, which is better for almost all cases. For more `cmake` options, or for building in debug mode, see [CMake on Unix-based platforms](#cmake-on-unix-based-platforms).
Android
-------
It is required that users obtain the latest copies of:
- [The Android Native Development Kit (NDK)][10]
- [Lua (download a binary)][11]
Windows users may optionally install the [Ninja build system][12] for improved build speeds.
### Getting the Source
```
git clone --recursive https://github.com/cuberite/cuberite.git
```
### Configuration
From the `android` subdirectory:
```
cmake . -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=16 -DCMAKE_BUILD_TYPE=Release -DCMAKE_ANDROID_ARCH_ABI=armeabi -DCMAKE_ANDROID_NDK=""
```
where `CMAKE_ANDROID_NDK` should be the absolute path to where the Android NDK is installed.
#### Generators to Use
On Linux, the default Make is suggested. No additional parameters are required for this option.
Windows users may make use of Visual Studio to compile for Android, but CMake requires the presence of Nvidia CodeWorks/Nsight Tegra, which can be a hassle to install.
The easiest generator to use seems to be the NDK-bundled Make, to be specified:
* `-G "MinGW Makefiles" -DCMAKE_MAKE_PROGRAM=""`
where `CMAKE_MAKE_PROGRAM` should be the absolute path to the `make` program, found under the `prebuilt/windows-*/bin` subdirectory in the NDK folder.
The next easiest generator is Ninja, which additionally offers multithreaded builds, to be specified:
* `-G "Ninja"`
#### Additional ABI Options
For additional ABI options, visit: https://cmake.org/cmake/help/latest/variable/CMAKE_ANDROID_ARCH_ABI.html
Please note that certain ABIs require specific [API levels](#api-level-requirements).
#### API Level Requirements
The minimum API level is 16 in the verbatim copy of this folder, due to the inclusion of position independent compilation. Additonally, API level 21 or higher is needed for 64 bit ABIs as earlier versions have no support for this architecture.
To lower these requirements to run on very old devices, it is necessary to select a compatible ABI, and disable position independent code generation.
### Building
From the `android` subdirectory:
```
cmake --build .
```
If the build succeeded, an Android-launchable binary will have been generated under the `Server` directory. However, since this directory does not have any supporting files, they must be copied from the parent folder's `Server` directory.
To use it in the official Android app, compress the aforementioned `Server` directory into a Zip file, and transfer it to the phone on which the app is installed.
#### Using the Compile Script on Linux
Linux users are entitled to use the compile script, which provides some easy to use options and also contains instructions for using the binaries in the official Android app.
When running the compile script, make sure to have the necessary build tools installed and run the compile script as following:
```
NDK="path/to/ndk/root" CMAKE="path/to/cmake/executable" android/compile.sh
```
The NDK variable must be set to the path to the NDK root, CMAKE to a call of the cmake binary used for compiling. If the cmake binary is in the PATH, a simple `CMAKE=cmake` is enough. As last parameter you either have to enter a correct ABI (see https://cmake.org/cmake/help/latest/variable/CMAKE_ANDROID_ARCH_ABI.html) or either all or clean. Clean will cause the script to remove the android-build directory, all will compile and zip all Cuberite for all 7 ABIs and create a zip archive of the android/Server direcory for use in the official Android app. If you are unsure which ABI is required for your phone, open the official Android app and navigate to "Settings" and "Install". It will show you the required ABI. Additional parameters may be given through environment variables, namely TYPE="" as Release or Debug (defaults to Release) and THREADS="4" as the number of threads used for compilation (defaults to 4).
### Running the Executables on a Device
Note the locations to which the Zip files were transferred. Open the official Android app, and select "Settings", then "Install", and finally select the Zip files.
Cuberite for Android is now ready to use.
CMake on Unix-based platforms
-----------------------------
### Release Mode
Release mode is preferred for almost all cases, it has much better speed and less console spam. However, if you are developing Cuberite actively, debug mode might be better.
Assuming you are in the Cuberite folder created in the initial setup step, you need to run these commands:
```
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
```
NOTE: CMake can generate project files for many different programs, such as Xcode, eclipse, and ninja. To use a different generator, first type `cmake --help`, and at the end, cmake will output the different generators that are available. To specify one, add `-G` followed by the name of the generator, in the `cmake` command. Note that the name is case-sensitive.
The executable will be built in the `cuberite/Server` folder and will be named `Cuberite`.
### Debug Mode
Debug mode is useful if you want more debugging information about Cuberite while it's running or if you want to use a debugger like GDB to debug issues and crashes.
Assuming you are in the Cuberite folder created in the Getting the sources step, you need to run these commands:
```
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
```
NOTE: CMake can generate project files for many different programs, such as Xcode, eclipse, and ninja. To use a different generator, first type `cmake --help`, and at the end, cmake will output the different generators that are available. To specify one, add `-G` followed by the name of the generator, in the `cmake` command. Note that the name is case-sensitive.
The executable will be built in the `cuberite/Server` folder and will be named `Cuberite_debug`.
### 32 Bit Mode Switch
This is useful if you want to compile Cuberite on an x64 (64-bit Intel) machine but want to use on an x86 (32-bit Intel) machine. This switch can be used with debug or release mode. Simply add:
-DFORCE_32=1
to your cmake command and 32 bit will be forced.
### Compiling for Another Computer of the Same Architecture
When cross-compiling for another computer of the same architecture it is important to set the NO_NATIVE_OPTIMIZATION flag. This tells the compiler not to optimise for your machine. This switch can be used with debug or release mode. To enable, simply add:
-DNO_NATIVE_OPTIMIZATION=1
to your cmake command.
### List of All Build Flags
Cuberite's build process supports a large number of flags for customising the builds. Use these flags by adding `-DFlag_name=Value` to the cmake configuration command. For example to enable test generation using the `SELF_TEST` flag add: `-DSELF_TEST=ON`
###### BUILD_TOOLS
Adds the Cuberite tools to the build. At the moment only MCADefrag and ProtoProxy are added. Define as ON to enable. Define as OFF to disable.
###### BUILD_UNSTABLE_TOOLS
Adds tools that are not working yet to the build. Currently this is only the Generator Performance Test. Used for developing these tools. Define as ON to enable. Define as OFF to disable.
###### SELF_TEST
Enables generation of tests and self-test startup code. Tests can be run with ctest and with makefiles make test. Define as ON to enable. Define as OFF to disable.
###### FORCE_32
Forces the build to use 32 bit builds on *nix systems. Define as ON to enable. Define as OFF to disable.
###### NO_NATIVE_OPTIMIZATION
Disables optimizations for the build host. This is important when building on a different machine from the one you will run Cuberite on as the build machine may support instructions the final machine does not. This flag only has any effect on linux. Define as ON to enable. Define as OFF to disable.
###### DISABLE_SYSTEM_LUA
Disables use of the system lua, uses a compiled version instead. Useful if compiling on a system that doesn't already have lua installed. This option is incompatible with cross-compilation.
###### UNITY_BUILDS
Controls use of unity builds, an optimisation that improves compile times at the expense of system compatibility and error message utility. Some systems may need to have this disabled in order to compile properly. Unity builds are only supported on CMake versions >= 3.16, if you have an old version unity builds will always be disabled and this flag has no effect.
###### PRECOMPILE_HEADERS
Controls use of precompiled headers, an optimisation that improves compile times at the expense of system compatibility. Some systems may need to have this disabled in order to compile properly. Precompiled headers are only supported on CMake versions >= 3.16, if you have an old version precompiled headers will always be disabled and this flag has no effect.
###### WHOLE_PROGRAM_OPTIMISATION
Controls use of link time optimisation (LTO), which slightly improves the generated binary file at the expense of compilation speed and system compatibility. Some systems may need to have this disabled in order to compile properly.
[1]: https://www.visualstudio.com/downloads/
[2]: https://cmake.org/download/
[3]: https://git-for-windows.github.io/
[4]: https://desktop.github.com/
[5]: https://tortoisegit.org/
[6]: https://github.com/cuberite/cuberite/archive/master.zip
[7]: https://git-scm.com/
[8]: https://developer.apple.com/downloads
[9]: https://cmake.org/
[10]: https://developer.android.com/ndk/downloads/index.html
[11]: https://www.lua.org/download.html
[12]: https://github.com/ninja-build/ninja/releases
[clang-download]: https://releases.llvm.org/download.html
================================================
FILE: CONTRIBUTING.md
================================================
How to Contribute to Cuberite
=============================
Thank you for your interest in Cuberite. Contributing to Cuberite is easy, just fork the project on GitHub, make your changes and submit a pull request to get your code merged. That's all there is to it.
Check out [GETTING-STARTED.md][1] for more information about setting up the development environment for Cuberite, finding issues to work on, etc...
If you are new to open source and/or GitHub, or just aren't sure about some details in the contribution process, here's a tutorial to get you started:
[How to Contribute to an Open Source Project on GitHub][2]
Code Conventions
----------------
When contributing, you must follow our code conventions. Otherwise, CI builds will automatically fail and your PR will not be merged until the non-conforming code is fixed. Due to this, we strongly advise you to run `src/CheckBasicStyle.lua` before committing, it will perform various code style checks and warn you if your code does not conform to our conventions. `CheckBasicStyle.lua` can be configured to run automatically before every commit via a pre-commit hook, **this is highly recommended**. There are instructions on how to achieve this at the bottom of this file.
Here are the conventions:
- We use C++17.
- Please use **tabs for indentation and spaces for alignment**. This means that if it's at line start, it's a tab; if it's in the middle of a line, it's a space.
- All functions in all classes need documenting comments on what they do and what behavior they follow, use doxy-comments formatted as `/** Description */`. Do not use asterisks on additional lines in multi-line comments.
- Use spaces after the comment markers: `// Comment` instead of `//Comment`. A comment must be prefixed with two spaces if it's on the same line with code:
- `SomeFunction()//Note the two spaces prefixed to me and the space after the slashes.`
- All variable names and function names use CamelCase style, with the exception of single letter variables.
- `ThisIsAProperFunction()` `This_is_bad()` `this_is_bad()` `GoodVariableName` `badVariableName`.
- All private member variables start with `m_`, function parameters start with `a_`, class names start with `c`.
- `class cMonster { int m_Health; int DecreaseHealth(int a_Amount); }`
- Put spaces after commas. `Vector3d(1, 2, 3)` instead of `Vector3d(1,2,3)`
- Put spaces before and after every operator, except unary operators.
- `a = b + c;`
- `if (a == b)`
- `++itr`
- Keep individual functions spaced out by 5 empty lines, this enhances readability and makes navigation in the source file easier.
- Add those extra parentheses to conditions, especially in C++:
- `if ((a == 1) && ((b == 2) || (c == 3)))` instead of ambiguous `if (a == 1 && b == 2 || c == 3)`
- This helps prevent mistakes such as `if (a & 1 == 0)`
- Alpha-sort stuff that makes sense alpha-sorting—long lists of similar items etc.
- White space is free, so use it freely.
- "freely" as in "plentifully", not "arbitrarily".
- All `case` statements inside a `switch` need an extra indent.
- Each and every control statement deserves its braces. This helps maintainability later on when the file is edited, lines added or removed - the control logic doesn't break so easily.
- The only exception: a `switch` statement with all `case` statements being a single short statement is allowed to use the short brace-less form.
- These two rules really mean that indent is governed by braces.
- Function parameters that are coordinates should be passed using an appropriate storage container, and not as three separate arguments.
- e.g. for a block position, Vector3i. For an entity position, Vector3d. For a chunk coordinate, cChunkCoords.
- For a 3-dimensional box of blocks, use cCuboid. For an axis-aligned bounding box, use cBoundingBox.
- Parameters smaller than 4 elements (e.g. Vector3, cChunkCoords) should be passed by value. All other parameters should be passed by const reference, where applicable.
- `Foo(Vector3d a_Param1, const cCuboid & a_Param2)`
- See the discussion in issue #3853
- Use the provided wrappers for OS stuff:
- Threading is done by inheriting from `cIsThread`, thread synchronization through `cCriticalSection` and `cEvent`, file access and filesystem operations through the `cFile` class, high-precision timing through `cStopwatch`
- No magic numbers, use named constants:
- `E_ITEM_XXX`, `E_BLOCK_XXX` and `E_META_XXX` for items and blocks.
- `cEntity::etXXX` for entity types, `cMonster::mtXXX` for mob types.
- `dimNether`, `dimOverworld` and `dimEnd` for world dimension.
- `gmSurvival`, `gmCreative`, `gmAdventure` for game modes.
- `wSunny`, `wRain`, `wThunderstorm` for weather.
- `cChunkDef::Width`, `cChunkDef::Height` for chunk dimensions (C++).
- etc.
- Instead of checking for a specific value, use an `IsXXX` function, if available:
- `cPlayer:IsGameModeCreative()` instead of` (cPlayer:GetGameMode() == gmCreative)` (the player can also inherit the gamemode from the world, which the value-d condition doesn't catch).
- All `#include` directives are specified relative to the root source directory.
- Add an empty last line in all source files (GCC and Git can complain otherwise).
Pre-commit Hook
---------------
When contributing, the code conventions above *must* be followed. Otherwise, the CI builds will automatically fail and your PR will not be merged until the non-conforming code is fixed. It is highly recommended to set up a pre-commit hook which will check your code style before every commit. Here is how to do that:
- Clone the repository as usual.
- Go to your `/.git/hooks` folder, create a text file named "pre-commit" there with the following contents:
```
#!/bin/sh
src/CheckBasicStyle.lua 1>&2 -g
```
- If on Linux/Unix, you need to give the newly created file an execute permission: `chmod +x .git/hooks/pre-commit`
- Lua must be installed.
- You're done. Now, `src/CheckBasicStyle.lua` will check the changed files before every commit. If a problem is found, it will point you to that problem and will cancel the commit.
Note that the check script is not smart enough to catch everything, so not having any warnings does not necessarily imply that you followed the conventions fully. The other humans working on this will perform more checks before merging.
Github-related conventions
--------------------------
The following rules are not strictly enforced, but if you follow them, you will make it easier for us to review your changes.
- Use good short title for your PRs. `Store Health as float` is good, `Fix #4024` is not good.
- If a PR fixes an issue, mention it in the PR description, but **not** in the commits themselves. Typically, we add the line `Fixes #007` to the bottom of the PR description, this makes Github link the PR to the issue, auto-close the issue when the PR is merged, and also is included in the merge message.
- Focus on one thing only. Each PR should avoid making unrelated changes - those makes the history more difficult to understand later on, and they make the review a headache.
- Feel free to rebase, amend or otherwise manipulate the commits in the PR (of course, as long as you're the only one working on the PR). We mostly squash-merge PRs, so your internal commit structure will not be important in the end.
- If the PR is about one change, but it makes sense to keep the change broken into several commits, make sure each such commit is compilable, encapsulated, and possibly add a note to the PR description so that we consider this.
Copyright
---------
Your must either place your work in the public domain or licensed it under the Apache License 2.0, and if so you must add yourself to the contributors file to show that you accept the publication of your work under the license.
**PLUGINS ONLY**: If your plugin is not licensed under the Apache License 2.0, then it must be compatible and marked as such. This is only valid for the plugins included within the Cuberite source; plugins developed on separate repositories can use whatever license they want.
[1]: https://github.com/cuberite/cuberite/blob/master/GETTING-STARTED.md
[2]: https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github
================================================
FILE: CONTRIBUTORS
================================================
This file contains all known copyright holders of this software, as far as is
practically possible to ascertain.
If you contribute to this software you must add yourself to this file, to
indicate your agreement to license your contributions according to the license
as provided in the LICENSE file.
12xx12
9caihezi
AirOne01
Altenius
anguslmm (Angus McLean)
ashquarky
BasedDoge (Donated AlchemistVillage prefabs)
bearbin (Alexander Harkness)
beeduck
bibo38
birkett (Anthony Birkett)
Bond_009
changyongGuo
Cocosushi6
CoolPuppyKid
DarkoGNU
derouinw
dImrich (Damian Imrich)
Diusrex
Duralex
dyexlzc
Earboxer (Zach DeCook)
FakeTruth (founder)
feyokorenhof
Gareth Nelson
GefaketHD
Griezn (Seppe Degryse)
HaoTNN
havel06 (Michal Havlíček)
hle0
Howaner
ion232 (Arran Ireland)
jan64
jasperarmstrong
jclever77 (Jon Clever)
JK2K
kevinr (Kevin Riggle)
keyboard
KingCol13
Lapayo
linnemannr (Reid Linnemann)
LittleBigBug (Ethan Jones)
lkolbly
LogicParrot
Luksor
M10360
marmot21
Masy98
mathiascode
maxluchterhand1
MaxwellScroggs
mborland
mBornand
mcfadyeni
MeMuXin
mgueydan
MikeHunsinger
mjagdis (Mike Jagdis)
Morritz (TJ)
morsmordere (Anzhelika Iugai)
mtilden
nesco
NiLSPACE (formerly STR_Warrior)
npresley0506
p-mcgowan
Persson-dev
plan1231
pokechu22
ProjectBM
pwnOrbitals
Rodarg
Rorkh
rs2k
SamJBarney
Schwertspize
Seadragon91 (Lukas Pioch)
sleirsgoevy (Sergey Lisov)
Sofapriester
solvictor
Spekdrum (Pablo Beltran)
SphinxC0re
Spongecade (Updated wiki links)
steve-nzr
structinf (xdot)
sweetgiorni
SuperEwald
Sxw1212
Taugeshtu
TheHyper45
theophriene
tigerw (Tiger Wang)
tonibm19
tonitch (Debucquoy Anthony)
TooAngel
tympaniplayer (Nate Palmer)
UltraCoderRU
Warmist
WebFreak001
williamhatcher (Helped with API documentation updates and bug fixes)
worktycho
Xenoxis
xoft (Mattes Dolak/madmaxoft on GH)
Yeeeeezus (Donated AlchemistVillage prefabs)
================================================
FILE: CheckLua.cmake
================================================
# CheckLua.cmake
# Checks whether the Lua standalone interpreter is installed on the host system
# If found, sets HAS_LUA_INTERPRETER to 1 and LUA_INTERPRETER_VERSION to the version reported ("5.1" etc.)
# If not found, unsets HAS_LUA_INTERPRETER
execute_process(
COMMAND lua -e "io.stdout:write(string.match(_VERSION, '%d+%.%d+'))"
RESULT_VARIABLE LUA_EXECUTED
OUTPUT_VARIABLE LUA_INTERPRETER_VERSION
)
if ("${LUA_EXECUTED}" STREQUAL "0")
set(HAS_LUA_INTERPRETER 1)
else()
unset(HAS_LUA_INTERPRETER)
unset(LUA_INTERPRETER_VERSION)
endif()
unset(LUA_EXECUTED)
================================================
FILE: Doxyfile
================================================
# Doxyfile 1.8.1.2
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a hash (#) is considered a comment and will be ignored
# The format is:
# TAG = value [value, ...]
# For lists items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the config file
# that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv for the list of possible encodings.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or sequence of words) that should
# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.
PROJECT_NAME = Cuberite
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER =
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
# a quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = "A lightweight, fast and extensible game server for Minecraft"
# With the PROJECT_LOGO tag one can specify an logo or icon that is
# included in the documentation. The maximum height of the logo should not
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
PROJECT_LOGO = Server/favicon.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = doxy
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
# format and will distribute the generated files over these directories.
# Enabling this option can be useful when feeding doxygen a huge amount of
# source files, where putting all generated files in the same directory would
# otherwise cause performance problems for the file system.
CREATE_SUBDIRS = YES
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
# Set to NO to disable this.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
# the brief description of a member or function before the detailed description.
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator
# that is used to form the text in various listings. Each string
# in this list, if found as the leading text of the brief description, will be
# stripped from the text and the result after processing the whole list, is
# used as the annotated text. Otherwise, the brief description is used as-is.
# If left blank, the following values are used ("$name" is automatically
# replaced with the name of the entity): "The $name class" "The $name widget"
# "The $name file" "is" "provides" "specifies" "contains"
# "represents" "a" "an" "the"
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
# description.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
# the reader which header file to include in order to use a class.
# If left blank only the name of the header file containing the class
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM.
SHORT_NAMES = YES
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
# comment as the brief description. If set to NO, the JavaDoc
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
JAVADOC_AUTOBRIEF = YES
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
# comment as the brief description. If set to NO, the comments
# will behave just like regular Qt-style comments (thus requiring
# an explicit \brief command for a brief description.)
QT_AUTOBRIEF = YES
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
# comments) as a brief description. This used to be the default behaviour.
# The new default is to treat a multi-line C++ comment block as a detailed
# description. Set this tag to YES if you prefer the old behaviour instead.
MULTILINE_CPP_IS_BRIEF = NO
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
# a new page for each member. If set to NO, the documentation of a member will
# be part of the file/class/namespace that contains it.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
# Doxygen uses this value to replace tabs by spaces in code fragments.
TAB_SIZE = 4
# This tag can be used to specify a number of aliases that acts
# as commands in the documentation. An alias has the form "name=value".
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
# put the command \sideeffect (or @sideeffect) in the documentation, which
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES =
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
# "class=itcl::class" will allow you to use the command class in the
# itcl::class meaning.
TCL_SUBST =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
# sources only. Doxygen will then generate output that is more tailored for
# Java. For instance, namespaces will be presented as packages, qualified
# scopes will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources only. Doxygen will then generate output that is more tailored for
# Fortran.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for
# VHDL.
OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this
# tag. The format is ext=language, where ext is a file extension, and language
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
EXTENSION_MAPPING =
# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
# comments according to the Markdown format, which allows for more readable
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you
# can mix doxygen, HTML, and XML commands with Markdown formatting.
# Disable only in case of backward compatibilities issues.
MARKDOWN_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
# func(std::string) {}). This also makes the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
# Doxygen will parse them like normal C++ but will assume all classes use public
# instead of private inheritance when no explicit protection keyword is present.
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate getter
# and setter methods for a property. Setting this option to YES (the default)
# will make doxygen replace the get and set methods by a property in the
# documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
# subgroup of that type (e.g. under the Public Functions section). Set it to
# NO to prevent subgrouping. Alternatively, this can be done per class using
# the \nosubgrouping command.
SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
# unions are shown inside the group in which they are included (e.g. using
# @ingroup) instead of on a separate page (for HTML and Man pages) or
# section (for LaTeX and RTF).
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
# unions with only public data fields will be shown inline in the documentation
# of the scope in which they are defined (i.e. file, namespace, or group
# documentation), provided this scope is documented. If set to NO (the default),
# structs, classes, and unions are shown on a separate page (for HTML and Man
# pages) or section (for LaTeX and RTF).
INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
# is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically
# be useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
TYPEDEF_HIDES_STRUCT = NO
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# When the cache is full, less often used symbols will be written to disk.
# For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penalty.
# If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
SYMBOL_CACHE_SIZE = 0
# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
# their name and scope. Since this can be an expensive process and often the
# same symbol appear multiple times in the code, doxygen keeps a cache of
# pre-resolved symbols. If the cache is too small doxygen will become slower.
# If the cache is too large, memory is wasted. The cache size is given by this
# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
LOOKUP_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = YES
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default
# anonymous namespaces are hidden.
EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
# documentation blocks found inside the body of a function.
# If set to NO (the default) these blocks will be appended to the
# function's detailed documentation block.
HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation
# that is typed after a \internal command is included. If the tag is set
# to NO (the default) then the documentation will be excluded.
# Set it to YES to include the internal documentation.
INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
# file names in lower-case letters. If set to YES upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
# will show members with their full class and namespace scopes in the
# documentation. If set to YES the scope will be hidden.
HIDE_SCOPE_NAMES = NO
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
# will put a list of the files that are included by a file in the documentation
# of that file.
SHOW_INCLUDE_FILES = YES
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
# rather than with sharp brackets.
FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
# will sort the (detailed) documentation of file and class members
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
# brief documentation of file, namespace and class members alphabetically
# by member name. If set to NO (the default) the members will appear in
# declaration order.
SORT_BRIEF_DOCS = YES
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
# will sort the (brief and detailed) documentation of class members so that
# constructors and destructors are listed first. If set to NO (the default)
# the constructors will appear in the respective orders defined by
# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
SORT_MEMBERS_CTORS_1ST = NO
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
# hierarchy of group names into alphabetical order. If set to NO (the default)
# the group names will appear in their defined order.
SORT_GROUP_NAMES = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
# sorted by fully-qualified names, including namespaces. If set to
# NO (the default), the class list will be sorted only by class name,
# not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the
# alphabetical list.
SORT_BY_SCOPE_NAME = NO
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
# do proper type resolution of all parameters of a function it will reject a
# match between the prototype and the implementation of a member function even
# if there is only one candidate or it is obvious which candidate to choose
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
# will still accept a match between prototype and implementation in such cases.
STRICT_PROTO_MATCHING = NO
# The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo
# commands in the documentation.
GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable (YES) or
# disable (NO) the test list. This list is created by putting \test
# commands in the documentation.
GENERATE_TESTLIST = YES
# The GENERATE_BUGLIST tag can be used to enable (YES) or
# disable (NO) the bug list. This list is created by putting \bug
# commands in the documentation.
GENERATE_BUGLIST = YES
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
# disable (NO) the deprecated list. This list is created by putting
# \deprecated commands in the documentation.
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or macro consists of for it to appear in
# the documentation. If the initializer consists of more lines than specified
# here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and macros in the
# documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting.
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
# at the bottom of the documentation of classes and structs. If set to YES the
# list will mention the files that were used to generate the documentation.
SHOW_USED_FILES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES.
SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
# Namespaces page. This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command , where is the value of
# the FILE_VERSION_FILTER tag, and is the name of an input file
# provided by doxygen. Whatever the program writes to standard output
# is used as the file version. See the manual for examples.
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files
# containing the references data. This must be a list of .bib files. The
# .bib extension is automatically appended if omitted. Using this command
# requires the bibtex tool to be installed. See also
# https://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
# feature you need bibtex and perl available in the search path.
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
# NO is used.
WARNINGS = YES
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled.
WARN_IF_UNDOCUMENTED = YES
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
# parameters in a documented function, or documenting parameters that
# don't exist or using markup commands wrongly.
WARN_IF_DOC_ERROR = YES
# The WARN_NO_PARAMDOC option can be enabled to get warnings for
# functions that are documented, but have no documentation for their parameters
# or return value. If set to NO (the default) doxygen will only warn about
# wrong or incomplete parameter documentation, but not about the absence of
# documentation.
WARN_NO_PARAMDOC = NO
# The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text
# tags, which will be replaced by the file and line number from which the
# warning originated and the warning text. Optionally the format may contain
# $version, which will be replaced by the version of the file (if it could
# be obtained via FILE_VERSION_FILTER)
WARN_FORMAT = "$file:$line: $text"
# The WARN_LOGFILE tag can be used to specify a file to which warning
# and error messages should be written. If left blank the output is written
# to stderr.
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag can be used to specify the files and/or directories that contain
# documented source files. You may enter file names like "myfile.cpp" or
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT = src
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# also the default input encoding. Doxygen uses libiconv (or the iconv built
# into libc) for the transcoding. See https://www.gnu.org/software/libiconv for
# the list of possible encodings.
INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
# *.f90 *.f *.for *.vhd *.vhdl
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.d \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.idl \
*.odl \
*.cs \
*.php \
*.php3 \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.f90 \
*.f \
*.for \
*.vhd \
*.vhdl
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
# Note that relative paths are relative to the directory from which doxygen is
# run.
EXCLUDE = source/SQLite \
source/squirrelbindings
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories. Note that the wildcards are matched
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
EXCLUDE_PATTERNS = *StackWalker.* \
*LeakFinder.* \
*Bindings.* \
*ManualBindings.*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
EXCLUDE_SYMBOLS = _* \
__* \
abstract
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# the \include command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank all files are included.
EXAMPLE_PATTERNS = *
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude
# commands irrespective of the value of the RECURSIVE tag.
# Possible values are YES and NO. If left blank NO is used.
EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
# the \image command).
IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command , where
# is the value of the INPUT_FILTER tag, and is the name of an
# input file. Doxygen will then use the output that the filter program writes
# to standard output. If FILTER_PATTERNS is specified, this tag will be
# ignored.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty or if
# non of the patterns match the file name, INPUT_FILTER is applied.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
# files to browse (i.e. when SOURCE_BROWSER is set to YES).
FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
# and it is also possible to disable source filtering for a specific pattern
# using *.ext= (so without naming a filter). This option only has effect when
# FILTER_SOURCE_FILES is enabled.
FILTER_SOURCE_PATTERNS =
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
# VERBATIM_HEADERS is set to NO.
SOURCE_BROWSER = YES
# Setting the INLINE_SOURCES tag to YES will include the body
# of functions and classes directly in the documentation.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
# fragments. Normal C, C++ and Fortran comments will always remain visible.
STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES
# then for each documented function all documented
# functions referencing it will be listed.
REFERENCED_BY_RELATION = NO
# If the REFERENCES_RELATION tag is set to YES
# then for each documented function all documented entities
# called/used by that function will be listed.
REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
# link to the source code. Otherwise they will link to the documentation.
REFERENCES_LINK_SOURCE = YES
# If the USE_HTAGS tag is set to YES then the references to source code
# will point to the HTML generated by the htags(1) tool instead of doxygen
# built-in source browser. The htags tool is part of GNU's global source
# tagging system (see https://www.gnu.org/software/global/global.html). You
# will need version 4.8.6 or higher.
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
# will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this.
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
# of all compounds will be generated. Enable this if the project
# contains a lot of classes, structs, unions or interfaces.
ALPHABETICAL_INDEX = YES
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
# in which this list will be split (can be a number in the range [1..20])
COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all
# classes will be put under the same header in the alphabetical index.
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
IGNORE_PREFIX = c
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
# generate HTML output.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `html' will be used as the default path.
HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
# doxygen will generate files with .html extension.
HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a
# standard header. Note that when using a custom header you are responsible
# for the proper inclusion of any scripts and style sheets that doxygen
# needs, which is dependent on the configuration options used.
# It is advised to generate a default header using "doxygen -w html
# header.html footer.html stylesheet.css YourConfigFile" and then modify
# that header. Note that the header is subject to change so you typically
# have to redo this when upgrading to a newer version of doxygen or when
# changing the value of configuration settings such as GENERATE_TREEVIEW!
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# style sheet in the HTML output directory as well, or it will be erased!
HTML_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the style sheet and background images
# according to this color. Hue is specified as an angle on a colorwheel,
# see https://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.
HTML_COLORSTYLE_HUE = 220
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
# the colors in the HTML output. For a value of 0 the output will use
# grayscales only. A value of 255 will produce the most vivid colors.
HTML_COLORSTYLE_SAT = 100
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
# the luminance component of the colors in the HTML output. Values below
# 100 gradually make the output lighter, whereas values above 100 make
# the output darker. The value divided by 100 is the actual gamma applied,
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
# and 100 does not change the gamma.
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs.
HTML_TIMESTAMP = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
HTML_DYNAMIC_SECTIONS = NO
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
# entries shown in the various tree structured indices initially; the user
# can expand and collapse entries dynamically later on. Doxygen will expand
# the tree to such a level that at most the specified number of entries are
# visible (unless a fully collapsed tree already exceeds this amount).
# So setting the number of entries 1 will produce a full collapsed tree by
# default. 0 is a special value representing an infinite number of entries
# and will result in a full expanded tree by default.
HTML_INDEX_NUM_ENTRIES = 100
# If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard).
# To create a documentation set, doxygen will generate a Makefile in the
# HTML output directory. Running make will produce the docset in that
# directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
# it at startup.
# See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.
GENERATE_DOCSET = NO
# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
# feed. A documentation feed provides an umbrella under which multiple
# documentation sets from a single provider (such as a company or product suite)
# can be grouped.
DOCSET_FEEDNAME = "Doxygen generated docs"
# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
# should uniquely identify the documentation set bundle. This should be a
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
# will append .docset to the name.
DOCSET_BUNDLE_ID = org.doxygen.Project
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
# of the generated HTML documentation.
GENERATE_HTMLHELP = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
# be used to specify the file name of the resulting .chm file. You
# can add a path in front of the file if the result should not be
# written to the html output directory.
CHM_FILE =
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
# be used to specify the location (absolute path including file name) of
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
# the HTML help compiler on the generated index.hhp.
HHC_LOCATION =
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
# it should be included in the master .chm file (NO).
GENERATE_CHI = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content.
CHM_INDEX_ENCODING =
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
# controls whether a binary table of contents is generated (YES) or a
# normal table of contents (NO) in the .chm file.
BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members
# to the contents of the HTML help documentation and to the tree view.
TOC_EXPAND = NO
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
# that can be used as input for Qt's qhelpgenerator to generate a
# Qt Compressed Help (.qch) of the generated HTML documentation.
GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
# be used to specify the file name of the resulting .qch file.
# The path specified is relative to the HTML output folder.
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# https://doc.qt.io/qt-5/qthelpproject.html#namespace
QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# https://doc.qt.io/qt-5/qthelpproject.html#virtual-folders
QHP_VIRTUAL_FOLDER = doc
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
# add. For more information please see
# https://doc.qt.io/qt-5/qthelpproject.html#custom-filters
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
#
# Qt Help Project / Custom Filters.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
# filter section matches.
#
# Qt Help Project / Filter Attributes.
QHP_SECT_FILTER_ATTRS =
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file.
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
# plugin. To install this plugin and make it available under the help contents
# menu in Eclipse, the contents of the directory containing the HTML and XML
# files needs to be copied into the plugins directory of eclipse. The name of
# the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
# the help appears.
GENERATE_ECLIPSEHELP = NO
# A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have
# this name.
ECLIPSE_DOC_ID = org.doxygen.Project
# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
# at top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it. Since the tabs have the same information as the
# navigation tree you can set this option to NO if you already set
# GENERATE_TREEVIEW to YES.
DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
# If the tag value is set to YES, a side panel will be generated
# containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature.
# Since the tree basically has the same information as the tab index you
# could consider to set DISABLE_INDEX to NO when enabling this option.
GENERATE_TREEVIEW = NO
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
# documentation. Note that a value of 0 will completely suppress the enum
# values from appearing in the overview section.
ENUM_VALUES_PER_LINE = 4
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
TREEVIEW_WIDTH = 250
# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
# links to external symbols imported via tag files in a separate window.
EXT_LINKS_IN_WINDOW = NO
# Use this tag to change the font size of Latex formulas included
# as images in the HTML documentation. The default is 10. Note that
# when you change the font size after a successful doxygen run you need
# to manually remove any form_*.png images from the HTML output directory
# to force them to be regenerated.
FORMULA_FONTSIZE = 10
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are
# not supported properly for IE 6.0, but are supported on all modern browsers.
# Note that when changing this option you need to delete any form_*.png files
# in the HTML output before the changes have effect.
FORMULA_TRANSPARENT = YES
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
# (see https://www.mathjax.org) which uses client side Javascript for the
# rendering instead of using prerendered bitmaps. Use this if you do not
# have LaTeX installed or if you want to formulas look prettier in the HTML
# output. When enabled you may also need to install MathJax separately and
# configure the path to it using the MATHJAX_RELPATH option.
USE_MATHJAX = NO
# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
# directory is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to
# the MathJax Content Delivery Network so you can quickly see the result without
# installing MathJax. However, it is strongly recommended to install a local
# copy of MathJax from https://www.mathjax.org before deployment.
MATHJAX_RELPATH = https://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.
MATHJAX_EXTENSIONS =
# When the SEARCHENGINE tag is enabled doxygen will generate a search box
# for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using
# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
# (GENERATE_DOCSET) there is already a search function so this one should
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
SEARCHENGINE = NO
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
# using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server
# based approach is that it scales better to large projects and allows
# full text search. The disadvantages are that it is more difficult to setup
# and does not have live searching capabilities.
SERVER_BASED_SEARCH = NO
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `latex' will be used as the default path.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name.
# Note that when enabling USE_PDFLATEX this option is only used for
# generating bitmaps for formulas in the HTML output, but not in the
# Makefile that is written to the output directory.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
# generate index for LaTeX. If left blank `makeindex' will be used as the
# default command name.
MAKEINDEX_CMD_NAME = makeindex
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
# LaTeX documents. This may be useful for small projects and may help to
# save some trees in general.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, letter, legal and
# executive. If left blank a4wide will be used.
PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
# packages that should be included in the LaTeX output.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
# standard header. Notice: only use this tag if you know what you are doing!
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
# the generated latex document. The footer should contain everything after
# the last chapter. If it is left blank doxygen will generate a
# standard footer. Notice: only use this tag if you know what you are doing!
LATEX_FOOTER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references
# This makes the output suitable for online browsing using a pdf viewer.
PDF_HYPERLINKS = YES
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
# plain latex in the generated Makefile. Set this option to YES to get a
# higher quality PDF documentation.
USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
# command to the generated LaTeX files. This will instruct LaTeX to keep
# running if errors occur, instead of asking the user for help.
# This option is also used when generating formulas in HTML.
LATEX_BATCHMODE = NO
# If LATEX_HIDE_INDICES is set to YES then doxygen will not
# include the index chapters (such as File Index, Compound Index, etc.)
# in the output.
LATEX_HIDE_INDICES = NO
# If LATEX_SOURCE_CODE is set to YES then doxygen will include
# source code with syntax highlighting in the LaTeX output.
# Note that which sources are shown also depends on other settings
# such as SOURCE_BROWSER.
LATEX_SOURCE_CODE = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
# https://en.wikipedia.org/wiki/BibTeX for more info.
LATEX_BIB_STYLE = plain
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
# The RTF output is optimized for Word 97 and may not look very pretty with
# other RTF readers or editors.
GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `rtf' will be used as the default path.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
# RTF documents. This may be useful for small projects and may help to
# save some trees in general.
COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
# will contain hyperlink fields. The RTF file will
# contain links (just like the HTML output) instead of page references.
# This makes the output suitable for online browsing using WORD or other
# programs which support those fields.
# Note: wordpad (write) and others do not support links.
RTF_HYPERLINKS = NO
# Load style sheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an rtf document.
# Syntax is similar to doxygen's config file.
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
# generate man pages
GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `man' will be used as the default path.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to
# the generated man pages (default is the subroutine's section .3)
MAN_EXTENSION = .3
# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
# then it will generate one additional man file for each entity
# documented in the real man page(s). These additional files
# only source the real man page, but without them the man command
# would be unable to find the correct page. The default is NO.
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
# If the GENERATE_XML tag is set to YES Doxygen will
# generate an XML file that captures the structure of
# the code including all documentation.
GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `xml' will be used as the default path.
XML_OUTPUT = xml
# The XML_SCHEMA tag can be used to specify an XML schema,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_SCHEMA =
# The XML_DTD tag can be used to specify an XML DTD,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_DTD =
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
# dump the program listings (including syntax highlighting
# and cross-referencing information) to the XML output. Note that
# enabling this will significantly increase the size of the XML output.
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
# generate an AutoGen Definitions (see autogen.sf.net) file
# that captures the structure of the code including all
# documentation. Note that this feature is still experimental
# and incomplete at the moment.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
# If the GENERATE_PERLMOD tag is set to YES Doxygen will
# generate a Perl module file that captures the structure of
# the code including all documentation. Note that this
# feature is still experimental and incomplete at the
# moment.
GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
# the necessary Makefile rules, Perl scripts and LaTeX code to be able
# to generate PDF and DVI output from the Perl module output.
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
# nicely formatted so it can be parsed by a human reader. This is useful
# if you want to understand what is going on. On the other hand, if this
# tag is set to NO the size of the Perl module output will be much smaller
# and Perl will parse it just the same.
PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
# This is useful so different doxyrules.make files included by the same
# Makefile don't overwrite each other's variables.
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
# evaluate all C-preprocessor directives found in the sources and include
# files.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
# names in the source code. If set to NO (the default) only conditional
# compilation will be performed. Macro expansion can be done in a controlled
# way by setting EXPAND_ONLY_PREDEF to YES.
MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# pointed to by INCLUDE_PATH will be searched when a #include is found.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by
# the preprocessor.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
# be used.
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition that
# overrules the definition found in the source code.
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all references to function-like macros
# that are alone on a line, have an all uppercase name, and do not end with a
# semicolon, because these will confuse the parser if not removed.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
# The TAGFILES option can be used to specify one or more tagfiles. For each
# tag file the location of the external documentation should be added. The
# format of a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths
# or URLs. Note that each tag file must have a unique name (where the name does
# NOT include the path). If a tag file is not located in the directory in which
# doxygen is run, you must also specify the path to the tagfile here.
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
# will be listed.
ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
# in the modules index. If set to NO, only the current project's groups will
# be listed.
EXTERNAL_GROUPS = YES
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of `which perl').
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs.
CLASS_DIAGRAMS = YES
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
MSCGEN_PATH =
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
# or is not a class.
HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
# have no effect if this option is set to NO (the default)
HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
# allowed to run in parallel. When set to 0 (the default) doxygen will
# base this on the number of processors available in the system. You can set it
# explicitly to a value larger than 0 to get control over the balance
# between CPU load and processing speed.
DOT_NUM_THREADS = 12
# By default doxygen will use the Helvetica font for all dot files that
# doxygen generates. When you want a differently looking font you can specify
# the font name using DOT_FONTNAME. You need to make sure dot is able to find
# the font, which can be done by putting it in a standard location or by setting
# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font.
DOT_FONTNAME = Helvetica
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
# The default size is 10pt.
DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the Helvetica font.
# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
# set the path where dot can find it.
DOT_FONTPATH =
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the
# CLASS_DIAGRAMS tag to NO.
CLASS_GRAPH = YES
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect implementation dependencies (inheritance, containment, and
# class references variables) of the class with other documented classes.
COLLABORATION_GRAPH = YES
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for groups, showing the direct groups dependencies
GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
UML_LOOK = NO
# If the UML_LOOK tag is enabled, the fields and methods are shown inside
# the class node. If there are many fields or methods and many nodes the
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
# threshold limits the number of items for each type to make the size more
# managable. Set this to 0 for no limit. Note that the threshold may be
# exceeded by 50% before the limit is enforced.
UML_LIMIT_NUM_FIELDS = 10
# If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
TEMPLATE_RELATIONS = NO
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
# tags are set to YES then doxygen will generate a graph for each documented
# file showing the direct and indirect include dependencies of the file with
# other documented files.
INCLUDE_GRAPH = YES
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
# documented header file showing the documented files that directly or
# indirectly include this file.
INCLUDED_BY_GRAPH = YES
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
# doxygen will generate a call dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
CALL_GRAPH = NO
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will generate a graphical hierarchy of all classes instead of a textual one.
GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories.
DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are svg, png, jpg, or gif.
# If left blank png will be used. If you choose svg you need to set
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).
DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
# Note that this requires a modern browser other than Internet Explorer.
# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible. Older versions of IE do not have SVG support.
INTERACTIVE_SVG = NO
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the
# \dotfile command).
DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the
# \mscfile command).
MSCFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph
# becomes larger than this value, doxygen will truncate the graph, which is
# visualized by representing a node as a red box. Note that doxygen if the
# number of direct children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
DOT_GRAPH_MAX_NODES = 500
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
# graphs generated by dot. A depth value of 3 means that only nodes reachable
# from the root by following a path via at most 3 edges will be shown. Nodes
# that lay further from the root node will be omitted. Note that setting this
# option to 1 or 2 may greatly reduce the computation time needed for large
# code bases. Also note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not
# seem to support this out of the box. Warning: Depending on the platform used,
# enabling this option may lead to badly anti-aliased labels on the edges of
# a graph (i.e. they become hard to read).
DOT_TRANSPARENT = NO
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10)
# support this, this feature is disabled by default.
DOT_MULTI_TARGETS = YES
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
# generate a legend page explaining the meaning of the various boxes and
# arrows in the dot generated graphs.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
# remove the intermediate dot files that are used to generate
# the various graphs.
DOT_CLEANUP = YES
================================================
FILE: GETTING-STARTED.md
================================================
Getting Started
===============
Hello! Thanks for wanting to work on this project :smile:, and I hope that this file will help you somewhat in getting all set up and running. I'll go through the basics of getting the project environment set up, the code organization and style, and general development practices. I'll also show you some good issues to start off working on to get yourself familiarised with the code.
Note that this document is about contributing code for Cuberite.
- If you are looking for usage instructions, see the [User's Manual][1] instead.
- If you would like to help but you are not a programmer, you can still help with testing! Please see the [TESTING.md][2] file.
Minecraft Basics
----------------
If you don't play Minecraft or don't have a great knowledge of the basic systems, you should get to know them. The [Minecraft Wiki][3] is quite useful for this task, although some youtubers are also fairly good at teaching the basics and just playing is quite good too. It is possible to contribute without knowing minecraft in detail though, or even owning a license.
I'd say that the important topics are:
- Different types of blocks and how they act.
- Mobs, what they do and how.
- Redstone, pistons, and automation.
- Farming.
- Fighting, health and the hunger system.
Useful Resources
----------------
- [Minecraft Wiki](https://minecraft.wiki/w/Minecraft_Wiki)
- [Minecraft Protocol Wiki](http://wiki.vg/Main_Page)
- [Lua API Documentation](https://api.cuberite.org/)
- [Visual Studio Community Edition Download](https://www.visualstudio.com/downloads/)
Setting up a Dev Environment
============================
Requirements
------------
### Linux/BSD/Solaris/macOS
You'll need the basic C++ build tools:
- gcc (or clang or another C compiler)
- g++ (or clang++ or another C++ compiler)
- make
You'll also need CMake to generate the makefile to build from.
### Windows
If you use Windows, your best bet is the Microsoft Visual Studio, available as a free download in the Community edition from Microsoft. You'll also need CMake to generate the project files.
Setting up the Repo
-------------------
Next, you'll need to set up the repo. You should make a fork and work on that, then create a Pull Request so that we can review and merge your code. After you've "earned" an honorable status, we'll give you write access to the repository, so that you can work on branches in the main repo here (still use PRs though, they're great tools for review and discussion).
Once you've cloned, you need to pull down the submodules:
git submodule init
git submodule update
After that they should come down automatically when you pull but it's not bad to refresh every once in a while.
Repo Arrangement
----------------
The Cuberite repo has recently been rearranged for better code separation and other things, but basically it's split into a few areas:
- `src`
This holds all of the Cuberite source code, and is where most development takes place.
It's split into logical areas for blocks, the protocol handling and other things.
- `lib`
This holds all the 3rd party libraries for Cuberite. You basically don't need to touch these, just make sure they are present (git submodules)
- `Server`
This contains the default plugins and environment to actually run the server. This folder's contents are linked into the executable output folder for each build flavor. In the `Plugins` folder there are the default plugins. The config files are also stored here. Config files with `.example.ini` on the end are generated by the server or source control and should be left alone, instead you should copy them to a file without the `example` in the name which will be prioritised over the generated ones.
Code Style
----------
You should follow the code style guidelines in [CONTRIBUTING.md][4], as well as other C++ best practices.
Note that there is a script file, $/src/CheckBasicStyle.lua, that can check some common violations of the coding style. You should run this file to check your code regularly. This script is run during the integration builds and if it fails, the build will fail. Note that you need Lua installed in order to run this script. It is recommended to set this up as a pre-commit hook and doing so is covered in CONTRIBUTING.md.
How to Build
------------
### Linux/BSD/Solaris/macOS
Follow the instructions in [COMPILING.md][5]. You probably want to build in debug mode (when you're developing) for console alerts and debugging capability, even though it's much slower for everyday use.
Basically, the process is:
cmake . -DCMAKE_BUILD_TYPE=DEBUG && make
### Windows
You need to first generate a solution file by executing CMake. At the top-level folder of the repository:
```
mkdir VS2017-x64
cd VS2017-x64
cmake -DBUILD_TOOLS=1 -DSELF_TEST=1 ..
```
Then just open the solution file in MSVC and build. Note that the first time after generating the solution, you will need to do extra setup in order to be able to fully debug in MSVC:
- Set the startup project to Cuberite: right-click the Cuberite project in the Solution Explorer and choose "Set as Startup Project".
- Set the debugging folder: right-click the Cuberite project in the Solution Explorer, choose "Properties". In the dialog, browse to "Configuration Properties" -> "Debugging" and set "Working Directory" to "../Server".
How to Run
----------
The server can be run (on *nix) by a simple `./Cuberite` in the `Server` directory. On first run it will generate the world and start a server on the default port (configurable in `settings.ini`) so you can connect in Minecraft via `localhost`.
Where to Get Started
--------------------
Issues that should be easy to get started with are tagged as [easy][6] in GitHub issues.
Other good places to get started are:
- Cleaning up some of the compiler warnings. Check [our CI][7] for a list of them.
- Writing some plugins: They are written in lua, with excellent API documentation available via [APIDump][8]. The [Core plugin][9] should also help quite a bit here.
Special Things
--------------
- Make yourself familiar with the community. Visit the forums: https://forum.cuberite.org/
- Ask questions as much as you like, we're here to help :smiley:
[1]: https://book.cuberite.org/
[2]: https://github.com/cuberite/cuberite/blob/master/TESTING.md
[3]: https://minecraft.wiki/w/Minecraft_Wiki
[4]: https://github.com/cuberite/cuberite/blob/master/CONTRIBUTING.md
[5]: https://github.com/cuberite/cuberite/blob/master/COMPILING.md
[6]: https://github.com/cuberite/cuberite/issues?q=is%3Aopen+is%3Aissue+label%3Aeffort%2Feasy
[7]: https://builds.cuberite.org/job/cuberite/job/master/lastSuccessfulBuild/console
[8]: https://api.cuberite.org/
[9]: https://github.com/cuberite/Core
================================================
FILE: Jenkinsfile
================================================
pipeline {
options {
timeout(time: 1, unit: 'HOURS')
}
agent {
docker 'cuberite/docker-ci/minimal:latest'
}
stages {
stage("Prepare") {
steps {
sh 'git submodule update --init'
}
}
stage("Check") {
parallel {
stage("CheckBasicStyle") {
steps {
dir("src") {
sh 'find . -name \\*.cpp -or -name \\*.h > AllFiles.lst'
sh 'lua CheckBasicStyle.lua'
sh 'cd Bindings && lua CheckBindingsDependencies.lua'
}
}
}
stage("clang-tidy") {
steps {
sh './clang-tidy.sh -j 4'
}
}
}
}
stage("Build") {
parallel {
stage("gcc") {
environment {
CI_CUBERITE_BUILD_TYPE = 'Release'
CI_JOB_NUMBER = "{$env.BUILD_ID}"
CC = "gcc"
CXX = "g++"
}
steps {
sh 'bash ./cibuild.sh'
}
}
stage("clang") {
environment {
CI_CUBERITE_BUILD_TYPE = 'Debug'
CI_JOB_NUMBER = "{$env.BUILD_ID}"
CC = "clang"
CXX = "clang++"
}
steps {
sh 'bash ./cibuild.sh'
}
}
}
}
stage("Artifacts") {
when {
branch 'master'
}
steps {
archiveArtifacts artifacts: 'gcc_Release/Server/.luacheckrc'
}
}
}
post {
always {
cleanWs()
}
}
}
================================================
FILE: LICENSE
================================================
Cuberite: A lightweight, fast and extensible game server for Minecraft
www: https://cuberite.org
Copyright 2011-2025 Cuberite Contributors
A full list of known copyright holders can be found in the CONTRIBUTORS file
to be distributed with all copies of this software.
------
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# Cuberite
[](https://builds.cuberite.org/job/cuberite/job/master/)
[](https://ci.appveyor.com/project/cuberite/cuberite)
Cuberite is a Minecraft-compatible multiplayer game server that is written in C++ and designed to be efficient with memory and CPU, as well as having a flexible Lua Plugin API. Cuberite is compatible with the Java Edition Minecraft client.
Cuberite runs on Windows, *nix and Android operating systems. This includes Android phones and tablets as well as Raspberry Pis; support for small embedded devices is experimental.
Currently we support Release 1.8 - 1.12.2 Minecraft protocol versions.
Subscribe to [the newsletter][1] for important updates and project news.
## Installation
There are several ways to obtain Cuberite.
### Binaries
- The easiest method is downloading for Windows or Linux from the [website][2].
- You can use the EasyInstall script for Linux and macOS, which automatically downloads the correct binary. The script is described below.
#### The EasyInstall script
This script will download the correct binary from the project site.
curl -sSfL https://download.cuberite.org | sh
### Compiling
- You can compile automatically for Linux, macOS and FreeBSD with the `compile.sh` script. The script is described below.
- You can also compile manually. See [COMPILING.md][4].
Compiling may provide better performance (1.5-3x as fast) and it supports more operating systems.
#### The compile.sh script
This script downloads the source code and compiles it. The script is smart enough to notify you of missing dependencies and instructing you on how to install them. The script doesn't work for Windows.
Using curl:
sh -c "$(curl -sSfL -o - https://compile.cuberite.org)"
Or using wget:
sh -c "$(wget -O - https://compile.cuberite.org)"
### Hosted services
- Hosted Cuberite is available via [Gamocosm][5].
## Contributing
Cuberite is licensed under the Apache License V2, and we welcome anybody to fork and submit a Pull Request back with their changes, and if you want to join as a permanent member we can add you to the team.
Cuberite is developed in C++ and Lua. To contribute code, please check out [GETTING-STARTED.md][6] and [CONTRIBUTING.md][7] for more details.
Plugins are written in Lua. You can contribute by developing plugins and submitting them to the [plugin repository][8] or the [forum][9]. Please check out our [plugin introduction guide][10] for more info.
If you are not a programmer, you can help by testing Cuberite and reporting bugs. See [TESTING.md][11] for details.
You can also help with documentation by contributing to the [User's Manual][12].
## Other Stuff
For other stuff, check out the [homepage][13], the [Users' Manual][14], the [forums][15], and the [Plugin API][16].
Support the Cuberite development team on [Liberapay][17]
[1]: https://cuberite.org/news/#subscribe
[2]: https://cuberite.org/
[4]: https://github.com/cuberite/cuberite/blob/master/COMPILING.md
[5]: https://gamocosm.com/
[6]: https://github.com/cuberite/cuberite/blob/master/GETTING-STARTED.md
[7]: https://github.com/cuberite/cuberite/blob/master/CONTRIBUTING.md
[8]: https://plugins.cuberite.org/
[9]: https://forum.cuberite.org/forum-2.html
[10]: https://api.cuberite.org/Writing-a-Cuberite-plugin.html
[11]: https://github.com/cuberite/cuberite/blob/master/TESTING.md
[12]: https://github.com/cuberite/users-manual
[13]: https://cuberite.org/
[14]: https://book.cuberite.org/
[15]: https://forum.cuberite.org/
[16]: https://api.cuberite.org/
[17]: https://liberapay.com/Cuberite
================================================
FILE: Server/.gitignore
================================================
*.exe
*.dll
*.exp
*.lib
*.ini
Cuberite
Cuberite_debug
luaexe
CommLogs/
GalExports/
GalExportWeb/
GalleryWeb/
logs
players
world*
API/
API.txt
API_wiki.txt
*.dat
schematics
*.schematic
*.ilk
*.pdb
memdump*
*.grab
*.cfg
*.sqlite
helgrind.log
valgrind.log
motd.txt
*.deuser
*.dmp
*.xml
mcserver_api.lua
cuberite_api.lua
DuplicateDocs.txt
# Ignore the webadmin certs / privkey, so that no-one commits theirs by accident:
webadmin/httpscert.crt
webadmin/httpskey.pem
================================================
FILE: Server/Install/.gitignore
================================================
*.tag
*.example.ini
================================================
FILE: Server/Install/Cuberite_high_detail_debug.cmd
================================================
Cuberite --crash-dump-full
================================================
FILE: Server/Install/Cuberite_medium_detail_debug.cmd
================================================
Cuberite --crash-dump-globals
================================================
FILE: Server/Install/PackWindowsExecutables.cmd
================================================
@echo off
:: This script is run in the Appveyor CI builds to pack up the artifacts
:: It is expected to be run with the Server folder as the current working dir
@echo on
:: Only test that the server runs for pull requests
:: Don't upload any artifacts until it's merged into master
if defined APPVEYOR_PULL_REQUEST_NUMBER (
echo stop 1>>cmds.txt
Cuberite --port 32767 0buildinfo.txt
7z a -tzip -y Cuberite.zip -scsWIN -i@Install\WindowsExecutables.list -xr!*.git*
7z a -tzip -y PDBs.zip -scsWIN -i@Install/WindowsPDBs.list -xr!*.git*
:: Generate API documentation
git clone https://github.com/madmaxoft/ManualApiDump Plugins/ManualApiDump
echo load ManualApiDump 1>cmds.txt
echo manualapi 1>>cmds.txt
echo load APIDump 1>>cmds.txt
echo api 1>>cmds.txt
echo stop 1>>cmds.txt
Cuberite --port 32767 0
Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
==============================
Portions of Libevent are based on works by others, also made available by
them under the three-clause BSD license above. The copyright notices are
available in the corresponding source files; the license is as above. Here's
a list:
log.c:
Copyright (c) 2000 Dug Song
Copyright (c) 1993 The Regents of the University of California.
strlcpy.c:
Copyright (c) 1998 Todd C. Miller
win32select.c:
Copyright (c) 2003 Michael A. Davis
evport.c:
Copyright (c) 2007 Sun Microsystems
ht-internal.h:
Copyright (c) 2002 Christopher Clark
minheap-internal.h:
Copyright (c) 2006 Maxim Yegorushkin
==============================
The arc4module is available under the following, sometimes called the
"OpenBSD" license:
Copyright (c) 1996, David Mazieres
Copyright (c) 2008, Damien Miller
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
==============================
The Windows timer code is based on code from libutp, which is
distributed under this license, sometimes called the "MIT" license.
Copyright (c) 2010 BitTorrent, Inc.
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: Server/Install/ThirdPartyLicenses/Lua-LICENSE.txt
================================================
Copyright (C) 1994-2008 Lua.org, PUC-Rio.
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: Server/Install/ThirdPartyLicenses/LuaExpat-license.html
================================================
LuaExpat: XML Expat parsing for the Lua programming language
LuaExpat
XML Expat parsing for the Lua programming language
LuaExpat is free software: it can be used for both academic and
commercial purposes at absolutely no cost. There are no royalties
or GNU-like "copyleft" restrictions. LuaExpat qualifies as Open Source
software. Its licenses are compatible with GPL. LuaExpat is not in
the public domain and the
Kepler Project
keep its copyright. The legal details are below.
The spirit of the license is that you are free to use LuaExpat
for any purpose at no cost without having to ask us. The only
requirement is that if you do use LuaExpat, then you should give us
credit by including the appropriate copyright notice somewhere in
your product or its documentation.
The LuaExpat library is designed and implemented by Roberto
Ierusalimschy. The implementation is not derived from licensed
software.
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: Server/Install/ThirdPartyLicenses/LuaSQLite3-LICENSE.txt
================================================
/************************************************************************
* lsqlite3 *
* Copyright (C) 2002-2013 Tiago Dionizio, Doug Currie *
* All rights reserved. *
* Author : Tiago Dionizio *
* Author : Doug Currie *
* Library : lsqlite3 - a SQLite 3 database binding for Lua 5 *
* *
* 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: Server/Install/ThirdPartyLicenses/MersenneTwister-LICENSE.txt
================================================
// The Mersenne Twister is an algorithm for generating random numbers. It
// was designed with consideration of the flaws in various other generators.
// The period, 2^19937-1, and the order of equidistribution, 623 dimensions,
// are far greater. The generator is also fast; it avoids multiplication and
// division, and it benefits from caches and pipelines. For more information
// see the inventors' web page at
// http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
// Reference
// M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally
// Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on
// Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
// Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
// Copyright (C) 2000 - 2009, Richard J. Wagner
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. The names of its contributors may not be used to endorse or promote
// products derived from this software without specific prior written
// permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: Server/Install/ThirdPartyLicenses/SQLiteCpp-LICENSE.txt
================================================
The MIT License (MIT)
Copyright (c) 2012-2014 Sebastien Rombauts (sebastien.rombauts@gmail.com)
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: Server/Install/ThirdPartyLicenses/fmt-LICENSE.rst
================================================
Copyright (c) 2012 - 2016, Victor Zverovich
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: Server/Install/UnixExecutables.list
================================================
Cuberite
Plugins
Prefabs
Protocol
webadmin
BACKERS
brewing.txt
crafting.txt
furnace.txt
items.ini
monsters.ini
buildinfo.txt
README.txt
favicon.png
CONTRIBUTORS
LICENSE
ThirdPartyLicenses
================================================
FILE: Server/Install/WindowsExecutables.list
================================================
Cuberite.exe
*.dll
Plugins
Prefabs
Protocol
webadmin
BACKERS
brewing.txt
crafting.txt
furnace.txt
items.ini
monsters.ini
buildinfo.txt
README.txt
favicon.png
CONTRIBUTORS
LICENSE
Cuberite*debug.cmd
*.example.ini
ThirdPartyLicenses
================================================
FILE: Server/Install/WindowsPDBs.list
================================================
*.pdb
buildinfo.txt
================================================
FILE: Server/Plugins/.gitignore
================================================
/*
!/APIDump
!/Debuggers
!/DumpInfo
!/HookNotify
!/NetworkTest
!/TestLuaRocks
================================================
FILE: Server/Plugins/APIDump/APIDesc.lua
================================================
return
{
Classes =
{
--[[
-- What the APIDump plugin understands / how to document stuff:
ExampleClassName =
{
Desc = "Description, exported as the first paragraph of the class page. Usually enclosed within double brackets."
Functions =
{
FunctionName =
{
{
Params =
{
{ Name = "BuiltInType", Type = "number"},
{ Name = "ClassEnum", Type = "cClass#eEnum"},
{ Name = "GlobalEnum", Type = "eEnum"},
},
Returns =
{
{ Type = "number" },
{ Type = "self" }, -- Returns the same object on which it was called
},
Notes = "Notes 1"
},
{
Params = {...},
Returns = {...},
Notes = "Notes 2",
},
},
} ,
Constants =
{
ConstantName = { Notes = "Notes about the constant" },
} ,
ConstantGroups =
{
eEnum = -- also used as the HTML anchor name
{
Include = {"constant1", "constant2", "const_.*"}, -- Constants to include in this group, array of identifiers, accepts wildcards
TextBefore = "This text will be written in front of the constant list",
TextAfter = "This text will be written after the constant list",
ShowInDescendants = false, -- If false, descendant classes won't list these constants
}
},
Variables =
{
VariableName = { Type = "string", Notes = "Notes about the variable" },
} ,
AdditionalInfo = -- Paragraphs to be exported after the function definitions table
{
{
Header = "Header 1",
Contents = "Contents of the additional section 1",
},
{
Header = "Header 2",
Contents = "Contents of the additional section 2",
}
},
Inherits = "ParentClassName", -- Only present if the class inherits from another API class
},
--]]
cBlockInfo =
{
Desc = [[
This class is used to query block properties.
]],
Functions =
{
CanBeTerraformed =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the block is suitable to be changed by a generator",
},
FullyOccupiesVoxel =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the specified block fully occupies its voxel.",
},
GetHardness =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block's hardness. The bigger the harder the block.",
},
GetBlockHeight =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block's hitbox height.",
},
GetLightValue =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns how much light the specified block emits on its own.",
},
GetPlaceSound =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "(DEPRECATED) Not used by cuberite internally and always returns an empty string.",
},
GetSpreadLightFalloff =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns how much light the specified block type consumes.",
},
IsClickedThrough =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified block type is ignored by the client on left and right clicks, that is, treated as if it were air.",
},
IsOneHitDig =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified block type will be destroyed after a single hit.",
},
IsPistonBreakable =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if a piston can break the specified block type.",
},
IsRainBlocker =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified block type blocks rain from passing through.",
},
IsSkylightDispersant =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if skylight is impeded by passage through a block of the specified type.",
},
IsSnowable =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the specified block type can hold snow atop.",
},
IsSolid =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the specified block type is solid.",
},
IsTransparent =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the specified block is transparent.",
},
IsUseableBySpectator =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether a spectator can interact with the specified block.",
},
},
Variables =
{
m_BlockHeight =
{
Type = "number",
Notes = "The height of the block, a value between 0.0 and 1.0. OBSOLETE, use cBlockInfo:GetBlockHeight() instead.",
},
m_CanBeTerraformed =
{
Type = "bool",
Notes = "Is this block suited to be terraformed? OBSOLETE, use cBlockInfo:CanBeTerraformed() instead.",
},
m_FullyOccupiesVoxel =
{
Type = "bool",
Notes = "Does this block fully occupy its voxel - is it a 'full' block? OBSOLETE, use cBlockInfo:FullyOccupiesVoxel() instead.",
},
m_Hardness =
{
Type = "number",
Notes = "The greater the value the longer the player needs to break the block. OBSOLETE, use cBlockInfo:GetHardness() instead.",
},
m_IsSnowable =
{
Type = "bool",
Notes = "Can this block hold snow atop? OBSOLETE, use cBlockInfo:IsSnowable() instead",
},
m_IsSolid =
{
Type = "bool",
Notes = "Is this block solid (player cannot walk through)? OBSOLETE, use cBlockInfo:IsSolid() instead.",
},
m_LightValue =
{
Type = "number",
Notes = "How much light do the blocks emit on their own? OBSOLETE, use cBlockInfo:GetLightValue() instead.",
},
m_OneHitDig =
{
Type = "bool",
Notes = "Is a block destroyed after a single hit? OBSOLETE, use cBlockInfo:IsOneHitDig() instead.",
},
m_PistonBreakable =
{
Type = "bool",
Notes = "Can a piston break this block? OBSOLETE, use cBlockInfo:IsPistonBreakable instead.",
},
m_SpreadLightFalloff =
{
Type = "number",
Notes = "How much light do the blocks consume? OBSOLETE, use cBlockInfo:GetSpreadLightFalloff() instead.",
},
m_Transparent =
{
Type = "bool",
Notes = "Is a block completely transparent? (light doesn't get decreased(?)). OBSOLETE, use cBlockInfo:IsTransparent() instead.",
},
},
},
cChatColor =
{
Desc = [[
A wrapper class for constants representing colors or effects.
]],
Functions =
{
},
Constants =
{
Black =
{
Notes = "",
},
Blue =
{
Notes = "",
},
Bold =
{
Notes = "",
},
Color =
{
Notes = "The first character of the color-code-sequence, §",
},
DarkPurple =
{
Notes = "",
},
Delimiter =
{
Notes = "The first character of the color-code-sequence, §",
},
Gold =
{
Notes = "",
},
Gray =
{
Notes = "",
},
Green =
{
Notes = "",
},
Italic =
{
Notes = "",
},
LightBlue =
{
Notes = "",
},
LightGray =
{
Notes = "",
},
LightGreen =
{
Notes = "",
},
LightPurple =
{
Notes = "",
},
Navy =
{
Notes = "",
},
Plain =
{
Notes = "Resets all formatting to normal",
},
Purple =
{
Notes = "",
},
Random =
{
Notes = "Random letters and symbols animate instead of the text",
},
Red =
{
Notes = "",
},
Rose =
{
Notes = "",
},
Strikethrough =
{
Notes = "",
},
Underlined =
{
Notes = "",
},
White =
{
Notes = "",
},
Yellow =
{
Notes = "",
},
},
},
cChunkDesc =
{
Desc = [[
The cChunkDesc class is a container for chunk data while the chunk is being generated. As such, it is
only used as a parameter for the {{OnChunkGenerating|OnChunkGenerating}} and
{{OnChunkGenerated|OnChunkGenerated}} hooks and cannot be constructed on its own. Plugins can use this
class in both those hooks to manipulate generated chunks.
Calls to any setter of this class will not trigger simulator updates (lava, water, redstone).
]],
Functions =
{
FillBlocks =
{
Params =
{
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Fills the entire chunk with the specified blocks",
},
FillRelCuboid =
{
{
Params =
{
{
Name = "RelCuboid",
Type = "cCuboid",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Fills the cuboid, specified in relative coords, by the specified block type and block meta. The cuboid may reach outside of the chunk, only the part intersecting with this chunk is filled.",
},
{
Params =
{
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Fills the cuboid, specified in relative coords, by the specified block type and block meta. The cuboid may reach outside of the chunk, only the part intersecting with this chunk is filled.",
},
},
FloorRelCuboid =
{
{
Params =
{
{
Name = "RelCuboid",
Type = "cCuboid",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Fills those blocks of the cuboid (specified in relative coords) that are considered non-floor (air, water) with the specified block type and meta. Cuboid may reach outside the chunk, only the part intersecting with this chunk is filled.",
},
{
Params =
{
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Fills those blocks of the cuboid (specified in relative coords) that are considered non-floor (air, water) with the specified block type and meta. Cuboid may reach outside the chunk, only the part intersecting with this chunk is filled.",
},
},
GetBiome =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
},
Returns =
{
{
Type = "EMCSBiome",
},
},
Notes = "Returns the biome at the specified relative coords",
},
GetBlockEntity =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
},
Returns =
{
{
Type = "cBlockEntity",
},
},
Notes = "Returns the block entity for the block at the specified coords. Creates it if it doesn't exist. Returns nil if the block has no block entity capability.",
},
GetBlockMeta =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
},
Returns =
{
{
Name = "NIBBLETYPE",
Type = "number",
},
},
Notes = "Returns the block meta at the specified relative coords",
},
GetBlockType =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the block type at the specified relative coords",
},
GetBlockTypeMeta =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
{
Name = "NIBBLETYPE",
Type = "number",
},
},
Notes = "Returns the block type and meta at the specified relative coords",
},
GetChunkX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X coord of the chunk contained.",
},
GetChunkZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Z coord of the chunk contained.",
},
GetHeight =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the height at the specified relative coords",
},
GetMaxHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum height contained in the heightmap.",
},
GetMinHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the minimum height value in the heightmap.",
},
IsUsingDefaultBiomes =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the chunk is set to use default biome generator",
},
IsUsingDefaultComposition =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the chunk is set to use default composition generator",
},
IsUsingDefaultFinish =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the chunk is set to use default finishers",
},
IsUsingDefaultHeight =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the chunk is set to use default height generator",
},
RandomFillRelCuboid =
{
{
Params =
{
{
Name = "RelCuboid",
Type = "cCuboid",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
{
Name = "RandomSeed",
Type = "number",
},
{
Name = "ChanceOutOf10k",
Type = "number",
},
},
Notes = "Fills the specified relative cuboid with block type and meta in random locations. RandomSeed is used for the random number genertion (same seed produces same results); ChanceOutOf10k specifies the density (how many out of every 10000 blocks should be filled). Cuboid may reach outside the chunk, only the part intersecting with this chunk is filled.",
},
{
Params =
{
{
Name = "MinRelX",
Type = "number",
},
{
Name = "ChanceOutOf10k",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
{
Name = "RandomSeed",
Type = "number",
},
},
Notes = "Fills the specified relative cuboid with block type and meta in random locations. RandomSeed is used for the random number genertion (same seed produces same results); ChanceOutOf10k specifies the density (how many out of every 10000 blocks should be filled). Cuboid may reach outside the chunk, only the part intersecting with this chunk is filled.",
},
},
ReadBlockArea =
{
Params =
{
{
Name = "BlockArea",
Type = "cBlockArea",
},
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
},
Notes = "Reads data from the chunk into the block area object. Block types and metas are processed.",
},
ReplaceRelCuboid =
{
{
Params =
{
{
Name = "RelCuboid",
Type = "cCuboid",
},
{
Name = "SrcBlockType",
Type = "number",
},
{
Name = "SrcBlockMeta",
Type = "number",
},
{
Name = "DstBlockType",
Type = "number",
},
{
Name = "DstBlockMeta",
Type = "number",
},
},
Notes = "Replaces all SrcBlockType + SrcBlockMeta blocks in the cuboid (specified in relative coords) with DstBlockType + DstBlockMeta blocks. Cuboid may reach outside the chunk, only the part intersecting with this chunk is filled.",
},
{
Params =
{
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
{
Name = "SrcBlockType",
Type = "number",
},
{
Name = "SrcBlockMeta",
Type = "number",
},
{
Name = "DstBlockType",
Type = "number",
},
{
Name = "DstBlockMeta",
Type = "number",
},
},
Notes = "Replaces all SrcBlockType + SrcBlockMeta blocks in the cuboid (specified in relative coords) with DstBlockType + DstBlockMeta blocks. Cuboid may reach outside the chunk, only the part intersecting with this chunk is filled.",
},
},
SetBiome =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Notes = "Sets the biome at the specified relative coords.",
},
SetBlockMeta =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block meta at the specified relative coords.",
},
SetBlockType =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
},
Notes = "Sets the block type at the specified relative coords",
},
SetBlockTypeMeta =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block type and meta at the specified relative coords",
},
SetHeight =
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "Height",
Type = "number",
},
},
Notes = "Sets the height at the specified relative coords",
},
SetUseDefaultBiomes =
{
Params =
{
{
Name = "ShouldUseDefaultBiomes",
Type = "boolean",
},
},
Notes = "Sets the chunk to use default biome generator or not",
},
SetUseDefaultComposition =
{
Params =
{
{
Name = "ShouldUseDefaultComposition",
Type = "boolean",
},
},
Notes = "Sets the chunk to use default composition generator or not",
},
SetUseDefaultFinish =
{
Params =
{
{
Name = "ShouldUseDefaultFinish",
Type = "boolean",
},
},
Notes = "Sets the chunk to use default finishers or not",
},
SetUseDefaultHeight =
{
Params =
{
{
Name = "ShouldUseDefaultHeight",
Type = "boolean",
},
},
Notes = "Sets the chunk to use default height generator or not",
},
UpdateHeightmap =
{
Notes = "Updates the heightmap to match current contents. The plugins should do that if they modify the contents and don't modify the heightmap accordingly; Cuberite expects (and checks in Debug mode) that the heightmap matches the contents when the cChunkDesc is returned from a plugin.",
},
WriteBlockArea =
{
Params =
{
{
Name = "BlockArea",
Type = "cBlockArea",
},
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MergeStrategy",
Type = "cBlockArea",
IsOptional = true,
},
},
Notes = "Writes data from the block area into the chunk",
},
},
AdditionalInfo =
{
{
Header = "Manipulating block entities",
Contents = [[
To manipulate block entities while the chunk is generated, first use SetBlockTypeMeta() to set
the correct block type and meta at the position. Then use the GetBlockEntity() to create and
return the correct block entity instance. Finally, use {{tolua}}.cast() to cast to the proper
type.
Note that you don't need to check if a block entity has previously existed at the place, because
GetBlockEntity() will automatically re-create the correct type for you.
The following code is taken from the Debuggers plugin, it creates a sign at each chunk's [0, 0]
coords, with the text being the chunk coords:
function OnChunkGenerated(a_World, a_ChunkX, a_ChunkZ, a_ChunkDesc)
-- Get the topmost block coord:
local Height = a_ChunkDesc:GetHeight(0, 0);
-- Create a sign there:
a_ChunkDesc:SetBlockTypeMeta(0, Height + 1, 0, E_BLOCK_SIGN_POST, 0);
local BlockEntity = a_ChunkDesc:GetBlockEntity(0, Height + 1, 0);
if (BlockEntity ~= nil) then
LOG("Setting sign lines...");
local SignEntity = tolua.cast(BlockEntity, "cSignEntity");
SignEntity:SetLines("Chunk:", tonumber(a_ChunkX) .. ", " .. tonumber(a_ChunkZ), "", "(Debuggers)");
end
-- Update the heightmap:
a_ChunkDesc:SetHeight(0, 0, Height + 1);
end
]],
},
},
},
cClientHandle =
{
Desc = [[
A cClientHandle represents the technical aspect of a connected player - their game client
connection. Internally, it handles all the incoming and outgoing packets, the chunks that are to be
sent to the client, ping times etc.
]],
Functions =
{
GenerateOfflineUUID =
{
IsStatic = true,
Params =
{
{
Name = "Username",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Generates an UUID based on the player name provided. This is used for the offline (non-auth) mode, when there's no UUID source. Each username generates a unique and constant UUID, so that when the player reconnects with the same name, their UUID is the same. Returns a 32-char UUID (no dashes).",
},
GetClientBrand =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the brand that the client has sent in their MC|Brand plugin message.",
},
GetForgeMods =
{
Returns =
{
{
Type = "table",
},
},
Notes = "Returns the Forge mods installed on the client.",
},
GetIPString =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the IP address of the connection, as a string. Only the address part is returned, without the port number.",
},
GetLocale =
{
Returns =
{
{
Name = "Locale",
Type = "string",
},
},
Notes = "Returns the locale string that the client sends as part of the protocol handshake. Can be used to provide localized strings.",
},
GetPing =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the ping time, in ms",
},
GetPlayer =
{
Returns =
{
{
Type = "cPlayer",
},
},
Notes = "Returns the player object connected to this client. Note that this may be nil, for example if the player object is not yet spawned.",
},
GetProtocolVersion =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the protocol version number of the protocol that the client is talking. Returns zero if the protocol version is not (yet) known.",
},
GetRequestedViewDistance =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the view distance that the player request, not the used view distance.",
},
GetUniqueID =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the UniqueID of the client used to identify the client in the server",
},
GetUsername =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the username that the client has provided",
},
GetUUID =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the authentication-based UUID of the client. This UUID should be used to identify the player when persisting any player-related data. Returns a 32-char UUID (no dashes)",
},
GetViewDistance =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the viewdistance (number of chunks loaded for the player in each direction)",
},
HasPluginChannel =
{
Params =
{
{
Name = "ChannelName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the client has registered to receive messages on the specified plugin channel.",
},
IsForgeClient =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the client is modded with Forge.",
},
IsUUIDOnline =
{
IsStatic = true,
Params =
{
{
Name = "UUID",
Type = "cUUID",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the UUID is generated by online auth, false if it is an offline-generated UUID. We use Version-3 UUIDs for offline UUIDs, online UUIDs are Version-4, thus we can tell them apart. Accepts both 32-char and 36-char UUIDs (with and without dashes).",
},
Kick =
{
Params =
{
{
Name = "Reason",
Type = "string",
},
},
Notes = "Kicks the user with the specified reason",
},
SendBlockBreakAnim =
{
Params =
{
{
Name = "EntityID",
Type = "number",
},
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Stage",
Type = "number",
},
},
Notes = "Sends a BlockBreakAnim packet to the client. Only one block can be broken at a time with the same UUID (the other will be reset). You can counter this using random values. The breaking stage ranges between 0 (first stage) and 9 (almost destroyed). Use -1 to reset the destruction.",
},
SendBlockChange =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sends a BlockChange packet to the client. This can be used to create fake blocks only for that player.",
},
SendBossBarAdd =
{
Params =
{
{
Name = "UniqueID",
Type = "number",
},
{
Name = "Title",
Type = "cCompositeChat",
},
{
Name = "FractionFilled",
Type = "number",
},
{
Name = "Colour",
Type = "BossBarColor",
},
{
Name = "DivisionType",
Type = "BossBarDivisionType",
},
{
Name = "DarkenSky",
Type = "boolean",
},
{
Name = "PlayEndMusic",
Type = "boolean",
},
{
Name = "CreateFog",
Type = "boolean",
},
},
Notes = "Creates a boss bar on the client's UI. The boss bar is independent of any entity and has a lifetime and properties fully controlled by the plugin. Plugins are responsible for assigning a unique ID and removal.",
},
SendBossBarUpdateFlags =
{
Params =
{
{
Name = "UniqueID",
Type = "number",
},
{
Name = "DarkenSky",
Type = "boolean",
},
{
Name = "PlayEndMusic",
Type = "boolean",
},
{
Name = "CreateFog",
Type = "boolean",
},
},
Notes = "Updates a boss bar on the client's UI. Only updates some meta flags for additional effects.",
},
SendBossBarUpdateStyle =
{
Params =
{
{
Name = "UniqueID",
Type = "number",
},
{
Name = "Color",
Type = "BossBarColor",
},
{
Name = "DivisionType",
Type = "BossBarDivisionType",
},
},
Notes = "Updates a boss bar on the client's UI. Only updates the visuals of the Boss Bar.",
},
SendBossBarUpdateTitle =
{
Params =
{
{
Name = "UniqueID",
Type = "number",
},
{
Name = "Title",
Type = "cCompositeChat",
},
},
Notes = "Updates a boss bar on the client's UI. Only Updates the text at the top.",
},
SendBossBarRemove =
{
Params =
{
{
Name = "UniqueID",
Type = "number",
},
},
Notes = "Removes the boss bar with the given ID from the client's UI.",
},
SendBossBarUpdateHealth =
{
Params =
{
{
Name = "UniqueID",
Type = "number",
},
{
Name = "FractionFilled",
Type = "number",
},
},
Notes = "Updates the health displayed by the boss bar with the given ID.",
},
SendCollectEntity =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
},
{
Name = "Collector",
Type = "cEntity",
},
},
Notes = "Sends the CollectEntity packet to the client. This fakes item collecting.",
},
SendDestroyEntity =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
},
},
Notes = "Sends the DestroyEntity packet to the client. This tells the client to remove the entity from the world.",
},
SendDetachEntity =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
},
},
Notes = "Sends the DetachEntity packet to the client. This drop entities riding another one (boat, minecarts, pigs, horses...).",
},
SendEditSign =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Notes = "Sends the EditSign packet to the client. This opens the sign editor GUI.",
},
SendEntityAnimation =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
},
{
Name = "AnimationNumber",
Type = "number",
},
},
Notes = "Sends the specified animation of the specified entity to the client. The AnimationNumber is protocol-specific.",
},
SendPlayerListHeaderFooter =
{
Params =
{
{
Type = "cCompositeChat",
Name = "Header",
},
{
Type = "cCompositeChat",
Name = "Footer",
},
},
Desc = "Sends the header and footer of the player list to the client.",
},
SendHideTitle =
{
Notes = "Hides the title. This makes the title and subtitle disappear, but if you call SendTitleTimes() the same title and subtitle will appear again."
},
SendLeashEntity =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
},
{
Name = "EntityLeashedTo",
Type = "cEntity",
},
},
Notes = "Sends the LeashEntity packet to the client. Leashes entities together. Leashing to the player, the leash will appear on the player's hand",
},
SendPluginMessage =
{
Params =
{
{
Name = "Channel",
Type = "string",
},
{
Name = "Message",
Type = "string",
},
},
Notes = "Sends the plugin message on the specified channel.",
},
SendResetTitle =
{
Notes = "Resets and hides the title but not the subtitle."
},
SendResourcePack =
{
Params =
{
{
Name = "ResourcePackURL",
Type = "string",
},
},
Notes = "Sends the ResourcePack packet to the client. The client will request the resource pack from the given URL. If the url is blank, the resource pack will be reset.",
},
SendSetSubTitle =
{
Params =
{
{
Name = "SubTitle",
Type = "cCompositeChat",
},
},
Notes = "Sends the subtitle to the client. Doesn't make the client display it yet, use SendTitleTimes() to show both the title and the subtitle."
},
SendSetRawSubTitle =
{
Params =
{
{
Name = "SubTitle",
Type = "string",
},
},
Notes = "Sends the raw subtitle to the client. Doesn't make the client display it yet, use SendTitleTimes() to show both the title and the subtitle."
},
SendSetTitle =
{
Params =
{
{
Name = "Title",
Type = "cCompositeChat",
},
},
Notes = "Sends the title to the client. Doesn't make the client display it yet, use SendTitleTimes() to show both the title and the subtitle."
},
SendSetRawTitle =
{
Params =
{
{
Name = "Title",
Type = "string",
},
},
Notes = "Sends the raw title to the client. Doesn't make the client display it yet, use SendTitleTimes() to show both the title and the subtitle."
},
SendSoundEffect =
{
Params =
{
{
Name = "SoundName",
Type = "string",
},
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "Volume",
Type = "number",
},
{
Name = "Pitch",
Type = "number",
},
},
Notes = "Sends a sound effect request to the client. The sound is played at the specified coords, with the specified volume (a float, 1.0 is full volume, can be more) and pitch (0-255, 63 is 100%)",
},
SendSoundEffect =
{
Params =
{
{
Name = "SoundName",
Type = "string",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "Volume",
Type = "number",
},
{
Name = "Pitch",
Type = "number",
},
},
Notes = "Sends a sound effect request to the client. The sound is played at the specified coords, with the specified volume (a float, 1.0 is full volume, can be more) and pitch (0-255, 63 is 100%) (DEPRECATED, use vector-parametered version instead)",
},
SendThunderbolt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Notes = "Sends the thunderbolt at the specified coords to the client. The client will display the effect without any sound.",
},
SendTitleTimes =
{
Params =
{
{
Name = "FadeInTicks",
Type = "number",
},
{
Name = "DisplayTicks",
Type = "number",
},
{
Name = "FadeOutTicks",
Type = "number",
},
},
Notes = "Sends the request to display the title and subtitle, previously set with SendSetTitle, SendSetRawTitle, SendSetSubTitle and SendSetRawSubTitle, to the client."
},
SendTimeUpdate =
{
Params =
{
{
Name = "WorldAge",
Type = "number",
},
{
Name = "WorldDate",
Type = "number",
},
{
Name = "DoDaylightCycle",
Type = "boolean",
},
},
Notes = "Sends the specified time update to the client. WorldAge is the total age of the world, in ticks. WorldDate is the current date, in ticks, and is used by the client to calculate the days elapsed (F3 debug overlay's day count) and the time of day (rendered sun position). DoDaylightCycle is a bool that specifies whether the client should automatically move the sun (true) or keep it in the same place (false).",
},
SendUnleashEntity =
{
Params =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Sends the UnleashEntity packet to the client. The client will remove any leashes related to the entity.",
},
SetClientBrand =
{
Params =
{
{
Name = "ClientBrand",
Type = "string",
},
},
Notes = "Sets the value of the client's brand. Normally this value is received from the client by a MC|Brand plugin message, this function lets plugins overwrite the value.",
},
SetLocale =
{
Params =
{
{
Name = "Locale",
Type = "string",
},
},
Notes = "Sets the locale that Cuberite keeps on record. Initially the locale is initialized in protocol handshake, this function allows plugins to override the stored value (but only server-side and only until the user disconnects).",
},
SetViewDistance =
{
Params =
{
{
Name = "ViewDistance",
Type = "number",
},
},
Notes = "Sets the viewdistance (number of chunks loaded for the player in each direction)",
},
},
Constants =
{
MAX_VIEW_DISTANCE =
{
Notes = "The maximum value of the view distance",
},
MIN_VIEW_DISTANCE =
{
Notes = "The minimum value of the view distance",
},
},
},
cColor =
{
Desc = [[
Encapsulates a RGB color, e.g. for armor.
]],
Functions =
{
Clear =
{
Notes = "Resets the color to uninitialized."
},
constructor =
{
{
Returns = { {Type="cColor"} },
Notes = "Creates an uninitialized cColor. Each component must be between 0 and 255, inclusive.",
},
{
Params =
{
{
Name = "Red",
Type = "number",
},
{
Name = "Green",
Type = "number",
},
{
Name = "Blue",
Type = "number",
},
},
Returns = { {Type="cColor"} },
Notes = "Creates the specified cColor. All components must be between 0 and 255, inclusive.",
},
},
GetColor =
{
Returns =
{
{
Name = "Red",
Type = "number",
},
{
Name = "Green",
Type = "number",
},
{
Name = "Blue",
Type = "number",
},
},
Notes = "Returns the color's red, green, and blue components, respectively."
},
GetRed =
{
Returns =
{
{
Name = "Red",
Type = "number",
},
},
Notes = "Returns the color's red component."
},
GetGreen =
{
Returns =
{
{
Name = "Green",
Type = "number",
},
},
Notes = "Returns the color's green component."
},
GetBlue =
{
Returns =
{
{
Name = "Blue",
Type = "number",
},
},
Notes = "Returns the color's blue component."
},
IsValid =
{
Returns =
{
{
Type = "boolean"
},
},
Notes = "True if the color is valid, false if the color has not been set yet."
},
SetColor =
{
Params =
{
{
Name = "Red",
Type = "number"
},
{
Name = "Green",
Type = "number"
},
{
Name = "Blue",
Type = "number"
},
},
Notes = "Sets the color's red, green, and blue components. Values range from 0 to 255."
},
SetRed =
{
Params =
{
{
Name = "Red",
Type = "number",
},
},
Notes = "Sets the color's red component. Must be between 0 and 255, inclusive."
},
SetGreen =
{
Params =
{
{
Name = "Green",
Type = "number",
},
},
Notes = "Sets the color's green component. Must be between 0 and 255, inclusive."
},
SetBlue =
{
Params =
{
{
Name = "Blue",
Type = "number",
},
},
Notes = "Sets the color's blue component. Must be between 0 and 255, inclusive."
},
},
Constants =
{
COLOR_LIMIT =
{
Notes = "The upper bound (exclusive) for a color component",
},
COLOR_MAX =
{
Notes = "The maximum value for a color component",
},
COLOR_MIN =
{
Notes = "The minimum value for a color component",
},
COLOR_NONE =
{
Notes = "A constant denoting the color is invalid (note: use IsValid)",
},
},
},
cCompositeChat =
{
Desc = [[
Encapsulates a chat message that can contain various formatting, URLs, commands executed on click
and commands suggested on click. The chat message can be sent by the regular chat-sending functions,
{{cPlayer}}:SendMessage(), {{cWorld}}:BroadcastChat() and {{cRoot}}:BroadcastChat().
Note that most of the functions in this class are so-called chaining modifiers - they modify the
object and then return the object itself, so that they can be chained one after another. See the
Chaining example below for details.
Each part of the composite chat message takes a "Style" parameter, this is a string that describes
the formatting. It uses the "standard" minecraft format code without the '&' symbole, concatenated
together:
String
Style
l
Bold text
o
Italic text
n
Underlined text
m
Strikethrough text
k
Obfuscated text
r
Reset Style
[0-9a-f]
colors
You can escape the '&' character with an antislash in front of it. as follow: `I love Choco\&chips`
The following picture, taken from the Minecraft Wiki, illustrates the color codes:
]],
Functions =
{
AddRunCommandPart =
{
Params =
{
{
Name = "Text",
Type = "string",
},
{
Name = "Command",
Type = "string",
},
{
Name = "Style",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "self",
},
},
Notes = "Adds a text which, when clicked, runs the specified command. Chaining.",
},
AddShowAchievementPart =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
{
Name = "AchievementName",
Type = "string",
},
{
Name = "Style",
Type = "string",
IsOptional = true,
},
},
Notes = "Adds a text that represents the 'Achievement get' message.",
},
AddSuggestCommandPart =
{
Params =
{
{
Name = "Text",
Type = "string",
},
{
Name = "Command",
Type = "string",
},
{
Name = "Style",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "self",
},
},
Notes = "Adds a text which, when clicked, puts the specified command into the player's chat input area. Chaining.",
},
AddTextPart =
{
Params =
{
{
Name = "Text",
Type = "string",
},
{
Name = "Style",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "self",
},
},
Notes = "Adds a regular text. Chaining.",
},
AddUrlPart =
{
Params =
{
{
Name = "Text",
Type = "string",
},
{
Name = "Url",
Type = "string",
},
{
Name = "Style",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "self",
},
},
Notes = "Adds a text which, when clicked, opens up a browser at the specified URL. Chaining.",
},
Clear =
{
Returns =
{
{
Type = "self",
},
},
Notes = "Removes all parts from this object",
},
constructor =
{
{
Returns = { {Type = "cCompositeChat"} },
Notes = "Creates an empty chat message",
},
{
Params =
{
{
Name = "Text",
Type = "string",
},
{
Name = "MessageType",
Type = "eMessageType",
IsOptional = true,
},
},
Returns = { {Type = "cCompositeChat"} },
Notes = "Creates a chat message containing the specified text, parsed by the ParseText() function. This allows easy migration from old chat messages.",
},
},
CreateJsonString =
{
Params =
{
{
Name = "AddPrefixes",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the entire object serialized into JSON, as it would be sent to a client. AddPrefixes specifies whether the chat prefixes should be prepended to the message, true by default.",
},
ExtractText =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the text from the parts that comprises the human-readable data. Used for older protocols that don't support composite chat, and for console-logging.",
},
GetAdditionalMessageTypeData =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the AdditionalData associated with the message, such as the sender's name for mtPrivateMessage",
},
GetMessageType =
{
Returns =
{
{
Type = "eMessageType",
},
},
Notes = "Returns the MessageType (mtXXX constant) that is associated with this message. When sent to a player, the message will be formatted according to this message type and the player's settings (adding \"[INFO]\" prefix etc.)",
},
ParseText =
{
Params =
{
{
Name = "Text",
Type = "string",
},
},
Returns =
{
{
Type = "self",
},
},
Notes = "Adds text, while recognizing http and https URLs and old-style formatting codes (\"@2\"). Chaining.",
},
SetMessageType =
{
Params =
{
{
Name = "MessageType",
Type = "eMessageType",
},
{
Name = "AdditionalData",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "self",
},
},
Notes = "Sets the MessageType (mtXXX constant) that is associated with this message. Also sets the additional data (string) associated with the message, which is specific for the message type - such as the sender's name for mtPrivateMessage. When sent to a player, the message will be formatted according to this message type and the player's settings (adding \"[INFO]\" prefix etc.). Chaining.",
},
UnderlineUrls =
{
Returns =
{
{
Type = "self",
},
},
Notes = "Makes all URL parts contained in the message underlined. Doesn't affect parts added in the future. Chaining.",
},
},
AdditionalInfo =
{
{
Header = "Chaining example",
Contents = [[
Sending a chat message that is composed of multiple different parts has been made easy thanks to
chaining. Consider the following example that shows how a message containing all kinds of parts
is sent (adapted from the Debuggers plugin):
function OnPlayerJoined(a_Player)
-- Send an example composite chat message to the player:
a_Player:SendMessage(cCompositeChat()
:AddTextPart("Hello, ")
:AddUrlPart(a_Player:GetName(), "https://cuberite.org", "u@2") -- Colored underlined link
:AddSuggestCommandPart(", and welcome.", "/help", "u") -- Underlined suggest-command
:AddRunCommandPart(" SetDay", "/time set 0") -- Regular text that will execute command when clicked
:SetMessageType(mtJoin) -- It is a join-message
)
end
]],
},
},
},
cCraftingGrid =
{
Desc = [[
cCraftingGrid represents the player's crafting grid. It is used in
{{OnCraftingNoRecipe|OnCraftingNoRecipe}}, {{OnPostCrafting|OnPostCrafting}} and
{{OnPreCrafting|OnPreCrafting}} hooks. Plugins may use it to inspect the items the player placed
on their crafting grid.
Also, an object of this type is used in {{cCraftingRecipe}}'s ConsumeIngredients() function for
specifying the exact number of ingredients to consume in that recipe; plugins may use this to
apply the crafting recipe.
]],
Functions =
{
Clear =
{
Notes = "Clears the entire grid",
},
constructor =
{
Params =
{
{
Name = "Width",
Type = "number",
},
{
Name = "Height",
Type = "number",
},
},
Returns =
{
{
Type = "cCraftingGrid",
},
},
Notes = "Creates a new CraftingGrid object. This new crafting grid is not related to any player, but may be needed for {{cCraftingRecipe}}'s ConsumeIngredients function.",
},
ConsumeGrid =
{
Params =
{
{
Name = "CraftingGrid",
Type = "cCraftingGrid",
},
},
Notes = "Consumes items specified in CraftingGrid from the current contents. Used internally by {{cCraftingRecipe}}'s ConsumeIngredients() function, but available to plugins, too.",
},
Dump =
{
Notes = "DEBUG build: Dumps the contents of the grid to the log. RELEASE build: no action",
},
GetHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the height of the grid",
},
GetItem =
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item at the specified coords",
},
GetWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the width of the grid",
},
SetItem =
{
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the item at the specified coords",
},
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Sets the item at the specified coords",
},
},
},
},
cCraftingRecipe =
{
Desc = [[
This class is used to represent a crafting recipe, either a built-in one, or one created dynamically in a plugin. It is used only as a parameter for {{OnCraftingNoRecipe|OnCraftingNoRecipe}}, {{OnPostCrafting|OnPostCrafting}} and {{OnPreCrafting|OnPreCrafting}} hooks. Plugins may use it to inspect or modify a crafting recipe that a player views in their crafting window, either at a crafting table or the survival inventory screen.
Internally, the class contains a {{cCraftingGrid}} for the ingredients and a {{cItem}} for the result.
]],
Functions =
{
Clear =
{
Notes = "Clears the entire recipe, both ingredients and results",
},
ConsumeIngredients =
{
Params =
{
{
Name = "CraftingGrid",
Type = "cCraftingGrid",
},
},
Notes = "Consumes ingredients specified in the given {{cCraftingGrid|cCraftingGrid}} class",
},
Dump =
{
Notes = "DEBUG build: dumps ingredients and result into server log. RELEASE build: no action",
},
GetIngredient =
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the ingredient stored in the recipe at the specified coords",
},
GetIngredientsHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the height of the ingredients' grid",
},
GetIngredientsWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the width of the ingredients' grid",
},
GetResult =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the result of the recipe",
},
SetIngredient =
{
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the ingredient at the specified coords",
},
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Sets the ingredient at the specified coords",
},
},
SetResult =
{
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the result item",
},
{
Params =
{
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Sets the result item",
},
},
},
},
cCryptoHash =
{
Desc = [[
Provides functions for generating cryptographic hashes.
Note that all functions in this class are super-static, so they are to be called in the dot convention:
local Hash = cCryptoHash.sha1HexString("DataToHash")
Each cryptographic hash has two variants, one returns the hash as a raw binary string, the other returns the hash as a hex-encoded string twice as long as the binary string.
]],
Functions =
{
md5 =
{
IsStatic = true,
IsGlobal = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Calculates the md5 hash of the data, returns it as a raw (binary) string of 16 characters.",
},
md5HexString =
{
IsStatic = true,
IsGlobal = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Calculates the md5 hash of the data, returns it as a hex-encoded string of 32 characters.",
},
sha1 =
{
IsStatic = true,
IsGlobal = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Calculates the sha1 hash of the data, returns it as a raw (binary) string of 20 characters.",
},
sha1HexString =
{
IsStatic = true,
IsGlobal = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Calculates the sha1 hash of the data, returns it as a hex-encoded string of 40 characters.",
},
},
},
cEnchantments =
{
Desc = [[
This class is the storage for enchantments for a single {{cItem|cItem}} object, through its
m_Enchantments member variable. Although it is possible to create a standalone object of this class,
it is not yet used in any API directly.
Enchantments can be initialized either programmatically by calling the individual functions
(SetLevel()), or by using a string description of the enchantment combination. This string
description is in the form "id=lvl;id=lvl;...;id=lvl;", where id is either a numerical ID of the
enchantment, or its textual representation from the table below, and lvl is the desired enchantment
level. The class can also create its string description from its current contents; however that
string description will only have the numerical IDs.
See the {{cItem}} class for usage examples.
]],
Functions =
{
Add =
{
Params =
{
{
Name = "Other",
Type = "cEnchantments",
},
},
Notes = "Adds the enchantments contained in Other into this object. Existing enchantments are preserved, unless Other specifies a different level, in which case the level is changed to the Other's one.",
},
AddFromString =
{
Params =
{
{
Name = "StringSpec",
Type = "string",
},
},
Notes = "Adds the enchantments in the string description into the object. If a specified enchantment already existed, it is overwritten.",
},
Clear =
{
Notes = "Removes all enchantments",
},
constructor =
{
{
Returns =
{
{
Type = "cEnchantments",
},
},
Notes = "Creates a new empty cEnchantments object",
},
{
Params =
{
{
Name = "StringSpec",
Type = "string",
},
},
Returns =
{
{
Type = "cEnchantments",
},
},
Notes = "Creates a new cEnchantments object filled with enchantments based on the string description",
},
},
Count =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Get the count of enchantments contained within the class",
},
GetLevel =
{
Params =
{
{
Name = "EnchantmentNumID",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the level of the specified enchantment stored in this object; 0 if not stored",
},
CanAddEnchantment =
{
Params =
{
{
Name = "EnchantmentNumID",
Type = "number",
},
},
Returns =
{
{
Type = "boolean"
},
},
Notes = "Returns true if the specified enchantment is not mutually exclusive with any of the enchantments stored by the object.",
},
IsEmpty =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the object stores no enchantments",
},
operator_eq =
{
Params =
{
{
Name = "OtherEnchantments",
Type = "cEnchantments",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this enchantments object has the same enchantments as OtherEnchantments.",
},
SetLevel =
{
Params =
{
{
Name = "EnchantmentNumID",
Type = "number",
},
{
Name = "Level",
Type = "number",
},
},
Notes = "Sets the level for the specified enchantment, adding it if not stored before, or removing it if Level < = 0",
},
StringToEnchantmentID =
{
IsStatic = true,
Params =
{
{
Name = "EnchantmentName",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the enchantment numerical ID, -1 if not understood. Case insensitive. Also understands plain numbers.",
},
ToString =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string description of all the enchantments stored in this object, in numerical-ID form",
},
},
Constants =
{
enchAquaAffinity =
{
Notes = "",
},
enchBaneOfArthropods =
{
Notes = "",
},
enchBlastProtection =
{
Notes = "",
},
enchEfficiency =
{
Notes = "",
},
enchFeatherFalling =
{
Notes = "",
},
enchFireAspect =
{
Notes = "",
},
enchFireProtection =
{
Notes = "",
},
enchFlame =
{
Notes = "",
},
enchFortune =
{
Notes = "",
},
enchInfinity =
{
Notes = "",
},
enchKnockback =
{
Notes = "",
},
enchLooting =
{
Notes = "",
},
enchLuckOfTheSea =
{
Notes = "",
},
enchLure =
{
Notes = "",
},
enchPower =
{
Notes = "",
},
enchProjectileProtection =
{
Notes = "",
},
enchProtection =
{
Notes = "",
},
enchPunch =
{
Notes = "",
},
enchRespiration =
{
Notes = "",
},
enchSharpness =
{
Notes = "",
},
enchSilkTouch =
{
Notes = "",
},
enchSmite =
{
Notes = "",
},
enchThorns =
{
Notes = "",
},
enchUnbreaking =
{
Notes = "",
},
},
},
cEntity =
{
Desc = [[
A cEntity object represents an object in the world, it has a position and orientation. cEntity is an
abstract class, and can not be instantiated directly, instead, all entities are implemented as
subclasses. The cEntity class works as the common interface for the operations that all (most)
entities support.
All cEntity objects have an Entity Type so it can be determined what kind of entity it is
efficiently. Entities also have a class inheritance awareness, they know their class name,
their parent class' name and can decide if there is a class within their inheritance chain.
Since these functions operate on strings, they are slightly slower than checking the entity type
directly, on the other hand, they are more specific directly. To check if the entity is a spider,
you need to call IsMob(), then cast the object to {{cMonster}} and finally compare
{{cMonster}}:GetMonsterType() to mtSpider. GetClass(), on the other hand, returns "cSpider"
directly.
Note that you should not store a cEntity object between two hooks' calls, because Cuberite may
despawn / remove that entity in between the calls. If you need to refer to an entity later, use its
UniqueID and {{cWorld|cWorld}}'s entity manipulation functions DoWithEntityByID(), ForEachEntity()
or ForEachEntityInChunk() to access the entity again.
]],
Functions =
{
AddPosition =
{
{
Params =
{
{
Name = "OffsetX",
Type = "number",
},
{
Name = "OffsetY",
Type = "number",
},
{
Name = "OffsetZ",
Type = "number",
},
},
Notes = "Moves the entity by the specified amount in each axis direction",
},
{
Params =
{
{
Name = "Offset",
Type = "Vector3d",
},
},
Notes = "Moves the entity by the specified amount in each direction",
},
},
AddPosX =
{
Params =
{
{
Name = "OffsetX",
Type = "number",
},
},
Notes = "Moves the entity by the specified amount in the X axis direction",
},
AddPosY =
{
Params =
{
{
Name = "OffsetY",
Type = "number",
},
},
Notes = "Moves the entity by the specified amount in the Y axis direction",
},
AddPosZ =
{
Params =
{
{
Name = "OffsetZ",
Type = "number",
},
},
Notes = "Moves the entity by the specified amount in the Z axis direction",
},
AddSpeed =
{
{
Params =
{
{
Name = "AddX",
Type = "number",
},
{
Name = "AddY",
Type = "number",
},
{
Name = "AddZ",
Type = "number",
},
},
Notes = "Adds the specified amount of speed in each axis direction.",
},
{
Params =
{
{
Name = "Add",
Type = "Vector3d",
},
},
Notes = "Adds the specified amount of speed in each axis direction.",
},
},
AddSpeedX =
{
Params =
{
{
Name = "AddX",
Type = "number",
},
},
Notes = "Adds the specified amount of speed in the X axis direction.",
},
AddSpeedY =
{
Params =
{
{
Name = "AddY",
Type = "number",
},
},
Notes = "Adds the specified amount of speed in the Y axis direction.",
},
AddSpeedZ =
{
Params =
{
{
Name = "AddZ",
Type = "number",
},
},
Notes = "Adds the specified amount of speed in the Z axis direction.",
},
ApplyArmorDamage =
{
Params =
{
{
Name = "DamageBlocked",
Type = "number",
},
},
Notes = "Lowers armor durability, as if the armor blocked the given amount of damage.",
},
ArmorCoversAgainst =
{
Params =
{
{
Name = "DamageType",
Type = "eDamageType",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether armor will protect against the specified damage type",
},
Destroy =
{
Params =
{
{
Name = "ShouldBroadcast (DEPRECATED)",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Schedules the entity to be destroyed; broadcasts the DestroyEntity packet",
},
DoesPreventBlockPlacement =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this entity doesn't allow blocks to be placed intersecting the entity.",
},
GetAirLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the air level (number of ticks of air left). Note, this function is only updated with mobs or players.",
},
GetArmorCoverAgainst =
{
Params =
{
{
Name = "AttackerEntity",
Type = "cEntity",
},
{
Name = "DamageType",
Type = "eDamageType",
},
{
Name = "RawDamage",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of hitpoints out of RawDamage that the currently equipped armor would cover. See {{TakeDamageInfo}} for more information on attack damage.",
},
GetBoundingBox =
{
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Returns the bounding box of the entity, which has width and height corresponding to the entity, and is aligned with the block grid.",
},
GetChunkX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X-coord of the chunk in which the entity is placed",
},
GetChunkZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Z-coord of the chunk in which the entity is placed",
},
GetClass =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the classname of the entity, such as \"cSpider\" or \"cPickup\"",
},
GetClassStatic =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the entity classname that this class implements. Each descendant overrides this function.",
},
GetEnchantmentBlastKnockbackReduction =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns explosion knock back reduction percent from blast protection level.",
},
GetEnchantmentCoverAgainst =
{
Params =
{
{
Name = "AttackerEntity",
Type = "cEntity",
},
{
Name = "DamageType",
Type = "eDamageType",
},
{
Name = "RawDamage",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of hitpoints out of RawDamage that the enchantments on the currently equipped armor would cover. See {{TakeDamageInfo}} for more information on attack damage.",
},
GetEntityType =
{
Returns =
{
{
Name = "EntityType",
Type = "cEntity#eEntityType",
},
},
Notes = "Returns the type of the entity, one of the {{cEntity#eEntityType|etXXX}} constants. Note that to check specific entity type, you should use one of the IsXXX functions instead of comparing the value returned by this call.",
},
GetEquippedBoots =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the boots that the entity has equipped. Returns an empty cItem if no boots equipped or not applicable.",
},
GetEquippedChestplate =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the chestplate that the entity has equipped. Returns an empty cItem if no chestplate equipped or not applicable.",
},
GetEquippedHelmet =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the helmet that the entity has equipped. Returns an empty cItem if no helmet equipped or not applicable.",
},
GetEquippedLeggings =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the leggings that the entity has equipped. Returns an empty cItem if no leggings equipped or not applicable.",
},
GetEquippedWeapon =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the weapon that the entity has equipped. Returns an empty cItem if no weapon equipped or not applicable.",
},
GetOffHandEquipedItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item that the entity has equipped on off-hand. Returns an empty cItem if no item equipped or not applicable.",
},
GetGravity =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number that is used as the gravity for physics simulation. 1G (9.78) by default.",
},
GetHeadYaw =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the pitch of the entity's head (FIXME: Rename to GetHeadPitch() ).",
},
GetHealth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the current health of the entity.",
},
GetHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the height (Y size) of the entity",
},
GetInvulnerableTicks =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks that this entity will be invulnerable for. This is used for after-hit recovery - the entities are invulnerable for half a second after being hit.",
},
GetKnockbackAmountAgainst =
{
Params =
{
{
Name = "ReceiverEntity",
Type = "cEntity",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of knockback that the currently equipped items would cause when attacking the ReceiverEntity.",
},
GetLookVector =
{
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns the vector that defines the direction in which the entity is looking",
},
GetMass =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the mass of the entity. Currently unused.",
},
GetMaxHealth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum number of hitpoints this entity is allowed to have.",
},
GetParentClass =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the direct parent class for this entity",
},
GetPitch =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the pitch (nose-down rotation) of the entity. Measured in degrees, normal values range from -90 to +90. +90 means looking down, 0 means looking straight ahead, -90 means looking up.",
},
GetPosition =
{
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns the entity's pivot position as a 3D vector",
},
GetPosX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X-coord of the entity's pivot",
},
GetPosY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Y-coord of the entity's pivot",
},
GetPosZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Z-coord of the entity's pivot",
},
GetRawDamageAgainst =
{
Params =
{
{
Name = "ReceiverEntity",
Type = "cEntity",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the raw damage that this entity's equipment would cause when attacking the ReceiverEntity. This includes this entity's weapon {{cEnchantments|enchantments}}, but excludes the receiver's armor or potion effects. See {{TakeDamageInfo}} for more information on attack damage.",
},
GetRoll =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the roll (sideways rotation) of the entity. Currently unused.",
},
GetSpeed =
{
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns the complete speed vector of the entity",
},
GetSpeedX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X-part of the speed vector",
},
GetSpeedY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Y-part of the speed vector",
},
GetSpeedZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Z-part of the speed vector",
},
GetTicksAlive =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks that this entity has been alive for.",
},
GetUniqueID =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the ID that uniquely identifies the entity within the running server. Note that this ID is not persisted to the data files.",
},
GetWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the width (X and Z size) of the entity.",
},
GetWorld =
{
Returns =
{
{
Type = "cWorld",
},
},
Notes = "Returns the world where the entity resides",
},
GetYaw =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the yaw (direction) of the entity. Measured in degrees, values range from -180 to +180. 0 means ZP, 90 means XM, -180 means ZM, -90 means XP.",
},
HandleSpeedFromAttachee =
{
Params =
{
{
Name = "ForwardAmount",
Type = "number",
},
{
Name = "SidewaysAmount",
Type = "number",
},
},
Notes = "Updates the entity's speed based on the attachee exerting the specified force forward and sideways. Used for entities being driven by other entities attached to them - usually players driving minecarts and boats.",
},
Heal =
{
Params =
{
{
Name = "Hitpoints",
Type = "number",
},
},
Notes = "Heals the specified number of hitpoints. Hitpoints is expected to be a positive number.",
},
IsA =
{
Params =
{
{
Name = "ClassName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity class is a descendant of the specified class name, or the specified class itself",
},
IsArrow =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is an arrow.",
},
IsBoat =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is a {{cBoat|boat}}.",
},
IsCrouched =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is crouched. Always false for entities that don't support crouching.",
},
IsDestroyed =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "(DEPRECATED) Please use cEntity:IsTicking().",
},
IsElytraFlying =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is flying with an elytra. Entities that cannot fly with an elytra return always false.",
},
IsEnderCrystal =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is an ender crystal.",
},
IsExpOrb =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents an experience orb",
},
IsFallingBlock =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents a {{cFallingBlock}} entity.",
},
IsFireproof =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity takes no damage from being on fire.",
},
IsFloater =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents a fishing rod floater",
},
IsHeadInWater =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity's head is in a water block",
},
IsInvisible =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is invisible.",
},
IsInFire =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if any part of the entity is in a fire block",
},
IsInLava =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if any part of the entity is in a lava block",
},
IsInWater =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if any part of the entity is in a water block",
},
IsItemFrame =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is an item frame.",
},
IsLeashKnot =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is a leash knot.",
},
IsMinecart =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents a {{cMinecart|minecart}}",
},
IsMob =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents any {{cMonster|mob}}.",
},
IsOnFire =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is on fire",
},
IsOnGround =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is on ground (not falling, not jumping, not flying)",
},
IsPainting =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns if this entity is a painting.",
},
IsPawn =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is a {{cPawn}} descendant.",
},
IsPickup =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents a {{cPickup|pickup}}.",
},
IsPlayer =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents a {{cPlayer|player}}",
},
IsProjectile =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is a {{cProjectileEntity}} descendant.",
},
IsRclking =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Currently unimplemented",
},
IsRiding =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is attached to (riding) another entity.",
},
IsSprinting =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is sprinting. Entities that cannot sprint return always false",
},
IsSubmerged =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity's head is in a water block Currently deprecated in favour of IsHeadInWater()",
},
IsSwimming =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if any part of the entity is in a water block. Note, this function is only updated with mobs or players. Currently deprecated in favour of IsInWater()",
},
IsTicking =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity is valid and ticking. Returns false if the entity is not ticking and is about to leave its current world either via teleportation or destruction. If this returns false, you must stop using the cEntity pointer you have.",
},
IsTNT =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the entity represents a {{cTNTEntity|TNT entity}}",
},
Killed =
{
Params =
{
{
Name = "Victim",
Type = "cEntity",
},
},
Notes = "This entity has killed another entity (the Victim). For players, adds the scoreboard statistics about the kill.",
},
MoveToWorld =
{
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "ShouldSendRespawn",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the entity from this world and starts moving it to the specified world's spawn point. Note that to avoid deadlocks, the move is asynchronous - the entity is moved into a queue and will be moved from that queue into the destination world at some (unpredictable) time in the future. ShouldSendRespawn is used only for players, it specifies whether the player should be sent a Respawn packet upon leaving the world (The client handles respawns only between different dimensions).",
},
{
Params =
{
{
Name = "WorldName",
Type = "string",
},
{
Name = "ShouldSendRespawn",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the entity from this world and starts moving it to the specified world's spawn point. Note that to avoid deadlocks, the move is asynchronous - the entity is moved into a queue and will be moved from that queue into the destination world at some (unpredictable) time in the future. ShouldSendRespawn is used only for players, it specifies whether the player should be sent a Respawn packet upon leaving the world (The client handles respawns only between different dimensions).",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "ShouldSendRespawn",
Type = "boolean",
},
{
Name = "Position",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the entity from this world and starts moving it to the specified world. Note that to avoid deadlocks, the move is asynchronous - the entity is moved into a queue and will be moved from that queue into the destination world at some (unpredictable) time in the future. ShouldSendRespawn is used only for players, it specifies whether the player should be sent a Respawn packet upon leaving the world (The client handles respawns only between different dimensions). The Position parameter specifies the location that the entity should be placed in, in the new world.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "ShouldSetPortalCooldown",
Type = "boolean",
IsOptional = true,
},
{
Name = "ShouldSendRespawn",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the entity from this world and starts moving it to the specified world. Note that to avoid deadlocks, the move is asynchronous - the entity is moved into a queue and will be moved from that queue into the destination world at some (unpredictable) time in the future. If ShouldSetPortalCooldown is false (default), doesn't set any portal cooldown, if it is true, the default portal cooldown is applied to the entity. ShouldSendRespawn is used only for players, it specifies whether the player should be sent a Respawn packet upon leaving the world (The client handles respawns only between different dimensions). The Position parameter specifies the location that the entity should be placed in, in the new world.",
},
},
SetGravity =
{
Params =
{
{
Name = "Gravity",
Type = "number",
},
},
Notes = "Sets the number that is used as the gravity for physics simulation. 1G (9.78) by default.",
},
SetHeadYaw =
{
Params =
{
{
Name = "HeadPitch",
Type = "number",
},
},
Notes = "Sets the head pitch (FIXME: Rename to SetHeadPitch() ).",
},
SetHealth =
{
Params =
{
{
Name = "Hitpoints",
Type = "number",
},
},
Notes = "Sets the entity's health to the specified amount of hitpoints. Doesn't broadcast any hurt animation. Doesn't kill the entity if health drops below zero. Use the TakeDamage() function instead for taking damage.",
},
SetInvulnerableTicks =
{
Params =
{
{
Name = "NumTicks",
Type = "number",
},
},
Notes = "Sets the amount of ticks for which the entity will not receive any damage from other entities.",
},
SetIsFireproof =
{
Params =
{
{
Name = "IsFireproof",
Type = "boolean",
},
},
Notes = "Sets whether the entity receives damage from being on fire.",
},
SetMass =
{
Params =
{
{
Name = "Mass",
Type = "number",
},
},
Notes = "Sets the mass of the entity. Currently unused.",
},
SetMaxHealth =
{
Params =
{
{
Name = "MaxHitpoints",
Type = "number",
},
},
Notes = "Sets the maximum hitpoints of the entity. If current health is above MaxHitpoints, it is capped to MaxHitpoints.",
},
SetPitch =
{
Params =
{
{
Name = "Pitch",
Type = "number",
},
},
Notes = "Sets the pitch (nose-down rotation) of the entity",
},
SetPitchFromSpeed =
{
Notes = "Sets the entity pitch to match its speed (entity looking forwards as it moves)",
},
SetPosition =
{
{
Params =
{
{
Name = "PosX",
Type = "number",
},
{
Name = "PosY",
Type = "number",
},
{
Name = "PosZ",
Type = "number",
},
},
Notes = "Sets all three coords of the entity's pivot",
},
{
Params =
{
{
Name = "Vector3d",
Type = "Vector3d",
},
},
Notes = "Sets all three coords of the entity's pivot",
},
},
SetPosX =
{
Params =
{
{
Name = "PosX",
Type = "number",
},
},
Notes = "Sets the X-coord of the entity's pivot",
},
SetPosY =
{
Params =
{
{
Name = "PosY",
Type = "number",
},
},
Notes = "Sets the Y-coord of the entity's pivot",
},
SetPosZ =
{
Params =
{
{
Name = "PosZ",
Type = "number",
},
},
Notes = "Sets the Z-coord of the entity's pivot",
},
SetRoll =
{
Params =
{
{
Name = "Roll",
Type = "number",
},
},
Notes = "Sets the roll (sideways rotation) of the entity. Currently unused.",
},
SetSpeed =
{
{
Params =
{
{
Name = "SpeedX",
Type = "number",
},
{
Name = "SpeedY",
Type = "number",
},
{
Name = "SpeedZ",
Type = "number",
},
},
Notes = "Sets the current speed of the entity",
},
{
Params =
{
{
Name = "Speed",
Type = "Vector3d",
},
},
Notes = "Sets the current speed of the entity",
},
},
SetSpeedX =
{
Params =
{
{
Name = "SpeedX",
Type = "number",
},
},
Notes = "Sets the X component of the entity speed",
},
SetSpeedY =
{
Params =
{
{
Name = "SpeedY",
Type = "number",
},
},
Notes = "Sets the Y component of the entity speed",
},
SetSpeedZ =
{
Params =
{
{
Name = "SpeedZ",
Type = "number",
},
},
Notes = "Sets the Z component of the entity speed",
},
SetYaw =
{
Params =
{
{
Name = "Yaw",
Type = "number",
},
},
Notes = "Sets the yaw (direction) of the entity.",
},
SetYawFromSpeed =
{
Notes = "Sets the entity's yaw to match its current speed (entity looking forwards as it moves).",
},
StartBurning =
{
Params =
{
{
Name = "NumTicks",
Type = "number",
},
},
Notes = "Sets the entity on fire for the specified number of ticks. If entity is on fire already, makes it burn for either NumTicks or the number of ticks left from the previous fire, whichever is larger.",
},
SteerVehicle =
{
Params =
{
{
Name = "ForwardAmount",
Type = "number",
},
{
Name = "SidewaysAmount",
Type = "number",
},
},
Notes = "Applies the specified steering to the vehicle this entity is attached to. Ignored if not attached to any entity.",
},
StopBurning =
{
Notes = "Extinguishes the entity fire, cancels all fire timers.",
},
TakeDamage =
{
{
Params =
{
{
Name = "AttackerEntity",
Type = "cEntity",
},
},
Notes = "Causes this entity to take damage that AttackerEntity would inflict. Includes their weapon and this entity's armor.",
},
{
Params =
{
{
Name = "DamageType",
Type = "eDamageType",
},
{
Name = "AttackerEntity",
Type = "cEntity",
},
{
Name = "RawDamage",
Type = "number",
},
{
Name = "KnockbackAmount",
Type = "number",
},
},
Notes = "Causes this entity to take damage of the specified type, from the specified attacker (may be nil). The final damage is calculated from RawDamage using the currently equipped armor.",
},
{
Params =
{
{
Name = "DamageType",
Type = "eDamageType",
},
{
Name = "AttackerEntity",
Type = "cEntity",
},
{
Name = "RawDamage",
Type = "number",
},
{
Name = "FinalDamage",
Type = "number",
},
{
Name = "KnockbackAmount",
Type = "number",
},
},
Notes = "Causes this entity to take damage of the specified type, from the specified attacker (may be nil). The values are wrapped into a {{TakeDamageInfo}} structure and applied directly.",
},
},
TeleportToCoords =
{
Params =
{
{
Name = "PosX",
Type = "number",
},
{
Name = "PosY",
Type = "number",
},
{
Name = "PosZ",
Type = "number",
},
},
Notes = "Teleports the entity to the specified coords. Asks plugins if the teleport is allowed.",
},
TeleportToEntity =
{
Params =
{
{
Name = "DestEntity",
Type = "cEntity",
},
},
Notes = "Teleports this entity to the specified destination entity. Asks plugins if the teleport is allowed.",
},
},
Constants =
{
INVALID_ID =
{
Notes = "Special value of an entity ID, indicating a failure. Used primarily in functions that create entities when the entity cannot be created.",
},
etBoat =
{
Notes = "The entity is a {{cBoat}}",
},
etEnderCrystal =
{
Notes = "The entity is a {{cEnderCrystal}}",
},
etEntity =
{
Notes = "No further specialization available",
},
etExpOrb =
{
Notes = "The entity is a {{cExpOrb}}",
},
etFallingBlock =
{
Notes = "The entity is a {{cFallingBlock}}",
},
etFloater =
{
Notes = "The entity is a fishing rod floater",
},
etItemFrame =
{
Notes = "The entity is an item frame",
},
etLeashKnot =
{
Notes = "The entity is a leash knot",
},
etMinecart =
{
Notes = "The entity is a {{cMinecart}} descendant",
},
etMob =
{
Notes = "The entity is a {{cMonster}} descendant",
},
etMonster =
{
Notes = "The entity is a {{cMonster}} descendant",
},
etPainting =
{
Notes = "The entity is a {{cPainting}}",
},
etPickup =
{
Notes = "The entity is a {{cPickup}}",
},
etPlayer =
{
Notes = "The entity is a {{cPlayer}}",
},
etProjectile =
{
Notes = "The entity is a {{cProjectileEntity}} descendant",
},
etTNT =
{
Notes = "The entity is a {{cTNTEntity}}",
},
},
ConstantGroups =
{
eEntityType =
{
Include = "et.*",
TextBefore = "The following constants are used to distinguish between different entity types:",
},
},
},
cEntityEffect =
{
Functions =
{
GetPotionColor =
{
IsStatic = true,
Params =
{
{
Name = "ItemDamage",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the potion color (used by the client for visuals), based on the potion's damage value",
},
GetPotionEffectDuration =
{
IsStatic = true,
Params =
{
{
Name = "ItemDamage",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the effect duration, in ticks, based on the potion's damage value",
},
GetPotionEffectIntensity =
{
IsStatic = true,
Params =
{
{
Name = "ItemDamage",
Type = "number",
},
},
Returns =
{
{
Name = "short",
Type = "number",
},
},
Notes = "Retrieves the intensity level from the potion's damage value. Returns 0 for level I potions, 1 for level II potions.",
},
GetPotionEffectType =
{
IsStatic = true,
Params =
{
{
Name = "ItemDamage",
Type = "number",
},
},
Returns =
{
{
Name = "eType",
Type = "cEntityEffect#eType",
},
},
Notes = "Translates the potion's damage value into the entity effect that the potion gives",
},
IsPotionDrinkable =
{
IsStatic = true,
Params =
{
{
Name = "ItemDamage",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the potion with the given damage is drinkable",
},
}, -- Functions
ConstantGroups =
{
eType =
{
Include = { "eff.*" },
},
}, -- ConstantGroups
}, -- cEntityEffect
cFile =
{
Desc = [[
Provides helper functions for manipulating and querying the filesystem. Most functions are static,
so they should be called directly on the cFile class itself:
cFile:DeleteFile("/usr/bin/virus.exe");
]],
Functions =
{
ChangeFileExt =
{
IsStatic = true,
Params =
{
{
Name = "FileName",
Type = "string",
},
{
Name = "NewExt",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns FileName with its extension changed to NewExt. NewExt may begin with a dot, but needn't, the result is the same in both cases (the first dot, if present, is ignored). FileName may contain path elements, extension is recognized as the last dot after the last path separator in the string.",
},
Copy =
{
IsStatic = true,
Params =
{
{
Name = "SrcFileName",
Type = "string",
},
{
Name = "DstFileName",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Copies a single file to a new destination. Returns true if successful. Fails if the destination already exists.",
},
CreateFolder =
{
IsStatic = true,
Params =
{
{
Name = "FolderPath",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Creates a new folder. Returns true if successful. Only a single level can be created at a time, use CreateFolderRecursive() to create multiple levels of folders at once.",
},
CreateFolderRecursive =
{
IsStatic = true,
Params =
{
{
Name = "FolderPath",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Creates a new folder, creating its parents if needed. Returns true if successful.",
},
Delete =
{
IsStatic = true,
Params =
{
{
Name = "Path",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified file or folder. Returns true if successful. Only deletes folders that are empty. NOTE: If you already know if the object is a file or folder, use DeleteFile() or DeleteFolder() explicitly.",
},
DeleteFile =
{
IsStatic = true,
Params =
{
{
Name = "FilePath",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified file. Returns true if successful.",
},
DeleteFolder =
{
IsStatic = true,
Params =
{
{
Name = "FolderPath",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified file or folder. Returns true if successful. Only deletes folders that are empty.",
},
DeleteFolderContents =
{
IsStatic = true,
Params =
{
{
Name = "FolderPath",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes everything from the specified folder, recursively. The specified folder stays intact. Returns true if successful.",
},
Exists =
{
IsStatic = true,
Params =
{
{
Name = "Path",
Type = "string",
},
},
Returns =
{
{
Name = "Exists",
Type = "boolean",
},
},
Notes = "Returns true if the specified file or folder exists. OBSOLETE, use IsFile() or IsFolder() instead",
},
GetExecutableExt =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the customary executable extension (including the dot) used by the current platform (\".exe\" on Windows, empty string on Linux). ",
},
GetFolderContents =
{
IsStatic = true,
Params =
{
{
Name = "FolderName",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns the contents of the specified folder, as an array table of strings. Each filesystem object is listed. Use the IsFile() and IsFolder() functions to determine the object type. Note that \".\" and \"..\" are NOT returned. The order of the names is arbitrary (as returned by OS, no sorting).",
},
GetLastModificationTime =
{
IsStatic = true,
Params =
{
{
Name = "Path",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the last modification time (in current timezone) of the specified file or folder. Returns zero if file not found / not accessible. The returned value is in the same units as values returned by os.time().",
},
GetPathSeparator =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the primary path separator used by the current platform. Returns \"\\\" on Windows and \"/\" on Linux. Note that the platform or CRT may support additional path separators, those are not reported.",
},
GetSize =
{
IsStatic = true,
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the size of the file, or -1 on failure.",
},
IsFile =
{
IsStatic = true,
Params =
{
{
Name = "Path",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified path points to an existing file.",
},
IsFolder =
{
IsStatic = true,
Params =
{
{
Name = "Path",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified path points to an existing folder.",
},
ReadWholeFile =
{
IsStatic = true,
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the entire contents of the specified file. Returns an empty string if the file cannot be opened.",
},
Rename =
{
IsStatic = true,
Params =
{
{
Name = "OrigPath",
Type = "string",
},
{
Name = "NewPath",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Renames a file or a folder. Returns true if successful. Undefined result if NewPath already exists.",
},
},
},
cFloater =
{
Desc = [[
Manages the floater created when a player uses their fishing rod.
]],
Functions =
{
CanPickup =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the floater gives an item when the player right clicks.",
},
GetAttachedMobID =
{
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Returns the EntityID of a mob that this floater is attached to. Returns -1 if not attached to any mob.",
},
GetOwnerID =
{
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Returns the EntityID of the player who owns the floater.",
},
GetBitePos =
{
Returns =
{
Name = "BitePosition",
Type = "Vector3d",
},
Notes = "Returns the position of the floater just before a fish bites. If a fish hasn't bitten the floater, this function returns the position the floater was cast from.",
},
},
Inherits = "cEntity",
},
cHangingEntity =
{
Functions =
{
GetFacing =
{
Returns =
{
{
Name = "BlockFace",
Type = "eBlockFace",
},
},
Notes = "Returns the direction in which the entity is facing.",
},
IsValidSupportBlock =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
}
},
Notes = "Returns true if the specified block type can support a hanging entity. This means that paintings and item frames can be placed on such a block.",
},
SetFacing =
{
Params =
{
{
Name = "BlockFace",
Type = "eBlockFace",
},
},
Notes = "Set the direction in which the entity is facing.",
},
},
Inherits = "cEntity",
},
cIniFile =
{
Desc = [[
This class implements a simple name-value storage represented on disk by an INI file. These files
are suitable for low-volume high-latency human-readable information storage, such as for
configuration. Cuberite itself uses INI files for settings and options.
The INI files follow this basic structure:
; Header comment line
[KeyName0]
; Key comment line 0
ValueName0=Value0
ValueName1=Value1
[KeyName1]
; Key comment line 0
; Key comment line 1
ValueName0=SomeOtherValue
The cIniFile object stores all the objects in numbered arrays and provides access to the information
either based on names (KeyName, ValueName) or zero-based indices.
The objects of this class are created empty. You need to either load a file using ReadFile(), or
insert values by hand. Then you can store the object's contents to a disk file using WriteFile(), or
just forget everything by destroying the object. Note that the file operations are quite slow.
Cuberite will write the characters '\n' in place of line breaks in the values of the cIniFile when
it is being stored into a file. It will also replace '\n' with line breaks when it reads an INI
file.
For storing high-volume low-latency data, use the {{sqlite3}} class. For storing
hierarchically-structured data, use the XML format, using the LuaExpat parser in the {{lxp}} class.
]],
Functions =
{
AddHeaderComment =
{
Params =
{
{
Name = "Comment",
Type = "string",
},
},
Notes = "Adds a comment to be stored in the file header.",
},
AddKeyComment =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "Comment",
Type = "string",
},
},
Notes = "Adds a comment to be stored in the file under the specified key",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "Comment",
Type = "string",
},
},
Notes = "Adds a comment to be stored in the file under the specified key",
},
},
AddKeyName =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds a new key of the specified name. Returns the KeyID of the new key.",
},
AddValue =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "Value",
Type = "string",
},
},
Notes = "Adds a new value of the specified name to the specified key. If another value of the same name exists in the key, both are kept (nonstandard INI file)",
},
AddValueB =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "Value",
Type = "boolean",
},
},
Notes = "Adds a new bool value of the specified name to the specified key. If another value of the same name exists in the key, both are kept (nonstandard INI file)",
},
AddValueF =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "Value",
Type = "number",
},
},
Notes = "Adds a new float value of the specified name to the specified key. If another value of the same name exists in the key, both are kept (nonstandard INI file)",
},
AddValueI =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "Value",
Type = "number",
},
},
Notes = "Adds a new integer value of the specified name to the specified key. If another value of the same name exists in the key, both are kept (nonstandard INI file)",
},
CaseInsensitive =
{
Notes = "Sets key names' and value names' comparisons to case insensitive (default).",
},
CaseSensitive =
{
Notes = "Sets key names and value names comparisons to case sensitive.",
},
Clear =
{
Notes = "Removes all the in-memory data. Note that , like all the other operations, this doesn't affect any file data.",
},
constructor =
{
Returns =
{
{
Type = "cIniFile",
},
},
Notes = "Creates a new empty cIniFile object.",
},
DeleteHeaderComment =
{
Params =
{
{
Name = "CommentID",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified header comment. Returns true if successful.",
},
DeleteHeaderComments =
{
Notes = "Deletes all headers comments.",
},
DeleteKey =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified key, and all values in that key. Returns true if successful.",
},
DeleteKeyComment =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "CommentID",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified key comment. Returns true if successful.",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "CommentID",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified key comment. Returns true if successful.",
},
},
DeleteKeyComments =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes all comments for the specified key. Returns true if successful.",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes all comments for the specified key. Returns true if successful.",
},
},
DeleteValue =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified value. Returns true if successful.",
},
DeleteValueByID =
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "ValueID",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Deletes the specified value. Returns true if successful.",
},
FindKey =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the KeyID for the specified key name, or the noID constant if the key doesn't exist.",
},
FindValue =
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "ValueName",
Type = "string",
},
},
Returns =
{
{
Name = "ValueID",
Type = "number",
},
},
Notes = "Returns the ValueID for the specified value name, or the noID constant if the specified key doesn't contain a value of that name.",
},
Flush =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Writes the data stored in the object to the file that was last associated with the object (ReadFile() or WriteFile()). Returns true on success, false on failure.",
},
GetHeaderComment =
{
Params =
{
{
Name = "CommentID",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the specified header comment, or an empty string if such comment doesn't exist",
},
GetKeyComment =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "CommentID",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the specified key comment, or an empty string if such a comment doesn't exist",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "CommentID",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the specified key comment, or an empty string if such a comment doesn't exist",
},
},
GetKeyName =
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the key name for the specified key ID. Inverse for FindKey().",
},
GetNumHeaderComments =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Retuns the number of header comments.",
},
GetNumKeyComments =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of comments under the specified key",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of comments under the specified key",
},
},
GetNumKeys =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the total number of keys. This is the range for the KeyID (0 .. GetNumKeys() - 1)",
},
GetNumValues =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of values stored under the specified key.",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of values stored under the specified key.",
},
},
GetValue =
{
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the value of the specified name under the specified key. Returns DefaultValue (empty string if not given) if the value doesn't exist.",
},
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "ValueID",
Type = "number",
},
{
Name = "DefaultValue",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the value of the specified name under the specified key. Returns DefaultValue (empty string if not given) if the value doesn't exist.",
},
},
GetValueB =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns the value of the specified name under the specified key, as a bool. Returns DefaultValue (false if not given) if the value doesn't exist.",
},
GetValueF =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the value of the specified name under the specified key, as a floating-point number. Returns DefaultValue (zero if not given) if the value doesn't exist.",
},
GetValueI =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the value of the specified name under the specified key, as an integer. Returns DefaultValue (zero if not given) if the value doesn't exist.",
},
GetValueName =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "ValueID",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the value specified by its ID. Inverse for FindValue().",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueID",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the value specified by its ID. Inverse for FindValue().",
},
},
GetValueSet =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the value of the specified name under the specified key. If the value doesn't exist, creates it with the specified default (empty string if not given).",
},
GetValueSetB =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns the value of the specified name under the specified key, as a bool. If the value doesn't exist, creates it with the specified default (false if not given).",
},
GetValueSetF =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the value of the specified name under the specified key, as a floating-point number. If the value doesn't exist, creates it with the specified default (zero if not given).",
},
GetValueSetI =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the value of the specified name under the specified key, as an integer. If the value doesn't exist, creates it with the specified default (zero if not given).",
},
HasValue =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified value is present.",
},
ReadFile =
{
Params =
{
{
Name = "FileName",
Type = "string",
},
{
Name = "AllowExampleFallback",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Reads the values from the specified file. Previous in-memory contents are lost. If the file cannot be opened, and AllowExample is true, another file, \"filename.example.ini\", is loaded and then saved as \"filename.ini\". Returns true if successful, false if not.",
},
SetValue =
{
{
Params =
{
{
Name = "KeyID",
Type = "number",
},
{
Name = "ValueID",
Type = "number",
},
{
Name = "NewValue",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Overwrites the specified value with a new value. If the specified value doesn't exist, returns false (doesn't add).",
},
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "NewValue",
Type = "string",
},
{
Name = "CreateIfNotExists",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Overwrites the specified value with a new value. If CreateIfNotExists is true (default) and the value doesn't exist, it is first created. Returns true if the value was successfully set, false if not (didn't exists, CreateIfNotExists false).",
},
},
SetValueB =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "NewValue",
Type = "boolean",
},
{
Name = "CreateIfNotExists",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Overwrites the specified value with a new bool value. If CreateIfNotExists is true (default) and the value doesn't exist, it is first created. Returns true if the value was successfully set, false if not (didn't exists, CreateIfNotExists false).",
},
SetValueF =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "NewValue",
Type = "number",
},
{
Name = "CreateIfNotExists",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Overwrites the specified value with a new floating-point number value. If CreateIfNotExists is true (default) and the value doesn't exist, it is first created. Returns true if the value was successfully set, false if not (didn't exists, CreateIfNotExists false).",
},
SetValueI =
{
Params =
{
{
Name = "KeyName",
Type = "string",
},
{
Name = "ValueName",
Type = "string",
},
{
Name = "NewValue",
Type = "number",
},
{
Name = "CreateIfNotExists",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Overwrites the specified value with a new integer value. If CreateIfNotExists is true (default) and the value doesn't exist, it is first created. Returns true if the value was successfully set, false if not (didn't exists, CreateIfNotExists false).",
},
WriteFile =
{
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Writes the current in-memory data into the specified file. Returns true if successful, false if not.",
},
},
Constants =
{
noID =
{
Notes = "",
},
},
AdditionalInfo =
{
{
Header = "Code example: Reading a simple value",
Contents = [[
cIniFile is very easy to use. For example, you can find out what port the server is supposed to
use according to settings.ini by using this little snippet:
local IniFile = cIniFile();
if (IniFile:ReadFile("settings.ini")) then
ServerPort = IniFile:GetValueI("Server", "Port");
end
]],
},
{
Header = "Code example: Enumerating all objects in a file",
Contents = [[
To enumerate all keys in a file, you need to query the total number of keys, using GetNumKeys(),
and then query each key's name using GetKeyName(). Similarly, to enumerate all values under a
key, you need to query the total number of values using GetNumValues() and then query each
value's name using GetValueName().
The following code logs all keynames and their valuenames into the server log:
local IniFile = cIniFile();
IniFile:ReadFile("somefile.ini")
local NumKeys = IniFile:GetNumKeys();
for k = 0, (NumKeys - 1) do
local NumValues = IniFile:GetNumValues(k);
LOG("key \"" .. IniFile:GetKeyName(k) .. "\" has " .. NumValues .. " values:");
for v = 0, (NumValues - 1) do
LOG(" value \"" .. IniFile:GetValueName(k, v) .. "\".");
end
end
]],
},
},
},
cInventory =
{
Desc = [[
This object is used to store the items that a {{cPlayer|cPlayer}} has. It also keeps track of what item the player has currently selected in their hotbar.
Internally, the class uses three {{cItemGrid|cItemGrid}} objects to store the contents:
Armor
Inventory
Hotbar
These ItemGrids are available in the API and can be manipulated by the plugins, too.
When using the raw slot access functions, such as GetSlot() and SetSlot(), the slots are numbered
consecutively, each ItemGrid has its offset and count. To future-proff your plugins, use the named
constants instead of hard-coded numbers.
]],
Functions =
{
AddItem =
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds an item to the storage; if AllowNewStacks is true (default), will also create new stacks in empty slots. Fills existing stacks first and fills the hotbar before the main inventory. Returns the number of items added",
},
AddItems =
{
Params =
{
{
Name = "cItems",
Type = "cItems",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Same as AddItem, but for several items at once",
},
ChangeSlotCount =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "AddToCount",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds AddToCount to the count of items in the specified slot. If the slot was empty, ignores the call. Returns the new count in the slot, or -1 if invalid SlotNum",
},
Clear =
{
Notes = "Empties all slots",
},
CopyToItems =
{
Params =
{
{
Name = "cItems",
Type = "cItems",
},
},
Notes = "Copies all non-empty slots into the cItems object provided; original cItems contents are preserved",
},
DamageEquippedItem =
{
Params =
{
{
Name = "DamageAmount",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "HasDestroyed",
Type = "boolean",
},
},
Notes = "Adds the specified damage (1 by default) to the currently equipped item. Removes the item and returns true if the item reached its max damage and was destroyed.",
},
DamageItem =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "DamageAmount",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "HasDestroyed",
Type = "boolean",
},
},
Notes = "Adds the specified damage (1 by default) to the specified item. Removes the item and returns true if the item reached its max damage and was destroyed.",
},
FindItem =
{
Params =
{
{
Name = "RecipeItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Finds an item in the shield, hotbar and inventory slots matching `ItemType` and `ItemDamage`. The actual item is returned, if none is found `nullptr`. This can be used to validate that the player has a specific type of item.",
},
GetArmorGrid =
{
Returns =
{
{
Type = "cItemGrid",
},
},
Notes = "Returns the ItemGrid representing the armor grid (1 x 4 slots)",
},
GetArmorSlot =
{
Params =
{
{
Name = "ArmorSlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the specified armor slot contents. Note that the returned item is read-only",
},
GetEquippedBoots =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the \"boots\" slot of the armor grid. Note that the returned item is read-only",
},
GetEquippedChestplate =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the \"chestplate\" slot of the armor grid. Note that the returned item is read-only",
},
GetEquippedHelmet =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the \"helmet\" slot of the armor grid. Note that the returned item is read-only",
},
GetEquippedItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the currently selected item from the hotbar. Note that the returned item is read-only. Also note that the returned item is bound to the actual inventory slot - if a player moves another item into the slot, this object will update to the new item. Use a {{cItem}} constructor to make a copy if you need to store the contents of the slot.",
},
GetEquippedLeggings =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the \"leggings\" slot of the armor grid. Note that the returned item is read-only",
},
GetEquippedSlotNum =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the hotbar slot number for the currently selected item",
},
GetHotbarGrid =
{
Returns =
{
{
Type = "cItemGrid",
},
},
Notes = "Returns the ItemGrid representing the hotbar grid (9 x 1 slots)",
},
GetHotbarSlot =
{
Params =
{
{
Name = "HotBarSlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the specified hotbar slot contents. Note that the returned item is read-only",
},
GetShieldSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns current item in shield slot.",
},
GetInventoryGrid =
{
Returns =
{
{
Type = "cItemGrid",
},
},
Notes = "Returns the ItemGrid representing the main inventory (9 x 3 slots)",
},
GetInventorySlot =
{
Params =
{
{
Name = "InventorySlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the specified main inventory slot contents. Note that the returned item is read-only",
},
GetOwner =
{
Returns =
{
{
Type = "cPlayer",
},
},
Notes = "Returns the player whose inventory this object represents",
},
GetSlot =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the contents of the specified slot. Note that the returned item is read-only",
},
HasItems =
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if there are at least as many items of the specified type as in the parameter",
},
HowManyCanFit =
{
{
Params =
{
{
Name = "ItemStack",
Type = "cItem",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns number of items out of a_ItemStack that can fit in the storage. If AllowNewStacks is false, only considers slots already containing the specified item. AllowNewStacks defaults to true if not given.",
},
{
Params =
{
{
Name = "ItemStack",
Type = "cItem",
},
{
Name = "BeginSlotNum",
Type = "number",
},
{
Name = "EndSlotNum",
Type = "number",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns how many items of the specified type would fit into the slot range specified. If AllowNewStacks is false, only considers slots already containing the specified item. AllowNewStacks defaults to true if not given.",
},
},
HowManyItems =
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of the specified items that are currently stored",
},
RemoveItem =
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Removes the specified item from the inventory, as many as possible, up to the item's m_ItemCount. Returns the number of items that were removed.",
},
RemoveOneEquippedItem =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes one item from the hotbar's currently selected slot. Returns true on success.",
},
ReplaceOneEquippedItem =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
{
Name = "TryOtherSlots",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Removes one item from the the current equipped item stack, and attempts to add the specified item stack back to the same slot. If it is not possible to place the item in the same slot, optionally (default true) tries to place the specified item elsewhere in the inventory. Returns the number of items successfully added. If the currently equipped slot is empty, its contents are simply set to the given Item.",
},
SendEquippedSlot =
{
Notes = "Sends the equipped item slot to the client",
},
SetArmorSlot =
{
Params =
{
{
Name = "ArmorSlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the specified armor slot contents",
},
SetEquippedSlotNum =
{
Params =
{
{
Name = "EquippedSlotNum",
Type = "number",
},
},
Notes = "Sets the currently selected hotbar slot number",
},
SetHotbarSlot =
{
Params =
{
{
Name = "HotbarSlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the specified hotbar slot contents",
},
SetInventorySlot =
{
Params =
{
{
Name = "InventorySlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the specified main inventory slot contents",
},
SetShieldSlot =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Sets the shield slot content",
},
SetSlot =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the specified slot contents",
},
SetEquippedItem =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Sets current item in the equipped hotbar slot",
},
},
Constants =
{
invArmorCount =
{
Notes = "Number of slots in the Armor part",
},
invArmorOffset =
{
Notes = "Starting slot number of the Armor part",
},
invHotbarCount =
{
Notes = "Number of slots in the Hotbar part",
},
invHotbarOffset =
{
Notes = "Starting slot number of the Hotbar part",
},
invInventoryCount =
{
Notes = "Number of slots in the main inventory part",
},
invInventoryOffset =
{
Notes = "Starting slot number of the main inventory part",
},
invShieldCount =
{
Notes = "Number of slots in the Shield part",
},
invShieldOffset =
{
Notes = "Starting slot number of the Shield part",
},
invNumSlots =
{
Notes = "Total number of slots in a cInventory",
},
},
ConstantGroups =
{
SlotIndices =
{
Include = "inv.*",
TextBefore = [[
Rather than hardcoding numbers, use the following constants for slot indices and counts:
]],
},
},
},
cItem =
{
Desc = [[
cItem is what defines an item or stack of items in the game, it contains the item ID, damage,
quantity and enchantments. Each slot in a {{cInventory}} class or a {{cItemGrid}} class is a cItem
and each {{cPickup}} contains a cItem. The enchantments are contained in a separate
{{cEnchantments}} class and are accessible through the m_Enchantments variable.
To test if a cItem object represents an empty item, do not compare the item type nor the item count,
but rather use the IsEmpty() function.
To translate from a cItem to its string representation, use the {{Globals#functions|global function}}
ItemToString(), ItemTypeToString() or ItemToFullString(). To translate from a string to a cItem,
use the StringToItem() global function.
]],
Functions =
{
AddCount =
{
Params =
{
{
Name = "AmountToAdd",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Adds the specified amount to the item count. Returns self (useful for chaining).",
},
AddEnchantment =
{
Params =
{
{
Name = "Enchantment ID",
Type = "number",
},
{
Name = "Level",
Type = "number",
},
{
Name = "FromBook",
Type = "boolean",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds the given enchantment at the given level to this item, following anvil enchantment combining rules. Returns the XP level cost of the addition. FromBook specifies whether to use the XP multiplier for books or the multiplier used for other items, if true it uses the multiplier for books.",
},
AddEnchantmentsFromItem =
{
Params =
{
{
Name = "Additive",
Type = "cItem",
},
},
Returns =
{
{
Name = "LevelCost",
Type = "number",
},
},
Notes = "Adds the enchantments from the specified item to this item, returning the cost as if this were an anvil.",
},
Clear =
{
Notes = "Resets the instance to an empty item",
},
constructor =
{
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Creates a new empty cItem object",
},
{
Params =
{
{
Name = "ItemType",
Type = "number",
},
{
Name = "Count",
Type = "number",
IsOptional = true,
},
{
Name = "Damage",
Type = "number",
IsOptional = true,
},
{
Name = "EnchantmentString",
Type = "string",
IsOptional = true,
},
{
Name = "CustomName",
Type = "string",
IsOptional = true,
},
{
Name = "Lore",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Creates a new cItem object of the specified type, count (1 by default), damage (0 by default), enchantments (non-enchanted by default), CustomName (empty by default) and Lore (string, empty by default)",
},
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Creates an exact copy of the cItem object in the parameter",
},
},
CopyOne =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Creates a copy of this object, with its count set to 1",
},
DamageItem =
{
Params =
{
{
Name = "Amount",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "HasReachedMaxDamage",
Type = "boolean",
},
},
Notes = "Adds the specified damage. Returns true when damage reaches max value and the item should be destroyed (but doesn't destroy the item)",
},
Empty =
{
Notes = "Resets the instance to an empty item",
},
EnchantByXPLevels =
{
Params =
{
{
Name = "NumXPLevels",
Type = "number",
},
},
Returns =
{
{
Name = "HasEnchanted",
Type = "boolean",
},
},
Notes = "Randomly enchants the item using the specified number of XP levels. Returns true if the item was enchanted, false if not (not enchantable / too many enchantments already).",
},
GetEnchantability =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the enchantability of the item. Returns zero if the item doesn't have enchantability.",
},
GetMaxDamage =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum value for damage that this item can get before breaking; zero if damage is not accounted for for this item type",
},
GetMaxStackSize =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum stack size for this item.",
},
IsBothNameAndLoreEmpty =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns if both the custom name and lore are not set.",
},
IsCustomNameEmpty =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns if the custom name is empty.",
},
IsDamageable =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this item does account for its damage",
},
IsEmpty =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this object represents an empty item (zero count or invalid ItemType)",
},
IsEnchantable =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
{
Name = "FromBook",
Type = "boolean",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is enchantable. If FromBook is true, the function is used in the anvil inventory with book enchantments. So it checks the \"only book enchantments\" too. Example: You can only enchant a hoe with a book.",
},
IsEqual =
{
Params =
{
{
Name = "OtherItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the item in the parameter is the same as the one stored in the object (type, damage, lore, name and enchantments)",
},
IsFullStack =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the item is stacked up to its maximum stacking",
},
IsLoreEmpty =
{
Notes = "Returns if the lore of the cItem is empty.",
Returns =
{
{
Type = "boolean",
},
},
},
IsSameType =
{
Params =
{
{
Name = "OtherItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the item in the parameter is of the same ItemType as the one stored in the object. This is true even if the two items have different enchantments",
},
},
Variables =
{
m_CustomName =
{
Type = "string",
Notes = "The custom name for an item.",
},
m_Enchantments =
{
Type = "{{cEnchantments|cEnchantments}}}",
Notes = "The enchantments of the item.",
},
m_ItemCount =
{
Type = "number",
Notes = "Number of items in this stack",
},
m_ItemDamage =
{
Type = "number",
Notes = "The damage of the item. Zero means no damage. Maximum damage can be queried with GetMaxDamage()",
},
m_ItemType =
{
Type = "number",
Notes = "The item type. One of E_ITEM_ or E_BLOCK_ constants",
},
m_LoreTable =
{
Type = "table",
Notes = "The lore for an item. Represented as an array table of lines.",
},
m_RepairCost =
{
Type = "number",
Notes = "The repair cost of the item. The anvil need this value",
},
},
AdditionalInfo =
{
{
Header = "Usage notes",
Contents = [[
Note that the object contained in a cItem class is quite complex and quite often new Minecraft
versions add more stuff. Therefore it is recommended to copy cItem objects using the
copy-constructor ("local copy = cItem(original);"), this is the only way that guarantees that
the object will be copied at full, even with future versions of Cuberite.
]],
},
{
Header = "Example code",
Contents = [[
The following code shows how to create items in several different ways (adapted from the Debuggers plugin):
-- empty item:
local Item1 = cItem();
-- enchanted sword, enchantment given as numeric string (bad style; see Item5):
local Item2 = cItem(E_ITEM_DIAMOND_SWORD, 1, 0, "1=1");
-- 1 undamaged shovel, no enchantment:
local Item3 = cItem(E_ITEM_DIAMOND_SHOVEL);
-- Add the Unbreaking enchantment. Note that Vanilla's levelcap isn't enforced:
Item3.m_Enchantments:SetLevel(cEnchantments.enchUnbreaking, 4);
-- 1 undamaged pickaxe, no enchantment:
local Item4 = cItem(E_ITEM_DIAMOND_PICKAXE);
-- Add multiple enchantments:
Item4.m_Enchantments:SetLevel(cEnchantments.enchUnbreaking, 5);
Item4.m_Enchantments:SetLevel(cEnchantments.enchEfficiency, 3);
-- enchanted chestplate, enchantment given as textual stringdesc (good style)
local Item5 = cItem(E_ITEM_DIAMOND_CHESTPLATE, 1, 0, "thorns=1;unbreaking=3");
]],
},
},
},
cItemFrame =
{
Functions =
{
GetItem =
{
Returns =
{
{
Type = "cItem",
IsConst = true,
},
},
Notes = "Returns the item in the frame (readonly object, do not modify)",
},
GetItemRotation =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the rotation from the item in the frame",
},
SetItem =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Set the item in the frame",
},
SetItemRotation =
{
Params =
{
{
Name = "ItemRotation",
Type = "number",
},
},
Notes = "Set the rotation from the item in the frame",
},
},
},
cItemGrid =
{
Desc = [[
This class represents a 2D array of items. It is used as the underlying storage and API for all cases that use a grid of items:
{{cChestEntity|Chest}} contents
(TODO) Chest minecart contents
{{cDispenserEntity|Dispenser}} contents
{{cDropperEntity|Dropper}} contents
{{cFurnaceEntity|Furnace}} contents (?)
{{cHopperEntity|Hopper}} contents
(TODO) Hopper minecart contents
{{cPlayer|Player}} Inventory areas
(TODO) Trapped chest contents
The items contained in this object are accessed either by a pair of XY coords, or a slot number (x + Width * y). There are functions available for converting between the two formats.
]],
Functions =
{
AddItem =
{
Params =
{
{
Name = "ItemStack",
Type = "cItem",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
{
Name = "PrioritySlot",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds as many items out of ItemStack as can fit. If AllowNewStacks is set to false, only existing stacks can be topped up. If AllowNewStacks is set to true (default), empty slots can be used for the rest. If PrioritySlot is set to a non-negative value, then the corresponding slot will be used first (if empty or compatible with added items). If PrioritySlot is set to -1 (default), regular order applies. Returns the number of items that fit.",
},
AddItems =
{
Params =
{
{
Name = "ItemStackList",
Type = "cItems",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
{
Name = "PrioritySlot",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Same as AddItem, but works on an entire list of item stacks. The a_ItemStackList is modified to reflect the leftover items. If a_AllowNewStacks is set to false, only existing stacks can be topped up. If AllowNewStacks is set to true, empty slots can be used for the rest. If PrioritySlot is set to a non-negative value, then the corresponding slot will be used first (if empty or compatible with added items). If PrioritySlot is set to -1 (default), regular order applies. Returns the total number of items that fit.",
},
ChangeSlotCount =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "AddToCount",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds AddToCount to the count of items in the specified slot. If the slot was empty, ignores the call. Returns the new count in the slot, or -1 if invalid SlotNum",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "AddToCount",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds AddToCount to the count of items in the specified slot. If the slot was empty, ignores the call. Returns the new count in the slot, or -1 if invalid slot coords",
},
},
Clear =
{
Notes = "Empties all slots",
},
CopyToItems =
{
Params =
{
{
Name = "cItems",
Type = "cItems",
},
},
Notes = "Copies all non-empty slots into the {{cItems}} object provided; original cItems contents are preserved as well.",
},
DamageItem =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "DamageAmount",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "HasReachedMaxDamage",
Type = "boolean",
},
},
Notes = "Adds the specified damage (1 by default) to the specified item, returns true if the item reached its max damage and should be destroyed (but doesn't destroy the item).",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "DamageAmount",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "HasReachedMaxDamage",
Type = "boolean",
},
},
Notes = "Adds the specified damage (1 by default) to the specified item, returns true if the item reached its max damage and should be destroyed (but doesn't destroy the item).",
},
},
EmptySlot =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Notes = "Destroys the item in the specified slot",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
},
Notes = "Destroys the item in the specified slot",
},
},
FindItem =
{
Params =
{
{
Name = "RecipeItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Finds an item within the grid matching `ItemType` and `ItemDamage`. The actual item is returned, if none is found `nullptr`.",
},
GetFirstEmptySlot =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber of the first empty slot, -1 if all slots are full",
},
GetFirstUsedSlot =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber of the first non-empty slot, -1 if all slots are empty",
},
GetHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Y dimension of the grid",
},
GetLastEmptySlot =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber of the last empty slot, -1 if all slots are full",
},
GetLastUsedSlot =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber of the last non-empty slot, -1 if all slots are empty",
},
GetNextEmptySlot =
{
Params =
{
{
Name = "StartFrom",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber of the first empty slot following StartFrom, -1 if all the following slots are full",
},
GetNextUsedSlot =
{
Params =
{
{
Name = "StartFrom",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber of the first non-empty slot following StartFrom, -1 if all the following slots are full",
},
GetNumSlots =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the total number of slots in the grid (Width * Height)",
},
GetSlot =
{
{
Params =
{
{
Name = "SlotNumber",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the specified slot. Note that the item is read-only",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the specified slot. Note that the item is read-only",
},
},
GetSlotCoords =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
{
Type = "number",
},
},
Notes = "Returns the X and Y coords for the specified SlotNumber. Returns \"-1, -1\" on invalid SlotNumber",
},
GetSlotNum =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the SlotNumber for the specified slot coords. Returns -1 on invalid coords",
},
GetWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X dimension of the grid",
},
HasItems =
{
Params =
{
{
Name = "ItemStack",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if there are at least as many items of the specified type as in the parameter",
},
HowManyCanFit =
{
Params =
{
{
Name = "ItemStack",
Type = "cItem",
},
{
Name = "AllowNewStacks",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of the specified items that can fit in the storage. If AllowNewStacks is true (default), includes empty slots in the returned count.",
},
HowManyItems =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of the specified item that are currently stored",
},
IsSlotEmpty =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified slot is empty, or an invalid slot is specified",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified slot is empty, or an invalid slot is specified",
},
},
RemoveItem =
{
Params =
{
{
Name = "ItemStack",
Type = "cItem",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Removes the specified item from the grid, as many as possible, up to ItemStack's m_ItemCount. Returns the number of items that were removed.",
},
RemoveOneItem =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Removes one item from the stack in the specified slot and returns it as a single cItem. Empty slots are skipped and an empty item is returned",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Removes one item from the stack in the specified slot and returns it as a single cItem. Empty slots are skipped and an empty item is returned",
},
},
SetSlot =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the specified slot to the specified item",
},
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Sets the specified slot to the specified item",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the specified slot to the specified item",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Sets the specified slot to the specified item",
},
},
},
AdditionalInfo =
{
{
Header = "Code example: Add items to player inventory",
Contents = [[
The following code tries to add 32 sticks to a player's main inventory:
local Items = cItem(E_ITEM_STICK, 32);
local PlayerInventory = Player:GetInventory();
local PlayerMainInventory = PlayerInventory:GetInventoryGrid(); -- PlayerMainInventory is of type cItemGrid
local NumAdded = PlayerMainInventory:AddItem(Items);
if (NumAdded == Items.m_ItemCount) then
-- All the sticks did fit
LOG("Added 32 sticks");
else
-- Some (or all) of the sticks didn't fit
LOG("Tried to add 32 sticks, but only " .. NumAdded .. " could fit");
end
]],
},
{
Header = "Code example: Damage an item",
Contents = [[
The following code damages the helmet in the player's armor and destroys it if it reaches max damage:
local PlayerInventory = Player:GetInventory();
local PlayerArmor = PlayerInventory:GetArmorGrid(); -- PlayerArmor is of type cItemGrid
if (PlayerArmor:DamageItem(0)) then -- Helmet is at SlotNum 0
-- The helmet has reached max damage, destroy it:
PlayerArmor:EmptySlot(0);
end
]],
},
},
},
cItems =
{
Desc = [[
This class represents a numbered collection (array) of {{cItem}} objects. The array indices start at
zero, each consecutive item gets a consecutive index. This class is used for spawning multiple
pickups or for mass manipulating an inventory.
]],
Functions =
{
Add =
{
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Adds a new item to the end of the collection",
},
{
Params =
{
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Adds a new item to the end of the collection",
},
},
AddItemGrid =
{
Params =
{
{
Name = "ItemGrid",
Type = "cItemGrid",
},
},
Notes = "Adds a copy of each item in the specified {{cItemGrid|ItemGrid}}.",
},
Clear =
{
Notes = "Removes all items from the collection",
},
constructor =
{
Returns =
{
{
Type = "cItems",
},
},
Notes = "Creates a new empty cItems object",
},
Contains =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the collection contains an item that is fully equivalent to the parameter",
},
ContainsType =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the collection contains an item that is the same type as the parameter",
},
Delete =
{
Params =
{
{
Name = "Index",
Type = "number",
},
},
Notes = "Deletes item at the specified index",
},
Get =
{
Params =
{
{
Name = "Index",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item at the specified index",
},
Set =
{
{
Params =
{
{
Name = "Index",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the item at the specified index to the specified item",
},
{
Params =
{
{
Name = "Index",
Type = "number",
},
{
Name = "ItemType",
Type = "number",
},
{
Name = "ItemCount",
Type = "number",
},
{
Name = "ItemDamage",
Type = "number",
},
},
Notes = "Sets the item at the specified index to the specified item",
},
},
Size =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of items in the collection",
},
},
},
cJson =
{
Desc = [[
Exposes the Json parser and serializer available in the server. Plugins can parse Json strings into
Lua tables, and serialize Lua tables into Json strings easily.
]],
Functions =
{
Parse =
{
IsStatic = true,
Params =
{
{
Name = "InputString",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Parses the Json in the input string into a Lua table. Returns nil and detailed error message if parsing fails.",
},
Serialize =
{
IsStatic = true,
Params =
{
{
Name = "table",
Type = "table",
},
{
Name = "options",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Serializes the input table into a Json string. The options table, if present, is used to adjust the formatting of the serialized string, see below for details. Returns nil and error message if the table cannot be serialized (eg. contains both an array part and a dictionary part).",
},
},
AdditionalInfo =
{
{
Header = "Serializer options",
Contents = [[
The "options" parameter given to the cJson:Serialize() function is a dictionary-table of "option
name" -> "option value". The serializer warns if any unknown options are used; the following
options are recognized:
commentStyle - either "All" or "None", specifies whether comments are written to the
output. Currently unused since comments cannot be represented in a Lua table
indentation - the string that is repeated for each level of indentation of the output.
If empty, the Json is compressed (without linebreaks).
enableYAMLCompatibility - bool manipulating the whitespace around the colons.
dropNullPlaceholders - bool specifying whether null placeholders should be dropped
from the output
]],
},
{
Header = "Code example: Parsing a Json string",
Contents = [==[
The following code, adapted from the Debuggers plugin, parses a simple Json string and verifies
the results:
]==],
},
{
Header = "Code example: Serializing into a Json string",
Contents = [[
The following code, adapted from the Debuggers plugin, serializes a simple Lua table into a
string, using custom indentation:
local s1 = cJson:Serialize({a = 1, b = "2", c = {3, "4", 5}}, {indentation = " "})
LOG("Serialization result: " .. (s1 or ""))
]],
},
},
},
cLuaWindow =
{
Desc = [[
This class is used by plugins wishing to display a custom window to the player, unrelated to block entities or entities near the player. The window can be of any type and have any contents that the plugin defines. Callbacks for when the player modifies the window contents and when the player closes the window can be set.
This class inherits from the {{cWindow|cWindow}} class, so all cWindow's functions and constants can be used, in addition to the cLuaWindow-specific functions listed below.
The contents of this window are represented by a {{cWindow|cWindow}}:GetSlot() etc. or {{cPlayer|cPlayer}}:GetInventory() to access the player inventory.
When creating a new cLuaWindow object, you need to specify both the window type and the contents' width and height. Note that Cuberite accepts any combination of these, but opening a window for a player may crash their client if the contents' dimensions don't match the client's expectations.
To open the window for a player, call {{cPlayer|cPlayer}}:OpenWindow(). Multiple players can open window of the same cLuaWindow object. All players see the same items in the window's contents (like chest, unlike crafting table).
]],
Functions =
{
constructor =
{
Params =
{
{
Name = "WindowType",
Type = "cWindow#WindowType",
},
{
Name = "ContentsWidth",
Type = "number",
},
{
Name = "ContentsHeight",
Type = "number",
},
{
Name = "Title",
Type = "string",
},
},
Notes = "Creates a new object of this class. The window is not shown to any player yet.",
},
GetContents =
{
Returns =
{
{
Type = "cItemGrid",
},
},
Notes = "Returns the cItemGrid object representing the internal storage in this window",
},
SetOnClicked =
{
Params =
{
{
Name = "OnClickedCallback",
Type = "function",
},
},
Notes = "Sets the function that the window will call when it is about to process a click from a player. See {{#additionalinfo_1|below}} for the signature of the callback function.",
},
SetOnClosing =
{
Params =
{
{
Name = "OnClosingCallback",
Type = "function",
},
},
Notes = "Sets the function that the window will call when it is about to be closed by a player",
},
SetOnSlotChanged =
{
Params =
{
{
Name = "OnSlotChangedCallback",
Type = "function",
},
},
Notes = "Sets the function that the window will call when a slot is changed by a player",
},
},
AdditionalInfo =
{
{
Header = "Callbacks",
Contents = [[
The object calls the following functions at the appropriate time:
]],
},
{
Header = "OnClicked Callback",
Contents = [[
This callback, settable via the SetOnClicked() function, will be called when the player clicks a slot in the window. The callback can cancel the click.
function OnWindowClicked(a_Window, a_Player, a_SlotNum, a_ClickAction, a_ClickedItem)
The a_Window parameter is the cLuaWindow object representing the window, a_Player is the player who made the click, a_SlotNum is the slot the player clicked, a_ClickAction is the type of click the player made, and a_ClickedItem is the item the player clicked on, if applicable. If the function returns true, the click is cancelled (internally, the server resends the window slots to the player to keep the player in sync).
]],
},
{
Header = "OnClosing Callback",
Contents = [[
This callback, settable via the SetOnClosing() function, will be called when the player tries to close the window, or the window is closed for any other reason (such as a player disconnecting).
function OnWindowClosing(a_Window, a_Player, a_CanRefuse)
The a_Window parameter is the cLuaWindow object representing the window, a_Player is the player for whom the window is about to close. a_CanRefuse specifies whether the callback can refuse the closing. If the callback returns true and a_CanRefuse is true, the window is not closed (internally, the server sends a new OpenWindow packet to the client).
]],
},
{
Header = "OnSlotChanged Callback",
Contents = [[
This callback, settable via the SetOnSlotChanged() function, will be called whenever the contents of any slot in the window's contents (i. e. NOT in the player inventory!) changes.
function OnWindowSlotChanged(a_Window, a_SlotNum)
The a_Window parameter is the cLuaWindow object representing the window, a_SlotNum is the slot number. There is no reference to a {{cPlayer}}, because the slot change needn't originate from the player action. To get or set the slot, you'll need to retrieve a cPlayer object, for example by calling {{cWorld|cWorld}}:DoWithPlayer().
Any returned values are ignored.
]],
},
{
Header = "Example",
Contents = [[
This example is taken from the Debuggers plugin, used to test the API functionality. It opens a window and refuse to close it 3 times. It also logs slot changes to the server console and prevents shift-clicking in the window.
-- Callback that refuses to close the window twice, then allows:
local Attempt = 1;
local OnClosing = function(Window, Player, CanRefuse)
Player:SendMessage("Window closing attempt #" .. Attempt .. "; CanRefuse = " .. tostring(CanRefuse));
Attempt = Attempt + 1;
return CanRefuse and (Attempt <= 3); -- refuse twice, then allow, unless CanRefuse is set to true
end
-- Log the slot changes:
local OnSlotChanged = function(Window, SlotNum)
LOG("Window \"" .. Window:GetWindowTitle() .. "\" slot " .. SlotNum .. " changed.");
end
-- Prevent shift-clicking:
local OnClicked = function(Window, ClickingPlayer, SlotNum, ClickAction, ClickedItem)
if ClickAction == caShiftLeftClick then
return true
end
end
-- Set window contents:
-- a_Player is a cPlayer object received from the outside of this code fragment
local Window = cLuaWindow(cWindow.wtHopper, 3, 3, "TestWnd");
Window:SetSlot(a_Player, 0, cItem(E_ITEM_DIAMOND, 64));
Window:SetOnClicked(OnClicked);
Window:SetOnClosing(OnClosing);
Window:SetOnSlotChanged(OnSlotChanged);
-- Open the window:
a_Player:OpenWindow(Window);
]],
},
},
Inherits = "cWindow",
},
cMap =
{
Desc = [[
This class encapsulates a single in-game colored map.
The contents (i.e. pixel data) of a cMap are dynamically updated by each
tracked {{cPlayer}} instance. Furthermore, a cMap maintains and periodically
updates a list of map decorators, which are objects drawn on the map that
can freely move (e.g. Player and item frame pointers).
]],
Functions =
{
GetCenterX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X coord of the map's center.",
},
GetCenterZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Y coord of the map's center.",
},
GetDimension =
{
Returns =
{
{
Type = "eDimension",
},
},
Notes = "Returns the dimension of the associated world.",
},
GetHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the height of the map.",
},
GetID =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the numerical ID of the map. (The item damage value)",
},
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the map.",
},
GetNumPixels =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of pixels in this map.",
},
GetPixel =
{
Params =
{
{
Name = "PixelX",
Type = "number",
},
{
Name = "PixelZ",
Type = "number",
},
},
Returns =
{
{
Name = "ColorID",
Type = "number",
},
},
Notes = "Returns the color of the specified pixel.",
},
GetPixelWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the width of a single pixel in blocks.",
},
GetScale =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the scale of the map. Range: [0,4]",
},
GetWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the width of the map.",
},
GetWorld =
{
Returns =
{
{
Type = "cWorld",
},
},
Notes = "Returns the associated world.",
},
Resize =
{
Params =
{
{
Name = "Width",
Type = "number",
},
{
Name = "Height",
Type = "number",
},
},
Notes = "Resizes the map. WARNING: This will erase the pixel data.",
},
SetPixel =
{
Params =
{
{
Name = "PixelX",
Type = "number",
},
{
Name = "PixelZ",
Type = "number",
},
{
Name = "ColorID",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Sets the color of the specified pixel. Returns false on error (Out of range).",
},
SetPosition =
{
Params =
{
{
Name = "CenterX",
Type = "number",
},
{
Name = "CenterZ",
Type = "number",
},
},
Notes = "Relocates the map. The pixel data will not be modified.",
},
SetScale =
{
Params =
{
{
Name = "Scale",
Type = "number",
},
},
Notes = "Rescales the map. The pixel data will not be modified.",
},
},
Constants =
{
E_BASE_COLOR_BLUE =
{
Notes = "",
},
E_BASE_COLOR_BROWN =
{
Notes = "",
},
E_BASE_COLOR_DARK_BROWN =
{
Notes = "",
},
E_BASE_COLOR_DARK_GRAY =
{
Notes = "",
},
E_BASE_COLOR_DARK_GREEN =
{
Notes = "",
},
E_BASE_COLOR_GRAY_1 =
{
Notes = "",
},
E_BASE_COLOR_GRAY_2 =
{
Notes = "",
},
E_BASE_COLOR_LIGHT_BROWN =
{
Notes = "",
},
E_BASE_COLOR_LIGHT_GRAY =
{
Notes = "",
},
E_BASE_COLOR_LIGHT_GREEN =
{
Notes = "",
},
E_BASE_COLOR_PALE_BLUE =
{
Notes = "",
},
E_BASE_COLOR_RED =
{
Notes = "",
},
E_BASE_COLOR_TRANSPARENT =
{
Notes = "",
},
E_BASE_COLOR_WHITE =
{
Notes = "",
},
},
},
cMapManager =
{
Desc = [[
This class is associated with a single {{cWorld}} instance and manages a list of maps.
]],
Functions =
{
DoWithMap =
{
Params =
{
{
Name = "MapID",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If a map with the specified ID exists, calls the CallbackFunction for that map. The CallbackFunction has the following signature:
function Callback({{cMap|Map}})
Returns true if the map was found and the callback called, false if map not found.",
},
},
},
cMojangAPI =
{
Desc = [[
Provides interface to various API functions that Mojang provides through their servers. Note that
some of these calls will wait for a response from the network, and so shouldn't be used while the
server is fully running (or at least when there are players connected) to avoid percepted lag.
All the functions are static, call them using the cMojangAPI:Function() convention.
Mojang uses two formats for UUIDs, short and dashed. Cuberite will accept either format for any
functions taking a UUID. The MakeUUIDShort() and MakeUUIDDashed() functions are provided for plugins
to use for conversion between the two formats.
This class will cache values returned by the API service. The cache will hold the values for 7 days
by default, after that, they will no longer be available. This is in order to not let the server get
banned from using the API service, since they are rate-limited to 600 queries per 10 minutes. The
cache contents also gets updated whenever a player successfully joins, since that makes the server
contact the API service, too, and retrieve the relevant data.
]],
Functions =
{
AddPlayerNameToUUIDMapping =
{
IsStatic = true,
Params =
{
{
Name = "PlayerName",
Type = "string",
},
{
Name = "UUID",
Type = "cUUID",
},
},
Notes = "Adds the specified PlayerName-to-UUID mapping into the cache, with current timestamp.",
},
GetPlayerNameFromUUID =
{
IsStatic = true,
Params =
{
{
Name = "UUID",
Type = "cUUID",
},
{
Name = "UseOnlyCached",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "PlayerName",
Type = "string",
},
},
Notes = "Returns the playername that corresponds to the given UUID, or an empty string on error. If UseOnlyCached is false (the default), queries the Mojang servers if the UUID is not in the cache. The UUID can be either short or dashed. WARNING: Do NOT use this function with UseOnlyCached set to false while the server is running. Only use it when the server is starting up (inside the Initialize() method), otherwise you will lag the server severely.",
},
GetUUIDFromPlayerName =
{
IsStatic = true,
Params =
{
{
Name = "PlayerName",
Type = "string",
},
{
Name = "UseOnlyCached",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "UUID",
Type = "string",
},
},
Notes = "Returns the (short) UUID that corresponds to the given playername, or an empty string on error. If UseOnlyCached is false (the default), queries the Mojang servers if the playername is not in the cache. WARNING: Do NOT use this function with UseOnlyCached set to false while the server is running. Only use it when the server is starting up (inside the Initialize() method), otherwise you will lag the server severely.",
},
GetUUIDsFromPlayerNames =
{
IsStatic = true,
Params =
{
{
Name = "PlayerNames",
Type = "string",
},
{
Name = "UseOnlyCached",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns a table that contains the map, 'PlayerName' -> '(short) UUID', for all valid playernames in the input array-table. PlayerNames not recognized will not be set in the returned map. If UseOnlyCached is false (the default), queries the Mojang servers for the results that are not in the cache. WARNING: Do NOT use this function with UseOnlyCached set to false while the server is running. Only use it when the server is starting up (inside the Initialize() method), otherwise you will lag the server severely.",
},
MakeUUIDDashed =
{
IsStatic = true,
Params =
{
{
Name = "UUID",
Type = "cUUID",
},
},
Returns =
{
{
Name = "DashedUUID",
Type = "string",
},
},
Notes = "Converts the UUID to a dashed format (\"01234567-8901-2345-6789-012345678901\"). An alias for cUUID:ToLongString()",
},
MakeUUIDShort =
{
IsStatic = true,
Params =
{
{
Name = "UUID",
Type = "cUUID",
},
},
Returns =
{
{
Name = "ShortUUID",
Type = "string",
},
},
Notes = "Converts the UUID to a short format (without dashes, \"01234567890123456789012345678901\"). An alias for cUUID:ToShortString()",
},
},
},
cMonster =
{
Desc = [[
This class is the base class for all computer-controlled mobs in the game.
To spawn a mob in a world, use the {{cWorld}}:SpawnMob() function.
]],
Functions =
{
BurnsInDaylight =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the mob burns in daylight.",
},
CanBeLeashed =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the mob can be leashed.",
},
FamilyFromType =
{
IsStatic = true,
Params =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Returns =
{
{
Name = "MobFamily",
Type = "cMonster#eFamily",
},
},
Notes = "Returns the mob family ({{cMonster#eFamily|mfXXX}} constants) based on the mob type ({{Globals#eMonsterType|mtXXX}} constants)",
},
GetAge =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the age of the monster",
},
GetCustomName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Gets the custom name of the monster. If no custom name is set, the function returns an empty string.",
},
GetLeashedTo =
{
Returns =
{
{
Name = "LeashedTo",
Type = "cEntity",
},
},
Notes = "Returns the entity to where this mob is leashed, returns nil if it's not leashed",
},
GetMobFamily =
{
Returns =
{
{
Name = "MobFamily",
Type = "cMonster#eFamily",
},
},
Notes = "Returns this mob's family ({{cMonster#eFamily|mfXXX}} constant)",
},
GetMobType =
{
Returns =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Notes = "Returns the type of this mob ({{Globals#eMonsterType|mtXXX}} constant)",
},
GetRelativeWalkSpeed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the walk speed multiplier of this mob. Base is set in monsters.ini (will default to 1 if not set).",
},
HasCustomName =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the monster has a custom name.",
},
IsBaby =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the monster is a baby",
},
IsCustomNameAlwaysVisible =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Is the custom name of this monster always visible? If not, you only see the name when you sight the mob.",
},
IsLeashed =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the monster is leashed to an entity.",
},
LeashTo =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
}
},
Notes = "Leash the monster to an entity.",
},
MobTypeToString =
{
IsStatic = true,
Params =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string representing the given mob type ({{Globals#eMonsterType|mtXXX}} constant), or empty string if unknown type.",
},
MobTypeToVanillaName =
{
IsStatic = true,
Params =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the vanilla name of the given mob type, or empty string if unknown type.",
},
MoveToPosition =
{
Params =
{
{
Name = "Position",
Type = "Vector3d",
},
},
Notes = "Start moving (using a pathfinder) towards the specified position",
},
SetAge =
{
Params =
{
{
Name = "Age",
Type = "number",
},
},
Notes = "Sets the age of the monster",
},
SetBurnsInDaylight =
{
Params =
{
{
Name = "BurnsInDaylight",
Type = "boolean",
},
},
Notes = "Sets whether the mob burns in daylight. Only evaluated at next burn-decision tick",
},
SetCanBeLeashed =
{
Params =
{
{
Name = "CanBeLeashed",
Type = "boolean",
}
},
Notes = "Sets whether the mob can be leashed, for extensibility in plugins"
},
SetCustomName =
{
Params =
{
{
Name = "CustomName",
Type = "string",
},
},
Notes = "Sets the custom name of the monster. You see the name over the monster. If you want to disable the custom name, simply set an empty string.",
},
SetCustomNameAlwaysVisible =
{
Params =
{
{
Name = "IsCustomNameAlwaysVisible",
Type = "boolean",
},
},
Notes = "Sets the custom name visiblity of this monster. If it's false, you only see the name when you sight the mob. If it's true, you always see the custom name.",
},
SetRelativeWalkSpeed =
{
Params =
{
{
Name = "RelativeWalkSpeed",
Type = "number",
},
},
Notes = "Sets the walk speed multiplier of this mob. Base is set in monsters.ini (will default to 1 if not set).",
},
StringToMobType =
{
IsStatic = true,
Params =
{
{
Name = "MobTypeString",
Type = "string",
},
},
Returns =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Notes = "Returns the mob type ({{Globals#eMonsterType|mtXXX}} constant) parsed from the string type (\"creeper\"), or mtInvalidType if unrecognized.",
},
Unleash =
{
Params =
{
{
Name = "ShouldDropLeashPickup",
Type = "boolean",
},
},
Notes = "Unleash the monster.",
},
},
Constants =
{
mfAmbient =
{
Notes = "Family: ambient (bat)",
},
mfHostile =
{
Notes = "Family: hostile (blaze, cavespider, creeper, enderdragon, enderman, ghast, giant, magmacube, silverfish, skeleton, slime, spider, witch, wither, zombie, zombiepigman)",
},
mfPassive =
{
Notes = "Family: passive (chicken, cow, horse, irongolem, mooshroom, ocelot, pig, sheep, snowgolem, villager, wolf)",
},
mfWater =
{
Notes = "Family: water (squid)",
},
},
ConstantGroups =
{
eFamily =
{
Include = "mf.*",
TextBefore = [[
Mobs are divided into families. The following constants are used for individual family types:
]],
},
},
Inherits = "cPawn",
},
cObjective =
{
Desc = [[
This class represents a single scoreboard objective.
]],
Functions =
{
AddScore =
{
Params =
{
{
Name = "string",
Type = "string",
},
{
Name = "number",
Type = "number",
},
},
Returns =
{
{
Name = "Score",
Type = "",
},
},
Notes = "Adds a value to the score of the specified player and returns the new value.",
},
GetDisplayName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the display name of the objective. This name will be shown to the connected players.",
},
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the internal name of the objective.",
},
GetScore =
{
Params =
{
{
Name = "string",
Type = "string",
},
},
Returns =
{
{
Name = "Score",
Type = "",
},
},
Notes = "Returns the score of the specified player.",
},
GetType =
{
Returns =
{
{
Name = "eType",
Type = "",
},
},
Notes = "Returns the type of the objective. (i.e what is being tracked)",
},
Reset =
{
Notes = "Resets the scores of the tracked players.",
},
ResetScore =
{
Params =
{
{
Name = "string",
Type = "string",
},
},
Notes = "Reset the score of the specified player.",
},
SetDisplayName =
{
Params =
{
{
Name = "string",
Type = "string",
},
},
Notes = "Sets the display name of the objective.",
},
SetScore =
{
Params =
{
{
Name = "string",
Type = "string",
},
{
Name = "Score",
Type = "",
},
},
Notes = "Sets the score of the specified player.",
},
SubScore =
{
Params =
{
{
Name = "string",
Type = "string",
},
{
Name = "number",
Type = "number",
},
},
Returns =
{
{
Name = "Score",
Type = "",
},
},
Notes = "Subtracts a value from the score of the specified player and returns the new value.",
},
},
Constants =
{
otAchievement =
{
Notes = "",
},
otDeathCount =
{
Notes = "",
},
otDummy =
{
Notes = "",
},
otHealth =
{
Notes = "",
},
otPlayerKillCount =
{
Notes = "",
},
otStat =
{
Notes = "",
},
otStatBlockMine =
{
Notes = "",
},
otStatEntityKill =
{
Notes = "",
},
otStatEntityKilledBy =
{
Notes = "",
},
otStatItemBreak =
{
Notes = "",
},
otStatItemCraft =
{
Notes = "",
},
otStatItemUse =
{
Notes = "",
},
otTotalKillCount =
{
Notes = "",
},
},
},
cPainting =
{
Desc = "This class represents a painting in the world. These paintings are special and different from Vanilla in that they can be critical-hit.",
Functions =
{
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the painting",
},
},
},
cPawn =
{
Desc = "cPawn is a controllable pawn object, controlled by either AI or a player. cPawn inherits all functions and members of {{cEntity}}\
",
Functions =
{
AddEntityEffect =
{
Params =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
{
Name = "EffectDurationTicks",
Type = "number",
},
{
Name = "EffectIntensity",
Type = "number",
},
{
Name = "DistanceModifier",
Type = "number",
},
},
Notes = "Applies an entity effect. Checks with plugins if they allow the addition. EffectIntensity is the level of the effect (0 = Potion I, 1 = Potion II, etc). DistanceModifier is the scalar multiplied to the potion duration (only applies to splash potions).",
},
ClearEntityEffects =
{
Notes = "Removes all currently applied entity effects",
},
FindTeleportDestination =
{
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "HeightRequired",
Type = "number",
},
{
Name = "NumTries",
Type = "number",
},
{
Name = "Destination",
Type = "Vector3d",
},
{
Name = "MinBoxCorner",
Type = "Vector3i",
},
{
Name = "MaxBoxCorner",
Type = "Vector3i",
},
},
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.wiki/w/Enderman#Teleportation}}.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "HeightRequired",
Type = "number",
},
{
Name = "NumTries",
Type = "number",
},
{
Name = "Destination",
Type = "Vector3d",
},
{
Name = "BoundingBox",
Type = "cBoundingBox",
},
},
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.wiki/w/Enderman#Teleportation}}.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "HeightRequired",
Type = "number",
},
{
Name = "NumTries",
Type = "number",
},
{
Name = "Centre",
Type = "Vector3i",
},
{
Name = "HalfCubeWidth",
Type = "number",
},
},
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.wiki/w/Enderman#Teleportation}}.",
},
},
HasEntityEffect =
{
Params =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true, if the supplied entity effect type is currently applied",
},
RemoveEntityEffect =
{
Params =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
},
Notes = "Removes a currently applied entity effect",
},
},
Inherits = "cEntity",
},
cEnderCrystal =
{
Desc = [[
This class represents an ender crystal. This entity can be spawned by using {{cWorld#SpawnEnderCrystal_1|cWorld:SpawnEnderCrystal}}.
]],
Functions =
{
DisplaysBeam =
{
Returns =
{
{
Type = "boolean",
},
Notes = "Returns true if the ender crystal displays its beam.",
},
},
GetBeamTarget =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns the Block position the beam is pointing to.",
},
SetBeamTarget =
{
Params =
{
{
Name = "BeamTarget",
Type = "Vector3i",
},
},
Notes = "Sets the target of the beam of this ender crystal.",
},
SetDisplayBeam =
{
Params =
{
{
Name = "DisplaysBeam",
Type = "boolean",
},
Notes = "Sets if the ender crystal should display its beam.",
},
},
SetShowBottom =
{
Params =
{
{
Name = "ShowsBottom",
Type = "boolean",
},
Notes = "Sets if the ender crystal should broadcast its bedrock base.",
},
},
ShowsBottom =
{
Returns =
{
{
Type = "boolean",
},
Notes = "Returns true if the bedrock base is displayed.",
},
},
},
Inherits = "cEntity",
},
cExpOrb =
{
Desc = [[
This class represents an experience orb. This entity can be spawned by using {{cWorld#SpawnExperienceOrb_1|cWorld:SpawnExperienceOrb}}.
It's also spawned when a monster is killed or a player is mining coal. The default lifetime of an experience orb is 5 mins.
]],
Functions =
{
GetAge =
{
Returns =
{
{
Type = "number"
},
},
Notes = "Returns the number of ticks that this experience orb has existed.",
},
SetAge =
{
Params =
{
{
Type = "number",
},
},
Notes = "Sets the experience orb's age, in ticks.",
},
GetReward =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the experience amount.",
},
SetReward =
{
Params =
{
{
Type = "number",
},
},
Notes = "Sets the experience amount.",
},
},
Inherits = "cEntity",
},
cFallingBlock =
{
Desc = [[
This class represents a falling block. This entity can be spawned by using {{cWorld#SpawnFallingBlock_1|cWorld:SpawnFallingBlock}}.
]],
Functions =
{
GetBlockType =
{
Returns =
{
{
Name = "BlockType",
Type = "number",
}
},
Notes = "Returns the block type of the falling block.",
},
GetBlockMeta =
{
Returns =
{
{
Name = "BlockMeta",
Type = "number",
}
},
Notes = "Returns the block meta of the falling block.",
},
},
Inherits = "cEntity",
},
cBoat =
{
Desc = [[
This class represents a boat. This entity can be spawned by using {{cWorld#SpawnBoat_1|cWorld:SpawnBoat}}.
]],
Functions =
{
GetMaterial =
{
Returns =
{
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Notes = "Returns the material of the boat.",
},
MaterialToString =
{
IsStatic = true,
Params =
{
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Returns =
{
{
Name = "Material",
Type = "string",
},
},
Notes = "Returns the boat material as a string.",
},
ItemToMaterial =
{
IsStatic = true,
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Returns =
{
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Notes = "Returns the eMaterial that should be used for a boat created from the specified item. Returns bmOak if not a boat item.",
},
MaterialToItem =
{
IsStatic = true,
Params =
{
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Returns =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Returns the boat item of the boat material",
},
StringToMaterial =
{
IsStatic = true,
Params =
{
{
Name = "Material",
Type = "string",
},
},
Returns =
{
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Notes = "Returns the boat material for the passed string. Returns oak if not valid.",
},
SetMaterial =
{
Params =
{
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Notes = "Set the material of the boat.",
},
},
Constants =
{
bmOak =
{
Notes = "",
},
bmSpruce =
{
Notes = "",
},
bmBirch =
{
Notes = "",
},
bmJungle =
{
Notes = "",
},
bmAcacia =
{
Notes = "",
},
bmDarkOak =
{
Notes = "",
},
},
ConstantGroups =
{
eMaterial =
{
Include = "bm.*",
TextBefore = "These constans are the different wood materials of the boat.",
},
},
Inherits = "cEntity",
},
cPickup =
{
Desc = [[
This class represents a pickup entity (an item that the player or mobs can pick up). It is also
commonly known as "drops". With this class you could create your own "drop" or modify those
created automatically. The default lifetime of a pickup is 5 mins.
]],
Functions =
{
CanCombine =
{
Returns =
{
{
Type = "boolean"
}
},
Notes = "Returns whether this pickup is allowed to combine with other similar pickups.",
},
CollectedBy =
{
Params =
{
{
Name = "Entity",
Type = "cEntity",
},
},
Returns =
{
{
Name = "WasCollected",
Type = "boolean",
},
},
Notes = "Tries to make the entity collect the pickup. Returns true if the pickup was collected, at least partially.",
},
GetAge =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks that the pickup has existed.",
},
GetItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item represented by this pickup",
},
GetLifetime =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the total length of this pickup's lifespan, in ticks.",
},
IsCollected =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this pickup has already been collected (is waiting to be destroyed)",
},
IsPlayerCreated =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the pickup was created by a player",
},
SetAge =
{
Params =
{
{
Name = "AgeTicks",
Type = "number",
},
},
Notes = "Sets the pickup's age, in ticks.",
},
SetCanCombine =
{
Params =
{
{
Name = "CanCombine",
Type = "boolean",
},
},
Notes = "Sets whether this pickup is allowed to combine with other similar pickups.",
},
SetLifetime =
{
Params =
{
{
Name = "LifeTimeInTicks",
Type = "number",
},
},
Notes = "Sets the total lifespan of this pickup before it despawns, in ticks. Does not reset the age of the pickup, use SetAge(0). If new lifetime is less than the current age, pickup will despawn.",
},
},
Inherits = "cEntity",
},
cPlayer =
{
Desc = [[
This class describes a player in the server. cPlayer inherits all functions and members of
{{cPawn|cPawn}}. It handles all the aspects of the gameplay, such as hunger, sprinting, inventory
etc.
]],
Functions =
{
AddFoodExhaustion =
{
Params =
{
{
Name = "Exhaustion",
Type = "number",
},
},
Notes = "Adds the specified number to the food exhaustion. Only positive numbers expected.",
},
CalcLevelFromXp =
{
IsStatic = true,
Params =
{
{
Name = "XPAmount",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the level which is reached with the specified amount of XP. Inverse of XpForLevel().",
},
CanFly =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns if the player is able to fly.",
},
CanMobsTarget =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns if the player can be targeted by mobs.",
},
CloseWindow =
{
Params =
{
{
Name = "CanRefuse",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Closes the currently open UI window. If CanRefuse is true (default), the window may refuse the closing.",
},
CloseWindowIfID =
{
Params =
{
{
Name = "WindowID",
Type = "number",
},
{
Name = "CanRefuse",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Closes the currently open UI window if its ID matches the given ID. If CanRefuse is true (default), the window may refuse the closing.",
},
DeltaExperience =
{
Params =
{
{
Name = "DeltaXP",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Adds or removes XP from the current XP amount. Won't allow XP to go negative. Returns the new experience, -1 on error (XP overflow).",
},
Feed =
{
Params =
{
{
Name = "AddFood",
Type = "number",
},
{
Name = "AddSaturation",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Tries to add the specified amounts to food level and food saturation level (only positive amounts expected). Returns true if player was hungry and the food was consumed, false if too satiated.",
},
ForceSetSpeed =
{
Params =
{
{
Name = "Direction",
Type = "Vector3d",
},
},
Notes = "Forces the player to move to the given direction.",
},
Freeze =
{
Params =
{
{
Name = "Location",
Type = "Vector3d",
},
},
Notes = "Teleports the player to \"Location\" and prevents them from moving, locking them in place until unfreeze() is called",
},
GetClientHandle =
{
Returns =
{
{
Type = "cClientHandle",
},
},
Notes = "Returns the client handle representing the player's connection. May be nil (AI players).",
},
GetColor =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the full color code to be used for this player's messages (based on their rank). Prefix player messages with this code.",
},
GetCurrentXp =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the current amount of XP",
},
GetCustomName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the custom name of this player. If the player hasn't a custom name, it will return an empty string.",
},
GetDraggingItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item the player is dragging in a UI window."
},
GetEffectiveGameMode =
{
Returns =
{
{
Name = "GameMode",
Type = "eGameMode",
},
},
Notes = "(OBSOLETE) Returns the current resolved game mode of the player. If the player is set to inherit the world's gamemode, returns that instead. See also GetGameMode() and IsGameModeXXX() functions. Note that this function is the same as GetGameMode(), use that function instead.",
},
GetEquippedItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item that the player is currently holding; empty item if holding nothing.",
},
GetEyeHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the height of the player's eyes, in absolute coords",
},
GetEyePosition =
{
Returns =
{
{
Name = "EyePositionVector",
Type = "Vector3d",
},
},
Notes = "Returns the position of the player's eyes, as a {{Vector3d}}",
},
GetFloaterID =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Entity ID of the fishing hook floater that belongs to the player. Returns -1 if no floater is associated with the player. FIXME: Undefined behavior when the player has used multiple fishing rods simultanously.",
},
GetFlyingMaxSpeed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum flying speed, relative to the default game flying speed. Defaults to 1, but plugins may modify it for faster or slower flying.",
},
GetFoodExhaustionLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the food exhaustion level",
},
GetFoodLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the food level (number of half-drumsticks on-screen)",
},
GetFoodSaturationLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the food saturation (overcharge of the food level, is depleted before food level)",
},
GetFoodTickTimer =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks past the last food-based heal or damage action; when this timer reaches 80, a new heal / damage is applied.",
},
GetGameMode =
{
Returns =
{
{
Name = "GameMode",
Type = "eGameMode",
},
},
Notes = "Returns the player's gamemode. The player may have their gamemode unassigned, in which case they inherit the gamemode from the current {{cWorld|world}}. NOTE: Instead of comparing the value returned by this function to the gmXXX constants, use the IsGameModeXXX() functions. These functions handle the gamemode inheritance automatically.",
},
GetInventory =
{
Returns =
{
{
Name = "Inventory",
Type = "cInventory",
},
},
Notes = "Returns the player's inventory",
},
GetIP =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the IP address of the player, if available. Returns an empty string if there's no IP to report.",
},
GetLastBedPos =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns the player's respawn position. The player is guaranteed to respawn from death here if {{cPlayer}}:IsRespawnPointForced is true or if a bed exists at this position.",
},
GetMaxSpeed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the player's current maximum speed, relative to the game default speed. Takes into account the sprinting / flying status.",
},
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the player's name",
},
GetNormalMaxSpeed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the player's maximum walking speed, relative to the game default speed. Defaults to 1, but plugins may modify it for faster or slower walking.",
},
GetPermissions =
{
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table of all permissions (strings) that the player has assigned to them through their rank.",
},
GetPlayerListName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name that is used in the playerlist.",
},
GetPrefix =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the prefix to player names for messages (based on their rank), may contain @ format codes.",
},
GetRestrictions =
{
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table of all the restrictions that the player has assigned to them.",
},
GetSprintingMaxSpeed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the player's maximum sprinting speed, relative to the game default speed. Defaults to 1.3, but plugins may modify it for faster or slower sprinting.",
},
GetSkinParts =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the player's current set of skin part flags. This is a bitwise OR of various {{Globals#eSkinPart|eSkinPart}} constants. Note that HasSkinPart may be easier to use in most situations.",
},
GetStatistics =
{
Returns =
{
{
Type = "StatisticsManager",
},
},
Notes = "Returns the player's statistics manager."
},
GetSuffix =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the suffix to player names for messages (based on their rank), may contain @ format codes.",
},
GetTeam =
{
Returns =
{
{
Type = "cTeam",
},
},
Notes = "Returns the team that the player belongs to, or nil if none.",
},
GetThrowSpeed =
{
Params =
{
{
Name = "SpeedCoeff",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns the speed vector for an object thrown with the specified speed coeff. Basically returns the normalized look vector multiplied by the coeff, with a slight random variation.",
},
GetThrowStartPos =
{
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns the position where the projectiles should start when thrown by this player.",
},
GetUUID =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the (short) UUID that the player is using. Could be empty string for players that don't have a Mojang account assigned to them (in the future, bots for example).",
},
GetWindow =
{
Returns =
{
{
Type = "cWindow",
},
},
Notes = "Returns the currently open UI window. If the player doesn't have any UI window open, returns the inventory window.",
},
GetXpLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the current XP level (based on current XP amount).",
},
GetXpLifetimeTotal =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of XP that has been accumulated throughout the player's lifetime.",
},
GetXpPercentage =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the percentage of the experience bar - the amount of XP towards the next XP level. Between 0 and 1.",
},
HasCustomName =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player has a custom name.",
},
HasPermission =
{
Params =
{
{
Name = "PermissionString",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player has the specified permission",
},
HasSkinPart =
{
Params =
{
{
Name = "Part",
Type = "eSkinPart",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player has the specified skin part enabled",
},
Heal =
{
Params =
{
{
Name = "HitPoints",
Type = "number",
},
},
Notes = "Heals the player by the specified amount of HPs. Only positive amounts are expected. Sends a health update to the client.",
},
IsEating =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is currently eating the item in their hand.",
},
IsFireproof =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if a player is fireproof. This is when the flag has been explicitly set, or the player is in creative or spectator mode.",
},
IsFishing =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is currently fishing",
},
IsFlying =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is flying.",
},
IsFrozen =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is frozen. See Freeze()",
},
IsGameModeAdventure =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is in the gmAdventure gamemode, or has their gamemode unset and the world is a gmAdventure world.",
},
IsGameModeCreative =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is in the gmCreative gamemode, or has their gamemode unset and the world is a gmCreative world.",
},
IsGameModeSpectator =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is in the gmSpectator gamemode, or has their gamemode unset and the world is a gmSpectator world.",
},
IsGameModeSurvival =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is in the gmSurvival gamemode, or has their gamemode unset and the world is a gmSurvival world.",
},
IsInBed =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is currently lying in a bed.",
},
IsLeftHanded =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player's left hand is dominant.",
},
IsRespawnPointForced = {
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player unconditionally respawns from death at the position given by {{cPlayer}}:GetLastBedPos with no bed checks performed.",
},
IsSatiated =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the player is satiated (cannot eat).",
},
LoadRank =
{
Notes = "Reloads the player's rank, message visuals and permissions from the {{cRankManager}}, based on the player's current rank.",
},
OpenWindow =
{
Params =
{
{
Name = "Window",
Type = "cWindow",
},
},
Notes = "Opens the specified UI window for the player.",
},
PermissionMatches =
{
IsStatic = true,
Params =
{
{
Name = "Permission",
Type = "string",
},
{
Name = "Template",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified permission matches the specified template. The template may contain asterisk as a wildcard for any word.",
},
PlaceBlock =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Places a block while impersonating the player. The {{OnPlayerPlacingBlock|HOOK_PLAYER_PLACING_BLOCK}} hook is called before the placement, and if it succeeds, the block is placed and the {{OnPlayerPlacedBlock|HOOK_PLAYER_PLACED_BLOCK}} hook is called. Returns true iff the block is successfully placed.",
},
ReplaceOneEquippedItemTossRest =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Removes one item from the the current equipped item stack, and attempts to add the specified item stack back to the same slot. If it is not possible to place the item in the same slot, tries to place the specified item elsewhere in the inventory. If this is not possible, then any remaining items are tossed. If the currently equipped slot is empty, its contents are simply set to the given Item.",
},
Respawn =
{
Notes = "Restores the health, extinguishes fire, makes visible and sends the Respawn packet.",
},
SendAboveActionBarMessage =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Sends the specified message to the player (shows above action bar).",
},
SendBlocksAround =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockRange",
Type = "number",
IsOptional = true,
},
},
Notes = "Sends all the world's blocks in BlockRange from the specified coords to the player, as a BlockChange packet. Range defaults to 1 (only one block sent).",
},
SendMessage =
{
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Sends the specified message to the player.",
},
{
Params =
{
{
Name = "Message",
Type = "cCompositeChat",
},
},
Notes = "Sends the {{cCompositeChat}} to the player, using a severity defined by the CompositeChat's MessageType.",
},
},
SendMessageRaw =
{
Params =
{
{
Name = "Json",
Type = "string",
},
{
Name = "eChatType",
Type = "number",
IsOptional = true,
}
},
Notes = "Sends the specified json string to the player. The optional value eChatType (default ctChatBox) can be ctChatBox, ctSystem or ctAboveActionBar. You can use {{cJson}} to build a json string.",
},
SendMessageFailure =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Prepends Rose [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. For a command that failed to run because of insufficient permissions, etc.",
},
SendMessageFatal =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Prepends Red [FATAL] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. For something serious, such as a plugin crash, etc.",
},
SendMessageInfo =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Prepends Yellow [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. Informational message, such as command usage, etc.",
},
SendMessagePrivateMsg =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "SenderName",
Type = "string",
},
},
Notes = "Prepends Light Blue [MSG: *SenderName*] / prepends SenderName and colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. For private messaging.",
},
SendMessageSuccess =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Prepends Green [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. Success notification.",
},
SendMessageWarning =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Prepends Rose [WARN] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. Denotes that something concerning, such as plugin reload, is about to happen.",
},
SendRotation =
{
Params =
{
{
Name = "YawDegrees",
Type = "number",
},
{
Name = "PitchDegrees",
Type = "number",
},
},
Notes = "Sends the specified rotation to the player, forcing them to look that way",
},
SendSystemMessage =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Sends the specified message to the player.",
},
SetBedPos =
{
Params =
{
{
Name = "Position",
Type = "Vector3i",
},
{
Name = "World",
Type = "cWorld",
IsOptional = true,
},
},
Notes = "Sets the position and world of the player's bed. If the world is not specified, it is set to the player's current world. The player will respawn at this position and world upon death if there is a bed there.",
},
SetCanFly =
{
Params =
{
{
Name = "CanFly",
Type = "boolean",
},
},
Notes = "Sets if the player can fly or not.",
},
SetCrouch =
{
Params =
{
{
Name = "IsCrouched",
Type = "boolean",
},
},
Notes = "Sets the crouch state, broadcasts the change to other players.",
},
SetCurrentExperience =
{
Params =
{
{
Name = "XPAmount",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the current amount of experience (and indirectly, the XP level).",
},
SetCustomName =
{
Params =
{
{
Name = "CustomName",
Type = "string",
},
},
Notes = "Sets the custom name for this player. If you want to disable the custom name, simply set an empty string. The custom name will be used in the tab-list, in the player nametag and in the tab-completion.",
},
SetDraggingItem =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Sets the item that the player is dragging in a UI window. If no UI window is open, this function does nothing."
},
SetElytraFlight =
{
Params =
{
{
Name = "IsElytraFlying",
Type = "boolean",
},
},
Notes = "Sets whether the player is elytra flying or not.",
},
SetFlying =
{
Params =
{
{
Name = "IsFlying",
Type = "boolean",
},
},
Notes = "Sets if the player is flying or not.",
},
SetFlyingMaxSpeed =
{
Params =
{
{
Name = "FlyingMaxSpeed",
Type = "number",
},
},
Notes = "Sets the flying maximum speed, relative to the game default speed. The default value is 1. Sends the updated speed to the client.",
},
SetFoodExhaustionLevel =
{
Params =
{
{
Name = "ExhaustionLevel",
Type = "number",
},
},
Notes = "Sets the food exhaustion to the specified level.",
},
SetFoodLevel =
{
Params =
{
{
Name = "FoodLevel",
Type = "number",
},
},
Notes = "Sets the food level (number of half-drumsticks on-screen)",
},
SetFoodSaturationLevel =
{
Params =
{
{
Name = "FoodSaturationLevel",
Type = "number",
},
},
Notes = "Sets the food saturation (overcharge of the food level).",
},
SetFoodTickTimer =
{
Params =
{
{
Name = "FoodTickTimer",
Type = "number",
},
},
Notes = "Sets the number of ticks past the last food-based heal or damage action; when this timer reaches 80, a new heal / damage is applied.",
},
SetGameMode =
{
Params =
{
{
Name = "NewGameMode",
Type = "eGameMode",
},
},
Notes = "Sets the gamemode for the player. The new gamemode overrides the world's default gamemode, unless it is set to gmInherit.",
},
SetIsFishing =
{
Params =
{
{
Name = "IsFishing",
Type = "boolean",
},
{
Name = "FloaterEntityID",
Type = "number",
IsOptional = true,
},
},
Notes = "Sets the 'IsFishing' flag for the player. The floater entity ID is expected for the true variant, it can be omitted when IsFishing is false. FIXME: Undefined behavior when multiple fishing rods are used simultanously",
},
SetLeftHanded =
{
Params =
{
{
Name = "IsLeftHanded",
Type = "boolean",
},
},
Notes = "Sets the dominant hand of the player.",
},
SetNormalMaxSpeed =
{
Params =
{
{
Name = "NormalMaxSpeed",
Type = "number",
},
},
Notes = "Sets the normal (walking) maximum speed, relative to the game default speed. The default value is 1. Sends the updated speed to the client, if appropriate.",
},
SetRespawnPosition =
{
Params =
{
{
Name = "Position",
Type = "Vector3i",
},
{
Name = "World",
Type = "cWorld",
},
},
Notes = "Sets the position and world of the player's respawn point. The player will respawn at this position and world upon death.",
},
SetSprint =
{
Params =
{
{
Name = "IsSprinting",
Type = "boolean",
},
},
Notes = "Sets whether the player is sprinting or not.",
},
SetSkinParts =
{
Params =
{
{
Name = "Parts",
Type = "number",
},
},
Notes = "Sets the skin part flags of the player. The value should be a bitwise OR of several {{Globals#eSkinPart|eSkinPart}} constants.",
},
SetSprintingMaxSpeed =
{
Params =
{
{
Name = "SprintingMaxSpeed",
Type = "number",
},
},
Notes = "Sets the sprinting maximum speed, relative to the game default speed. The default value is 1.3. Sends the updated speed to the client, if appropriate.",
},
SetTeam =
{
Params =
{
{
Name = "Team",
Type = "cTeam",
},
},
Notes = "Moves the player to the specified team.",
},
SetVisible =
{
Params =
{
{
Name = "IsVisible",
Type = "boolean",
},
},
Notes = "Sets the player visibility to other players",
},
SpectateEntity =
{
Params =
{
{
Name = "Target",
Type = "cEntity",
},
},
Notes = "Spectates the target entity. Does not change the player's gamemode to spectator mode. When called with self or nil as the target, resets the spectation.",
},
TossEquippedItem =
{
Params =
{
{
Name = "Amount",
Type = "number",
IsOptional = true,
},
},
Notes = "Tosses the item that the player has selected in their hotbar. Amount defaults to 1.",
},
TossHeldItem =
{
Params =
{
{
Name = "Amount",
Type = "number",
IsOptional = true,
},
},
Notes = "Tosses the item held by the cursor, when the player is in a UI window. Amount defaults to 1.",
},
TossPickup =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Tosses a pickup newly created from the specified item.",
},
Unfreeze =
{
Notes = "Allows the player to move again, canceling the effects of Freeze()",
},
XpForLevel =
{
IsStatic = true,
Params =
{
{
Name = "XPLevel",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the total amount of XP needed for the specified XP level. Inverse of CalcLevelFromXp().",
},
},
Constants =
{
MAX_FOOD_LEVEL =
{
Notes = "The maximum food level value. When the food level is at this value, the player cannot eat.",
},
MAX_HEALTH =
{
Notes = "The maximum health value",
},
},
Inherits = "cPawn",
}, -- cPlayer
cRoot =
{
Desc = [[
This class represents the root of Cuberite's object hierarchy. There is always only one cRoot
object. It manages and allows querying all the other objects, such as {{cServer}},
{{cPluginManager}}, individual {{cWorld|worlds}} etc.
To get the singleton instance of this object, you call the cRoot:Get() function. Then you can call
the individual functions on this object. Note that some of the functions are static and don't need
the instance, they are to be called directly on the cRoot class, such as cRoot:GetPhysicalRAMUsage()
]],
Functions =
{
BroadcastChat =
{
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
{
Name = "MessageType",
Type = "eMessageType",
},
},
Notes = "Broadcasts a message to all players, with its message type set to MessageType (default: mtCustom).",
},
{
Params =
{
{
Name = "CompositeChat",
Type = "cCompositeChat",
},
},
Notes = "Broadcasts a {{cCompositeChat|composite chat message}} to all players.",
},
},
BroadcastChatDeath =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtDeath. Use for when a player has died.",
},
BroadcastChatFailure =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtFailure. Use for a command that failed to run because of insufficient permissions, etc.",
},
BroadcastChatFatal =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtFatal. Use for a plugin that crashed, or similar.",
},
BroadcastChatInfo =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtInfo. Use for informational messages, such as command usage.",
},
BroadcastChatJoin =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtJoin. Use for players joining the server.",
},
BroadcastChatLeave =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtLeave. Use for players leaving the server.",
},
BroadcastChatSuccess =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtSuccess. Use for success messages.",
},
BroadcastChatWarning =
{
Params =
{
{
Name = "MessageText",
Type = "string",
},
},
Notes = "Broadcasts the specified message to all players, with its message type set to mtWarning. Use for concerning events, such as plugin reload etc.",
},
BroadcastPlayerListsHeaderFooter =
{
Params =
{
{
Type = "cCompositeChat",
Name = "Header",
},
{
Type = "cCompositeChat",
Name = "Footer",
},
},
Desc = "Broadcasts the header and footer of the player list to all players.",
},
DoWithPlayerByUUID =
{
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is the player with the uuid, calls the CallbackFunction with the {{cPlayer}} parameter representing the player. The CallbackFunction has the following signature:
function Callback({{cPlayer|Player}})
The function returns false if the player was not found, or whatever bool value the callback returned if the player was found.",
},
FindAndDoWithPlayer =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the given callback function for the player with the name best matching the name string provided. This function is case-insensitive and will match partial names. Returns false if player not found or there is ambiguity, true otherwise. The CallbackFunction has the following signature:
function Callback({{cPlayer|Player}})
",
},
ForEachPlayer =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the given callback function for each player. The callback function has the following signature:
function Callback({{cPlayer|cPlayer}})
",
},
ForEachWorld =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the given callback function for each world. The callback function has the following signature:
function Callback({{cWorld|cWorld}})
. Returns false if a callback aborts, otherwise true.",
},
Get =
{
IsStatic = true,
Returns =
{
{
Type = "cRoot",
},
},
Notes = "Returns the one and only cRoot object.",
},
GetBrewingRecipe =
{
IsStatic = true,
Params =
{
{
Name = "Bottle",
Type = "cItem",
},
{
Name = "Ingredient",
Type = "cItem",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the result item, if a recipe has been found to brew the Ingredient into Bottle. If no recipe is found, returns no value.",
},
GetBuildCommitID =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "For official builds (Travis CI / Jenkins) it returns the exact commit hash used for the build. For unofficial local builds, returns the approximate commit hash (since the true one cannot be determined), formatted as \"approx: <CommitHash>\".",
},
GetBuildDateTime =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "For official builds (Travic CI / Jenkins) it returns the date and time of the build. For unofficial local builds, returns the approximate datetime of the commit (since the true one cannot be determined), formatted as \"approx: <DateTime-iso8601>\".",
},
GetBuildID =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "For official builds (Travis CI / Jenkins) it returns the unique ID of the build, as recognized by the build system. For unofficial local builds, returns the string \"Unknown\".",
},
GetBuildSeriesName =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "For official builds (Travis CI / Jenkins) it returns the series name of the build (for example \"Cuberite Windows x64 Master\"). For unofficial local builds, returns the string \"local build\".",
},
GetCraftingRecipes =
{
Returns =
{
{
Type = "cCraftingRecipe",
},
},
Notes = "Returns the CraftingRecipes object",
},
GetDefaultWorld =
{
Returns =
{
{
Type = "cWorld",
},
},
Notes = "Returns the world object from the default world.",
},
GetFurnaceFuelBurnTime =
{
IsStatic = true,
Params =
{
{
Name = "Fuel",
Type = "cItem",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks for how long the item would fuel a furnace. Returns zero if not a fuel.",
},
GetFurnaceRecipe =
{
IsStatic = true,
Params =
{
{
Name = "InItem",
Type = "cItem",
},
},
Returns =
{
{
Name = "OutItem",
Type = "cItem",
},
{
Name = "NumTicks",
Type = "number",
},
{
Name = "InItem",
Type = "cItem",
},
},
Notes = "Returns the furnace recipe for smelting the specified input. If a recipe is found, returns the smelted result, the number of ticks required for the smelting operation, and the input consumed (note that Cuberite supports smelting M items into N items and different smelting rates). If no recipe is found, returns no value.",
},
GetPhysicalRAMUsage =
{
IsStatic = true,
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of physical RAM that the entire Cuberite process is using, in KiB. Negative if the OS doesn't support this query.",
},
GetPluginManager =
{
Returns =
{
{
Type = "cPluginManager",
},
},
Notes = "Returns the cPluginManager object.",
},
GetProtocolVersionTextFromInt =
{
IsStatic = true,
Params =
{
{
Name = "ProtocolVersionNumber",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the Minecraft client version from the given Protocol version number. If there is no version found, it returns 'Unknown protocol (Number)'",
},
GetServer =
{
Returns =
{
{
Type = "cServer",
},
},
Notes = "Returns the cServer object.",
},
GetServerUpTime =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the uptime of the server in seconds.",
},
GetTotalChunkCount =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of loaded chunks.",
},
GetVirtualRAMUsage =
{
IsStatic = true,
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of virtual RAM that the entire Cuberite process is using, in KiB. Negative if the OS doesn't support this query.",
},
GetWebAdmin =
{
Returns =
{
{
Type = "cWebAdmin",
},
},
Notes = "Returns the cWebAdmin object.",
},
GetWorld =
{
Params =
{
{
Name = "WorldName",
Type = "string",
},
},
Returns =
{
{
Type = "cWorld",
},
},
Notes = "Returns the cWorld object of the given world. It returns nil if there is no world with the given name.",
},
QueueExecuteConsoleCommand =
{
Params =
{
{
Name = "Message",
Type = "string",
},
},
Notes = "Queues a console command for execution through the cServer class. The command will be executed in the tick thread. The command's output will be sent to console.",
},
SaveAllChunks =
{
Notes = "Saves all the chunks in all the worlds. Note that the saving is queued on each world's tick thread and this functions returns before the chunks are actually saved.",
},
SetSavingEnabled =
{
Params =
{
{
Name = "SavingEnabled",
Type = "boolean",
},
},
Notes = "Sets whether saving chunk data is enabled for all worlds. If disabled, dirty chunks will stay in memory forever, which can cause performance and stability issues.",
},
},
AdditionalInfo =
{
{
Header = "Querying a furnace recipe",
Contents = [[
To find the furnace recipe for an item, use the following code (adapted from the Debuggers plugin's /fr command):
local HeldItem = a_Player:GetEquippedItem();
local Out, NumTicks, In = cRoot:GetFurnaceRecipe(HeldItem); -- Note STATIC call - no need for a Get()
if (Out ~= nil) then
-- There is a recipe, list it:
a_Player:SendMessage(
"Furnace turns " .. ItemToFullString(In) ..
" to " .. ItemToFullString(Out) ..
" in " .. NumTicks .. " ticks (" ..
tostring(NumTicks / 20) .. " seconds)."
);
else
-- No recipe found
a_Player:SendMessage("There is no furnace recipe that would smelt " .. ItemToString(HeldItem));
end
]],
},
},
},
cScoreboard =
{
Desc = [[
This class manages the objectives and teams of a single world.
]],
Functions =
{
AddPlayerScore =
{
Params =
{
{
Name = "Name",
Type = "string",
},
{
Name = "Type",
Type = "",
},
{
Name = "Value",
Type = "",
},
},
Notes = "Adds a value to all player scores of the specified objective type.",
},
ForEachObjective =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each objective in the scoreboard. Returns true if all objectives have been processed (including when there are zero objectives), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature:
function Callback({{cObjective|Objective}})
The callback should return false or no value to continue with the next objective, or true to abort the enumeration.",
},
ForEachTeam =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each team in the scoreboard. Returns true if all teams have been processed (including when there are zero teams), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature:
function Callback({{cObjective|Objective}})
The callback should return false or no value to continue with the next team, or true to abort the enumeration.",
},
GetNumObjectives =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the nuber of registered objectives.",
},
GetNumTeams =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of registered teams.",
},
GetObjective =
{
Params =
{
{
Name = "string",
Type = "string",
},
},
Returns =
{
{
Type = "cObjective",
},
},
Notes = "Returns the objective with the specified name.",
},
GetObjectiveIn =
{
Params =
{
{
Name = "DisplaySlot",
Type = "",
},
},
Returns =
{
{
Type = "cObjective",
},
},
Notes = "Returns the objective in the specified display slot. Can be nil.",
},
GetTeam =
{
Params =
{
{
Name = "TeamName",
Type = "string",
},
},
Returns =
{
{
Type = "cTeam",
},
},
Notes = "Returns the team with the specified name.",
},
GetTeamNames =
{
Returns =
{
{
Type = "table",
},
},
Notes = "Returns the names of all teams, as an array-table of strings",
},
RegisterObjective =
{
Params =
{
{
Name = "Name",
Type = "string",
},
{
Name = "DisplayName",
Type = "string",
},
{
Name = "Type",
Type = "",
},
},
Returns =
{
{
Type = "cObjective",
},
},
Notes = "Registers a new scoreboard objective. Returns the {{cObjective}} instance, nil on error.",
},
RegisterTeam =
{
Params =
{
{
Name = "Name",
Type = "string",
},
{
Name = "DisplayName",
Type = "string",
},
{
Name = "Prefix",
Type = "",
},
{
Name = "Suffix",
Type = "",
},
},
Returns =
{
{
Type = "cTeam",
},
},
Notes = "Registers a new team. Returns the {{cTeam}} instance, nil on error. For example if the team already exists.",
},
RemoveObjective =
{
Params =
{
{
Name = "Name",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the objective with the specified name. Returns true if operation was successful.",
},
RemoveTeam =
{
Params =
{
{
Name = "TeamName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the team with the specified name. Returns true if operation was successful.",
},
SetDisplay =
{
Params =
{
{
Name = "Name",
Type = "string",
},
{
Name = "DisplaySlot",
Type = "",
},
},
Notes = "Updates the currently displayed objective.",
},
},
Constants =
{
dsCount =
{
Notes = "",
},
dsList =
{
Notes = "",
},
dsName =
{
Notes = "",
},
dsSidebar =
{
Notes = "",
},
},
},
cServer =
{
Desc = [[
This class manages all the client connections internally. In the API layer, it allows to get and set
the general properties of the server, such as the description and max players.
It used to support broadcasting chat messages to all players, this functionality has been moved to
{{cRoot}}:BroadcastChat().
]],
Functions =
{
DoesAllowMultiLogin =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if players can log in multiple times from the same account (normally used for debugging), false if only one player per name is allowed.",
},
GetDescription =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the server description set in the settings.ini.",
},
GetShutdownMessage =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the shutdown message set in the settings.ini.",
},
GetMaxPlayers =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the max amount of players who can join the server.",
},
GetNumPlayers =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of players online.",
},
GetServerID =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the ID of the server?",
},
IsHardcore =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the server is hardcore (players get banned on death).",
},
IsPlayerInQueue =
{
Params =
{
{
Name = "Username",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified player is queued to be transferred to a World.",
},
RegisterForgeMod =
{
Params =
{
{
Name = "ModName",
Type = "string",
},
{
Name = "ModVersion",
Type = "string",
},
{
Name = "ProtocolVersionNumber",
Type = "number",
},
},
Notes = "Add a Forge mod name/version to the server ping list.",
},
ScheduleTask =
{
Params =
{
{
Name = "DelayTicks",
Type = "number",
},
{
Name = "TaskFunction",
Type = "function",
},
},
Notes = "Queues the specified function to be executed in the server's tick thread after a the specified number of ticks. This enables operations to be queued for execution in the future. The function signature is
function({{cServer|Server}})
All return values from the function are ignored. Note that it is unsafe to store references to Cuberite objects, such as entities, across from the caller to the task handler function; store the EntityID instead.",
},
SetMaxPlayers =
{
Params =
{
{
Name = "MaxPlayers",
Type = "number",
},
},
Notes = "Sets the max amount of players who can join.",
},
ShouldAuthenticate =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the server is set to authenticate players (\"online mode\").",
},
UnregisterForgeMod =
{
Params =
{
{
Name = "ModName",
Type = "string",
},
{
Name = "ProtocolVersionNumber",
Type = "number",
},
},
Notes = "Remove a Forge mod name/version from the server ping list.",
},
},
},
cStringCompression =
{
Desc = [[
Provides functions to compress or decompress string
All functions in this class are static, so they should be called in the dot convention:
local CompressedString = cStringCompression.CompressStringGZIP("DataToCompress")
]],
Functions =
{
CompressStringGZIP =
{
IsStatic = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Compresses data in a string using GZIP",
},
CompressStringZLIB =
{
IsStatic = true,
Params =
{
{
Name = "Data",
Type = "string",
},
{
Name = "factor",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Compresses data in a string using ZLIB. Factor 0 is no compression and factor 9 is maximum compression.",
},
InflateString =
{
IsStatic = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Uncompresses a string using Inflate",
},
UncompressStringGZIP =
{
IsStatic = true,
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Uncompress a string using GZIP",
},
UncompressStringZLIB =
{
IsStatic = true,
Params =
{
{
Name = "Data",
Type = "string",
},
{
Name = "UncompressedLength",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Uncompresses Data using ZLIB",
},
},
},
cTeam =
{
Desc = [[
This class manages a single player team.
]],
Functions =
{
AddPlayer =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Adds a player to this team. Returns true if the operation was successful.",
},
AllowsFriendlyFire =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether team friendly fire is allowed.",
},
CanSeeFriendlyInvisible =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether players can see invisible teammates.",
},
GetDisplayName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the display name of the team.",
},
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the internal name of the team.",
},
GetNumPlayers =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of registered players.",
},
GetPrefix =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the prefix prepended to the names of the members of this team.",
},
GetSuffix =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the suffix appended to the names of the members of this team.",
},
HasPlayer =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the specified player is a member of this team.",
},
RemovePlayer =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Removes the player with the specified name from this team. Returns true if the operation was successful.",
},
Reset =
{
Notes = "Removes all players from this team.",
},
SetCanSeeFriendlyInvisible =
{
Params =
{
{
Name = "CanSeeFriendlyInvisible",
Type = "boolean",
},
},
Notes = "Set whether players can see invisible teammates.",
},
SetDisplayName =
{
Params =
{
{
Name = "DisplayName",
Type = "string",
},
},
Notes = "Sets the display name of this team. (i.e. what will be shown to the players)",
},
SetFriendlyFire =
{
Params =
{
{
Name = "AllowFriendlyFire",
Type = "boolean",
},
},
Notes = "Sets whether team friendly fire is allowed.",
},
SetPrefix =
{
Params =
{
{
Name = "Prefix",
Type = "string",
},
},
Notes = "Sets the prefix prepended to the names of the members of this team.",
},
SetSuffix =
{
Params =
{
{
Name = "Suffix",
Type = "string",
},
},
Notes = "Sets the suffix appended to the names of the members of this team.",
},
},
},
cTNTEntity =
{
Desc = "This class manages a TNT entity.",
Functions =
{
Explode =
{
Notes = "Explode the tnt.",
},
GetFuseTicks =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the fuse ticks - the number of game ticks until the tnt explodes.",
},
SetFuseTicks =
{
Params =
{
{
Name = "TicksUntilExplosion",
Type = "number",
},
},
Notes = "Set the fuse ticks until the tnt will explode.",
},
},
Inherits = "cEntity",
},
cUrlParser =
{
Desc = [[
Provides a parser for generic URLs that returns the individual components of the URL.
Note that all functions are static. Call them by using "cUrlParser:Parse(...)" etc.
]],
Functions =
{
GetDefaultPort =
{
IsStatic = true,
Params =
{
{
Name = "Scheme",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the default port that should be used for the given scheme (protocol). Returns zero if the scheme is not known.",
},
IsKnownScheme =
{
IsStatic = true,
Params =
{
{
Name = "Scheme",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the scheme (protocol) is recognized by the parser.",
},
Parse =
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
},
Returns =
{
{
Name = "Scheme",
Type = "string",
},
{
Name = "Username",
Type = "string",
},
{
Name = "Password",
Type = "string",
},
{
Name = "Host",
Type = "string",
},
{
Name = "Port",
Type = "number",
},
{
Name = "Path",
Type = "string",
},
{
Name = "Query",
Type = "string",
},
{
Name = "Fragment",
Type = "string",
},
},
Notes = "Returns the individual parts of the URL. Parts that are not explicitly specified in the URL are empty, the default port for the scheme is used. If parsing fails, the function returns nil and an error message.",
},
ParseAuthorityPart =
{
IsStatic = true,
Params =
{
{
Name = "AuthPart",
Type = "string",
},
},
Returns =
{
{
Name = "Username",
Type = "string",
},
{
Name = "Password",
Type = "string",
},
{
Name = "Host",
Type = "string",
},
{
Name = "Port",
Type = "number",
},
},
Notes = "Parses the Authority part of the URL. Parts that are not explicitly specified in the AuthPart are returned empty, the port is returned zero. If parsing fails, the function returns nil and an error message.",
},
UrlDecode =
{
IsStatic = true,
Params =
{
{
Name = "Text",
Type = "string",
},
},
Returns =
{
{
Name = "Decoded",
Type = "string",
},
},
Notes = "Returns the Text, URL-decoded. Returns nil if there is a problem while decoding (invalid input).",
},
UrlEncode =
{
IsStatic = true,
Params =
{
{
Name = "Text",
Type = "string",
},
},
Returns =
{
{
Name = "Encoded",
Type = "string",
},
},
Notes = "Returns the Text, URL-encoded.",
},
},
AdditionalInfo =
{
{
Header = "Code example",
Contents = [[
The following code fragment uses the cUrlParser to parse an URL string into its components, and
prints those components out:
local Scheme, Username, Password, Host, Port, Path, Query, Fragment = cUrlParser:Parse(
"http://anonymous:user@example.com@ftp.cuberite.org:9921/releases/2015/?sort=date#files"
)
if not(Scheme) then
-- Parsing failed, the second returned value (in Username) is the error message:
LOG(" Error: " .. (Username or ""))
else
LOG(" Scheme = " .. Scheme) -- "http"
LOG(" Username = " .. Username) -- "anonymous"
LOG(" Password = " .. Password) -- "user@example.com"
LOG(" Host = " .. Host) -- "ftp.cuberite.org"
LOG(" Port = " .. Port) -- 9921
LOG(" Path = " .. Path) -- "releases/2015/"
LOG(" Query = " .. Query) -- "sort=date"
LOG(" Fragment = " .. Fragment) -- "files"
end
]],
},
},
},
cUUID =
{
Desc = [[
Class representing a Universally Unique Identifier.
Note that all Cuberite's API functions that take a cUUID parameter will also
accept a string in its place, as long as that string can be converted to a cUUID
(using the {{#FromString_1|cUUID:FromString}} function).
]],
Functions =
{
constructor =
{
Returns =
{
{
Type = "cUUID",
},
},
Notes = "Constructs a nil-valued UUID (all zeros)",
},
Compare =
{
Params =
{
{
Name = "Other",
Type = "cUUID",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = [[
Compares this UUID with the specified Other UUID, Returns:
0 when equal to Other,
< 0 when less than Other,
> 0 when greater than Other
]],
},
IsNil =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this contains the \"nil\" UUID with all bits set to 0",
},
FromString =
{
Params =
{
{
Name = "StringUUID",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Tries to interpret the string as a short or long form UUID and assign from it. On error, returns false and does not set the value.",
},
ToShortString =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Converts the UUID to a short form string (i.e without dashes).",
},
ToLongString =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Converts the UUID to a long form string (i.e with dashes).",
},
Version =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the version number of the UUID.",
},
Variant =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the variant number of the UUID",
},
GenerateVersion3 =
{
IsStatic = true,
Params =
{
{
Name = "Name",
Type = "string",
},
},
Returns =
{
{
Type = "cUUID",
},
},
Notes = "Generates a version 3, variant 1 UUID based on the md5 hash of Name."
},
},
},
cWindow =
{
Desc = [[
This class is the common ancestor for all window classes used by Cuberite. It is inherited by the
{{cLuaWindow|cLuaWindow}} class that plugins use for opening custom windows. It is planned to be
used for window-related hooks in the future. It implements the basic functionality of any
window.
Note that one cWindow object can be used for multiple players at the same time, and therefore the
slot contents are player-specific (e. g. crafting grid, or player inventory). Thus the GetSlot() and
SetSlot() functions need to have the {{cPlayer|cPlayer}} parameter that specifies the player for
whom the contents are to be queried.
Windows also have numeric properties, these are used to set the progressbars for furnaces or the XP
costs for enchantment tables.
]],
Functions =
{
GetSlot =
{
Params =
{
{
Name = "Player",
Type = "cPlayer",
},
{
Name = "SlotNumber",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item at the specified slot for the specified player. Returns nil and logs to server console on error.",
},
GetWindowID =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the ID of the window, as used by the network protocol",
},
GetWindowTitle =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the window title that will be displayed to the player",
},
GetWindowType =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the type of the window, one of the constants in the table above",
},
GetWindowTypeName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the textual representation of the window's type, such as \"minecraft:chest\".",
},
IsSlotInPlayerHotbar =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified slot number is in the player hotbar",
},
IsSlotInPlayerInventory =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified slot number is in the player's main inventory or in the hotbar. Note that this returns false for armor slots!",
},
IsSlotInPlayerMainInventory =
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified slot number is in the player's main inventory",
},
SetProperty =
{
Params =
{
{
Name = "PropertyID",
Type = "number",
},
{
Name = "PropertyValue",
Type = "number",
},
{
Name = "Player",
Type = "cPlayer",
IsOptional = true,
},
},
Notes = "Updates a numerical property associated with the window. Typically used for furnace progressbars. Sends the UpdateWindowProperty packet to the specified Player, or to all current clients of the window if Player is not specified.",
},
SetSlot =
{
Params =
{
{
Name = "Player",
Type = "cPlayer",
},
{
Name = "SlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the contents of the specified slot for the specified player. Ignored if the slot number is invalid",
},
SetWindowTitle =
{
Params =
{
{
Name = "WindowTitle",
Type = "string",
},
},
Notes = "Sets the window title that will be displayed to the player",
},
},
Constants =
{
wtAnimalChest =
{
Notes = "A horse or donkey window",
},
wtAnvil =
{
Notes = "An anvil window",
},
wtBeacon =
{
Notes = "A beacon window",
},
wtBrewery =
{
Notes = "A brewing stand window",
},
wtChest =
{
Notes = "A {{cChestEntity|chest}} or doublechest window",
},
wtDropSpenser =
{
Notes = "A {{cDropperEntity|dropper}} or a {{cDispenserEntity|dispenser}} window",
},
wtEnchantment =
{
Notes = "An enchantment table window",
},
wtFurnace =
{
Notes = "A {{cFurnaceEntity|furnace}} window",
},
wtHopper =
{
Notes = "A {{cHopperEntity|hopper}} window",
},
wtInventory =
{
Notes = "An inventory window",
},
wtNPCTrade =
{
Notes = "A villager trade window",
},
wtWorkbench =
{
Notes = "A workbench (crafting table) window",
},
}, -- Constants
ConstantGroups =
{
WindowType =
{
Include = { "wt.*" },
}
}, -- ConstantGroups
},
StatisticsManager =
{
Desc = [[
This class provides a store for various types of player statistics. The store will be read and sent to the client when the Statistics button is pressed.
]],
Variables =
{
Custom =
{
Type = "Map of {{CustomStatistic}} to number",
Notes = "Gets or sets the value of a custom statistic.",
},
},
AdditionalInfo =
{
{
Header = "Example usage",
Contents = [[
Each store is a table, keyed by the statistic that the entry tracks, with value typically representing the number of times the event happened:
function ModifyPlayerFurnaceInteractions(Player)
local Statistics = Player:GetStatistics()
if (Statistics.Custom[CustomStatistic.WalkOneCm] > 10) then
Statistics.Custom[CustomStatistic.InteractWithFurnace] = 1337
end
-- Next time the player presses Statistics they will see the updated value for furnace interactions.
end
]],
},
},
},
BannerPattern =
{
Desc = [[
An enumeration of banner patterns.
]],
Constants =
{
BottomStripe =
{
Notes = "A base pattern."
},
TopStripe =
{
Notes = "A chief pattern."
},
LeftStripe =
{
Notes = "A pale dexter pattern."
},
RightStripe =
{
Notes = "A pale sinister pattern."
},
CenterStripeVertical =
{
Notes = "A pale pattern."
},
MiddleStripeHorizontal =
{
Notes = "A fess pattern."
},
DownRightStripe =
{
Notes = "A bend pattern."
},
DownLeftStripe =
{
Notes = "A bend sinister pattern."
},
SmallVerticalStripes =
{
Notes = "A paly pattern."
},
DiagonalCross =
{
Notes = "A saltire pattern."
},
SquareCross =
{
Notes = "A cross pattern."
},
LeftOfDiagonal =
{
Notes = "A per bend sinister pattern."
},
RightOfUpsideDownDiagonal =
{
Notes = "A per bend pattern."
},
LeftOfUpsideDownDiagonal =
{
Notes = "A per bend inverted pattern."
},
RightOfDiagonal =
{
Notes = "A per bend sinister inverted pattern."
},
VerticalHalfLeft =
{
Notes = "A per pale pattern."
},
VerticalHalfRight =
{
Notes = "A per pale inverted pattern."
},
HorizontalHalfTop =
{
Notes = "A per fess pattern."
},
HorizontalHalfBottom =
{
Notes = "A per fess inverted pattern."
},
BottomLeftCorner =
{
Notes = "A base dexter canton pattern."
},
BottomRightCorner =
{
Notes = "A base sinister canton pattern."
},
TopLeftCorner =
{
Notes = "A chief dexter canton pattern."
},
TopRightCorner =
{
Notes = "A chief sinister canton pattern."
},
BottomTriangle =
{
Notes = "A chevron pattern."
},
TopTriangle =
{
Notes = "An inverted chevron pattern."
},
BottomTriangleSawtooth =
{
Notes = "A base indented pattern."
},
TopTriangleSawtooth =
{
Notes = "A chief indented pattern."
},
MiddleCircle =
{
Notes = "A roundel pattern."
},
MiddleRhombus =
{
Notes = "A lozenge pattern."
},
Border =
{
Notes = "A bordure pattern."
},
CurlyBorder =
{
Notes = "A bordure indented pattern."
},
Brick =
{
Notes = "A field masoned pattern."
},
Gradient =
{
Notes = "A gradient pattern."
},
GradientUpsideDown =
{
Notes = "A base gradient pattern."
},
Creeper =
{
Notes = "A creeper charge pattern."
},
Skull =
{
Notes = "A skull charge pattern."
},
Flower =
{
Notes = "A flower charge pattern."
},
Mojang =
{
Notes = "A... thing."
},
Globe =
{
Notes = "A globe."
},
Piglin =
{
Notes = "A snoot."
},
},
},
BossBarColor =
{
Desc = [[
An enumeration of boss bar display colours which can be used with {{cClientHandle#SendBossBarAdd|SendBossBarAdd}}.
]],
Constants =
{
Pink =
{
Notes = "A pink boss bar."
},
Blue =
{
Notes = "A blue boss bar."
},
Red =
{
Notes = "A red boss bar."
},
Green =
{
Notes = "A green boss bar."
},
Yellow =
{
Notes = "A yellow boss bar."
},
Purple =
{
Notes = "A purple boss bar."
},
White =
{
Notes = "A white boss bar."
},
},
},
BossBarDivisionType =
{
Desc = [[
An enumeration of boss bar division types which can be used with {{cClientHandle#SendBossBarAdd|SendBossBarAdd}}.
These constants control the number of notches the bar itself renders with.
]],
Constants =
{
None =
{
Notes = "A completely smooth boss bar."
},
SixNotches =
{
Notes = "A six-notch'd boss bar."
},
TenNotches =
{
Notes = "A ten-notch'd boss bar."
},
TwelveNotches =
{
Notes = "A twelve notch'd boss bar."
},
TwentyNotches =
{
Notes = "A twenty notch'd boss bar."
},
},
},
EffectID =
{
Desc = [[
An enumeration of sound and particle effects which can be used with
{{cWorld#BroadcastSoundParticleEffect|BroadcastSoundParticleEffect}}.
]],
Constants =
{
SFX_RANDOM_DISPENSER_DISPENSE =
{
Notes = "Sound of droper/dispenser releasing an item",
},
SFX_RANDOM_DISPENSER_DISPENSE_FAIL =
{
Notes = "Sound of a droper/dispenser activated without items",
},
SFX_RANDOM_DISPENSER_SHOOT =
{
Notes = "Sound of a dispenser shooting",
},
SFX_RANDOM_ENDER_EYE_LAUNCH =
{
Notes = "Sound of an ender eye launch"
},
SFX_RANDOM_FIREWORK_SHOT =
{
Notes = "Sound of a firework shot",
},
SFX_RANDOM_IRON_DOOR_OPEN =
{
Notes = "Sound of an iron door opening",
},
SFX_RANDOM_WOODEN_DOOR_OPEN =
{
Notes = "Sound of a wooden door opening"
},
SFX_RANDOM_WOODEN_TRAPDOOR_OPEN =
{
Notes = "Sound of a wooden trapdoor opening"
},
SFX_RANDOM_FENCE_GATE_OPEN =
{
Notes = "Sound of a fence gate opening",
},
SFX_RANDOM_FIRE_EXTINGUISH =
{
Notes = "Sound of a fire extinguishing",
},
SFX_RANDOM_PLAY_MUSIC_DISC =
{
Notes = "Starts playing a music disc. Needs an accompanting music disc ID",
},
SFX_RANDOM_IRON_DOOR_CLOSE =
{
Notes = "Sound of an iron door closing",
},
SFX_RANDOM_WOODEN_DOOR_CLOSE =
{
Notes = "Sound of a wooden door closing",
},
SFX_RANDOM_WOODEN_TRAPDOOR_CLOSE =
{
Notes = "Sound of a trapdoor closing",
},
SFX_RANDOM_FENCE_GATE_CLOSE =
{
Notes = "Sound of a fence gate closing",
},
SFX_MOB_GHAST_WARN =
{
Notes = "Sound of a ghast warning cry",
},
SFX_MOB_GHAST_SHOOT =
{
Notes = "Sound of a ghast shooting",
},
SFX_MOB_ENDERDRAGON_SHOOT =
{
Notes = "Sound of the enderdragon shooting",
},
SFX_MOB_BLAZE_SHOOT =
{
Notes = "Sound of a blaze shooting",
},
SFX_MOB_ZOMBIE_WOOD =
{
Notes = "Sound of a zombie attacking a wooden door",
},
SFX_MOB_ZOMBIE_METAL =
{
Notes = "Sound of a zombie attacking a metal door",
},
SFX_MOB_ZOMBIE_WOOD_BREAK =
{
Notes = "Sound of a zombie breaking a wooden door",
},
SFX_MOB_WITHER_BREAK_BLOCK =
{
Notes = "Sound of a wither breaking blocks",
},
SFX_MOB_WITHER_SPAWN =
{
Notes = "Sound of a wither spawning",
},
SFX_MOB_WITHER_SHOOT =
{
Notes = "Sound of a wither shooting",
},
SFX_MOB_BAT_TAKEOFF =
{
Notes = "Sound of a bat taking off",
},
SFX_MOB_ZOMBIE_INFECT =
{
Notes = "Sound of a zombie infecting a villager",
},
SFX_MOB_ZOMBIE_UNFECT =
{
Notes = "Sound of a zombie villager converting to villager",
},
SFX_MOB_ENDERDRAGON_DEATH =
{
Notes = "Sound of the dragon releasing dragon breath",
},
SFX_RANDOM_ANVIL_BREAK =
{
Notes = "Sound of an anvil breaking",
},
SFX_RANDOM_ANVIL_USE =
{
Notes = "Sound of using an anvil",
},
SFX_RANDOM_ANVIL_LAND =
{
Notes = "Sound of a falling anvil landing",
},
SFX_RANDOM_PORTAL_TRAVEL =
{
Notes = "Sound of travelling through a portal",
},
SFX_RANDOM_CHORUS_FLOWER_GROW =
{
Notes = "Sound of a growing chorus flower",
},
SFX_RANDOM_CHORUS_FLOWER_DEATH =
{
Notes = "Sound of a dieing chorus flower",
},
SFX_RANDOM_BREWING_STAND_BREW =
{
Notes = "Sound of an active brewing stand",
},
SFX_RANDOM_IRON_TRAPDOOR_OPEN =
{
Notes = "Sound of an iron trapdoor opening",
},
SFX_RANDOM_IRON_TRAPDOOR_CLOSE =
{
Notes = "Sound of an iron trapdoor closing",
},
PARTICLE_SMOKE =
{
Notes = "Spawns 10 smoke particles, e.g. from a fire. Needs a {{SmokeDirection|SmokeDirection}}",
},
PARTICLE_BLOCK_BREAK =
{
Notes = "Block break particle and sound. Needs a BlockID",
},
PARTICLE_SPLASH_POTION =
{
Notes = "Splash potion particles and glass break sound. Needs a PotionID",
},
PARTICLE_EYE_OF_ENDER =
{
Notes = "Eye of ender entity break particles and sound",
},
PARTICLE_MOBSPAWN =
{
Notes = "Mob spawn particle effect: smoke and flames",
},
PARTICLE_HAPPY_VILLAGER =
{
Notes = "Happy villager/bonemeal particles. Number of particles may be given or 0 for default of 15",
},
PARTICLE_DRAGON_BREATH =
{
Notes = "Dragon breath particle effect",
},
PARTICLE_END_GATEWAY_SPAWN =
{
Notes = "End gateway spawn particle effect",
},
PARTICLE_ENDERDRAGON_GROWL =
{
Notes = "Ender dragon growl particle effect",
},
},
},
SmokeDirection =
{
Desc = [[
An enumeration of the direction spawned smoke will drift in as it floats up.
]],
Constants =
{
SOUTH_EAST =
{
Notes = "Smoke drifts south-east",
},
SOUTH =
{
Notes = "Smoke drifts south",
},
SOUTH_WEST =
{
Notes = "Smoke drifts south-west",
},
EAST =
{
Notes = "Smoke drifts east",
},
CENTRE =
{
Notes = "Smoke does not drift",
},
WEST =
{
Notes = "Smoke drifts west",
},
NORTH_EAST =
{
Notes = "Smoke drifts north-east",
},
NORTH =
{
Notes = "Smoke drifts north",
},
NORTH_WEST =
{
Notes = "Smoke drifts west",
},
}
},
CustomStatistic =
{
Desc = [[
An enumeration of statistics of the custom type to be used with the {{StatisticsManager#Custom|Custom}} statistics store.
]],
Constants =
{
AnimalsBred =
{
Notes = "The number of times the player bred two mobs.",
},
AviateOneCm =
{
Notes = "The total distance travelled by elytra.",
},
BellRing =
{
Notes = "The number of times the player has rung a bell.",
},
BoatOneCm =
{
Notes = "The total distance travelled by boats.",
},
CleanArmor =
{
Notes = "The number of dyed leather armors washed with a cauldron.",
},
CleanBanner =
{
Notes = "The number of banner patterns washed with a cauldron.",
},
CleanShulkerBox =
{
Notes = "The number of times the player has washed a Shulker Box with a cauldron.",
},
ClimbOneCm =
{
Notes = "The total distance travelled up ladders or vines.",
},
CrouchOneCm =
{
Notes = "The total distance walked while sneaking.",
},
DamageAbsorbed =
{
Notes = "The amount of damage the player has absorbed in tenths of 1.",
},
DamageBlockedByShield =
{
Notes = "The amount of damage the player has blocked with a shield in tenths of 1.",
},
DamageDealt =
{
Notes = "The amount of damage the player has dealt in tenths 1. Includes only melee attacks.",
},
DamageDealtAbsorbed =
{
Notes = "The amount of damage the player has dealt that was absorbed, in tenths of 1.",
},
DamageDealtResisted =
{
Notes = "The amount of damage the player has dealt that was resisted, in tenths of 1.",
},
DamageResisted =
{
Notes = "The amount of damage the player has resisted in tenths of 1.",
},
DamageTaken =
{
Notes = "The amount of damage the player has taken in tenths of 1.",
},
Deaths =
{
Notes = "The number of times the player died.",
},
Drop =
{
Notes = "The number of items the drop key was pressed.",
},
EatCakeSlice =
{
Notes = "The number of cake slices eaten.",
},
EnchantItem =
{
Notes = "The number of items enchanted.",
},
FallOneCm =
{
Notes = "The total distance fallen.",
},
FillCauldron =
{
Notes = "The number of times the player filled cauldrons with water buckets.",
},
FishCaught =
{
Notes = "The number of fish caught.",
},
FlyOneCm =
{
Notes = "The total distance flown.",
},
HorseOneCm =
{
Notes = "The total distance travelled by horses.",
},
InspectDispenser =
{
Notes = "The number of times interacted with dispensers.",
},
InspectDropper =
{
Notes = "The number of times interacted with droppers.",
},
InspectHopper =
{
Notes = "The number of times interacted with hoppers.",
},
InteractWithAnvil =
{
Notes = "The number of times interacted with anvils.",
},
InteractWithBeacon =
{
Notes = "The number of times interacted with beacons.",
},
InteractWithBlastFurnace =
{
Notes = "The number of times interacted with Blast Furnaces.",
},
InteractWithBrewingstand =
{
Notes = "The number of times interacted with brewing stands.",
},
InteractWithCampfire =
{
Notes = "The number of times interacted with campfires.",
},
InteractWithCartographyTable =
{
Notes = "The number of times interacted with cartography tables.",
},
InteractWithCraftingTable =
{
Notes = "The number of times interacted with crafting tables.",
},
InteractWithFurnace =
{
Notes = "The number of times interacted with furnaces.",
},
InteractWithGrindstone =
{
Notes = "The number of times interacted with grindstones.",
},
InteractWithLectern =
{
Notes = "The number of times interacted with lecterns.",
},
InteractWithLoom =
{
Notes = "The number of times interacted with looms.",
},
InteractWithSmithingTable =
{
Notes = "The number of times interacted with smithing tables.",
},
InteractWithSmoker =
{
Notes = "The number of times interacted with smokers.",
},
InteractWithStonecutter =
{
Notes = "The number of times interacted with stonecutters.",
},
JunkFished =
{
Notes = "The amount of junk fished.",
},
Jump =
{
Notes = "The number of jumps performed.",
},
LeaveGame =
{
Notes = "The number of times disconnected from the server.",
},
MinecartOneCm =
{
Notes = "The total distance travelled by minecarts.",
},
MobKills =
{
Notes = "The number of mobs the player killed.",
},
OpenBarrel =
{
Notes = "The number of times the player has opened a barrel.",
},
OpenChest =
{
Notes = "The number of times the player opened chests.",
},
OpenEnderchest =
{
Notes = "The number of times the player opened ender chests.",
},
OpenShulkerBox =
{
Notes = "The number of times the player has opened a shulker box.",
},
PigOneCm =
{
Notes = "The total distance travelled by pigs via saddles.",
},
PlayNoteblock =
{
Notes = "The number of note blocks hit.",
},
PlayOneMinute =
{
Notes = "The total time played.",
},
PlayRecord =
{
Notes = "The number of music discs played on a jukebox.",
},
PlayerKills =
{
Notes = "The number of players the player directly killed.",
},
PotFlower =
{
Notes = "The number of plants potted into flower pots.",
},
RaidTrigger =
{
Notes = "The number of times the player has triggered a raid.",
},
RaidWin =
{
Notes = "The number of times the player has won a raid.",
},
SleepInBed =
{
Notes = "The number of times the player has slept in a bed.",
},
SneakTime =
{
Notes = "The time the player has held down the sneak button.",
},
SprintOneCm =
{
Notes = "The total distance sprinted.",
},
StriderOneCm =
{
Notes = "The total distance travelled by striders via saddles.",
},
SwimOneCm =
{
Notes = "The total distance swum.",
},
TalkedToVillager =
{
Notes = "The number of times interacted with villagers (opened the trading GUI).",
},
TargetHit =
{
Notes = "The number of times the player has shot a target block.",
},
TimeSinceDeath =
{
Notes = "The time since the player's last death.",
},
TimeSinceRest =
{
Notes = "The time since the player's last rest. This is used to spawn phantoms.",
},
TradedWithVillager =
{
Notes = "The number of times traded with villagers.",
},
TreasureFished =
{
Notes = "The number of treasures fished.",
},
TriggerTrappedChest =
{
Notes = "The number of times the player opened trapped chests.",
},
TuneNoteblock =
{
Notes = "The number of times interacted with note blocks.",
},
UseCauldron =
{
Notes = "The number of times the player took water from cauldrons with glass bottles.",
},
WalkOnWaterOneCm =
{
Notes = "The distance covered while bobbing up and down over water.",
},
WalkOneCm =
{
Notes = "The total distance walked.",
},
WalkUnderWaterOneCm =
{
Notes = "The total distance walked underwater.",
},
},
},
Globals =
{
Desc = [[
These functions are available directly, without a class instance. Any plugin can call them at any
time.
]],
Functions =
{
AddFaceDirection =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockFace",
Type = "eBlockFace",
},
{
Name = "IsInverse",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Notes = "OBSOLETE, use the vector version instead.",
},
{
Params =
{
{
Name = "Position",
Type = "Vector3i",
},
{
Name = "BlockFace",
Type = "eBlockFace",
},
{
Name = "InvertDirection",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "By default, returns the coordinates adjacent to the specified block through the specified face. If inverted, returns the coordinates adjacent to the opposite face.",
},
},
Base64Decode =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{ Type = "string" },
},
Notes = "Decodes a Base64-encoded string into the raw data.",
},
Base64Encode =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{ Type = "string" },
},
Notes = "Encodes a string into Base64.",
},
BiomeToString =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{ Type = "string" },
},
Notes = "Translates biome enum into biome string. Returns empty string on failure (unknown biome).",
},
BlockFaceToString =
{
Params =
{
{
Name = "eBlockFace",
Type = "eBlockFace",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string representation of the {{Globals#BlockFaces|eBlockFace}} constant. Uses the axis-direction-based names, such as BLOCK_FACE_XP.",
},
BlockStringToType =
{
Params =
{
{
Name = "BlockTypeString",
Type = "string",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the block type parsed from the given string",
},
Clamp =
{
Params =
{
{
Name = "Number",
Type = "number",
},
{
Name = "Min",
Type = "number",
},
{
Name = "Max",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Clamp the number to the specified range.",
},
ClickActionToString =
{
Params =
{
{
Name = "ClickAction",
Type = "eClickAction",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns a string description of the ClickAction enumerated value",
},
DamageTypeToString =
{
Params =
{
{
Name = "DamageType",
Type = "eDamageType",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Converts the {{Globals#eDamageType|DamageType}} to a string representation ",
},
DimensionToString =
{
Params =
{
{
Name = "Dimension",
Type = "eDimension",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Converts an {{Globals#eDimension|eDimension}} to a string value. Returns Overworld on failure.",
},
EscapeString =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns a copy of the string with all quotes and backslashes escaped by a backslash",
},
GetIniItemSet =
{
Params =
{
{
Name = "IniFile",
Type = "cIniFile",
},
{
Name = "SectionName",
Type = "string",
},
{
Name = "KeyName",
Type = "string",
},
{
Name = "DefaultValue",
Type = "string",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item that has been read from the specified INI file value. If the value is not present in the INI file, the DefaultValue is stored in the file and parsed as the result. Returns empty item if the value cannot be parsed. ",
},
GetSnowStartHeight =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{ Type = "number" },
},
Notes = "Returns the height at which snow will start falling in the {{Globals#EMCSBiome|Biome}}. Check functions IsBiomeCold and IsBiomeVeryCold for more informations.",
},
GetTime =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the current OS time, as a unix time stamp (number of seconds since Jan 1, 1970)",
},
IsBiomeCold =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{ Type = "boolean" },
},
Notes = "Returns true if the biome is cold (has snow and snowfall at higher elevations but not at regular heights). Doesn't report Very Cold biomes, use IsBiomeVeryCold() for those.",
},
IsBiomeNoDownfall =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the biome is 'dry', that is, there is no precipitation during rains and storms.",
},
IsBiomeOcean =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the biome is an ocean biome.",
},
IsBiomeVeryCold =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the biome is very cold (has snow on ground everywhere, turns top water to ice, has snowfall instead of rain everywhere). Doesn't report mildly cold biomes (where it snows above certain elevation), use IsBiomeCold() for those.",
},
IsBiomeMountain =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
}
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the biome is mountainous (mutations of the extreme hills biome)."
},
IsBiomeMesa =
{
Params =
{
{
Name = "Biome",
Type = "EMCSBiome",
}
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the biome is a type of Mesa (mutations of the Mesa biome)."
},
IsValidBlock =
{
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if BlockType is a known block type",
},
IsValidItem =
{
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if ItemType is a known item type",
},
ItemToFullString =
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string representation of the item, in the format 'ItemTypeText:ItemDamage * Count'",
},
ItemToString =
{
Params =
{
{
Name = "cItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string representation of the item type",
},
ItemTypeToString =
{
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string representation of ItemType ",
},
LOG =
{
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "SuppressPluginNamePrefix",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Logs a text into the server console and logfile using 'normal' severity (gray text).",
},
{
Params =
{
{
Name = "Message",
Type = "cCompositeChat",
},
{
Name = "SuppressPluginNamePrefix",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console, using a severity defined by the CompositeChat's MessageType.",
},
},
LOGERROR =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "SuppressPluginNamePrefix",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Logs a text into the server console and logfile using 'error' severity (black text on red background).",
},
LOGINFO =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "SuppressPluginNamePrefix",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Logs a text into the server console and logfile using 'info' severity (yellow text).",
},
LOGWARN =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "SuppressPluginNamePrefix",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Logs a text into the server console and logfile using 'warning' severity (red text); OBSOLETE, use LOGWARNING() instead.",
},
LOGWARNING =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "SuppressPluginNamePrefix",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Logs a text into the server console and logfile using 'warning' severity (red text).",
},
md5 =
{
Params =
{
{
Name = "Data",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "OBSOLETE, use the {{cCryptoHash}} functions instead. Converts a string to a raw binary md5 hash.",
},
MirrorBlockFaceY =
{
Params =
{
{
Name = "eBlockFace",
Type = "eBlockFace",
},
},
Returns =
{
{
Type = "eBlockFace",
},
},
Notes = "Returns the {{Globals#BlockFaces|eBlockFace}} that corresponds to the given {{Globals#BlockFaces|eBlockFace}} after mirroring it around the Y axis (or rotating 180 degrees around it).",
},
NoCaseCompare =
{
Params =
{
{
Name = "Value1",
Type = "string",
},
{
Name = "Value2",
Type = "string",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Case-insensitive string comparison; returns 0 if the strings are the same, -1 if Value1 is smaller and 1 if Value2 is smaller",
},
NormalizeAngleDegrees =
{
Params =
{
{
Name = "AngleDegrees",
Type = "number",
},
},
Returns =
{
{
Name = "AngleDegrees",
Type = "number",
},
},
Notes = "Returns the angle, wrapped into the [-180, +180) range.",
},
ReplaceString =
{
Params =
{
{
Name = "full-string",
Type = "string",
},
{
Name = "to-be-replaced-string",
Type = "string",
},
{
Name = "to-replace-string",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Replaces *each* occurence of to-be-replaced-string in full-string with to-replace-string",
},
ReverseBlockFace =
{
Params =
{
{
Name = "BlockFace",
Type = "eBlockFace",
},
},
Returns =
{
{
Type = "eBlockFace",
},
},
Notes = "Returns the reversed {{Globals#eBlockFace|eBlockFace}}.",
},
RotateBlockFaceCCW =
{
Params =
{
{
Name = "eBlockFace",
Type = "eBlockFace",
},
},
Returns =
{
{
Type = "eBlockFace",
},
},
Notes = "Returns the {{Globals#BlockFaces|eBlockFace}} that corresponds to the given {{Globals#BlockFaces|eBlockFace}} after rotating it around the Y axis 90 degrees counter-clockwise.",
},
RotateBlockFaceCW =
{
Params =
{
{
Name = "eBlockFace",
Type = "eBlockFace",
},
},
Returns =
{
{
Type = "eBlockFace",
},
},
Notes = "Returns the {{Globals#BlockFaces|eBlockFace}} that corresponds to the given {{Globals#BlockFaces|eBlockFace}} after rotating it around the Y axis 90 degrees clockwise.",
},
StringSplit =
{
Params =
{
{
Name = "Input",
Type = "string",
},
{
Name = "SeperatorsString",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Seperates string into multiple by splitting every time any of the characters in SeperatorsString is encountered. Returns and array-table of strings.",
},
StringSplitAndTrim =
{
Params =
{
{
Name = "Input",
Type = "string",
},
{
Name = "SeperatorsString",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Seperates string into multiple by splitting every time any of the characters in SeperatorsString is encountered. Each of the separate strings is trimmed (whitespace removed from the beginning and end of the string). Returns an array-table of strings.",
},
StringSplitWithQuotes =
{
Params =
{
{
Name = "Input",
Type = "string",
},
{
Name = "SeperatorsString",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Seperates string into multiple by splitting every time any of the characters in SeperatorsString is encountered. Whitespace wrapped with single or double quotes will be ignored. Returns an array-table of strings.",
},
StringToBiome =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Name = "BiomeType",
Type = "EMCSBiome",
},
},
Notes = "Converts a string representation to a {{Globals#BiomeTypes|BiomeType}} enumerated value. Returns biInvalidBiome if the input is not a recognized biome.",
},
StringToDamageType =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Name = "DamageType",
Type = "eDamageType",
},
},
Notes = "Converts a string representation to a {{Globals#DamageType|DamageType}} enumerated value. Returns -1 if the inupt is not a recognized damage type.",
},
StringToDimension =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Name = "Dimension",
Type = "eDimension",
},
},
Notes = "Converts a string representation to a {{Globals#eDimension|eDimension}} enumerated value. Returns dimNotSet if the input is not a recognized dimension.",
},
StringToItem =
{
Params =
{
{
Name = "StringToParse",
Type = "string",
},
{
Name = "DestItem",
Type = "cItem",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Parses the item specification in the given string and sets it into DestItem; returns true if successful",
},
StringToMobType =
{
Params =
{
{
Name = "MobTypeString",
Type = "string",
},
},
Returns =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Notes = "(DEPRECATED!) Please use cMonster:StringToMobType(). Converts a string representation to an {{Globals#eMonsterType|eMonsterType}} enumerated value",
},
StripColorCodes =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Removes all control codes used by MC for colors and styles",
},
TrimString =
{
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Removes whitespace at both ends of the string",
},
},
Constants =
{
caLeftClick =
{
Notes = "Left click on a slot",
},
caRightClick =
{
Notes = "Right click on a slot",
},
caShiftLeftClick =
{
Notes = "Shift + left click on a slot",
},
caShiftRightClick =
{
Notes = "Shift + right click on a slot",
},
caNumber1 =
{
Notes = "Number key 1",
},
caNumber2 =
{
Notes = "Number key 2",
},
caNumber3 =
{
Notes = "Number key 3",
},
caNumber4 =
{
Notes = "Number key 4",
},
caNumber5 =
{
Notes = "Number key 5",
},
caNumber6 =
{
Notes = "Number key 6",
},
caNumber7 =
{
Notes = "Number key 7",
},
caNumber8 =
{
Notes = "Number key 8",
},
caNumber9 =
{
Notes = "Number key 9",
},
caMiddleClick =
{
Notes = "Middle click, only valid for creative players",
},
caDropKey =
{
Notes = "Drop a single item",
},
caCtrlDropKey =
{
Notes = "Drop a full stack",
},
caLeftClickOutside =
{
Notes = "Left click outside of inventory",
},
caRightClickOutside =
{
Notes = "Right click outside of inventory",
},
caLeftClickOutsideHoldNothing =
{
Notes = "Left click outside inventory holding nothing",
},
caRightClickOutsideHoldNothing =
{
Notes = "Right click outside inventory holding nothing",
},
caLeftPaintBegin =
{
Notes = "Begining of left click paint drag action",
},
caRightPaintBegin =
{
Notes = "Begining of right click paint drag action",
},
caMiddlePaintBegin =
{
Notes = "Begining of middle click paint drag action, only valid for creative players",
},
caLeftPaintProgress =
{
Notes = "Add slot for left click paint drag action",
},
caRightPaintProgress =
{
Notes = "Add slot for right click paint drag action",
},
caMiddlePaintProgress =
{
Notes = "Add slot for middle click paint drag action, only valid for creative players",
},
caLeftPaintEnd =
{
Notes = "End of left click paint drag action",
},
caRightPaintEnd =
{
Notes = "End of right click paint drag action",
},
caMiddlePaintEnd =
{
Notes = "End of middle click paint drag action, only valid for creative players",
},
caDblClick =
{
Notes = "Double click action",
},
caUnknown =
{
Notes = "Unknown click action"
},
dtAdmin =
{
Notes = "Damage applied by an admin command"
},
dtArrow =
{
Notes = "Damage received by being attacked by a projectile, possibly from a mob"
},
dtArrowAttack =
{
Notes = "Damage received by being attacked by a projectile, possibly from a mob"
},
dtAttack =
{
Notes = "Damage recieved by being attacked by a mob"
},
dtBurning =
{
Notes = "Damage from being on fire"
},
dtCacti =
{
Notes = "Damage from contact with a cactus block"
},
dtCactus =
{
Notes = "Damage from contact with a cactus block"
},
dtCactusContact =
{
Notes = "Damage from contact with a cactus block"
},
dtCactuses =
{
Notes = "Damage from contact with a cactus block"
},
dtMagmaContact =
{
Notes = "Damage from contact with a magma block"
},
dtMagma =
{
Notes = "Damage from contact with a magma block"
},
dtDrown =
{
Notes = "Damage received by drowning in water / lava"
},
dtDrowning =
{
Notes = "Damage received by drowning in water / lava"
},
dtEnderPearl =
{
Notes = "Damage received by throwing an ender pearl and being teleported by it"
},
dtEntityAttack =
{
Notes = "Damage recieved by being attacked by a mob"
},
dtEnvironment =
{
Notes = "Damage dealt to mobs from environment: enderman in rain, snow golem in desert"
},
dtExplosion =
{
Notes = "Damage applied by an explosion"
},
dtFall =
{
Notes = "Damage from falling down. Dealt when hitting the ground"
},
dtFalling =
{
Notes = "Damage from falling down. Dealt when hitting the ground"
},
dtFireContact =
{
Notes = "Damage received by standing inside a fire block"
},
dtHunger =
{
Notes = "Damage received from hunger"
},
dtInFire =
{
Notes = "Damage received by standing inside a fire block"
},
dtInVoid =
{
Notes = "Damage received by falling into the Void (Y < 0)"
},
dtLava =
{
Notes = "Damage received by a contact with a lava block"
},
dtLavaContact =
{
Notes = "Damage received by a contact with a lava block"
},
dtLightning =
{
Notes = "Damage from being hit by a lightning strike"
},
dtMob =
{
Notes = "Damage received by being attacked by a mob"
},
dtMobAttack =
{
Notes = "Damage received by being attacked by a mob"
},
dtOnFire =
{
Notes = "Damage from being on fire"
},
dtPawnAttack =
{
Notes = "Damage received by being attacked by a mob"
},
dtPlugin =
{
Notes = "Damage applied by an admin command"
},
dtPoison =
{
Notes = "Damage applied by the poison effect"
},
dtPoisoning =
{
Notes = "Damage applied by the poison effect"
},
dtPotionOfHarming =
{
Notes = "Damage applied by the potion of harming"
},
dtProjectile =
{
Notes = "Damage received by being attacked by a projectile, possibly from a mob"
},
dtRangedAttack =
{
Notes = "Damage received by being attacked by a projectile, possibly from a mob"
},
dtStarvation =
{
Notes = "Damage received from hunger"
},
dtStarving =
{
Notes = "Damage received from hunger"
},
dtSuffocating =
{
Notes = "Damage from suffocating inside a block"
},
dtSuffocation =
{
Notes = "Damage from suffocating inside a block"
},
dtWither =
{
Notes = "Damage from the wither effect"
},
dtWithering =
{
Notes = "Damage from the wither effect"
},
E_BLOCK_ACACIA_DOOR =
{
Notes = "The blocktype for acacia door"
},
E_BLOCK_ACACIA_FENCE =
{
Notes = "The blocktype for acacia fence"
},
E_BLOCK_ACACIA_FENCE_GATE =
{
Notes = "The blocktype for acacia fence gate"
},
E_BLOCK_ACACIA_WOOD_STAIRS =
{
Notes = "The blocktype for acacia wood stairs"
},
E_BLOCK_ACTIVATOR_RAIL =
{
Notes = "The blocktype for activator rail"
},
E_BLOCK_ACTIVE_COMPARATOR =
{
Notes = "The blocktype for active comparator"
},
E_BLOCK_AIR =
{
Notes = "The blocktype for air"
},
E_BLOCK_ANVIL =
{
Notes = "The blocktype for anvil"
},
E_BLOCK_ANVIL_HIGH_DAMAGE =
{
Notes = "The blocktype for anvil high damage"
},
E_BLOCK_ANVIL_LOW_DAMAGE =
{
Notes = "The blocktype for anvil low damage"
},
E_BLOCK_ANVIL_NO_DAMAGE =
{
Notes = "The blocktype for anvil no damage"
},
E_BLOCK_ANVIL_X =
{
Notes = "The blocktype for anvil x"
},
E_BLOCK_ANVIL_Z =
{
Notes = "The blocktype for anvil z"
},
E_BLOCK_BARRIER =
{
Notes = "The blocktype for barrier"
},
E_BLOCK_BEACON =
{
Notes = "The blocktype for beacon"
},
E_BLOCK_BED =
{
Notes = "The blocktype for bed"
},
E_BLOCK_BEDROCK =
{
Notes = "The blocktype for bedrock"
},
E_BLOCK_BED_BED_HEAD =
{
Notes = "The blocktype for bed bed head"
},
E_BLOCK_BED_OCCUPIED =
{
Notes = "The blocktype for bed occupied"
},
E_BLOCK_BED_XM =
{
Notes = "The blocktype for bed xm"
},
E_BLOCK_BED_XP =
{
Notes = "The blocktype for bed xp"
},
E_BLOCK_BED_ZM =
{
Notes = "The blocktype for bed zm"
},
E_BLOCK_BED_ZP =
{
Notes = "The blocktype for bed zp"
},
E_BLOCK_BEETROOTS =
{
Notes = "The blocktype for beetroots"
},
E_BLOCK_BIG_FLOWER =
{
Notes = "The blocktype for big flower"
},
E_BLOCK_BIRCH_DOOR =
{
Notes = "The blocktype for birch door"
},
E_BLOCK_BIRCH_FENCE =
{
Notes = "The blocktype for birch fence"
},
E_BLOCK_BIRCH_FENCE_GATE =
{
Notes = "The blocktype for birch fence gate"
},
E_BLOCK_BIRCH_WOOD_STAIRS =
{
Notes = "The blocktype for birch wood stairs"
},
E_BLOCK_BLACK_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for black terracotta"
},
E_BLOCK_BLACK_SHULKER_BOX =
{
Notes = "The blocktype for black shulker box"
},
E_BLOCK_BLOCK_OF_COAL =
{
Notes = "The blocktype for block of coal"
},
E_BLOCK_BLOCK_OF_REDSTONE =
{
Notes = "The blocktype for block of redstone"
},
E_BLOCK_BLUE_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for blue glazed terracotta"
},
E_BLOCK_BLUE_SHULKER_BOX =
{
Notes = "The blocktype for blue shulker box"
},
E_BLOCK_BONE_BLOCK =
{
Notes = "The blocktype for bone block"
},
E_BLOCK_BOOKCASE =
{
Notes = "The blocktype for bookcase"
},
E_BLOCK_BREWING_STAND =
{
Notes = "The blocktype for brewing stand"
},
E_BLOCK_BRICK =
{
Notes = "The blocktype for brick"
},
E_BLOCK_BRICK_STAIRS =
{
Notes = "The blocktype for brick stairs"
},
E_BLOCK_BROWN_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for brown glazed terracotta"
},
E_BLOCK_BROWN_MUSHROOM =
{
Notes = "The blocktype for brown mushroom"
},
E_BLOCK_BROWN_SHULKER_BOX =
{
Notes = "The blocktype for brown shulker box"
},
E_BLOCK_BURNING_FURNACE =
{
Notes = "The blocktype for burning furnace"
},
E_BLOCK_BUTTON_PRESSED =
{
Notes = "The blocktype for button pressed"
},
E_BLOCK_BUTTON_XM =
{
Notes = "The blocktype for button xm"
},
E_BLOCK_BUTTON_XP =
{
Notes = "The blocktype for button xp"
},
E_BLOCK_BUTTON_YM =
{
Notes = "The blocktype for button ym"
},
E_BLOCK_BUTTON_YP =
{
Notes = "The blocktype for button yp"
},
E_BLOCK_BUTTON_ZM =
{
Notes = "The blocktype for button zm"
},
E_BLOCK_BUTTON_ZP =
{
Notes = "The blocktype for button zp"
},
E_BLOCK_CACTUS =
{
Notes = "The blocktype for cactus"
},
E_BLOCK_CAKE =
{
Notes = "The blocktype for cake"
},
E_BLOCK_CARPET =
{
Notes = "The blocktype for carpet"
},
E_BLOCK_CARROTS =
{
Notes = "The blocktype for carrots"
},
E_BLOCK_CAULDRON =
{
Notes = "The blocktype for cauldron"
},
E_BLOCK_CHAIN_COMMAND_BLOCK =
{
Notes = "The blocktype for chain command block"
},
E_BLOCK_CHEST =
{
Notes = "The blocktype for chest"
},
E_BLOCK_CHORUS_FLOWER =
{
Notes = "The blocktype for chorus flower"
},
E_BLOCK_CHORUS_PLANT =
{
Notes = "The blocktype for chorus plant"
},
E_BLOCK_CLAY =
{
Notes = "The blocktype for clay"
},
E_BLOCK_COAL_ORE =
{
Notes = "The blocktype for coal ore"
},
E_BLOCK_COBBLESTONE =
{
Notes = "The blocktype for cobblestone"
},
E_BLOCK_COBBLESTONE_STAIRS =
{
Notes = "The blocktype for cobblestone stairs"
},
E_BLOCK_COBBLESTONE_WALL =
{
Notes = "The blocktype for cobblestone wall"
},
E_BLOCK_COBWEB =
{
Notes = "The blocktype for cobweb"
},
E_BLOCK_COCOA_POD =
{
Notes = "The blocktype for cocoa pod"
},
E_BLOCK_COMMAND_BLOCK =
{
Notes = "The blocktype for command block"
},
E_BLOCK_CONCRETE =
{
Notes = "The blocktype for concrete"
},
E_BLOCK_CONCRETE_POWDER =
{
Notes = "The blocktype for concrete powder"
},
E_BLOCK_CRAFTING_TABLE =
{
Notes = "The blocktype for crafting table"
},
E_BLOCK_CROPS =
{
Notes = "The blocktype for crops"
},
E_BLOCK_CYAN_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for cyan glazed terracotta"
},
E_BLOCK_CYAN_SHULKER_BOX =
{
Notes = "The blocktype for cyan shulker box"
},
E_BLOCK_DANDELION =
{
Notes = "The blocktype for dandelion"
},
E_BLOCK_DARK_OAK_DOOR =
{
Notes = "The blocktype for dark oak door"
},
E_BLOCK_DARK_OAK_FENCE =
{
Notes = "The blocktype for dark oak fence"
},
E_BLOCK_DARK_OAK_FENCE_GATE =
{
Notes = "The blocktype for dark oak fence gate"
},
E_BLOCK_DARK_OAK_WOOD_STAIRS =
{
Notes = "The blocktype for dark oak wood stairs"
},
E_BLOCK_DAYLIGHT_SENSOR =
{
Notes = "The blocktype for daylight sensor"
},
E_BLOCK_DEAD_BUSH =
{
Notes = "The blocktype for dead bush"
},
E_BLOCK_DETECTOR_RAIL =
{
Notes = "The blocktype for detector rail"
},
E_BLOCK_DIAMOND_BLOCK =
{
Notes = "The blocktype for diamond block"
},
E_BLOCK_DIAMOND_ORE =
{
Notes = "The blocktype for diamond ore"
},
E_BLOCK_DIRT =
{
Notes = "The blocktype for dirt"
},
E_BLOCK_DISPENSER =
{
Notes = "The blocktype for dispenser"
},
E_BLOCK_DOUBLE_RED_SANDSTONE_SLAB =
{
Notes = "The blocktype for double red sandstone slab"
},
E_BLOCK_DOUBLE_STONE_SLAB =
{
Notes = "The blocktype for double stone slab"
},
E_BLOCK_DOUBLE_WOODEN_SLAB =
{
Notes = "The blocktype for double wooden slab"
},
E_BLOCK_DRAGON_EGG =
{
Notes = "The blocktype for dragon egg"
},
E_BLOCK_DROPPER =
{
Notes = "The blocktype for dropper"
},
E_BLOCK_EMERALD_BLOCK =
{
Notes = "The blocktype for emerald block"
},
E_BLOCK_EMERALD_ORE =
{
Notes = "The blocktype for emerald ore"
},
E_BLOCK_ENCHANTMENT_TABLE =
{
Notes = "The blocktype for enchantment table"
},
E_BLOCK_ENDER_CHEST =
{
Notes = "The blocktype for ender chest"
},
E_BLOCK_END_BRICKS =
{
Notes = "The blocktype for end bricks"
},
E_BLOCK_END_GATEWAY =
{
Notes = "The blocktype for end gateway"
},
E_BLOCK_END_PORTAL =
{
Notes = "The blocktype for end portal"
},
E_BLOCK_END_PORTAL_FRAME =
{
Notes = "The blocktype for end portal frame"
},
E_BLOCK_END_ROD =
{
Notes = "The blocktype for end rod"
},
E_BLOCK_END_STONE =
{
Notes = "The blocktype for end stone"
},
E_BLOCK_FARMLAND =
{
Notes = "The blocktype for farmland"
},
E_BLOCK_FENCE =
{
Notes = "The blocktype for fence"
},
E_BLOCK_FENCE_GATE =
{
Notes = "The blocktype for fence gate"
},
E_BLOCK_FIRE =
{
Notes = "The blocktype for fire"
},
E_BLOCK_FLOWER =
{
Notes = "The blocktype for flower"
},
E_BLOCK_FLOWER_POT =
{
Notes = "The blocktype for flower pot"
},
E_BLOCK_FROSTED_ICE =
{
Notes = "The blocktype for frosted ice"
},
E_BLOCK_FURNACE =
{
Notes = "The blocktype for furnace"
},
E_BLOCK_GLASS =
{
Notes = "The blocktype for glass"
},
E_BLOCK_GLASS_PANE =
{
Notes = "The blocktype for glass pane"
},
E_BLOCK_GLOWSTONE =
{
Notes = "The blocktype for glowstone"
},
E_BLOCK_GOLD_BLOCK =
{
Notes = "The blocktype for gold block"
},
E_BLOCK_GOLD_ORE =
{
Notes = "The blocktype for gold ore"
},
E_BLOCK_GRASS =
{
Notes = "The blocktype for grass"
},
E_BLOCK_GRASS_PATH =
{
Notes = "The blocktype for grass path"
},
E_BLOCK_GRAVEL =
{
Notes = "The blocktype for gravel"
},
E_BLOCK_GRAY_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for gray glazed terracotta"
},
E_BLOCK_GRAY_SHULKER_BOX =
{
Notes = "The blocktype for gray shulker box"
},
E_BLOCK_GREEN_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for green glazed terracotta"
},
E_BLOCK_GREEN_SHULKER_BOX =
{
Notes = "The blocktype for green shulker box"
},
E_BLOCK_HARDENED_CLAY =
{
Notes = "The blocktype for hardened clay"
},
E_BLOCK_HAY_BALE =
{
Notes = "The blocktype for hay bale"
},
E_BLOCK_HEAD =
{
Notes = "The blocktype for head"
},
E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE =
{
Notes = "The blocktype for heavy weighted pressure plate"
},
E_BLOCK_HOPPER =
{
Notes = "The blocktype for hopper"
},
E_BLOCK_HUGE_BROWN_MUSHROOM =
{
Notes = "The blocktype for huge brown mushroom"
},
E_BLOCK_HUGE_RED_MUSHROOM =
{
Notes = "The blocktype for huge red mushroom"
},
E_BLOCK_ICE =
{
Notes = "The blocktype for ice"
},
E_BLOCK_INACTIVE_COMPARATOR =
{
Notes = "The blocktype for inactive comparator"
},
E_BLOCK_INVERTED_DAYLIGHT_SENSOR =
{
Notes = "The blocktype for inverted daylight sensor"
},
E_BLOCK_IRON_BARS =
{
Notes = "The blocktype for iron bars"
},
E_BLOCK_IRON_BLOCK =
{
Notes = "The blocktype for iron block"
},
E_BLOCK_IRON_DOOR =
{
Notes = "The blocktype for iron door"
},
E_BLOCK_IRON_ORE =
{
Notes = "The blocktype for iron ore"
},
E_BLOCK_IRON_TRAPDOOR =
{
Notes = "The blocktype for iron trapdoor"
},
E_BLOCK_JACK_O_LANTERN =
{
Notes = "The blocktype for jack o lantern"
},
E_BLOCK_JUKEBOX =
{
Notes = "The blocktype for jukebox"
},
E_BLOCK_JUNGLE_DOOR =
{
Notes = "The blocktype for jungle door"
},
E_BLOCK_JUNGLE_FENCE =
{
Notes = "The blocktype for jungle fence"
},
E_BLOCK_JUNGLE_FENCE_GATE =
{
Notes = "The blocktype for jungle fence gate"
},
E_BLOCK_JUNGLE_WOOD_STAIRS =
{
Notes = "The blocktype for jungle wood stairs"
},
E_BLOCK_LADDER =
{
Notes = "The blocktype for ladder"
},
E_BLOCK_LAPIS_BLOCK =
{
Notes = "The blocktype for lapis block"
},
E_BLOCK_LAPIS_ORE =
{
Notes = "The blocktype for lapis ore"
},
E_BLOCK_LAVA =
{
Notes = "The blocktype for lava"
},
E_BLOCK_LEAVES =
{
Notes = "The blocktype for leaves"
},
E_BLOCK_LEVER =
{
Notes = "The blocktype for lever"
},
E_BLOCK_LIGHT_BLUE_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for light blue glazed terracotta"
},
E_BLOCK_LIGHT_BLUE_SHULKER_BOX =
{
Notes = "The blocktype for light blue shulker box"
},
E_BLOCK_LIGHT_GRAY_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for light gray glazed terracotta"
},
E_BLOCK_LIGHT_GRAY_SHULKER_BOX =
{
Notes = "The blocktype for light gray shulker box"
},
E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE =
{
Notes = "The blocktype for light weighted pressure plate"
},
E_BLOCK_LILY_PAD =
{
Notes = "The blocktype for lily pad"
},
E_BLOCK_LIME_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for lime glazed terracotta"
},
E_BLOCK_LIME_SHULKER_BOX =
{
Notes = "The blocktype for lime shulker box"
},
E_BLOCK_LIT_FURNACE =
{
Notes = "The blocktype for lit furnace"
},
E_BLOCK_LOG =
{
Notes = "The blocktype for log"
},
E_BLOCK_MAGENTA_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for magenta glazed terracotta"
},
E_BLOCK_MAGENTA_SHULKER_BOX =
{
Notes = "The blocktype for magenta shulker box"
},
E_BLOCK_MAGMA =
{
Notes = "The blocktype for magma"
},
E_BLOCK_MAX_TYPE_ID =
{
Notes = "The blocktype for max type id"
},
E_BLOCK_MELON =
{
Notes = "The blocktype for melon"
},
E_BLOCK_MELON_STEM =
{
Notes = "The blocktype for melon stem"
},
E_BLOCK_MINECART_TRACKS =
{
Notes = "The blocktype for minecart tracks"
},
E_BLOCK_MOB_SPAWNER =
{
Notes = "The blocktype for mob spawner"
},
E_BLOCK_MOSSY_COBBLESTONE =
{
Notes = "The blocktype for mossy cobblestone"
},
E_BLOCK_MYCELIUM =
{
Notes = "The blocktype for mycelium"
},
E_BLOCK_NETHERRACK =
{
Notes = "The blocktype for netherrack"
},
E_BLOCK_NETHER_BRICK =
{
Notes = "The blocktype for nether brick"
},
E_BLOCK_NETHER_BRICK_FENCE =
{
Notes = "The blocktype for nether brick fence"
},
E_BLOCK_NETHER_BRICK_STAIRS =
{
Notes = "The blocktype for nether brick stairs"
},
E_BLOCK_NETHER_PORTAL =
{
Notes = "The blocktype for nether portal"
},
E_BLOCK_NETHER_QUARTZ_ORE =
{
Notes = "The blocktype for nether quartz ore"
},
E_BLOCK_NETHER_WART =
{
Notes = "The blocktype for nether wart"
},
E_BLOCK_NETHER_WART_BLOCK =
{
Notes = "The blocktype for nether wart block"
},
E_BLOCK_NEW_LEAVES =
{
Notes = "The blocktype for new leaves"
},
E_BLOCK_NEW_LOG =
{
Notes = "The blocktype for new log"
},
E_BLOCK_NOTE_BLOCK =
{
Notes = "The blocktype for note block"
},
E_BLOCK_NUMBER_OF_TYPES =
{
Notes = "The blocktype for number of types"
},
E_BLOCK_OAK_DOOR =
{
Notes = "The blocktype for oak door"
},
E_BLOCK_OAK_FENCE_GATE =
{
Notes = "The blocktype for oak fence gate"
},
E_BLOCK_OAK_WOOD_STAIRS =
{
Notes = "The blocktype for oak wood stairs"
},
E_BLOCK_OBSERVER =
{
Notes = "The blocktype for observer"
},
E_BLOCK_OBSIDIAN =
{
Notes = "The blocktype for obsidian"
},
E_BLOCK_ORANGE_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for orange glazed terracota"
},
E_BLOCK_ORANGE_SHULKER_BOX =
{
Notes = "The blocktype for orange shulker box"
},
E_BLOCK_PACKED_ICE =
{
Notes = "The blocktype for packed ice"
},
E_BLOCK_PINK_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for pink glazed terracotta"
},
E_BLOCK_PINK_SHULKER_BOX =
{
Notes = "The blocktype for pink shulker box"
},
E_BLOCK_PISTON =
{
Notes = "The blocktype for piston"
},
E_BLOCK_PISTON_EXTENSION =
{
Notes = "The blocktype for piston extension"
},
E_BLOCK_PISTON_MOVED_BLOCK =
{
Notes = "The blocktype for piston moved block"
},
E_BLOCK_PLANKS =
{
Notes = "The blocktype for planks"
},
E_BLOCK_POTATOES =
{
Notes = "The blocktype for potatoes"
},
E_BLOCK_POWERED_RAIL =
{
Notes = "The blocktype for powered rail"
},
E_BLOCK_PRISMARINE_BLOCK =
{
Notes = "The blocktype for prismarine block"
},
E_BLOCK_PUMPKIN =
{
Notes = "The blocktype for pumpkin"
},
E_BLOCK_PUMPKIN_STEM =
{
Notes = "The blocktype for pumpkin stem"
},
E_BLOCK_PURPLE_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for purple glazed terracotta"
},
E_BLOCK_PURPLE_SHULKER_BOX =
{
Notes = "The blocktype for purple shulker box"
},
E_BLOCK_PURPUR_BLOCK =
{
Notes = "The blocktype for purpur block"
},
E_BLOCK_PURPUR_DOUBLE_SLAB =
{
Notes = "The blocktype for purpur double slab"
},
E_BLOCK_PURPUR_PILLAR =
{
Notes = "The blocktype for purpur pillar"
},
E_BLOCK_PURPUR_SLAB =
{
Notes = "The blocktype for purpur slab"
},
E_BLOCK_PURPUR_STAIRS =
{
Notes = "The blocktype for purpur stairs"
},
E_BLOCK_QUARTZ_BLOCK =
{
Notes = "The blocktype for quartz block"
},
E_BLOCK_QUARTZ_STAIRS =
{
Notes = "The blocktype for quartz stairs"
},
E_BLOCK_RAIL =
{
Notes = "The blocktype for rail"
},
E_BLOCK_REDSTONE_LAMP_OFF =
{
Notes = "The blocktype for redstone lamp off"
},
E_BLOCK_REDSTONE_LAMP_ON =
{
Notes = "The blocktype for redstone lamp on"
},
E_BLOCK_REDSTONE_ORE =
{
Notes = "The blocktype for redstone ore"
},
E_BLOCK_REDSTONE_ORE_GLOWING =
{
Notes = "The blocktype for redstone ore glowing"
},
E_BLOCK_REDSTONE_REPEATER_OFF =
{
Notes = "The blocktype for redstone repeater off"
},
E_BLOCK_REDSTONE_REPEATER_ON =
{
Notes = "The blocktype for redstone repeater on"
},
E_BLOCK_REDSTONE_TORCH_OFF =
{
Notes = "The blocktype for redstone torch off"
},
E_BLOCK_REDSTONE_TORCH_ON =
{
Notes = "The blocktype for redstone torch on"
},
E_BLOCK_REDSTONE_WIRE =
{
Notes = "The blocktype for redstone wire"
},
E_BLOCK_RED_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for red glazed terracotta"
},
E_BLOCK_RED_MUSHROOM =
{
Notes = "The blocktype for red mushroom"
},
E_BLOCK_RED_NETHER_BRICK =
{
Notes = "The blocktype for red nether brick"
},
E_BLOCK_RED_ROSE =
{
Notes = "The blocktype for red rose"
},
E_BLOCK_RED_SANDSTONE =
{
Notes = "The blocktype for red sandstone"
},
E_BLOCK_RED_SANDSTONE_SLAB =
{
Notes = "The blocktype for red sandstone slab"
},
E_BLOCK_RED_SANDSTONE_STAIRS =
{
Notes = "The blocktype for red sandstone stairs"
},
E_BLOCK_RED_SHULKER_BOX =
{
Notes = "The blocktype for red shulker box"
},
E_BLOCK_REEDS =
{
Notes = "The blocktype for reeds"
},
E_BLOCK_REPEATING_COMMAND_BLOCK =
{
Notes = "The blocktype for repeating command block"
},
E_BLOCK_SAND =
{
Notes = "The blocktype for sand"
},
E_BLOCK_SANDSTONE =
{
Notes = "The blocktype for sandstone"
},
E_BLOCK_SANDSTONE_STAIRS =
{
Notes = "The blocktype for sandstone stairs"
},
E_BLOCK_SAPLING =
{
Notes = "The blocktype for sapling"
},
E_BLOCK_SEA_LANTERN =
{
Notes = "The blocktype for sea lantern"
},
E_BLOCK_SIGN_POST =
{
Notes = "The blocktype for sign post"
},
E_BLOCK_SILVERFISH_EGG =
{
Notes = "The blocktype for silverfish egg"
},
E_BLOCK_SLIME_BLOCK =
{
Notes = "The blocktype for slime block"
},
E_BLOCK_SNOW =
{
Notes = "The blocktype for snow"
},
E_BLOCK_SNOW_BLOCK =
{
Notes = "The blocktype for snow block"
},
E_BLOCK_SOULSAND =
{
Notes = "The blocktype for soulsand"
},
E_BLOCK_SPONGE =
{
Notes = "The blocktype for sponge"
},
E_BLOCK_SPRUCE_DOOR =
{
Notes = "The blocktype for spruce door"
},
E_BLOCK_SPRUCE_FENCE =
{
Notes = "The blocktype for spruce fence"
},
E_BLOCK_SPRUCE_FENCE_GATE =
{
Notes = "The blocktype for spruce fence gate"
},
E_BLOCK_SPRUCE_WOOD_STAIRS =
{
Notes = "The blocktype for spruce wood stairs"
},
E_BLOCK_STAINED_CLAY =
{
Notes = "The blocktype for stained clay"
},
E_BLOCK_STAINED_GLASS =
{
Notes = "The blocktype for stained glass"
},
E_BLOCK_STAINED_GLASS_PANE =
{
Notes = "The blocktype for stained glass pane"
},
E_BLOCK_STAIRS_UPSIDE_DOWN =
{
Notes = "The blocktype for stairs upside down"
},
E_BLOCK_STAIRS_XM =
{
Notes = "The blocktype for stairs xm"
},
E_BLOCK_STAIRS_XP =
{
Notes = "The blocktype for stairs xp"
},
E_BLOCK_STAIRS_ZM =
{
Notes = "The blocktype for stairs zm"
},
E_BLOCK_STAIRS_ZP =
{
Notes = "The blocktype for stairs zp"
},
E_BLOCK_STANDING_BANNER =
{
Notes = "The blocktype for standing banner"
},
E_BLOCK_STATIONARY_LAVA =
{
Notes = "The blocktype for stationary lava"
},
E_BLOCK_STATIONARY_WATER =
{
Notes = "The blocktype for stationary water"
},
E_BLOCK_STICKY_PISTON =
{
Notes = "The blocktype for sticky piston"
},
E_BLOCK_STONE =
{
Notes = "The blocktype for stone"
},
E_BLOCK_STONE_BRICKS =
{
Notes = "The blocktype for stone bricks"
},
E_BLOCK_STONE_BRICK_STAIRS =
{
Notes = "The blocktype for stone brick stairs"
},
E_BLOCK_STONE_BUTTON =
{
Notes = "The blocktype for stone button"
},
E_BLOCK_STONE_PRESSURE_PLATE =
{
Notes = "The blocktype for stone pressure plate"
},
E_BLOCK_STONE_SLAB =
{
Notes = "The blocktype for stone slab"
},
E_BLOCK_STRUCTURE_BLOCK =
{
Notes = "The blocktype for structure block"
},
E_BLOCK_STRUCTURE_VOID =
{
Notes = "The blocktype for structure void"
},
E_BLOCK_SUGARCANE =
{
Notes = "The blocktype for sugarcane"
},
E_BLOCK_TALL_GRASS =
{
Notes = "The blocktype for tall grass"
},
E_BLOCK_TERRACOTTA =
{
Notes = "The blocktype for terracotta (synonym for E_BLOCK_STAINED_CLAY)",
},
E_BLOCK_TNT =
{
Notes = "The blocktype for tnt"
},
E_BLOCK_TORCH =
{
Notes = "The blocktype for torch"
},
E_BLOCK_TRAPDOOR =
{
Notes = "The blocktype for trapdoor"
},
E_BLOCK_TRAPPED_CHEST =
{
Notes = "The blocktype for trapped chest"
},
E_BLOCK_TRIPWIRE =
{
Notes = "The blocktype for tripwire"
},
E_BLOCK_TRIPWIRE_HOOK =
{
Notes = "The blocktype for tripwire hook"
},
E_BLOCK_UNFINISHED =
{
Notes = "Internal blocktype for unfinished block handlers",
},
E_BLOCK_VINES =
{
Notes = "The blocktype for vines"
},
E_BLOCK_WALLSIGN =
{
Notes = "The blocktype for wallsign"
},
E_BLOCK_WALL_BANNER =
{
Notes = "The blocktype for wall banner"
},
E_BLOCK_WATER =
{
Notes = "The blocktype for water"
},
E_BLOCK_WHITE_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for white glazed terracotta"
},
E_BLOCK_WHITE_SHULKER_BOX =
{
Notes = "The blocktype for white shulker box"
},
E_BLOCK_WOODEN_BUTTON =
{
Notes = "The blocktype for wooden button"
},
E_BLOCK_WOODEN_DOOR =
{
Notes = "The blocktype for wooden door"
},
E_BLOCK_WOODEN_PRESSURE_PLATE =
{
Notes = "The blocktype for wooden pressure plate"
},
E_BLOCK_WOODEN_SLAB =
{
Notes = "The blocktype for wooden slab"
},
E_BLOCK_WOODEN_STAIRS =
{
Notes = "The blocktype for wooden stairs"
},
E_BLOCK_WOOL =
{
Notes = "The blocktype for wool"
},
E_BLOCK_WORKBENCH =
{
Notes = "The blocktype for workbench"
},
E_BLOCK_YELLOW_FLOWER =
{
Notes = "The blocktype for yellow flower"
},
E_BLOCK_YELLOW_GLAZED_TERRACOTTA =
{
Notes = "The blocktype for yellow glazed terracotta"
},
E_BLOCK_YELLOW_SHULKER_BOX =
{
Notes = "The blocktype for yellow shulker box"
},
E_ITEM_11_DISC =
{
Notes = "The itemtype for 11 disc"
},
E_ITEM_13_DISC =
{
Notes = "The itemtype for 13 disc"
},
E_ITEM_ACACIA_BOAT =
{
Notes = "The itemtype for acacia boat"
},
E_ITEM_ACACIA_DOOR =
{
Notes = "The itemtype for acacia door"
},
E_ITEM_ARMOR_STAND =
{
Notes = "The itemtype for armor stand"
},
E_ITEM_ARROW =
{
Notes = "The itemtype for arrow"
},
E_ITEM_BAKED_POTATO =
{
Notes = "The itemtype for baked potato"
},
E_ITEM_BANNER =
{
Notes = "The itemtype for banner"
},
E_ITEM_BED =
{
Notes = "The itemtype for bed"
},
E_ITEM_BEETROOT =
{
Notes = "The itemtype for beetroot"
},
E_ITEM_BEETROOT_SEEDS =
{
Notes = "The itemtype for beetroot seeds"
},
E_ITEM_BEETROOT_SOUP =
{
Notes = "The itemtype for betroot soup"
},
E_ITEM_BIRCH_BOAT =
{
Notes = "The itemtype for birch boat"
},
E_ITEM_BIRCH_DOOR =
{
Notes = "The itemtype for birch door"
},
E_ITEM_BLAZE_POWDER =
{
Notes = "The itemtype for blaze powder"
},
E_ITEM_BLAZE_ROD =
{
Notes = "The itemtype for blaze rod"
},
E_ITEM_BLOCKS_DISC =
{
Notes = "The itemtype for blocks disc"
},
E_ITEM_BOAT =
{
Notes = "The itemtype for boat"
},
E_ITEM_BONE =
{
Notes = "The itemtype for bone"
},
E_ITEM_BOOK =
{
Notes = "The itemtype for book"
},
E_ITEM_BOOK_AND_QUILL =
{
Notes = "The itemtype for book and quill"
},
E_ITEM_BOTTLE_O_ENCHANTING =
{
Notes = "The itemtype for bottle o enchanting"
},
E_ITEM_BOW =
{
Notes = "The itemtype for bow"
},
E_ITEM_BOWL =
{
Notes = "The itemtype for bowl"
},
E_ITEM_BREAD =
{
Notes = "The itemtype for bread"
},
E_ITEM_BREWING_STAND =
{
Notes = "The itemtype for brewing stand"
},
E_ITEM_BUCKET =
{
Notes = "The itemtype for bucket"
},
E_ITEM_CAKE =
{
Notes = "The itemtype for cake"
},
E_ITEM_CARROT =
{
Notes = "The itemtype for carrot"
},
E_ITEM_CARROT_ON_STICK =
{
Notes = "The itemtype for carrot on stick"
},
E_ITEM_CAT_DISC =
{
Notes = "The itemtype for cat disc"
},
E_ITEM_CAULDRON =
{
Notes = "The itemtype for cauldron"
},
E_ITEM_CHAIN_BOOTS =
{
Notes = "The itemtype for chain boots"
},
E_ITEM_CHAIN_CHESTPLATE =
{
Notes = "The itemtype for chain chestplate"
},
E_ITEM_CHAIN_HELMET =
{
Notes = "The itemtype for chain helmet"
},
E_ITEM_CHAIN_LEGGINGS =
{
Notes = "The itemtype for chain leggings"
},
E_ITEM_CHEST_MINECART =
{
Notes = "The itemtype for chest minecart"
},
E_ITEM_CHIRP_DISC =
{
Notes = "The itemtype for chirp disc"
},
E_ITEM_CHORUS_FRUIT =
{
Notes = "The itemtype for chorus fruit"
},
E_ITEM_CLAY =
{
Notes = "The itemtype for clay"
},
E_ITEM_CLAY_BRICK =
{
Notes = "The itemtype for clay brick"
},
E_ITEM_CLOCK =
{
Notes = "The itemtype for clock"
},
E_ITEM_COAL =
{
Notes = "The itemtype for coal"
},
E_ITEM_COMPARATOR =
{
Notes = "The itemtype for comparator"
},
E_ITEM_COMPASS =
{
Notes = "The itemtype for compass"
},
E_ITEM_COOKED_CHICKEN =
{
Notes = "The itemtype for cooked chicken"
},
E_ITEM_COOKED_FISH =
{
Notes = "The itemtype for cooked fish"
},
E_ITEM_COOKED_MUTTON =
{
Notes = "The itemtype for cooked mutton"
},
E_ITEM_COOKED_PORKCHOP =
{
Notes = "The itemtype for cooked porkchop"
},
E_ITEM_COOKED_RABBIT =
{
Notes = "The itemtype for cooked rabbit"
},
E_ITEM_COOKIE =
{
Notes = "The itemtype for cookie"
},
E_ITEM_DARK_OAK_BOAT =
{
Notes = "The itemtype for dark oak boat"
},
E_ITEM_DARK_OAK_DOOR =
{
Notes = "The itemtype for dark oak door"
},
E_ITEM_DIAMOND =
{
Notes = "The itemtype for diamond"
},
E_ITEM_DIAMOND_AXE =
{
Notes = "The itemtype for diamond axe"
},
E_ITEM_DIAMOND_BOOTS =
{
Notes = "The itemtype for diamond boots"
},
E_ITEM_DIAMOND_CHESTPLATE =
{
Notes = "The itemtype for diamond chestplate"
},
E_ITEM_DIAMOND_HELMET =
{
Notes = "The itemtype for diamond helmet"
},
E_ITEM_DIAMOND_HOE =
{
Notes = "The itemtype for diamond hoe"
},
E_ITEM_DIAMOND_HORSE_ARMOR =
{
Notes = "The itemtype for diamond horse armor"
},
E_ITEM_DIAMOND_LEGGINGS =
{
Notes = "The itemtype for diamond leggings"
},
E_ITEM_DIAMOND_PICKAXE =
{
Notes = "The itemtype for diamond pickaxe"
},
E_ITEM_DIAMOND_SHOVEL =
{
Notes = "The itemtype for diamond shovel"
},
E_ITEM_DIAMOND_SWORD =
{
Notes = "The itemtype for diamond sword"
},
E_ITEM_DRAGON_BREATH =
{
Notes = "The itemtype for dragon breath"
},
E_ITEM_DYE =
{
Notes = "The itemtype for dye"
},
E_ITEM_EGG =
{
Notes = "The itemtype for egg"
},
E_ITEM_ELYTRA =
{
Notes = "The itemtype for elytra"
},
E_ITEM_EMERALD =
{
Notes = "The itemtype for emerald"
},
E_ITEM_EMPTY =
{
Notes = "The itemtype for empty"
},
E_ITEM_EMPTY_MAP =
{
Notes = "The itemtype for empty map"
},
E_ITEM_ENCHANTED_BOOK =
{
Notes = "The itemtype for enchanted book"
},
E_ITEM_END_CRYSTAL =
{
Notes = "The itemtype for end crystal"
},
E_ITEM_ENDER_PEARL =
{
Notes = "The itemtype for ender pearl"
},
E_ITEM_EYE_OF_ENDER =
{
Notes = "The itemtype for eye of ender"
},
E_ITEM_FAR_DISC =
{
Notes = "The itemtype for far disc"
},
E_ITEM_FEATHER =
{
Notes = "The itemtype for feather"
},
E_ITEM_FERMENTED_SPIDER_EYE =
{
Notes = "The itemtype for fermented spider eye"
},
E_ITEM_FIREWORK_ROCKET =
{
Notes = "The itemtype for firework rocket"
},
E_ITEM_FIREWORK_STAR =
{
Notes = "The itemtype for firework star"
},
E_ITEM_FIRE_CHARGE =
{
Notes = "The itemtype for fire charge"
},
E_ITEM_FIRST =
{
Notes = "The itemtype for first"
},
E_ITEM_FIRST_DISC =
{
Notes = "The itemtype for first disc"
},
E_ITEM_FISHING_ROD =
{
Notes = "The itemtype for fishing rod"
},
E_ITEM_FLINT =
{
Notes = "The itemtype for flint"
},
E_ITEM_FLINT_AND_STEEL =
{
Notes = "The itemtype for flint and steel"
},
E_ITEM_FLOWER_POT =
{
Notes = "The itemtype for flower pot"
},
E_ITEM_FURNACE_MINECART =
{
Notes = "The itemtype for furnace minecart"
},
E_ITEM_GHAST_TEAR =
{
Notes = "The itemtype for ghast tear"
},
E_ITEM_GLASS_BOTTLE =
{
Notes = "The itemtype for glass bottle"
},
E_ITEM_GLISTERING_MELON =
{
Notes = "The itemtype for glistering melon"
},
E_ITEM_GLOWSTONE_DUST =
{
Notes = "The itemtype for glowstone dust"
},
E_ITEM_GOLD =
{
Notes = "The itemtype for gold"
},
E_ITEM_GOLDEN_APPLE =
{
Notes = "The itemtype for golden apple"
},
E_ITEM_GOLDEN_CARROT =
{
Notes = "The itemtype for golden carrot"
},
E_ITEM_GOLD_AXE =
{
Notes = "The itemtype for gold axe"
},
E_ITEM_GOLD_BOOTS =
{
Notes = "The itemtype for gold boots"
},
E_ITEM_GOLD_CHESTPLATE =
{
Notes = "The itemtype for gold chestplate"
},
E_ITEM_GOLD_HELMET =
{
Notes = "The itemtype for gold helmet"
},
E_ITEM_GOLD_HOE =
{
Notes = "The itemtype for gold hoe"
},
E_ITEM_GOLD_HORSE_ARMOR =
{
Notes = "The itemtype for gold horse armor"
},
E_ITEM_GOLD_LEGGINGS =
{
Notes = "The itemtype for gold leggings"
},
E_ITEM_GOLD_NUGGET =
{
Notes = "The itemtype for gold nugget"
},
E_ITEM_GOLD_PICKAXE =
{
Notes = "The itemtype for gold pickaxe"
},
E_ITEM_GOLD_SHOVEL =
{
Notes = "The itemtype for gold shovel"
},
E_ITEM_GOLD_SWORD =
{
Notes = "The itemtype for gold sword"
},
E_ITEM_GUNPOWDER =
{
Notes = "The itemtype for gunpowder"
},
E_ITEM_HEAD =
{
Notes = "The itemtype for head"
},
E_ITEM_IRON =
{
Notes = "The itemtype for iron"
},
E_ITEM_IRON_AXE =
{
Notes = "The itemtype for iron axe"
},
E_ITEM_IRON_BOOTS =
{
Notes = "The itemtype for iron boots"
},
E_ITEM_IRON_CHESTPLATE =
{
Notes = "The itemtype for iron chestplate"
},
E_ITEM_IRON_DOOR =
{
Notes = "The itemtype for iron door"
},
E_ITEM_IRON_HELMET =
{
Notes = "The itemtype for iron helmet"
},
E_ITEM_IRON_HOE =
{
Notes = "The itemtype for iron hoe"
},
E_ITEM_IRON_HORSE_ARMOR =
{
Notes = "The itemtype for iron horse armor"
},
E_ITEM_IRON_LEGGINGS =
{
Notes = "The itemtype for iron leggings"
},
E_ITEM_IRON_NUGGET =
{
Notes = "The itemtype for iron nugget"
},
E_ITEM_IRON_PICKAXE =
{
Notes = "The itemtype for iron pickaxe"
},
E_ITEM_IRON_SHOVEL =
{
Notes = "The itemtype for iron shovel"
},
E_ITEM_IRON_SWORD =
{
Notes = "The itemtype for iron sword"
},
E_ITEM_ITEM_FRAME =
{
Notes = "The itemtype for item frame"
},
E_ITEM_JUNGLE_BOAT =
{
Notes = "The itemtype for jungle boat"
},
E_ITEM_JUNGLE_DOOR =
{
Notes = "The itemtype for jungle door"
},
E_ITEM_LAST =
{
Notes = "The itemtype for last"
},
E_ITEM_LAST_DISC =
{
Notes = "The itemtype for last disc"
},
E_ITEM_LAST_DISC_PLUS_ONE =
{
Notes = "The itemtype for last disc plus one"
},
E_ITEM_LAVA_BUCKET =
{
Notes = "The itemtype for lava bucket"
},
E_ITEM_LEAD =
{
Notes = "The itemtype for lead"
},
E_ITEM_LEASH =
{
Notes = "The itemtype for lead (E_ITEM_LEAD synonym)"
},
E_ITEM_LEATHER =
{
Notes = "The itemtype for leather"
},
E_ITEM_LEATHER_BOOTS =
{
Notes = "The itemtype for leather boots"
},
E_ITEM_LEATHER_CAP =
{
Notes = "The itemtype for leather cap"
},
E_ITEM_LEATHER_PANTS =
{
Notes = "The itemtype for leather pants"
},
E_ITEM_LEATHER_TUNIC =
{
Notes = "The itemtype for leather tunic"
},
E_ITEM_LINGERING_POTION =
{
Notes = "The itemtype for lingering potion"
},
E_ITEM_MAGMA_CREAM =
{
Notes = "The itemtype for magma cream"
},
E_ITEM_MALL_DISC =
{
Notes = "The itemtype for mall disc"
},
E_ITEM_MAP =
{
Notes = "The itemtype for map"
},
E_ITEM_MAX_CONSECUTIVE_TYPE_ID =
{
Notes = "The itemtype for max consecutive type id"
},
E_ITEM_MELLOHI_DISC =
{
Notes = "The itemtype for mellohi disc"
},
E_ITEM_MELON_SEEDS =
{
Notes = "The itemtype for melon seeds"
},
E_ITEM_MELON_SLICE =
{
Notes = "The itemtype for melon slice"
},
E_ITEM_MILK =
{
Notes = "The itemtype for milk"
},
E_ITEM_MINECART =
{
Notes = "The itemtype for minecart"
},
E_ITEM_MINECART_WITH_COMMAND_BLOCK =
{
Notes = "The itemtype for minecart with command block"
},
E_ITEM_MINECART_WITH_HOPPER =
{
Notes = "The itemtype for minecart with hopper"
},
E_ITEM_MINECART_WITH_TNT =
{
Notes = "The itemtype for minecart with tnt"
},
E_ITEM_MUSHROOM_SOUP =
{
Notes = "The itemtype for mushroom soup"
},
E_ITEM_NAME_TAG =
{
Notes = "The itemtype for name tag"
},
E_ITEM_NETHER_BRICK =
{
Notes = "The itemtype for nether brick"
},
E_ITEM_NETHER_QUARTZ =
{
Notes = "The itemtype for nether quartz"
},
E_ITEM_NETHER_STAR =
{
Notes = "The itemtype for nether star"
},
E_ITEM_NETHER_WART =
{
Notes = "The itemtype for nether wart"
},
E_ITEM_NUMBER_OF_CONSECUTIVE_TYPES =
{
Notes = "The itemtype for number of consecutive types"
},
E_ITEM_PAINTING =
{
Notes = "The itemtype for painting"
},
E_ITEM_PAPER =
{
Notes = "The itemtype for paper"
},
E_ITEM_POISONOUS_POTATO =
{
Notes = "The itemtype for poisonous potato"
},
E_ITEM_POPPED_CHORUS_FRUIT =
{
Notes = "The itemtype for popped chorus fruit"
},
E_ITEM_POTATO =
{
Notes = "The itemtype for potato"
},
E_ITEM_POTION =
{
Notes = "The itemtype for potion"
},
E_ITEM_POTIONS =
{
Notes = "The itemtype for potion (obsolete, use E_ITEM_POTION instead)"
},
E_ITEM_PRISMARINE_CRYSTALS =
{
Notes = "The itemtype for prismarine crystals"
},
E_ITEM_PRISMARINE_SHARD =
{
Notes = "The itemtype for prismarine shard"
},
E_ITEM_PUMPKIN_PIE =
{
Notes = "The itemtype for pumpkin pie"
},
E_ITEM_PUMPKIN_SEEDS =
{
Notes = "The itemtype for pumpkin seeds"
},
E_ITEM_RABBITS_FOOT =
{
Notes = "The itemtype for rabbits foot"
},
E_ITEM_RABBIT_HIDE =
{
Notes = "The itemtype for rabbit hide"
},
E_ITEM_RABBIT_STEW =
{
Notes = "The itemtype for rabbit stew"
},
E_ITEM_RAW_BEEF =
{
Notes = "The itemtype for raw beef"
},
E_ITEM_RAW_CHICKEN =
{
Notes = "The itemtype for raw chicken"
},
E_ITEM_RAW_FISH =
{
Notes = "The itemtype for raw fish"
},
E_ITEM_RAW_MUTTON =
{
Notes = "The itemtype for raw mutton"
},
E_ITEM_RAW_PORKCHOP =
{
Notes = "The itemtype for raw porkchop"
},
E_ITEM_RAW_RABBIT =
{
Notes = "The itemtype for raw rabbit"
},
E_ITEM_REDSTONE_DUST =
{
Notes = "The itemtype for redstone dust"
},
E_ITEM_REDSTONE_REPEATER =
{
Notes = "The itemtype for redstone repeater"
},
E_ITEM_RED_APPLE =
{
Notes = "The itemtype for red apple"
},
E_ITEM_ROTTEN_FLESH =
{
Notes = "The itemtype for rotten flesh"
},
E_ITEM_SADDLE =
{
Notes = "The itemtype for saddle"
},
E_ITEM_SEEDS =
{
Notes = "The itemtype for seeds"
},
E_ITEM_SHEARS =
{
Notes = "The itemtype for shears"
},
E_ITEM_SHIELD =
{
Notes = "The itemtype for shield"
},
E_ITEM_SHULKER_SHELL =
{
Notes = "The itemtype for shulker shell"
},
E_ITEM_SIGN =
{
Notes = "The itemtype for sign"
},
E_ITEM_SLIMEBALL =
{
Notes = "The itemtype for slimeball"
},
E_ITEM_SNOWBALL =
{
Notes = "The itemtype for snowball"
},
E_ITEM_SPAWN_EGG =
{
Notes = "The itemtype for spawn egg"
},
E_ITEM_SPECTRAL_ARROW =
{
Notes = "The itemtype for spectral arrow"
},
E_ITEM_SPIDER_EYE =
{
Notes = "The itemtype for spider eye"
},
E_ITEM_SPLASH_POTION =
{
Notes = "The itemtype for splash potion"
},
E_ITEM_SPRUCE_BOAT =
{
Notes = "The itemtype for spruce boat"
},
E_ITEM_SPRUCE_DOOR =
{
Notes = "The itemtype for spruce door"
},
E_ITEM_STAL_DISC =
{
Notes = "The itemtype for stal disc"
},
E_ITEM_STEAK =
{
Notes = "The itemtype for steak"
},
E_ITEM_STICK =
{
Notes = "The itemtype for stick"
},
E_ITEM_STONE_AXE =
{
Notes = "The itemtype for stone axe"
},
E_ITEM_STONE_HOE =
{
Notes = "The itemtype for stone hoe"
},
E_ITEM_STONE_PICKAXE =
{
Notes = "The itemtype for stone pickaxe"
},
E_ITEM_STONE_SHOVEL =
{
Notes = "The itemtype for stone shovel"
},
E_ITEM_STONE_SWORD =
{
Notes = "The itemtype for stone sword"
},
E_ITEM_STRAD_DISC =
{
Notes = "The itemtype for strad disc"
},
E_ITEM_STRING =
{
Notes = "The itemtype for string"
},
E_ITEM_SUGAR =
{
Notes = "The itemtype for sugar"
},
E_ITEM_SUGARCANE =
{
Notes = "The itemtype for sugarcane"
},
E_ITEM_SUGAR_CANE =
{
Notes = "The itemtype for sugar cane"
},
E_ITEM_TIPPED_ARROW =
{
Notes = "The itemtype for tipped arrow"
},
E_ITEM_TOTEM_OF_UNDYING =
{
Notes = "The itemtype for totem of undying"
},
E_ITEM_WAIT_DISC =
{
Notes = "The itemtype for wait disc"
},
E_ITEM_WARD_DISC =
{
Notes = "The itemtype for ward disc"
},
E_ITEM_WATER_BUCKET =
{
Notes = "The itemtype for water bucket"
},
E_ITEM_WHEAT =
{
Notes = "The itemtype for wheat"
},
E_ITEM_WOODEN_AXE =
{
Notes = "The itemtype for wooden axe"
},
E_ITEM_WOODEN_DOOR =
{
Notes = "The itemtype for wooden door"
},
E_ITEM_WOODEN_HOE =
{
Notes = "The itemtype for wooden hoe"
},
E_ITEM_WOODEN_PICKAXE =
{
Notes = "The itemtype for wooden pickaxe"
},
E_ITEM_WOODEN_SHOVEL =
{
Notes = "The itemtype for wooden shovel"
},
E_ITEM_WOODEN_SWORD =
{
Notes = "The itemtype for wooden sword"
},
E_ITEM_WRITTEN_BOOK =
{
Notes = "The itemtype for written book"
},
BLOCK_FACE_BOTTOM =
{
Notes = "Please use BLOCK_FACE_YM instead. Interacting with the bottom face of the block.",
},
BLOCK_FACE_EAST =
{
Notes = "Please use BLOCK_FACE_XM instead. Interacting with the eastern face of the block.",
},
BLOCK_FACE_MAX =
{
Notes = "Used for range checking - highest legal value for an {{Globals#eBlockFace|eBlockFace}}",
},
BLOCK_FACE_MIN =
{
Notes = "Used for range checking - lowest legal value for an {{Globals#eBlockFace|eBlockFace}}",
},
BLOCK_FACE_NONE =
{
Notes = "Interacting with no block face - swinging the item in the air",
},
BLOCK_FACE_NORTH =
{
Notes = "Please use BLOCK_FACE_ZM instead. Interacting with the northern face of the block.",
},
BLOCK_FACE_SOUTH =
{
Notes = "Please use BLOCK_FACE_ZP instead. Interacting with the southern face of the block.",
},
BLOCK_FACE_TOP =
{
Notes = "Please use BLOCK_FACE_YP instead. Interacting with the top face of the block.",
},
BLOCK_FACE_WEST =
{
Notes = "Please use BLOCK_FACE_XP instead. Interacting with the western face of the block.",
},
BLOCK_FACE_XM =
{
Notes = "Interacting with the X- face of the block",
},
BLOCK_FACE_XP =
{
Notes = "Interacting with the X+ face of the block",
},
BLOCK_FACE_YM =
{
Notes = "Interacting with the Y- face of the block",
},
BLOCK_FACE_YP =
{
Notes = "Interacting with the Y+ face of the block",
},
BLOCK_FACE_ZM =
{
Notes = "Interacting with the Z- face of the block",
},
BLOCK_FACE_ZP =
{
Notes = "Interacting with the Z+ face of the block",
},
DIG_STATUS_CANCELLED =
{
Notes = "The player has let go of the mine block key before finishing mining the block",
},
DIG_STATUS_DROP_HELD =
{
Notes = "The player has dropped a single item using the Drop Item key (default: Q)",
},
DIG_STATUS_DROP_STACK =
{
Notes = "The player has dropped a full stack of items using the Drop Item key (default: Q) while holding down a specific modifier key (in windows, control)",
},
DIG_STATUS_FINISHED =
{
Notes = "The player thinks that it has finished mining a block",
},
DIG_STATUS_SHOOT_EAT =
{
Notes = "The player has finished shooting a bow or finished eating",
},
DIG_STATUS_STARTED =
{
Notes = "The player has started digging",
},
DIG_STATUS_SWAP_ITEM_IN_HAND =
{
Notes = "The player has swapped their held item with the item in their offhand slot (1.9)",
},
E_META_BIG_FLOWER_TOP =
{
Notes = "The metadata of a big flower block that indicates it is the top block.",
},
E_META_CONCRETE_BLACK =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is black.",
},
E_META_CONCRETE_BLUE =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is blue.",
},
E_META_CONCRETE_BROWN =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is brown.",
},
E_META_CONCRETE_CYAN =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is cyan.",
},
E_META_CONCRETE_GRAY =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is gray.",
},
E_META_CONCRETE_GREEN =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is green.",
},
E_META_CONCRETE_LIGHTBLUE =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is light blue.",
},
E_META_CONCRETE_LIGHTGRAY =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is light gray.",
},
E_META_CONCRETE_LIGHTGREEN =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is light green.",
},
E_META_CONCRETE_MAGENTA =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is magenta.",
},
E_META_CONCRETE_ORANGE =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is orange.",
},
E_META_CONCRETE_PINK =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is pink.",
},
E_META_CONCRETE_POWDER_BLACK =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is black.",
},
E_META_CONCRETE_POWDER_BLUE =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is blue.",
},
E_META_CONCRETE_POWDER_BROWN =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is brown.",
},
E_META_CONCRETE_POWDER_CYAN =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is cyan.",
},
E_META_CONCRETE_POWDER_GRAY =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is gray.",
},
E_META_CONCRETE_POWDER_GREEN =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is green.",
},
E_META_CONCRETE_POWDER_LIGHTBLUE =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is light blue.",
},
E_META_CONCRETE_POWDER_LIGHTGRAY =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is light gray.",
},
E_META_CONCRETE_POWDER_LIGHTGREEN =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is light green.",
},
E_META_CONCRETE_POWDER_MAGENTA =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is magenta.",
},
E_META_CONCRETE_POWDER_ORANGE =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is orange.",
},
E_META_CONCRETE_POWDER_PINK =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is pink.",
},
E_META_CONCRETE_POWDER_PURPLE =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is purple.",
},
E_META_CONCRETE_POWDER_RED =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is red.",
},
E_META_CONCRETE_POWDER_WHITE =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is white.",
},
E_META_CONCRETE_POWDER_YELLOW =
{
Notes = "A flag in the metadata of concete powder that indicates that the concrete powder is yellow.",
},
E_META_CONCRETE_PURPLE =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is purple.",
},
E_META_CONCRETE_RED =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is red.",
},
E_META_CONCRETE_WHITE =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is white.",
},
E_META_CONCRETE_YELLOW =
{
Notes = "A flag in the metadata of concete that indicates that the concrete is yellow.",
},
E_META_DROPSPENSER_ACTIVATED =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is currently activated. If this flag is set, the block must be unpowered first and powered again to shoot the next item.",
},
E_META_DROPSPENSER_FACING_MASK =
{
Notes = "A mask that indicates the bits of the metadata that specify the facing of droppers and dispensers.",
},
E_META_DROPSPENSER_FACING_XM =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the negative X direction.",
},
E_META_DROPSPENSER_FACING_XP =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the positive X direction.",
},
E_META_DROPSPENSER_FACING_YM =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the negative Y direction.",
},
E_META_DROPSPENSER_FACING_YP =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the positive Y direction.",
},
E_META_DROPSPENSER_FACING_ZM =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the negative Z direction.",
},
E_META_DROPSPENSER_FACING_ZP =
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the positive Z direction.",
},
E_META_END_PORTAL_FRAME_EYE =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame has an eye in it.",
},
E_META_END_PORTAL_FRAME_NO_EYE =
{
Notes = "The lack of the flag in the metadata of end portal frames indicating that the portal frame has an eye in it.",
},
E_META_END_PORTAL_FRAME_XM =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the negative X direction.",
},
E_META_END_PORTAL_FRAME_XP =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the positive X direction.",
},
E_META_END_PORTAL_FRAME_ZM =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the negative Z direction.",
},
E_META_END_PORTAL_FRAME_ZP =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the positive Z direction.",
},
E_META_END_PORTAL_FRAME_XM_EYE =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the negative X direction and has an ender eye in it.",
},
E_META_END_PORTAL_FRAME_XP_EYE =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the positive X direction and has an ender eye in it.",
},
E_META_END_PORTAL_FRAME_ZM_EYE =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the negative Z direction and has an ender eye in it.",
},
E_META_END_PORTAL_FRAME_ZP_EYE =
{
Notes = "A flag in the metadata of end portal frames that indicates that the portal frame is facing the positive Z direction and has an ender eye in it.",
},
E_META_HEAD_CREEPER =
{
Notes = "A flag in the metadata of heads that indicates that the head is a creeper head.",
},
E_META_HEAD_DRAGON =
{
Notes = "A flag in the metadata of heads that indicates that the head is a dragon head.",
},
E_META_HEAD_PLAYER =
{
Notes = "A flag in the metadata of heads that indicates that the head is a player head.",
},
E_META_HEAD_SKELETON =
{
Notes = "A flag in the metadata of heads that indicates that the head is a skeleton head.",
},
E_META_HEAD_WITHER =
{
Notes = "A flag in the metadata of heads that indicates that the head is a wither head.",
},
E_META_HEAD_ZOMBIE =
{
Notes = "A flag in the metadata of heads that indicates that the head is a zombie head.",
},
E_META_REDSTONE_REPEATER_FACING_ZM =
{
Notes = "A flag in the metadata of redstone repeaters that indicates that the repeater is looking in the negative Z direction.",
},
E_META_REDSTONE_REPEATER_FACING_XP =
{
Notes = "A flag in the metadata of redstone repeaters that indicates that the repeater is looking in the positive X direction.",
},
E_META_REDSTONE_REPEATER_FACING_ZP =
{
Notes = "A flag in the metadata of redstone repeaters that indicates that the repeater is looking in the positive Z direction.",
},
E_META_REDSTONE_REPEATER_FACING_XM =
{
Notes = "A flag in the metadata of redstone repeaters that indicates that the repeater is looking in the negative X direction.",
},
E_META_REDSTONE_REPEATER_FACING_MASK =
{
Notes = "A mask that indicates the bits of the metadata that specify the facing of redstone repeaters.",
},
E_META_SPAWN_EGG_ENDERMITE =
{
Notes = "",
},
E_META_SPAWN_EGG_WITHER_SKELETON =
{
Notes = ""
},
E_META_SILVERFISH_EGG_CHISELED_STONE_BRICK =
{
Notes = "A flag in the metadata of the silverfish egg that the block is made from chiseled stone bricks"
},
E_META_SILVERFISH_EGG_CRACKED_STONE_BRICK =
{
Notes = "A flag in the metadata of the silverfish egg that the block is made from cracked stone bricks"
},
E_META_SILVERFISH_EGG_MOSSY_STONE_BRICK =
{
Notes = "A flag in the metadata of the silverfish egg that the block is made from mossy stone bricks"
},
E_META_SPONGE_DRY =
{
Notes = "A flag in the metadata of sponges that indicates that the sponge is dry.",
},
E_META_SPONGE_WET =
{
Notes = "A flag in the metadata of sponges that indicates that the sponge is wet.",
},
E_META_MUSHROOM_ALL_SIDES =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on all sides.",
},
E_META_MUSHROOM_NORTH_WEST =
{
Notes = "A flag in the metadata of mushroom blocks to display the pore texture on north and west side.",
},
E_META_MUSHROOM_NORTH =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on north side.",
},
E_META_MUSHROOM_NORTH_EAST =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on north and east side.",
},
E_META_MUSHROOM_WEST =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on west side.",
},
E_META_MUSHROOM_CENTER =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on top.",
},
E_META_MUSHROOM_EAST =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on east side.",
},
E_META_MUSHROOM_SOUTH_WEST =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on south and west side.",
},
E_META_MUSHROOM_SOUTH =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on south side.",
},
E_META_MUSHROOM_SOUTH_EAST =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on south and east side.",
},
E_META_MUSHROOM_STEM =
{
Notes = "A flag in the metadata of mushroom blocks to display the stem texture on all sides but not on top and bottom.",
},
E_META_MUSHROOM_CAP =
{
Notes = "A flag in the metadata of mushroom blocks to display the outside texture on all sides.",
},
E_META_MUSHROOM_FULL_STEM =
{
Notes = "A flag in the metadata of mushroom blocks to display the stem texture on all sides.",
},
esBed =
{
Notes = "A bed explosion. The SourceData param is the {{Vector3i|position}} of the bed.",
},
esEnderCrystal =
{
Notes = "An ender crystal entity explosion. The SourceData param is the {{cEntity|ender crystal entity}} object.",
},
esGhastFireball =
{
Notes = "A ghast fireball explosion. The SourceData param is the {{cGhastFireballEntity|ghast fireball entity}} object.",
},
esMonster =
{
Notes = "A monster explosion (creeper). The SourceData param is the {{cMonster|monster entity}} object.",
},
esOther =
{
Notes = "Any other explosion. The SourceData param is unused.",
},
esPlugin =
{
Notes = "An explosion started by a plugin, without any further information. The SourceData param is unused. ",
},
esPrimedTNT =
{
Notes = "A TNT explosion. The SourceData param is the {{cTNTEntity|TNT entity}} object.",
},
esTNTMinecart =
{
Notes = "A TNT minecart explosion. The SourceData param is the {{cMinecartWithTNT|Minecart with TNT entity}} object.",
},
esWitherBirth =
{
Notes = "An explosion at a wither's birth. The SourceData param is the {{cMonster|wither entity}} object.",
},
esWitherSkull =
{
Notes = "A wither skull explosion. The SourceData param is the {{cWitherSkullEntity|wither skull entity}} object.",
},
-- eMonsterType:
mtBat =
{
Notes = "",
},
mtBlaze =
{
Notes = "",
},
mtCaveSpider =
{
Notes = "",
},
mtCat =
{
Notes = "",
},
mtChicken =
{
Notes = "",
},
mtCod =
{
Notes = "",
},
mtCow =
{
Notes = "",
},
mtCreeper =
{
Notes = "",
},
mtDolphin =
{
Notes = "",
},
mtDonkey =
{
Notes = "",
},
mtDrowned =
{
Notes = "",
},
mtElderGuardian =
{
Notes = "",
},
mtEnderDragon =
{
Notes = "",
},
mtEnderman =
{
Notes = "",
},
mtEndermite =
{
Notes = "",
},
mtEvoker =
{
Notes = "",
},
mtFox =
{
Notes = "",
},
mtGhast =
{
Notes = "",
},
mtGiant =
{
Notes = "",
},
mtHoglin =
{
Notes = "",
},
mtHorse =
{
Notes = "",
},
mtHusk =
{
Notes = "",
},
mtIllusioner =
{
Notes = "",
},
mtInvalidType =
{
Notes = "Invalid monster type. Returned when monster type not recognized",
},
mtIronGolem =
{
Notes = "",
},
mtLlama =
{
Notes = "",
},
mtMagmaCube =
{
Notes = "",
},
mtMooshroom =
{
Notes = "",
},
mtMule =
{
Notes = "",
},
mtOcelot =
{
Notes = "",
},
mtPanda =
{
Notes = "",
},
mtParrot =
{
Notes = "",
},
mtPhantom =
{
Notes = "",
},
mtPig =
{
Notes = "",
},
mtPiglin =
{
Notes = "",
},
mtPiglinBrute =
{
Notes = "",
},
mtPillager =
{
Notes = "",
},
mtPolarBear =
{
Notes = "",
},
mtPufferfish =
{
Notes = "",
},
mtRavager =
{
Notes = "",
},
mtSalmon =
{
Notes = "",
},
mtSheep =
{
Notes = "",
},
mtShulker =
{
Notes = "",
},
mtSilverfish =
{
Notes = "",
},
mtSkeleton =
{
Notes = "",
},
mtSkeletonHorse =
{
Notes = "",
},
mtSlime =
{
Notes = "",
},
mtStray =
{
Notes = "",
},
mtStrider =
{
Notes = "",
},
mtSnowGolem =
{
Notes = "",
},
mtSpider =
{
Notes = "",
},
mtSquid =
{
Notes = "",
},
mtTraderLlama =
{
Notes = "",
},
mtTropicalFish =
{
Notes = "",
},
mtTurtle =
{
Notes = "",
},
mtVex =
{
Notes = "",
},
mtVillager =
{
Notes = "",
},
mtVindicator =
{
Notes = "",
},
mtWanderingTrader =
{
Notes = "",
},
mtWitch =
{
Notes = "",
},
mtWither =
{
Notes = "",
},
mtWitherSkeleton =
{
Notes = "",
},
mtWolf =
{
Notes = "",
},
mtZoglin =
{
Notes = "",
},
mtZombie =
{
Notes = "",
},
mtZombieHorse =
{
Notes = "",
},
mtZombiePigman =
{
Notes = "",
},
mtZombifiedPiglin =
{
Notes = "",
},
mtZombieVillager =
{
Notes = "",
},
-- eMessageType:
mtCustom =
{
Notes = "Send raw data without any processing",
},
mtDeath =
{
Notes = "Denotes death of player",
},
mtError =
{
Notes = "Something could not be done (i.e. command not executed due to insufficient privilege)",
},
mtFail =
{
Notes = "Something could not be done (i.e. command not executed due to insufficient privilege)",
},
mtFailure =
{
Notes = "Something could not be done (i.e. command not executed due to insufficient privilege)",
},
mtFatal =
{
Notes = "Something catastrophic occured (i.e. plugin crash)",
},
mtInfo =
{
Notes = "Informational message (i.e. command usage)",
},
mtInformation =
{
Notes = "Informational message (i.e. command usage)",
},
mtJoin =
{
Notes = "A player has joined the server",
},
mtLeave =
{
Notes = "A player has left the server",
},
mtMaxPlusOne =
{
Notes = "The first invalid type, used for checking on LuaAPI boundaries",
},
mtPM =
{
Notes = "Player to player messaging identifier",
},
mtPrivateMessage =
{
Notes = "Player to player messaging identifier",
},
mtSuccess =
{
Notes = "Something executed successfully",
},
mtWarning =
{
Notes = "Something concerning (i.e. reload) is about to happen",
},
mtWitherSkeleton =
{
Notes = ""
},
SKULL_TYPE_CREEPER =
{
Notes = "A creeper skull",
},
SKULL_TYPE_DRAGON =
{
Notes = "A dragon skull",
},
SKULL_TYPE_PLAYER =
{
Notes = "A player skull",
},
SKULL_TYPE_SKELETON =
{
Notes = "A skeleton skull",
},
SKULL_TYPE_WITHER =
{
Notes = "A wither skull",
},
SKULL_TYPE_ZOMBIE =
{
Notes = "A zombie skull",
},
spCape =
{
Notes = "The cape skin part",
},
spJacket =
{
Notes = "The jacket skin part",
},
spLeftSleeve =
{
Notes = "The left sleeve skin part",
},
spRightSleeve =
{
Notes = "The right sleeve skin part",
},
spLeftPants =
{
Notes = "The left pants leg skin part",
},
spRightPants =
{
Notes = "The right pants leg skin part",
},
spHat =
{
Notes = "The hat/head skin part",
},
spMask =
{
Notes = "A mask of all valid skin parts combined",
},
},
ConstantGroups =
{
eBlockFace =
{
Include = "^BLOCK_FACE_.*",
TextBefore = [[
These constants are used to describe individual faces of the block. They are used when the
client is interacting with a block in the {{OnPlayerBreakingBlock|HOOK_PLAYER_BREAKING_BLOCK}},
{{OnPlayerBrokenBlock|HOOK_PLAYER_BROKEN_BLOCK}}, {{OnPlayerLeftClick|HOOK_PLAYER_LEFT_CLICK}},
{{OnPlayerPlacedBlock|HOOK_PLAYER_PLACED_BLOCK}}, {{OnPlayerPlacingBlock|HOOK_PLAYER_PLACING_BLOCK}},
{{OnPlayerRightClick|HOOK_PLAYER_RIGHT_CLICK}}, {{OnPlayerUsedBlock|HOOK_PLAYER_USED_BLOCK}},
{{OnPlayerUsedItem|HOOK_PLAYER_USED_ITEM}}, {{OnPlayerUsingBlock|HOOK_PLAYER_USING_BLOCK}},
and {{OnPlayerUsingItem|HOOK_PLAYER_USING_ITEM}} hooks, or when the {{cLineBlockTracer}} hits a
block, etc.
]],
},
eBlockType =
{
Include = "^E_BLOCK_.*",
TextBefore = [[
These constants are used for block types. They correspond directly with MineCraft's data values
for blocks.
]],
},
eClickAction =
{
Include = "^ca.*",
TextBefore = [[
These constants are used to signalize various interactions that the user can do with the
{{cWindow|UI windows}}. The server translates the protocol events into these constants. Note
that there is a global ClickActionToString() function that can translate these constants into
their textual representation.
]],
},
eDamageType =
{
Include = "^dt.*",
TextBefore = [[
These constants are used for specifying the cause of damage to entities. They are used in the
{{TakeDamageInfo}} structure, as well as in {{cEntity}}'s damage-related API functions.
]],
},
DigStatuses =
{
Include = "^DIG_STATUS_.*",
TextBefore = [[
These constants are used to describe digging statuses, but in reality cover several more cases.
They are used with {{OnPlayerLeftClick|HOOK_PLAYER_LEFT_CLICK}}.
]],
},
eDimension =
{
Include = "^dim.*",
TextBefore = [[
These constants represent dimension of a world. In Cuberite, the dimension is only reflected in
the world's overall tint - overworld gets sky-like colors and dark shades, the nether gets
reddish haze and the end gets dark haze. World generator is not directly affected by the
dimension, same as fluid simulators; those only default to the expected values if not set
specifically otherwise in the world.ini file.
]],
},
eExplosionSource =
{
Include = "^es.*",
TextBefore = [[
These constants are used to differentiate the various sources of explosions. They are used in
the {{OnExploded|HOOK_EXPLODED}} hook, {{OnExploding|HOOK_EXPLODING}} hook and in the
{{cWorld}}:DoExplosionAt() function. These constants also dictate the type of the additional
data provided with the explosions, such as the exploding creeper {{cEntity|entity}} or the
{{Vector3i|coords}} of the exploding bed.
]],
},
eGameMode =
{
Include =
{
"^gm.*",
"^eGameMode_.*",
},
TextBefore = [[
The following constants are used for the gamemode - survival, creative or adventure. Use the
gmXXX constants, the eGameMode_ constants are deprecated and will be removed from the API.
]],
},
EMCSBiome =
{
Include = "^bi.*",
TextBefore = [[
These constants represent the biomes that the server understands. Note that there is a global
StringToBiome() function that can convert a string into one of these constants.
]],
},
eMessageType =
{
-- Need to be specified explicitly, because there's also eMonsterType using the same "mt" prefix
Include =
{
"mtCustom",
"mtDeath",
"mtError",
"mtFail",
"mtFailure",
"mtFatal",
"mtInfo",
"mtInformation",
"mtJoin",
"mtLeave",
"mtMaxPlusOne",
"mtPrivateMessage",
"mtPM",
"mtSuccess",
"mtWarning",
},
TextBefore = [[
These constants are used together with messaging functions and classes, they specify the type of
message being sent. The server can be configured to modify the message text (add prefixes) based
on the message's type.
]],
},
eMobHeadType =
{
Include = "SKULL_TYPE_.*",
},
eMobHeadRotation =
{
Include = "SKULL_ROTATION_.*",
},
eMonsterType =
{
Include =
{
"mtInvalidType",
"mtBat",
"mtBlaze",
"mtCaveSpider",
"mtChicken",
"mtCow",
"mtCreeper",
"mtEnderDragon",
"mtEnderman",
"mtGhast",
"mtGiant",
"mtGuardian",
"mtHorse",
"mtIronGolem",
"mtMagmaCube",
"mtMooshroom",
"mtOcelot",
"mtPig",
"mtRabbit",
"mtSheep",
"mtSilverfish",
"mtSkeleton",
"mtSlime",
"mtSnowGolem",
"mtSpider",
"mtSquid",
"mtVillager",
"mtWitch",
"mtWither",
"mtWitherSkeleton",
"mtWolf",
"mtZombie",
"mtZombiePigman",
"mtZombieVillager",
"mtMax",
},
TextBefore = [[
The following constants are used for distinguishing between the individual mob types:
]],
},
eShrapnelLevel =
{
Include = "^sl.*",
TextBefore = [[
The following constants define the block types that are propelled outwards after an explosion.
]],
},
eSkinPart =
{
Include =
{
"^sp.*",
},
TextBefore = [[
These constants represent various skin part flags.
]],
},
eSpreadSource =
{
Include = "^ss.*",
TextBefore = [[
These constants are used to differentiate the various sources of spreads, such as grass growing.
They are used in the {{OnBlockSpread|HOOK_BLOCK_SPREAD}} hook.
]],
},
eWeather =
{
Include =
{
"^eWeather_.*",
"wSunny",
"wRain",
"wStorm",
"wThunderstorm",
},
TextBefore = [[
These constants represent the weather in the world. Note that unlike vanilla, Cuberite allows
different weathers even in non-overworld {{Globals#eDimension|dimensions}}.
]],
},
ItemTypes =
{
Include = "^E_ITEM_.*",
TextBefore = [[
These constants are used for item types. They correspond directly with MineCraft's data values
for items.
]],
},
MetaValues =
{
Include = "^E_META_.*",
},
},
},
ItemCategory =
{
Desc = [[
This class contains static functions for determining item categories. All of the functions are
called directly on the class table, unlike most other object, which require an instance first.
]],
Functions =
{
IsArmor =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of an armor.",
},
IsAxe =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of an axe.",
},
IsBoots =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of boots.",
},
IsChestPlate =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a chestplate.",
},
IsHelmet =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a helmet.",
},
IsHoe =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a hoe.",
},
IsHorseArmor=
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a horse armor.",
},
IsLeggings =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a leggings.",
},
IsMinecart =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a minecart.",
},
IsPickaxe =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a pickaxe.",
},
IsShovel =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a shovel.",
},
IsSword =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a sword.",
},
IsTool =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a tool (axe, hoe, pickaxe, shovel or FIXME: sword)",
},
IsVillagerFood =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item type is any kind of a pickable food by a villager (potato, carrot, wheat, bread and any kind of seeds).",
}
},
AdditionalInfo =
{
{
Header = "Code example",
Contents = [[
The following code snippet checks if the player holds a shovel.
-- a_Player is a {{cPlayer}} object, possibly received as a hook param
local HeldItem = a_Player:GetEquippedItem()
if (ItemCategory.IsShovel(HeldItem.m_ItemType)) then
-- It's a shovel
end
]],
},
},
},
lxp =
{
Desc = [[
This class provides an interface to the XML parser,
{{https://matthewwild.co.uk/projects/luaexpat/|LuaExpat}}. It provides a SAX interface with an
incremental XML parser.
With an event-based API like SAX the XML document can be fed to the parser in chunks, and the
parsing begins as soon as the parser receives the first document chunk. LuaExpat reports parsing
events (such as the start and end of elements) directly to the application through callbacks. The
parsing of huge documents can benefit from this piecemeal operation.
See the online
{{https://matthewwild.co.uk/projects/luaexpat/manual.html#parser|LuaExpat documentation}} for details
on how to work with this parser. The code examples below should provide some basic help, too.
]],
Functions =
{
new =
{
Params =
{
{
Name = "CallbacksTable",
Type = "table",
},
{
Name = "SeparatorChar",
Type = "string",
IsOptional = true,
},
},
Returns =
{
{
Name = "XMLParser object",
Type = "table",
},
},
Notes = "Creates a new XML parser object, with the specified callbacks table and optional separator character.",
},
},
Constants =
{
_COPYRIGHT =
{
Notes = "",
},
_DESCRIPTION =
{
Notes = "",
},
_VERSION =
{
Notes = "",
},
},
AdditionalInfo =
{
{
Header = "Parser callbacks",
Contents = [[
The callbacks table passed to the new() function specifies the Lua functions that the parser
calls upon various events. The following table lists the most common functions used, for a
complete list see the online
{{https://matthewwild.co.uk/projects/luaexpat/manual.html#parser|LuaExpat documentation}}.
Function name
Parameters
Notes
CharacterData
Parser, string
Called when the parser recognizes a raw string inside the element
EndElement
Parser, ElementName
Called when the parser detects the ending of an XML element
StartElement
Parser, ElementName, AttributesTable
Called when the parser detects the start of an XML element. The AttributesTable is a Lua table containing all the element's attributes, both in the array section (in the order received) and in the dictionary section.
]],
},
{
Header = "XMLParser object",
Contents = [[
The XMLParser object returned by lxp.new provides the functions needed to parse the XML. The
following list provides the most commonly used ones, for a complete list see the online
{{https://matthewwild.co.uk/projects/luaexpat/manual.html#parser|LuaExpat documentation}}.
close() - closes the parser, freeing all memory used by it.
getCallbacks() - returns the callbacks table for this parser.
parse(string) - parses more document data. the string contains the next part (or possibly all) of the document. Returns non-nil for success or nil, msg, line, col, pos for error.
stop() - aborts parsing (can be called from within the parser callbacks).
]],
},
{
Header = "Code example",
Contents = [[
The following code reads an entire XML file and outputs its logical structure into the console:
local Depth = 0;
-- Define the callbacks:
local Callbacks = {
CharacterData = function(a_Parser, a_String)
LOG(string.rep(" ", Depth) .. "* " .. a_String);
end
EndElement = function(a_Parser, a_ElementName)
Depth = Depth - 1;
LOG(string.rep(" ", Depth) .. "- " .. a_ElementName);
end
StartElement = function(a_Parser, a_ElementName, a_Attribs)
LOG(string.rep(" ", Depth) .. "+ " .. a_ElementName);
Depth = Depth + 1;
end
}
-- Create the parser:
local Parser = lxp.new(Callbacks);
-- Parse the XML file:
local f = io.open("file.xml", "rb");
while (true) do
local block = f:read(128 * 1024); -- Use a 128KiB buffer for reading
if (block == nil) then
-- End of file
break;
end
Parser:parse(block);
end
-- Signalize to the parser that no more data is coming
Parser:parse();
-- Close the parser:
Parser:close();
]],
},
},
},
sqlite3 =
{
Desc = [[
]],
Functions =
{
complete =
{
IsStatic = true,
IsGlobal = true, -- Emulate a global function without a self parameter - this is called with a dot convention
Params =
{
{
Name = "SQL",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the input string comprises one or more complete SQL statements.",
},
open =
{
IsStatic = true,
IsGlobal = true, -- Emulate a global function without a self parameter - this is called with a dot convention
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Returns =
{
{
Name = "DBClass",
Type = "SQLite DB object",
},
},
Notes = [[
Opens (or creates if it does not exist) an SQLite database with name filename and returns its
handle (the returned object should be used for all further method calls in connection
with this specific database, see
{{http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki#database_methods|Database methods}}).
Example:
-- open the database:
myDB = sqlite3.open('MyDatabaseFile.sqlite3')
-- do some database calls...
-- Close the database:
myDB:close()
]],
},
open_memory =
{
IsStatic = true,
IsGlobal = true, -- Emulate a global function without a self parameter - this is called with a dot convention
Returns =
{
{
Name = "DBClass",
Type = "SQLite DB object",
},
},
Notes = "Opens an SQLite database in memory and returns its handle. In case of an error, the function returns nil, an error code and an error message. (In-memory databases are volatile as they are never stored on disk.)",
},
version =
{
IsStatic = true,
IsGlobal = true, -- Emulate a global function without a self parameter - this is called with a dot convention
Returns =
{
{
Type = "string",
},
},
Notes = "Returns a string with SQLite version information, in the form 'x.y[.z]'.",
},
},
},
TakeDamageInfo =
{
Desc = [[
This class contains the amount of damage, and the entity that caused the damage. It is used in the
{{OnTakeDamage|HOOK_TAKE_DAMAGE}} hook and in the {{cEntity}}'s TakeDamage() function.
]],
Variables =
{
Attacker =
{
Type = "{{cEntity}}",
Notes = "The entity who is attacking. Only valid if dtAttack.",
},
DamageType =
{
Type = "eDamageType",
Notes = "Source of the damage. One of the dtXXX constants.",
},
FinalDamage =
{
Type = "number",
Notes = "The final amount of damage that will be applied to the Receiver. It is the RawDamage minus any Receiver's armor-protection.",
},
Knockback =
{
Type = "{{Vector3d}}",
Notes = "Vector specifying the amount and direction of knockback that will be applied to the Receiver ",
},
RawDamage =
{
Type = "number",
Notes = "Amount of damage that the attack produces on the Receiver, including the Attacker's equipped weapon, but excluding the Receiver's armor.",
},
},
AdditionalInfo =
{
{
Header = "",
Contents = [[
The TDI is passed as the second parameter in the HOOK_TAKE_DAMAGE hook, and can be used to
modify the damage before it is applied to the receiver:
function OnTakeDamage(Receiver, TDI)
LOG("Damage: Raw ".. TDI.RawDamage .. ", Final:" .. TDI.FinalDamage);
-- If the attacker is a spider, make it deal 999 points of damage (insta-death spiders):
if ((TDI.Attacker ~= nil) and TDI.Attacker:IsA("cSpider")) then
TDI.FinalDamage = 999;
end
end
]],
},
},
},
tolua =
{
Desc = [[
This class represents the tolua bridge between the Lua API and Cuberite. It supports some low
level operations and queries on the objects. See also the tolua++'s documentation at
{{https://www8.cs.umu.se/kurser/TDBD12/VT04/lab/lua/tolua++.html#utilities}}. Normally you shouldn't use any of these
functions except for type()
]],
Functions =
{
cast =
{
IsStatic = true,
IsGlobal = true, -- Emulate a global function without a self parameter - this is called with a dot convention
Params =
{
{
Name = "Object",
Type = "any",
},
{
Name = "TypeStr",
Type = "string",
},
},
Returns =
{
{
Name = "Object",
Type = "any",
},
},
Notes = "Casts the object to the specified type. Note: This is a potentially unsafe operation and it could crash the server. There is normally no need to use this function at all, so don't use it unless you know exactly what you're doing.",
},
getpeer =
{
Notes = "",
},
inherit =
{
Notes = "",
},
releaseownership =
{
Notes = "",
},
setpeer =
{
Notes = "",
},
takeownership =
{
Notes = "",
},
type =
{
IsStatic = true,
IsGlobal = true, -- Emulate a global function without a self parameter - this is called with a dot convention
Params =
{
{
Name = "Object",
Type = "any",
},
},
Returns =
{
{
Name = "TypeStr",
Type = "string",
},
},
Notes = "Returns a string representing the type of the object. This works similar to Lua's built-in type() function, but recognizes the underlying C++ classes, too.",
},
},
},
},
ExtraPages =
{
{
FileName = "Writing-a-Cuberite-plugin.html",
Title = "Writing a Cuberite plugin",
},
{
FileName = "InfoFile.html",
Title = "Using the Info.lua file",
},
{
FileName = "SettingUpDecoda.html",
Title = "Setting up the Decoda Lua IDE",
},
{
FileName = "SettingUpZeroBrane.html",
Title = "Setting up the ZeroBrane Studio Lua IDE",
},
{
FileName = "SettingUpLuaLanguageServer.html",
Title = "Setting up Lua-Language-Server (VSCode/Emacs)"
},
{
FileName = "UsingChunkStays.html",
Title = "Using ChunkStays",
},
{
FileName = "WebWorldThreads.html",
Title = "Webserver vs World threads",
},
},
IgnoreClasses =
{
"^coroutine$",
"^g_TrackedPages$",
"^debug$",
"^io$",
"^math$",
"^package$",
"^os$",
"^string$",
"^table$",
"^g_Stats$",
},
IgnoreFunctions =
{
"Globals.assert",
"%a+%.delete",
"CreateAPITables",
"DumpAPIHtml",
"DumpAPITxt",
"Initialize",
"LinkifyString",
"ListMissingPages",
"ListUndocumentedObjects",
"ListUnexportedObjects",
"LoadAPIFiles",
"Globals.collectgarbage",
"ReadDescriptions",
"ReadHooks",
"WriteHtmlClass",
"WriteHtmlHook",
"WriteStats",
"Globals.xpcall",
"Globals.decoda_output",
"sqlite3.__newindex",
"%a+%.__%a+",
"%a+%.%.collector",
"%a+%.new",
"%a+%.new_local",
},
IgnoreConstants =
{
"cChestEntity.__cBlockEntityWindowOwner__",
"cDropSpenserEntity.__cBlockEntityWindowOwner__",
"cFurnaceEntity.__cBlockEntityWindowOwner__",
"cHopperEntity.__cBlockEntityWindowOwner__",
"cLuaWindow.__cItemGrid__cListener__",
"Globals._CuberiteInternal_.*",
"Globals.esMax",
"Globals.E_BLOCK_*",
},
IgnoreVariables =
{
"__.*__",
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/BlockArea.lua
================================================
return
{
cBlockArea =
{
Desc = [[
This class is used when multiple adjacent blocks are to be manipulated. Because of chunking
and multithreading, manipulating single blocks using {{cWorld|cWorld:SetBlock}}() is a rather
time-consuming operation (locks for exclusive access need to be obtained, chunk lookup is done
for each block), so whenever you need to manipulate multiple adjacent blocks, it's better to wrap
the operation into a cBlockArea access. cBlockArea is capable of reading / writing across chunk
boundaries, has no chunk lookups for get and set operations and is not subject to multithreading
locking (because it is not shared among threads).
cBlockArea remembers its origin (MinX, MinY, MinZ coords in the Read() call) and therefore supports
absolute as well as relative get / set operations. Despite that, the contents of a cBlockArea can
be written back into the world at any coords. Most functions in this class come in pair, one that
works with the absolute coords (what the coords would have been in the original world the area was read
from) and one (usually with "Rel" in their name) that work on the relative coords (those range from
zero to Size - 1). Also note that most functions will raise an error if an out-of-range coord is
supplied to them.
cBlockArea can hold any combination of the following datatypes:
block types
block metas
blocklight
skylight
block entities (only together with block types)
Read() and Write() functions have parameters that tell the class which datatypes to read / write.
Note that a datatype that has not been read cannot be written.
Block entities stored inside a cBlockArea object have their position set to the relative position
within the area.
Typical usage:
Create cBlockArea object
Read an area from the world / load from file / create anew
Modify blocks inside cBlockArea
Write the area back to a world / save to file
Calls to any setter of this class will not trigger simulator updates (lava, water, redstone).
]],
Functions =
{
Clear =
{
Notes = "Clears the object, resets it to zero size",
},
constructor =
{
Returns =
{
{
Type = "cBlockArea",
},
},
Notes = "Creates a new empty cBlockArea object",
},
CopyFrom =
{
Params =
{
{
Name = "BlockAreaSrc",
Type = "cBlockArea",
},
},
Notes = "Copies contents from BlockAreaSrc into self",
},
CopyTo =
{
Params =
{
{
Name = "BlockAreaDst",
Type = "cBlockArea",
},
},
Notes = "Copies contents from self into BlockAreaDst.",
},
CountNonAirBlocks =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the count of blocks that are not air. Returns 0 if blocktypes not available. Block metas are ignored (if present, air with any meta is still considered air).",
},
CountSpecificBlocks =
{
{
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Counts the number of occurences of the specified blocktype contained in the area.",
},
{
Params =
{
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Counts the number of occurrences of the specified blocktype + blockmeta combination contained in the area.",
},
},
Create =
{
{
Params =
{
{
Name = "SizeX",
Type = "number",
},
{
Name = "SizeY",
Type = "number",
},
{
Name = "SizeZ",
Type = "number",
},
},
Notes = "Initializes this BlockArea to an empty area of the specified size and origin of {0, 0, 0}. Datatypes are set to baTypes + baMetas. Any previous contents are lost.",
},
{
Params =
{
{
Name = "SizeX",
Type = "number",
},
{
Name = "SizeY",
Type = "number",
},
{
Name = "SizeZ",
Type = "number",
},
{
Name = "DataTypes",
Type = "number",
},
},
Notes = "Initializes this BlockArea to an empty area of the specified size and origin of {0, 0, 0}. Any previous contents are lost.",
},
{
Params =
{
{
Name = "Size",
Type = "Vector3i",
},
},
Notes = "Creates a new area of the specified size. Datatypes are set to baTypes + baMetas. Origin is set to all zeroes. BlockTypes are set to air, block metas to zero, blocklights to zero and skylights to full light.",
},
{
Params =
{
{
Name = "Size",
Type = "Vector3i",
},
{
Name = "DataTypes",
Type = "number",
},
},
Notes = "Creates a new area of the specified size and contents. Origin is set to all zeroes. BlockTypes are set to air, block metas to zero, blocklights to zero and skylights to full light.",
},
},
Crop =
{
Params =
{
{
Name = "AddMinX",
Type = "number",
},
{
Name = "SubMaxX",
Type = "number",
},
{
Name = "AddMinY",
Type = "number",
},
{
Name = "SubMaxY",
Type = "number",
},
{
Name = "AddMinZ",
Type = "number",
},
{
Name = "SubMaxZ",
Type = "number",
},
},
Notes = "Crops the specified number of blocks from each border. Modifies the size of this blockarea object.",
}, -- Crop
DoWithBlockEntityAt =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Callback",
Type = "function",
},
},
Returns =
{
Name = "HasCalled",
Type = "boolean",
},
Notes = "Calls the specified callback with the block entity at the specified absolute coords. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
Returns false if there's no block entity at the specified coords. Returns the value that the callback has returned otherwise.",
},
{
Params =
{
{
Name = "Coords",
Type = "Vector3i",
},
{
Name = "Callback",
Type = "function",
},
},
Returns =
{
Name = "HasCalled",
Type = "boolean",
},
Notes = "Calls the specified callback with the block entity at the specified absolute coords. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
Returns false if there's no block entity at the specified coords. Returns the value that the callback has returned otherwise.",
},
}, -- DoWithBlockEntityAt
DoWithBlockEntityRelAt =
{
{
Params =
{
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "Callback",
Type = "function",
},
},
Returns =
{
Name = "HasCalled",
Type = "boolean",
},
Notes = "Calls the specified callback with the block entity at the specified relative coords. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
Returns false if there's no block entity at the specified coords. Returns the value that the callback has returned otherwise.",
},
{
Params =
{
{
Name = "RelCoords",
Type = "Vector3i",
},
{
Name = "Callback",
Type = "function",
},
},
Returns =
{
Name = "HasCalled",
Type = "boolean",
},
Notes = "Calls the specified callback with the block entity at the specified relative coords. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
Returns false if there's no block entity at the specified coords. Returns the value that the callback has returned otherwise.",
},
}, -- DoWithBlockEntityRelAt
DumpToRawFile =
{
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Notes = "Dumps the raw data into a file. For debugging purposes only.",
},
Expand =
{
Params =
{
{
Name = "SubMinX",
Type = "number",
},
{
Name = "AddMaxX",
Type = "number",
},
{
Name = "SubMinY",
Type = "number",
},
{
Name = "AddMaxY",
Type = "number",
},
{
Name = "SubMinZ",
Type = "number",
},
{
Name = "AddMaxZ",
Type = "number",
},
},
Notes = "Expands the specified number of blocks from each border. Modifies the size of this blockarea object. New blocks created with this operation are filled with zeroes.",
},
Fill =
{
Params =
{
{
Name = "DataTypes",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
IsOptional = true,
},
{
Name = "BlockLight",
Type = "number",
IsOptional = true,
},
{
Name = "BlockSkyLight",
Type = "number",
IsOptional = true,
},
},
Notes = "Fills the entire block area with the same values, specified. Uses the DataTypes param to determine which content types are modified.",
},
FillRelCuboid =
{
{
Params =
{
{
Name = "RelCuboid",
Type = "cCuboid",
},
{
Name = "DataTypes",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
IsOptional = true,
},
{
Name = "BlockLight",
Type = "number",
IsOptional = true,
},
{
Name = "BlockSkyLight",
Type = "number",
IsOptional = true,
},
},
Notes = "Fills the specified cuboid (in relative coords) with the same values (like Fill() ).",
},
{
Params =
{
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
{
Name = "DataTypes",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
IsOptional = true,
},
{
Name = "BlockLight",
Type = "number",
IsOptional = true,
},
{
Name = "BlockSkyLight",
Type = "number",
IsOptional = true,
},
},
Notes = "Fills the specified cuboid with the same values (like Fill() ).",
},
},
ForEachBlockEntity =
{
Params =
{
{
Name = "Coords",
Type = "Vector3i",
},
{
Name = "Callback",
Type = "function",
},
},
Returns =
{
Name = "HasProcessedAll",
Type = "boolean",
},
Notes = "Calls the specified callback with the block entity for each block entity contained in the object. Returns true if all block entities have been processed (including when there are zero block entities), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
The callback should return false or no value to continue with the next block entity, or true to abort the enumeration.",
}, -- ForEachBlockEntity
GetBlockLight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BlockLight",
Type = "number",
},
},
Notes = "Returns the blocklight (emissive light) at the specified absolute coords",
},
GetBlockMeta =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Returns the block meta at the specified absolute coords",
},
GetBlockSkyLight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BlockSkyLight",
Type = "number",
},
},
Notes = "Returns the skylight at the specified absolute coords",
},
GetBlockType =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the block type at the specified absolute coords",
},
GetBlockTypeMeta =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Returns the block type and meta at the specified absolute coords",
},
GetBounds =
{
Params = {},
Returns =
{
{
Name = "Bounds",
Type = "cCuboid",
}
},
Notes = "Returns the {{cCuboid|cuboid}} that specifies the original coords of the world from which the area was read. Basically constructs a {{cCuboid}} out of GetOrigin() and GetOrigin() + GetCoordRange().",
},
GetCoordRange =
{
Returns =
{
{
Name = "MaxX",
Type = "number",
},
{
Name = "MaxY",
Type = "number",
},
{
Name = "MaxZ",
Type = "number",
},
},
Notes = "Returns the maximum relative coords in all 3 axes. See also GetSize().",
},
GetDataTypes =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the mask of datatypes (ba* constants added together) that the object is currently holding.",
},
GetNonAirCropRelCoords =
{
Params =
{
{
Name = "IgnoredBlockType",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "MinRelX",
Type = "number",
},
{
Name = "MinRelY",
Type = "number",
},
{
Name = "MinRelZ",
Type = "number",
},
{
Name = "MaxRelX",
Type = "number",
},
{
Name = "MaxRelY",
Type = "number",
},
{
Name = "MaxRelZ",
Type = "number",
},
},
Notes = "Returns the minimum and maximum coords in each direction for the first block in each direction of type different to IgnoredBlockType (E_BLOCK_AIR by default). If there are no non-ignored blocks within the area, or blocktypes are not present, the returned values are reverse-ranges (MinX <- m_RangeX, MaxX <- 0 etc.). IgnoreBlockType defaults to air.",
},
GetOrigin =
{
Returns =
{
{
Name = "OriginX",
Type = "number",
},
{
Name = "OriginY",
Type = "number",
},
{
Name = "OriginZ",
Type = "number",
},
},
Notes = "Returns the origin coords of where the area was read from.",
},
GetOriginX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the origin x-coord",
},
GetOriginY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the origin y-coord",
},
GetOriginZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the origin z-coord",
},
GetRelBlockLight =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "NIBBLETYPE",
Type = "number",
},
},
Notes = "Returns the blocklight at the specified relative coords",
},
GetRelBlockMeta =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "NIBBLETYPE",
Type = "number",
},
},
Notes = "Returns the block meta at the specified relative coords",
},
GetRelBlockSkyLight =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "NIBBLETYPE",
Type = "number",
},
},
Notes = "Returns the skylight at the specified relative coords",
},
GetRelBlockType =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the block type at the specified relative coords",
},
GetRelBlockTypeMeta =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
{
Name = "NIBBLETYPE",
Type = "number",
},
},
Notes = "Returns the block type and meta at the specified relative coords",
},
GetSize =
{
Returns =
{
{
Name = "SizeX",
Type = "number",
},
{
Name = "SizeY",
Type = "number",
},
{
Name = "SizeZ",
Type = "number",
},
},
Notes = "Returns the size of the area in all 3 axes. See also GetCoordRange().",
},
GetSizeX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the size of the held data in the x-axis",
},
GetSizeY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the size of the held data in the y-axis",
},
GetSizeZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the size of the held data in the z-axis",
},
GetVolume =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the volume of the area - the total number of blocks stored within.",
},
GetWEOffset =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns the WE offset, a data value sometimes stored in the schematic files. Cuberite doesn't use this value, but provides access to it using this method. The default is {0, 0, 0}.",
},
HasBlockEntities =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if current datatypes include block entities.",
},
HasBlockLights =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if current datatypes include blocklight",
},
HasBlockMetas =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if current datatypes include block metas",
},
HasBlockSkyLights =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if current datatypes include skylight",
},
HasBlockTypes =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if current datatypes include block types",
},
IsValidCoords =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified absolute coords are within the area.",
},
{
Params =
{
{
Name = "Coords",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified absolute coords are within the area.",
},
}, -- IsValidCoords
IsValidDataTypeCombination =
{
IsStatic = true,
Params =
{
{
Name = "DataTypes",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified combination of datatypes (ba* constants added together) is valid. Most combinations are valid, but for example baBlockEntities without baTypes is an invalid combination.",
}, -- IsValidDataTypeCombination
IsValidRelCoords =
{
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
}
},
Notes = "Returns true if the specified relative coords are within the area.",
},
{
Params =
{
{
Name = "RelCoords",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
}
},
Notes = "Returns true if the specified relative coords are within the area.",
},
}, -- IsValidRelCoords
LoadFromSchematicFile =
{
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Returns =
{
{ Type = "boolean" },
},
Notes = "Clears current content and loads new content from the specified schematic file. Returns true if successful. Returns false and logs error if unsuccessful, old content is preserved in such a case.",
},
LoadFromSchematicString =
{
Params =
{
{
Name = "SchematicData",
Type = "string",
},
},
Returns =
{
{ Type = "boolean" },
},
Notes = "Clears current content and loads new content from the specified string (assumed to contain .schematic data). Returns true if successful. Returns false and logs error if unsuccessful, old content is preserved in such a case.",
},
Merge =
{
{
Params =
{
{
Name = "BlockAreaSrc",
Type = "cBlockArea",
},
{
Name = "RelMinCoords",
Type = "number",
},
{
Name = "Strategy",
Type = "string",
},
},
Notes = "Merges BlockAreaSrc into this object at the specified relative coords, using the specified strategy",
},
{
Params =
{
{
Name = "BlockAreaSrc",
Type = "cBlockArea",
},
{
Name = "RelX",
Type = "number",
},
{
Name = "RelY",
Type = "number",
},
{
Name = "RelZ",
Type = "number",
},
{
Name = "Strategy",
Type = "string",
},
},
Notes = "Merges BlockAreaSrc into this object at the specified relative coords, using the specified strategy",
},
},
MirrorXY =
{
Notes = "Mirrors this block area around the XY plane. Modifies blocks' metas (if present) to match (i. e. furnaces facing the opposite direction).",
},
MirrorXYNoMeta =
{
Notes = "Mirrors this block area around the XY plane. Doesn't modify blocks' metas.",
},
MirrorXZ =
{
Notes = "Mirrors this block area around the XZ plane. Modifies blocks' metas (if present)",
},
MirrorXZNoMeta =
{
Notes = "Mirrors this block area around the XZ plane. Doesn't modify blocks' metas.",
},
MirrorYZ =
{
Notes = "Mirrors this block area around the YZ plane. Modifies blocks' metas (if present)",
},
MirrorYZNoMeta =
{
Notes = "Mirrors this block area around the YZ plane. Doesn't modify blocks' metas.",
},
Read =
{
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "Cuboid",
Type = "cCuboid",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Reads the area from World, returns true if successful. baTypes and baMetas are read.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "Cuboid",
Type = "cCuboid",
},
{
Name = "DataTypes",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Reads the area from World, returns true if successful. DataTypes is the sum of baXXX datatypes to be read",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "Point1",
Type = "Vector3i",
},
{
Name = "Point2",
Type = "Vector3i",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Reads the area from World, returns true if successful. baTypes and baMetas are read.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "Point1",
Type = "Vector3i",
},
{
Name = "Point2",
Type = "Vector3i",
},
{
Name = "DataTypes",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Reads the area from World, returns true if successful. DataTypes is a sum of baXXX datatypes to be read.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "MinX",
Type = "number",
},
{
Name = "MaxX",
Type = "number",
},
{
Name = "MinY",
Type = "number",
},
{
Name = "MaxY",
Type = "number",
},
{
Name = "MinZ",
Type = "number",
},
{
Name = "MaxZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Reads the area from World, returns true if successful. baTypes and baMetas are read.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "MinX",
Type = "number",
},
{
Name = "MaxX",
Type = "number",
},
{
Name = "MinY",
Type = "number",
},
{
Name = "MaxY",
Type = "number",
},
{
Name = "MinZ",
Type = "number",
},
{
Name = "MaxZ",
Type = "number",
},
{
Name = "DataTypes",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Reads the area from World, returns true if successful. DataTypes is a sum of baXXX datatypes to read.",
},
},
RelLine =
{
{
Params =
{
{
Name = "RelPoint1",
Type = "Vector3i",
},
{
Name = "RelPoint2",
Type = "Vector3i",
},
{
Name = "DataTypes",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
IsOptional = true,
},
{
Name = "BlockLight",
Type = "number",
IsOptional = true,
},
{
Name = "BlockSkyLight",
Type = "number",
IsOptional = true,
},
},
Notes = "Draws a line between the two specified points. Sets only datatypes specified by DataTypes (baXXX constants).",
},
{
Params =
{
{
Name = "RelX1",
Type = "number",
},
{
Name = "RelY1",
Type = "number",
},
{
Name = "RelZ1",
Type = "number",
},
{
Name = "RelX2",
Type = "number",
},
{
Name = "RelY2",
Type = "number",
},
{
Name = "RelZ2",
Type = "number",
},
{
Name = "DataTypes",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
IsOptional = true,
},
{
Name = "BlockLight",
Type = "number",
IsOptional = true,
},
{
Name = "BlockSkyLight",
Type = "number",
IsOptional = true,
},
},
Notes = "Draws a line between the two specified points. Sets only datatypes specified by DataTypes (baXXX constants).",
},
},
RotateCCW =
{
Notes = "Rotates the block area around the Y axis, counter-clockwise (east -> north). Modifies blocks' metas (if present) to match.",
},
RotateCCWNoMeta =
{
Notes = "Rotates the block area around the Y axis, counter-clockwise (east -> north). Doesn't modify blocks' metas.",
},
RotateCW =
{
Notes = "Rotates the block area around the Y axis, clockwise (north -> east). Modifies blocks' metas (if present) to match.",
},
RotateCWNoMeta =
{
Notes = "Rotates the block area around the Y axis, clockwise (north -> east). Doesn't modify blocks' metas.",
},
SaveToSchematicFile =
{
Params =
{
{
Name = "FileName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Saves the current contents to a schematic file. Returns true if successful.",
},
SaveToSchematicString =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Saves the current contents to a string (in a .schematic file format). Returns the data if successful, nil if failed.",
},
SetBlockLight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockLight",
Type = "number",
},
},
Notes = "Sets the blocklight at the specified absolute coords",
},
SetBlockMeta =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block meta at the specified absolute coords.",
},
SetBlockSkyLight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockSkyLight",
Type = "number",
},
},
Notes = "Sets the skylight at the specified absolute coords",
},
SetBlockType =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
},
Notes = "Sets the block type at the specified absolute coords",
},
SetBlockTypeMeta =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block type and meta at the specified absolute coords",
},
SetOrigin =
{
{
Params =
{
{
Name = "Origin",
Type = "Vector3i",
},
},
Notes = "Resets the origin for the absolute coords. Only affects how absolute coords are translated into relative coords.",
},
{
Params =
{
{
Name = "OriginX",
Type = "number",
},
{
Name = "OriginY",
Type = "number",
},
{
Name = "OriginZ",
Type = "number",
},
},
Notes = "Resets the origin for the absolute coords. Only affects how absolute coords are translated into relative coords.",
},
},
SetRelBlockLight =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
{
Name = "BlockLight",
Type = "number",
},
},
Notes = "Sets the blocklight at the specified relative coords",
},
SetRelBlockMeta =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block meta at the specified relative coords",
},
SetRelBlockSkyLight =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
{
Name = "BlockSkyLight",
Type = "number",
},
},
Notes = "Sets the skylight at the specified relative coords",
},
SetRelBlockType =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
},
Notes = "Sets the block type at the specified relative coords",
},
SetRelBlockTypeMeta =
{
Params =
{
{
Name = "RelBlockX",
Type = "number",
},
{
Name = "RelBlockY",
Type = "number",
},
{
Name = "RelBlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block type and meta at the specified relative coords",
},
SetWEOffset =
{
{
Params =
{
{
Name = "Offset",
Type = "Vector3i",
},
},
Notes = "Sets the WE offset, a data value sometimes stored in the schematic files. Mostly used for WorldEdit. Cuberite doesn't use this value, but provides access to it using this method.",
},
{
Params =
{
{
Name = "OffsetX",
Type = "number",
},
{
Name = "OffsetY",
Type = "number",
},
{
Name = "OffsetZ",
Type = "number",
},
},
Notes = "Sets the WE offset, a data value sometimes stored in the schematic files. Mostly used for WorldEdit. Cuberite doesn't use this value, but provides access to it using this method.",
},
},
Write =
{
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "MinPoint",
Type = "Vector3i",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Writes the area into World at the specified coords, returns true if successful. All present data types are written.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "MinPoint",
Type = "Vector3i",
},
{
Name = "DataTypes",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Writes the area into World at the specified coords, returns true if successful. DataTypes is the sum of baXXX datatypes to write.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "MinX",
Type = "number",
},
{
Name = "MinY",
Type = "number",
},
{
Name = "MinZ",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Writes the area into World at the specified coords, returns true if successful. All present data types are written.",
},
{
Params =
{
{
Name = "World",
Type = "cWorld",
},
{
Name = "MinX",
Type = "number",
},
{
Name = "MinY",
Type = "number",
},
{
Name = "MinZ",
Type = "number",
},
{
Name = "DataTypes",
Type = "number",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
},
Notes = "Writes the area into World at the specified coords, returns true if successful. DataTypes is the sum of baXXX datatypes to write.",
},
},
},
Constants =
{
baBlockEntities =
{
Notes = "Operations should work on block entities. Note that this flag is invalid without baTypes.",
},
baLight =
{
Notes = "Operations should work on block (emissive) light",
},
baMetas =
{
Notes = "Operations should work on block metas",
},
baSkyLight =
{
Notes = "Operations should work on skylight",
},
baTypes =
{
Notes = "Operation should work on block types",
},
msDifference =
{
Notes = "Block becomes air if 'self' and src are the same. Otherwise it becomes the src block.",
},
msFillAir =
{
Notes = "'self' is overwritten by Src only where 'self' has air blocks",
},
msImprint =
{
Notes = "Src overwrites 'self' anywhere where 'self' has non-air blocks",
},
msLake =
{
Notes = "Special mode for merging lake images",
},
msMask =
{
Notes = "The blocks that are exactly the same are kept in 'self', all differing blocks are replaced by air",
},
msOverwrite =
{
Notes = "Src overwrites anything in 'self'",
},
msSimpleCompare =
{
Notes = "The blocks that are exactly the same are replaced with air, all differing blocks are replaced by stone",
},
msSpongePrint =
{
Notes = "Similar to msImprint, sponge block doesn't overwrite anything, all other blocks overwrite everything",
},
},
ConstantGroups =
{
BATypes =
{
Include = "ba.*",
TextBefore = [[
The following constants are used to signalize the datatype to read or write:
]],
},
eMergeStrategy =
{
Include = "ms.*",
TextAfter = "See below for a detailed explanation of the individual merge strategies.",
TextBefore = [[
The Merge() function can use different strategies to combine the source and destination blocks.
The following constants are used:
]],
},
},
AdditionalInfo =
{
{
Header = "Merge strategies",
Contents = [[
The strategy parameter specifies how individual blocks are combined together, using the table below.
area block
result
this
Src
msOverwrite
msFillAir
msImprint
air
air
air
air
air
A
air
air
A
A
air
B
B
B
B
A
B
B
A
B
A
A
A
A
A
So to sum up:
msOverwrite completely overwrites all blocks with the Src's blocks
msFillAir overwrites only those blocks that were air
msImprint overwrites with only those blocks that are non-air
Special strategies
For each strategy, evaluate the table rows from top downwards, the first match wins.
msDifference - changes all the blocks which are the same to air. Otherwise the source block gets placed.
area block
Notes
*
B
B
The blocks are different so we use block B
B
B
Air
The blocks are the same so we get air.
msLake - used for merging areas with lava and water lakes, in the appropriate generator.
area block
Notes
self
Src
result
A
sponge
A
Sponge is the NOP block
*
air
air
Air always gets hollowed out, even under the oceans
water
*
water
Water is never overwritten
lava
*
lava
Lava is never overwritten
*
water
water
Water always overwrites anything
*
lava
lava
Lava always overwrites anything
dirt
stone
stone
Stone overwrites dirt
grass
stone
stone
... and grass
mycelium
stone
stone
... and mycelium
A
stone
A
... but nothing else
A
*
A
Everything else is left as it is
msSpongePrint - used for most prefab-generators to merge the prefabs. Similar to
msImprint, but uses the sponge block as the NOP block instead, so that the prefabs may carve out air
pockets, too.
area block
Notes
self
Src
result
A
sponge
A
Sponge is the NOP block
*
B
B
Everything else overwrites anything
msMask - the blocks that are the same in the other area are kept, all the
differing blocks are replaced with air. Meta is used in the comparison, too, two blocks of the
same type but different meta are considered different and thus replaced with air.
area block
Notes
self
Src
result
A
A
A
Same blocks are kept
A
non-A
air
Differing blocks are replaced with air
msDifference - the blocks that are the same in both areas are replaced with air, all the
differing blocks are kept from the first area. Meta is used in the comparison, too, two blocks of the
same type but different meta are considered different.
area block
Notes
self
Src
result
A
A
air
Same blocks are replaced with air
A
non-A
A
Differing blocks are kept from 'self'
msSimpleCompare - the blocks that are the same in both areas are replaced with air, all the
differing blocks are replaced with stone. Meta is used in the comparison, too, two blocks of the
same type but different meta are considered different.
area block
Notes
self
Src
result
A
A
air
Same blocks are replaced with air
A
non-A
stone
Differing blocks are replaced with stone
]],
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/BlockEntities.lua
================================================
return
{
cBeaconEntity =
{
Desc = [[
A beacon entity is a {{cBlockEntityWithItems}} descendant that represents a beacon
in the world.
]],
Functions =
{
CalculatePyramidLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Calculate the amount of layers the pyramid below the beacon has.",
},
GetBeaconLevel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the beacon level. (0 - 4)",
},
GetPrimaryEffect =
{
Returns =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
},
Notes = "Returns the primary effect.",
},
GetSecondaryEffect =
{
Returns =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
},
Notes = "Returns the secondary effect.",
},
GiveEffects =
{
Notes = "Give the near-players the effects.",
},
IsActive =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Is the beacon active?",
},
IsBeaconBlocked =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Is the beacon blocked by non-transparent blocks that are higher than the beacon?",
},
IsMineralBlock =
{
IsStatic = true,
Params =
{
{
Name = "BlockType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the block is a diamond block, a golden block, an iron block or an emerald block.",
},
IsValidEffect =
{
IsStatic = true,
Params =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
{
Name = "BeaconLevel",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the effect can be used.",
},
SetPrimaryEffect =
{
Params =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Select the primary effect. Returns false when the effect is invalid.",
},
SetSecondaryEffect =
{
Params =
{
{
Name = "EffectType",
Type = "cEntityEffect#eType",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Select the secondary effect. Returns false when the effect is invalid.",
},
UpdateBeacon =
{
Notes = "Update the beacon.",
},
},
Inherits = "cBlockEntityWithItems",
},
cBedEntity =
{
Desc = [[
A bed entity is a {{cBlockEntity}} descendant that represents a bed in the world.
]],
Functions =
{
GetColor =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the color of the bed.",
},
SetColor =
{
Params =
{
{
Type = "number",
},
},
Notes = "Set the color of the bed. A value between 0 - 15. The wool meta color values can be used.",
},
IsPillowBlock =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this is the pillow block, it has then the meta 8.",
},
},
Inherits = "cBlockEntity",
},
cBlockEntity =
{
Desc = [[
Block entities are simply blocks in the world that have persistent data, such as the text for a sign
or contents of a chest. All block entities are also saved in the chunk data of the chunk they reside in.
The cBlockEntity class acts as a common ancestor for all the individual block entities.
]],
Functions =
{
GetBlockType =
{
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the blocktype which is represented by this blockentity. This is the primary means of type-identification",
},
GetChunkX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the chunk X-coord of the block entity's chunk",
},
GetChunkZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the chunk Z-coord of the block entity's chunk",
},
GetPos =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns the name of the parent class, or empty string if no parent class.",
},
GetPosX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block X-coord of the block entity's block",
},
GetPosY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block Y-coord of the block entity's block",
},
GetPosZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block Z-coord of the block entity's block",
},
GetRelPos =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns the relative coords of the block entity's block within its chunk",
},
GetRelX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the relative X coord of the block entity's block within the chunk",
},
GetRelZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the relative Z coord of the block entity's block within the chunk",
},
GetWorld =
{
Returns =
{
{
Type = "cWorld",
},
},
Notes = "Returns the world to which the block entity belongs",
},
},
},
cBlockEntityWithItems =
{
Desc = [[
This class is a common ancestor for all {{cBlockEntity|block entities}} that provide item storage.
Internally, the object has a {{cItemGrid|cItemGrid}} object for storing the items; this ItemGrid is
accessible through the API. The storage is a grid of items, items in it can be addressed either by a slot
number, or by XY coords within the grid. If a UI window is opened for this block entity, the item storage
is monitored for changes and the changes are immediately sent to clients of the UI window.
]],
Functions =
{
GetContents =
{
Returns =
{
{
Type = "cItemGrid",
},
},
Notes = "Returns the cItemGrid object representing the items stored within this block entity",
},
GetSlot =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the cItem for the specified slot number. Returns nil for invalid slot numbers",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the cItem for the specified slot coords. Returns nil for invalid slot coords",
},
},
SetSlot =
{
{
Params =
{
{
Name = "SlotNum",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the cItem for the specified slot number. Ignored if invalid slot number",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "cItem",
Type = "cItem",
},
},
Notes = "Sets the cItem for the specified slot coords. Ignored if invalid slot coords",
},
},
},
Inherits = "cBlockEntity",
},
cBrewingstandEntity =
{
Desc = [[
This class represents a brewingstand entity in the world.
See also the {{cRoot}}:GetBrewingRecipe() function.
]],
Functions =
{
GetBrewingTimeLeft =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the time until the current items finishes brewing, in ticks",
},
GetIndgredientSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the ingredient slot",
},
GetLeftBottleSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the left bottle slot",
},
GetMiddleBottleSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the middle bottle slot",
},
GetResultItem =
{
Params =
{
{
Name = "SlotNumber",
Type = "number",
},
},
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the expected result item for the given slot number.",
},
GetRightBottleSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the right bottle slot",
},
GetFuelSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the top left fuel slot",
},
GetRemainingFuel =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the remaining fuel that is left. It's the amount of brewing operations that can be done (20 for one blaze powder).",
},
GetTimeBrewed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the time that the current items has been brewing, in ticks",
},
SetIngredientSlot =
{
Params =
{
{
Name = "Ingredient",
Type = "cItem",
},
},
Notes = "Sets the item in the ingredient bottle slot",
},
SetLeftBottleSlot =
{
Params =
{
{
Name = "LeftSlot",
Type = "cItem",
},
},
Notes = "Sets the item in the left bottle slot",
},
SetMiddleBottleSlot =
{
Params =
{
{
Name = "MiddleSlot",
Type = "cItem",
},
},
Notes = "Sets the item in the middle bottle slot",
},
SetRightBottleSlot =
{
Params =
{
{
Name = "RightSlot",
Type = "cItem",
},
},
Notes = "Sets the item in the right bottle slot",
},
SetFuelSlot =
{
Params =
{
{
Name = "FuelSlot",
Type = "cItem",
},
},
Notes = "Sets the item in the top left fuel slot",
},
},
Constants =
{
bsIngredient =
{
Notes = "Index of the ingredient slot",
},
bsLeftBottle =
{
Notes = "Index of the left bottle slot",
},
bsMiddleBottle =
{
Notes = "Index of the middle bottle slot",
},
bsRightBottle =
{
Notes = "Index of the right bottle slot",
},
bsFuel =
{
Notes = "Index of the top left fuel slot",
},
ContentsHeight =
{
Notes = "Height (Y) of the {{cItemGrid|cItemGrid}} representing the contents",
},
ContentsWidth =
{
Notes = "Width (X) of the {{cItemGrid|cItemGrid}} representing the contents",
},
},
ConstantGroups =
{
SlotIndices =
{
Include = "bs.*",
TextBefore = "When using the GetSlot() or SetSlot() function, use these constants for slot index:",
},
},
Inherits = "cBlockEntityWithItems",
},
cChestEntity =
{
Desc = [[
A chest entity is a {{cBlockEntityWithItems|cBlockEntityWithItems}} descendant that represents a chest
in the world. Note that doublechests consist of two separate cChestEntity objects, they do not collaborate
in any way.
To manipulate a chest already in the game, you need to use {{cWorld}}'s callback mechanism with
either DoWithChestAt() or ForEachChestInChunk() function. See the code example below
]],
Constants =
{
ContentsHeight =
{
Notes = "Height of the contents' {{cItemGrid|ItemGrid}}, as required by the parent class, {{cBlockEntityWithItems}}",
},
ContentsWidth =
{
Notes = "Width of the contents' {{cItemGrid|ItemGrid}}, as required by the parent class, {{cBlockEntityWithItems}}",
},
},
AdditionalInfo =
{
{
Header = "Code example",
Contents = [[
The following example code sets the top-left item of each chest in the same chunk as Player to
64 * diamond:
-- Player is a {{cPlayer}} object instance
local World = Player:GetWorld();
World:ForEachChestInChunk(Player:GetChunkX(), Player:GetChunkZ(),
function (ChestEntity)
ChestEntity:SetSlot(0, 0, cItem(E_ITEM_DIAMOND, 64));
end
);
]],
},
},
Inherits = "cBlockEntityWithItems",
},
cCommandBlockEntity =
{
Functions =
{
Activate =
{
Notes = "Sets the command block to execute a command in the next tick",
},
GetCommand =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Retrieves stored command",
},
GetLastOutput =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Retrieves the last line of output generated by the command block",
},
GetResult =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Retrieves the result (signal strength) of the last operation",
},
SetCommand =
{
Params =
{
{
Name = "Command",
Type = "string",
},
},
Notes = "Sets the command",
},
},
Inherits = "cBlockEntity",
},
cDispenserEntity =
{
Desc = [[
This class represents a dispenser block entity in the world. Most of this block entity's
functionality is implemented in the {{cDropSpenserEntity}} class that represents
the behavior common with the {{cDropperEntity|dropper}} block entity.
]],
Functions =
{
GetShootVector =
{
IsStatic = true,
Params =
{
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a unit vector in the cardinal direction of where the dispenser with the specified meta would be facing.",
},
SpawnProjectileFromDispenser =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Kind",
Type = "cProjectileEntity#eKind",
},
{
Name = "Speed",
Type = "Vector3d",
},
{
Name = "Item",
Type = "cItem",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Spawns a projectile of the given kind in front of the dispenser with the specified speed. Returns the UniqueID of the spawned projectile, or {{cEntity#INVALID_ID|cEntity.INVALID_ID}} on failure.",
},
},
Inherits = "cDropSpenserEntity",
},
cDropperEntity =
{
Desc = [[
This class represents a dropper block entity in the world. Most of this block entity's functionality
is implemented in the {{cDropSpenserEntity|cDropSpenserEntity}} class that represents the behavior
common with the {{cDispenserEntity|dispenser}} entity.
An object of this class can be created from scratch when generating chunks ({{OnChunkGenerated|OnChunkGenerated}} and {{OnChunkGenerating|OnChunkGenerating}} hooks).
]],
Inherits = "cDropSpenserEntity",
},
cDropSpenserEntity =
{
Desc = [[
This is a class that implements behavior common to both {{cDispenserEntity|dispensers}} and {{cDropperEntity|droppers}}.
]],
Functions =
{
Activate =
{
Notes = "Sets the block entity to dropspense an item in the next tick",
},
AddDropSpenserDir =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Adjusts the block coords to where the dropspenser items materialize",
},
},
Constants =
{
ContentsHeight =
{
Notes = "Height (Y) of the {{cItemGrid}} representing the contents",
},
ContentsWidth =
{
Notes = "Width (X) of the {{cItemGrid}} representing the contents",
},
},
Inherits = "cBlockEntityWithItems",
},
cFlowerPotEntity =
{
Desc = [[
This class represents a flower pot entity in the world.
]],
Functions =
{
GetItem =
{
Returns =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Returns the item in the flower pot.",
},
IsItemInPot =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Is a flower in the pot?",
},
SetItem =
{
Params =
{
{
Name = "Item",
Type = "cItem",
},
},
Notes = "Set the item in the flower pot",
},
},
Inherits = "cBlockEntity",
},
cFurnaceEntity =
{
Desc = [[
This class represents a furnace block entity in the world.
See also {{cRoot}}'s GetFurnaceRecipe() and GetFurnaceFuelBurnTime() functions
]],
Functions =
{
GetCookTimeLeft =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the time until the current item finishes cooking, in ticks",
},
GetFuelBurnTimeLeft =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the time until the current fuel is depleted, in ticks",
},
GetFuelSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the fuel slot",
},
GetInputSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the input slot",
},
GetOutputSlot =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item in the output slot",
},
GetTimeCooked =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the time that the current item has been cooking, in ticks",
},
HasFuelTimeLeft =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if there's time before the current fuel is depleted",
},
GetAndResetReward =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Calculates, resets, and returns the experience reward in this furnace",
},
SetFuelSlot =
{
Params =
{
{
Name = "Fuel",
Type = "cItem",
},
},
Notes = "Sets the item in the fuel slot",
},
SetInputSlot =
{
Params =
{
{
Name = "Input",
Type = "cItem",
},
},
Notes = "Sets the item in the input slot",
},
SetOutputSlot =
{
Params =
{
{
Name = "Output",
Type = "cItem",
},
},
Notes = "Sets the item in the output slot",
},
},
Constants =
{
ContentsHeight =
{
Notes = "Height (Y) of the {{cItemGrid|cItemGrid}} representing the contents",
},
ContentsWidth =
{
Notes = "Width (X) of the {{cItemGrid|cItemGrid}} representing the contents",
},
fsFuel =
{
Notes = "Index of the fuel slot",
},
fsInput =
{
Notes = "Index of the input slot",
},
fsOutput =
{
Notes = "Index of the output slot",
},
},
ConstantGroups =
{
SlotIndices =
{
Include = "fs.*",
TextBefore = "When using the GetSlot() or SetSlot() function, use these constants for slot index:",
},
},
Inherits = "cBlockEntityWithItems",
},
cHopperEntity =
{
Desc = [[
This class represents a hopper block entity in the world.
]],
Functions =
{
GetOutputBlockPos =
{
Params =
{
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Name = "IsAttached",
Type = "boolean",
},
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Notes = "Returns whether the hopper is attached, and if so, the block coords of the block receiving the output items, based on the given meta.",
},
},
Constants =
{
ContentsHeight =
{
Notes = "Height (Y) of the internal {{cItemGrid}} representing the hopper contents.",
},
ContentsWidth =
{
Notes = "Width (X) of the internal {{cItemGrid}} representing the hopper contents.",
},
},
Inherits = "cBlockEntityWithItems",
},
cJukeboxEntity =
{
Desc = [[
This class represents a jukebox in the world. It can play the records, either when the
{{cPlayer|player}} uses the record on the jukebox, or when a plugin instructs it to play.
]],
Functions =
{
EjectRecord =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Ejects the current record as a {{cPickup|pickup}}. No action if there's no current record. To remove record without generating the pickup, use SetRecord(0). Returns true if pickup ejected.",
},
GetRecord =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the record currently present. Zero for no record, E_ITEM_*_DISC for records.",
},
IsPlayingRecord =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the jukebox is playing a record.",
},
IsRecordItem =
{
IsStatic = true,
Params =
{
{
Name = "ItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified item is a record that can be played.",
},
PlayRecord =
{
Params =
{
{
Name = "RecordItemType",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Plays the specified Record. Return false if the parameter isn't a playable Record (E_ITEM_XXX_DISC). If there is a record already playing, ejects it first.",
},
SetRecord =
{
Params =
{
{
Name = "RecordItemType",
Type = "number",
},
},
Notes = "Sets the currently present record. Use zero for no record, or E_ITEM_*_DISC for records.",
},
},
Inherits = "cBlockEntity",
},
cMobHeadEntity =
{
Desc = [[
This class represents a mob head block entity in the world.
]],
Functions =
{
GetOwnerName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the player name of the mob head",
},
GetOwnerTexture =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the player texture of the mob head",
},
GetOwnerTextureSignature =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the signature of the player texture of the mob head",
},
GetOwnerUUID =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the player UUID of the mob head",
},
GetRotation =
{
Returns =
{
{
Type = "eMobHeadRotation",
},
},
Notes = "Returns the rotation of the mob head",
},
GetType =
{
Returns =
{
{
Type = "eMobHeadType",
},
},
Notes = "Returns the type of the mob head",
},
SetOwner =
{
{
Params =
{
{
Name = "cPlayer",
Type = "cPlayer",
},
},
Notes = "Set the {{cPlayer|player}} for mob heads with player type",
},
{
Params =
{
{
Name = "OwnerUUID",
Type = "string",
},
{
Name = "OwnerName",
Type = "string",
},
{
Name = "OwnerTexture",
Type = "string",
},
{
Name = "OwnerTextureSignature",
Type = "string",
},
},
Notes = "Sets the player components for the mob heads with player type",
},
},
SetRotation =
{
Params =
{
{
Name = "Rotation",
Type = "eMobHeadRotation",
},
},
Notes = "Sets the rotation of the mob head.",
},
SetType =
{
Params =
{
{
Name = "HeadType",
Type = "eMobHeadType",
},
},
Notes = "Set the type of the mob head",
},
},
Inherits = "cBlockEntity",
},
cMobSpawnerEntity =
{
Desc = [[
This class represents a mob spawner block entity in the world.
]],
Functions =
{
GetEntity =
{
Returns =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Notes = "Returns the entity type that will be spawn by this mob spawner.",
},
GetNearbyMonsterNum =
{
Params =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of this monster type in a radius defined by SetSpawnRange (Y: 4-block radius).",
},
GetNearbyPlayersNum =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of the nearby players in a 16-block radius.",
},
GetSpawnCount =
{
Returns =
{
{
Type = "number",
}
},
Notes = "Returns the number of entities the spawner will try to spawn on each activation.",
},
GetSpawnRange =
{
Returns =
{
{
Type = "number",
}
},
Notes = "Returns half the length of the square the spawner tries to spawn entities in.",
},
GetSpawnDelay =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the spawn delay. This is the tick delay that is needed to spawn new monsters.",
},
GetMinSpawnDelay =
{
Returns =
{
{
Type = "number",
}
},
Notes = "Returns the minimum number of ticks the spawner waits until spawning new entities automatically.",
},
GetMaxSpawnDelay =
{
Returns =
{
{
Type = "number",
}
},
Notes = "Returns the maximum number of ticks the spawner waits until spawning new entities automatically.",
},
GetMaxNearbyEntities =
{
Returns =
{
{
Type = "number",
}
},
Notes = "Returns the maximum number of entities of the same type that can be present before the spawner cannot spawn more entities.",
},
GetRequiredPlayerRange =
{
Returns =
{
{
Type = "number"
}
},
Notes = "Returns the maximum euclidean distance from a player where the spawner can be activated.",
},
ResetTimer =
{
Notes = "Sets the spawn delay to a new random value.",
},
SetEntity =
{
Params =
{
{
Name = "MobType",
Type = "eMonsterType",
},
},
Notes = "Sets the type of the mob that will be spawned by this mob spawner.",
},
SetSpawnDelay =
{
Params =
{
{
Name = "SpawnDelayTicks",
Type = "number",
},
},
Notes = "Sets the spawn delay.",
},
SetSpawnCount =
{
Params =
{
{
Name = "SpawnCount",
Type = "number",
},
},
Notes = "Sets the number of entities the spawner will try to spawn in each activation. Might not spawn all of them due to spawn limitations of the entity.",
},
SetSpawnRange =
{
Params =
{
{
Name = "SpawnRange",
Type = "number",
},
},
Notes = "Sets half the length of the square the spawner will try to spawn entities in.",
},
SetMinSpawnDelay =
{
Params =
{
{
Name = "MinSpawnDelay",
Type = "number",
},
},
Notes = "Sets the minimum amount of ticks the spawner will wait before spawning new entities.",
},
SetMaxSpawnDelay =
{
Params =
{
{
Name = "MaxSpawnDelay",
Type = "number",
},
},
Notes = "Sets the maximum amount of ticks the spawner will wait before spawning new entities.",
},
SetMaxNearbyEntities =
{
Params =
{
{
Name = "MaxNearbyEntities",
Type = "number",
},
},
Notes = "Sets the maximum amount of nearby entities until the spawner will stop spawning this entity type.",
},
SetRequiredPlayerRange =
{
Params =
{
{
Name = "RequiredPlayerRange",
Type = "number",
},
},
Notes = "Sets the maximum euclidean distance from a player where the spawner can be activated.",
},
SpawnEntity =
{
Notes = "Spawns the entity. NOTE: This function resets the delay before the next automatic activation of the spawner.",
},
UpdateActiveState =
{
Notes = "Update the active flag from the mob spawner. This function is called every 5 seconds from the Tick() function.",
},
},
Inherits = "cBlockEntity",
},
cNoteEntity =
{
Desc = [[
This class represents a note block entity in the world. It takes care of the note block's note,
and also can play the sound, either when the {{cPlayer|player}} right-clicks it, redstone activates
it, or upon a plugin's request.
The note is stored as an integer between 0 and 24.
]],
Functions =
{
GetNote =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the current note set for the block",
},
IncrementNote =
{
Notes = "Adds 1 to the current note. Wraps around to 0 when the note cannot go any higher.",
},
MakeSound =
{
Notes = "Plays the sound for all {{cClientHandle|clients}} near this block.",
},
SetNote =
{
Params =
{
{
Name = "Note",
Type = "number",
},
},
Notes = "Sets a new note for the block.",
},
GetPitch =
{
Returns =
{
{
Type = "number",
},
},
Notes = "(DEPRECATED) Please use cNoteEntity:GetNote. Returns the current pitch set for the block",
},
IncrementPitch =
{
Notes = "(DEPRECATED) Please use cNoteEntity:IncrementNote. Adds 1 to the current pitch. Wraps around to 0 when the pitch cannot go any higher.",
},
MakeSound =
{
Notes = "Plays the sound for all {{cClientHandle|clients}} near this block.",
},
SetPitch =
{
Params =
{
{
Name = "Pitch",
Type = "number",
},
},
Notes = "(DEPRECATED) Please use cNoteEntity:SetNote. Sets a new note for the block.",
},
},
Inherits = "cBlockEntity",
},
cSignEntity =
{
Desc = [[
A sign entity represents a sign in the world. This class is only used when generating chunks, so
that the plugins may generate signs within new chunks. See the code example in {{cChunkDesc}}.
]],
Functions =
{
GetLine =
{
Params =
{
{
Name = "LineIndex",
Type = "number",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the specified line. LineIndex is expected between 0 and 3. Returns empty string and logs to server console when LineIndex is invalid.",
},
SetLine =
{
Params =
{
{
Name = "LineIndex",
Type = "number",
},
{
Name = "LineText",
Type = "string",
},
},
Notes = "Sets the specified line. LineIndex is expected between 0 and 3. Logs to server console when LineIndex is invalid.",
},
SetLines =
{
Params =
{
{
Name = "Line1",
Type = "string",
},
{
Name = "Line2",
Type = "string",
},
{
Name = "Line3",
Type = "string",
},
{
Name = "Line4",
Type = "string",
},
},
Notes = "Sets all the sign's lines at once. Note that plugins should prefer to use {{cWorld}}:SetSignLines(), so that they can specify the player on whose behalf the sign is being set.",
},
},
Inherits = "cBlockEntity",
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/Geometry.lua
================================================
-- Geometry.lua
-- Defines the documentation for geometry-related classes:
-- cBoundingBox, cCuboid, cLineBlockTracer, Vector3X
return
{
cBoundingBox =
{
Desc = [[
Represents two sets of coordinates, minimum and maximum for each direction; thus defining an
axis-aligned cuboid with floating-point boundaries. It supports operations changing the size and
position of the box, as well as querying whether a point or another BoundingBox is inside the box.
All the points within the coordinate limits (inclusive the edges) are considered "inside" the box.
However, for intersection purposes, if the intersection is "sharp" in any coord (min1 == max2, i. e.
zero volume), the boxes are considered non-intersecting.
]],
Functions =
{
CalcLineIntersection =
{
{
Params =
{
{
Name = "LineStart",
Type = "Vector3d",
},
{
Name = "LinePt2",
Type = "Vector3d",
},
},
Returns =
{
{
Name = "DoesIntersect",
Type = "boolean",
},
{
Name = "LineCoeff",
Type = "number",
IsOptional = true,
},
{
Name = "Face",
Type = "eBlockFace",
IsOptional = true,
},
},
Notes = "Calculates the intersection of a ray (half-line), given by two of its points, with the bounding box. Returns false if the line doesn't intersect the bounding box, or true, together with coefficient of the intersection (how much of the difference between the two ray points is needed to reach the intersection), and the face of the box which is intersected.",
},
{
IsStatic = true,
Params =
{
{
Name = "BoxMin",
Type = "Vector3d",
},
{
Name = "BoxMax",
Type = "Vector3d",
},
{
Name = "LineStart",
Type = "Vector3d",
},
{
Name = "LinePt2",
Type = "Vector3d",
},
},
Returns =
{
{
Name = "DoesIntersect",
Type = "boolean",
},
{
Name = "LineCoeff",
Type = "number",
IsOptional = true,
},
{
Name = "Face",
Type = "eBlockFace",
IsOptional = true,
},
},
Notes = "Calculates the intersection of a ray (half-line), given by two of its points, with the bounding box specified as its minimum and maximum coords. Returns false if the line doesn't intersect the bounding box, or true, together with coefficient of the intersection (how much of the difference between the two ray points is needed to reach the intersection), and the face of the box which is intersected.",
},
},
constructor =
{
{
Params =
{
{
Name = "MinX",
Type = "number",
},
{
Name = "MaxX",
Type = "number",
},
{
Name = "MinY",
Type = "number",
},
{
Name = "MaxY",
Type = "number",
},
{
Name = "MinZ",
Type = "number",
},
{
Name = "MaxZ",
Type = "number",
},
},
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Creates a new bounding box with the specified edges",
},
{
Params =
{
{
Name = "Min",
Type = "Vector3d",
},
{
Name = "Max",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Creates a new bounding box with the coords specified as two vectors",
},
{
Params =
{
{
Name = "Pos",
Type = "Vector3d",
},
{
Name = "Radius",
Type = "number",
},
{
Name = "Height",
Type = "number",
},
},
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Creates a new bounding box from the position given and radius (X/Z) and height. Radius is added from X/Z to calculate the maximum coords and subtracted from X/Z to get the minimum; minimum Y is set to Pos.y and maxumim Y to Pos.y plus Height. This corresponds with how {{cEntity|entities}} are represented in Minecraft.",
},
{
Params =
{
{
Name = "OtherBoundingBox",
Type = "cBoundingBox",
},
},
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Creates a new copy of the given bounding box. Same result can be achieved by using a simple assignment.",
},
{
Params =
{
{
Name = "Pos",
Type = "Vector3d",
},
{
Name = "CubeSideLength",
Type = "number",
},
},
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Creates a new bounding box as a cube with the specified side length centered around the specified point.",
},
},
DoesIntersect =
{
Params =
{
{
Name = "OtherBoundingBox",
Type = "cBoundingBox",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the two bounding boxes have an intersection of nonzero volume.",
},
Expand =
{
Params =
{
{
Name = "ExpandX",
Type = "number",
},
{
Name = "ExpandY",
Type = "number",
},
{
Name = "ExpandZ",
Type = "number",
},
},
Notes = "Expands this bounding box by the specified amount in each direction (so the box becomes larger by 2 * Expand in each axis).",
},
GetMax =
{
Returns =
{
{
Name = "Point",
Type = "Vector3d",
},
},
Notes = "Returns the boundary point with the maximum coords",
},
GetMaxX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum X coord of the bounding box",
},
GetMaxY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum Y coord of the bounding box",
},
GetMaxZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum Z coord of the bounding box",
},
GetMin =
{
Returns =
{
{
Name = "Point",
Type = "Vector3d",
},
},
Notes = "Returns the boundary point with the minimum coords",
},
GetMinX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the minimum X coord of the bounding box",
},
GetMinY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the minimum Y coord of the bounding box",
},
GetMinZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the minimum Z coord of the bounding box",
},
Intersect =
{
Params =
{
{
Name = "OtherBbox",
Type = "cBoundingBox",
},
},
Returns =
{
{
Type = "boolean",
},
{
Name = "Intersection",
Type = "cBoundingBox",
IsOptional = true,
},
},
Notes = "Checks if the intersection between this bounding box and another one is non-empty. Returns false if the intersection is empty, true and a new cBoundingBox representing the intersection of the two boxes.",
},
IsInside =
{
{
Params =
{
{
Name = "Point",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified point is inside (including on the edge) of the box.",
},
{
Params =
{
{
Name = "PointX",
Type = "number",
},
{
Name = "PointY",
Type = "number",
},
{
Name = "PointZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified point is inside (including on the edge) of the box.",
},
{
Params =
{
{
Name = "OtherBoundingBox",
Type = "cBoundingBox",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if OtherBoundingBox is inside of this box.",
},
{
Params =
{
{
Name = "OtherBoxMin",
Type = "Vector3d",
},
{
Name = "OtherBoxMax",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the other bounding box, specified by its 2 corners, is inside of this box.",
},
{
IsStatic = true,
Params =
{
{
Name = "Min",
Type = "Vector3d",
},
{
Name = "Max",
Type = "Vector3d",
},
{
Name = "Point",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified point is inside the bounding box specified by its min / max corners",
},
{
IsStatic = true,
Params =
{
{
Name = "Min",
Type = "Vector3d",
},
{
Name = "Max",
Type = "Vector3d",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified point is inside the bounding box specified by its min / max corners",
},
},
Move =
{
{
Params =
{
{
Name = "OffsetX",
Type = "number",
},
{
Name = "OffsetY",
Type = "number",
},
{
Name = "OffsetZ",
Type = "number",
},
},
Notes = "Moves the bounding box by the specified offset in each axis",
},
{
Params =
{
{
Name = "Offset",
Type = "Vector3d",
},
},
Notes = "Moves the bounding box by the specified offset in each axis",
},
},
Union =
{
Params =
{
{
Name = "OtherBoundingBox",
Type = "cBoundingBox",
},
},
Returns =
{
{
Type = "cBoundingBox",
},
},
Notes = "Returns the smallest bounding box that contains both OtherBoundingBox and this bounding box. Note that unlike the strict geometrical meaning of \"union\", this operation actually returns a cBoundingBox.",
},
},
},
cCuboid =
{
Desc = [[
cCuboid offers some native support for integral-boundary cuboids. A cuboid internally consists of
two {{Vector3i}}-s. By default the cuboid doesn't make any assumptions about the defining points,
but for most of the operations in the cCuboid class, the p1 member variable is expected to be the
minima and the p2 variable the maxima. The Sort() function guarantees this condition.
The Cuboid considers both its edges inclusive.
]],
Functions =
{
Assign =
{
{
Params =
{
{
Name = "SrcCuboid",
Type = "cCuboid",
},
},
Notes = "Copies all the coords from the src cuboid to this cuboid. Sort-state is ignored.",
},
{
Params =
{
{
Name = "Point1",
Type = "Vector3i",
},
{
Name = "Point2",
Type = "Vector3i",
},
},
Notes = "Assigns all the coords to the specified values. Sort-state is ignored.",
},
},
Clamp =
{
Params =
{
{
Name = "Limits",
Type = "cCuboid",
},
},
Notes = "Clamps this cuboid, so that it doesn't reach outside of Limits in any direction. Assumes both cuboids are sorted.",
},
ClampSize =
{
Params =
{
{
Name = "MaxSize",
Type = "Vector3i",
},
},
Notes = "Clamps this cuboid's p2 so that the cuboid's size doesn't exceed the specified max size. Assumes the cuboid is sorted.",
},
ClampX =
{
Params =
{
{
Name = "MinX",
Type = "number",
},
{
Name = "MaxX",
Type = "number",
},
},
Notes = "Clamps both X coords into the range provided. Sortedness-agnostic.",
},
ClampY =
{
Params =
{
{
Name = "MinY",
Type = "number",
},
{
Name = "MaxY",
Type = "number",
},
},
Notes = "Clamps both Y coords into the range provided. Sortedness-agnostic.",
},
ClampZ =
{
Params =
{
{
Name = "MinZ",
Type = "number",
},
{
Name = "MaxZ",
Type = "number",
},
},
Notes = "Clamps both Z coords into the range provided. Sortedness-agnostic.",
},
constructor =
{
{
Returns =
{
{
Type = "cCuboid",
},
},
Notes = "Creates a new Cuboid object with all-zero coords",
},
{
Params =
{
{
Name = "OtherCuboid",
Type = "cCuboid",
},
},
Returns =
{
{
Type = "cCuboid",
},
},
Notes = "Creates a new Cuboid object as a copy of OtherCuboid",
},
{
Params =
{
{
Name = "Point1",
Type = "Vector3i",
},
{
Name = "Point2",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "cCuboid",
},
},
Notes = "Creates a new Cuboid object with the specified points as its corners.",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "cCuboid",
},
},
Notes = "Creates a new Cuboid object with the specified point as both its corners (the cuboid has a size of 1 in each direction).",
},
},
DifX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the difference between the two X coords (X-size minus 1). Assumes sorted.",
},
DifY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the difference between the two Y coords (Y-size minus 1). Assumes sorted.",
},
DifZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the difference between the two Z coords (Z-size minus 1). Assumes sorted.",
},
DoesIntersect =
{
Params =
{
{
Name = "OtherCuboid",
Type = "cCuboid",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this cuboid has at least one voxel in common with OtherCuboid. Note that edges are considered inclusive. Assumes both sorted.",
},
Engulf =
{
Params =
{
{
Name = "Point",
Type = "Vector3i",
},
},
Notes = "If needed, expands the cuboid to include the specified point. Doesn't shrink. Assumes sorted. ",
},
Expand =
{
Params =
{
{
Name = "SubMinX",
Type = "number",
},
{
Name = "AddMaxX",
Type = "number",
},
{
Name = "SubMinY",
Type = "number",
},
{
Name = "AddMaxY",
Type = "number",
},
{
Name = "SubMinZ",
Type = "number",
},
{
Name = "AddMaxZ",
Type = "number",
},
},
Notes = "Expands the cuboid by the specified amount in each direction. Works on unsorted cuboids as well. NOTE: this function doesn't check for underflows.",
},
GetVolume =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the volume of the cuboid, in blocks. Note that the volume considers both coords inclusive. Works on unsorted cuboids, too.",
},
IsCompletelyInside =
{
Params =
{
{
Name = "OuterCuboid",
Type = "cCuboid",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this cuboid is completely inside (in all directions) in OuterCuboid. Assumes both sorted.",
},
IsInside =
{
{
Params =
{
{
Name = "Point",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified point (integral coords) is inside this cuboid. Assumes sorted.",
},
{
Params =
{
{
Name = "Point",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified point (floating-point coords) is inside this cuboid. Assumes sorted.",
},
},
IsSorted =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this cuboid is sorted",
},
Move =
{
Params =
{
{
Name = "Offset",
Type = "Vector3i",
},
},
Notes = "Adds the specified offsets to each respective coord, effectively moving the Cuboid. Sort-state is ignored and preserved.",
},
Sort =
{
Notes = "Sorts the internal representation so that p1 contains the lesser coords and p2 contains the greater coords.",
},
},
Variables =
{
p1 =
{
Type = "{{Vector3i}}",
Notes = "The first corner. Usually the lesser of the two coords in each set",
},
p2 =
{
Type = "{{Vector3i}}",
Notes = "The second corner. Usually the larger of the two coords in each set",
},
},
},
cLineBlockTracer =
{
Desc = [[
This class provides an easy-to-use interface for tracing lines through individual
blocks in the world. It can either be used to call the provided callbacks according
to what events it encounters along the way, or there are shortcut functions used for
the most popular tracing reasons - line of sight and solid hits.
]],
Functions =
{
FirstSolidHitTrace =
{
{
IsStatic = true,
Params =
{
{ Name = "World", Type = "cWorld" },
{ Name = "StartX", Type = "number" },
{ Name = "StartY", Type = "number" },
{ Name = "StartZ", Type = "number" },
{ Name = "EndX", Type = "number" },
{ Name = "EndY", Type = "number" },
{ Name = "EndZ", Type = "number" },
},
Returns =
{
{ Name = "HasHitSolid", Type = "boolean" },
{ Name = "HitCoords", Type = "Vector3d" },
{ Name = "HitBlockCoords", Type = "Vector3i" },
{ Name = "HitBlockFace", Type = "eBlockFace" },
},
Notes = "If the specified line hits a solid block, return true and the coordinates / face of the first such solid block hit. Returns false if there's no solid block on that line.",
},
{
IsStatic = true,
Params =
{
{ Name = "World", Type = "cWorld" },
{ Name = "Start", Type = "Vector3d" },
{ Name = "End", Type = "Vector3d" },
},
Returns =
{
{ Name = "HasHitSolid", Type = "boolean" },
{ Name = "HitCoords", Type = "Vector3d" },
{ Name = "HitBlockCoords", Type = "Vector3i" },
{ Name = "HitBlockFace", Type = "eBlockFace" },
},
Notes = "If the specified line hits a solid block, return true and the coordinates / face of the first such solid block hit. Returns false if there's no solid block on that line.",
},
}, -- FirstSolidHitTrace
LineOfSightTrace =
{
{
IsStatic = true,
Params =
{
{ Name = "World", Type = "cWorld" },
{ Name = "StartX", Type = "number" },
{ Name = "StartY", Type = "number" },
{ Name = "StartZ", Type = "number" },
{ Name = "EndX", Type = "number" },
{ Name = "EndY", Type = "number" },
{ Name = "EndZ", Type = "number" },
{ Name = "Sight", Type = "number" },
},
Returns =
{
{ Name = "CanSee", Type = "boolean" },
},
Notes = "Returns true if the two points specified are within line of sight of each other. The Sight parameter specifies which blocks are considered transparent for the trace, it is a combination of {{cLineBlockTracer#eLineOfSight|losXXX}} values added together."
},
{
IsStatic = true,
Params =
{
{ Name = "World", Type = "cWorld" },
{ Name = "Start", Type = "Vector3d" },
{ Name = "End", Type = "Vector3d" },
{ Name = "Sight", Type = "number" },
},
Returns =
{
{ Name = "CanSee", Type = "boolean" },
},
Notes = "Returns true if the two points specified are within line of sight of each other. The Sight parameter specifies which blocks are considered transparent for the trace, it is a combination of {{cLineBlockTracer#eLineOfSight|losXXX}} values added together."
},
}, -- LineOfSightTrace
Trace =
{
{
IsStatic = true,
Params =
{
{ Name = "World", Type = "cWorld" },
{ Name = "Callbacks", Type = "table" },
{ Name = "StartX", Type = "number" },
{ Name = "StartY", Type = "number" },
{ Name = "StartZ", Type = "number" },
{ Name = "EndX", Type = "number" },
{ Name = "EndY", Type = "number" },
{ Name = "EndZ", Type = "number" },
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "(OBSOLETE, use the Vector3-based overload instead) Performs the trace on the specified line. Returns true if the entire trace was processed (no callback returned true)",
},
{
IsStatic = true,
Params =
{
{ Name = "World", Type = "cWorld" },
{ Name = "Callbacks", Type = "table" },
{ Name = "Start", Type = "Vector3d" },
{ Name = "End", Type = "Vector3d" },
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Performs the trace on the specified line. Returns true if the entire trace was processed (no callback returned true)",
},
},
},
Constants =
{
losAir =
{
Notes = "LineOfSight tracing can 'see' through air blocks.",
},
losWater =
{
Notes = "LineOfSight tracing can 'see' through water blocks.",
},
losLava =
{
Notes = "LineOfSight tracing can 'see' through lava blocks.",
},
},
ConstantGroups =
{
eLineOfSight =
{
Include = "los.*",
TextBefore = "The following constants are used to speficy which blocks are see-through when tracing a LineOfSight trace. Add them together to make up the Sight parameter.",
},
},
AdditionalInfo =
{
{
Header = "Callbacks",
Contents = [[
The Callbacks in the Trace() function is a table that contains named functions. Cuberite will call
individual functions from that table for the events that occur on the line - hitting a block, going out of
valid world data etc. The following table lists all the available callbacks. If the callback function is
not defined, Cuberite skips it. Each function can return a bool value, if it returns true, the tracing is
aborted and Trace() returns false.
Note: The folowing can only be used when using the Vector3-based Trace() function. When using
the number-based overload, the callbacks receive number-based coordinates (see Deprecated
Callbacks below).
Name
Parameters
Notes
OnNextBlock
BlockPos, BlockType, BlockMeta, EntryFace
Called when the ray hits a new valid block. The block type and meta is given. EntryFace is one of the
BLOCK_FACE_ constants indicating which "side" of the block got hit by the ray.
OnNextBlockNoData
BlockPos, EntryFace
Called when the ray hits a new block, but the block is in an unloaded chunk - no valid data is
available. Only the coords and the entry face are given.
OnOutOfWorld
BlockPos
Called when the ray goes outside of the world (Y-wise); the coords specify the exact exit point. Note
that for other paths than lines (considered for future implementations) the path may leave the world and
go back in again later, in such a case this callback is followed by OnIntoWorld() and further
OnNextBlock() calls.
OnIntoWorld
BlockPos
Called when the ray enters the world (Y-wise); the coords specify the exact entry point.
OnNoMoreHits
Called when the path is sure not to hit any more blocks. This is the final callback, no more
callbacks are called after this function. Unlike the other callbacks, this function doesn't have a return
value.
OnNoChunk
Called when the ray enters a chunk that is not loaded. This usually means that the tracing is aborted.
Unlike the other callbacks, this function doesn't have a return value.
]],
},
{
Header = "Deprecated Callbacks",
Contents = [[
When using the deprecated number-based Trace function, Cuberite will instead assume the following signatures for the callbacks:
Called when the ray hits a new valid block. The block type and meta is given. EntryFace is one of the
BLOCK_FACE_ constants indicating which "side" of the block got hit by the ray.
OnNextBlockNoData
BlockX, BlockY, BlockZ, EntryFace
Called when the ray hits a new block, but the block is in an unloaded chunk - no valid data is
available. Only the coords and the entry face are given.
OnOutOfWorld
X, Y, Z
Called when the ray goes outside of the world (Y-wise); the coords specify the exact exit point. Note
that for other paths than lines (considered for future implementations) the path may leave the world and
go back in again later, in such a case this callback is followed by OnIntoWorld() and further
OnNextBlock() calls.
OnIntoWorld
X, Y, Z
Called when the ray enters the world (Y-wise); the coords specify the exact entry point.
]],
},
{
Header = "Example",
Contents = [[
The following example is taken from the Debuggers plugin. It is a command handler function for the
"/spidey" command that creates a line of cobweb blocks from the player's eyes up to 50 blocks away in
the direction they're looking, but only through the air.
function HandleSpideyCmd(a_Split, a_Player)
local World = a_Player:GetWorld();
local Callbacks = {
OnNextBlock = function(a_BlockPos, a_BlockType, a_BlockMeta)
if (a_BlockType ~= E_BLOCK_AIR) then
-- abort the trace
return true;
end
World:SetBlock(a_BlockPos, E_BLOCK_COBWEB, 0);
end
};
local EyePos = a_Player:GetEyePosition();
local LookVector = a_Player:GetLookVector();
LookVector:Normalize(); -- Make the vector 1 m long
-- Start cca 2 blocks away from the eyes
local Start = EyePos + LookVector + LookVector;
local End = EyePos + LookVector * 50;
cLineBlockTracer.Trace(World, Callbacks, Start, End);
return true;
end
]],
},
},
},
Vector3d =
{
Desc = [[
A Vector3d object uses double precision floating point values to describe a point in 3D space.
See also {{Vector3f}} for single-precision floating point 3D coords and {{Vector3i}} for integer
3D coords.
]],
Functions =
{
Abs =
{
Notes = "Updates each coord to its absolute value.",
},
addedX =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the X axis",
},
addedXZ =
{
Params =
{
{
Name = "ofsX",
Type = "number",
},
{
Name = "ofsZ",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a copy of the vector, moved by the specified offsets on the X and Z axes",
},
addedY =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the Y axis",
},
addedZ =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the Z axis",
},
Ceil =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new {{Vector3i}} object with coords set to math.ceil of this vector's coords.",
},
Clamp =
{
Params =
{
{
Name = "min",
Type = "number",
},
{
Name = "max",
Type = "number",
},
},
Notes = "Clamps each coord into the specified range.",
},
constructor =
{
{
Params =
{
{
Name = "Vector",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Creates a new Vector3d object by copying the coords from the given Vector3f.",
},
{
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Creates a new Vector3d object with all its coords set to 0.",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Creates a new Vector3d object with its coords set to the specified values.",
},
},
Cross =
{
Params =
{
{
Name = "Other",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d that is a {{https://en.wikipedia.org/wiki/Cross_product|cross product}} of this vector and the specified vector.",
},
Dot =
{
Params =
{
{
Name = "Other",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the dot product of this vector and the specified vector.",
},
Equals =
{
Params =
{
{
Name = "AnotherVector",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this vector is exactly equal to the specified vector. Note that this is subject to (possibly imprecise) floating point math.",
},
EqualsEps =
{
Params =
{
{
Name = "AnotherVector",
Type = "Vector3d",
},
{
Name = "Eps",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified are less than the specified Eps.",
},
Floor =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords.",
},
HasNonZeroLength =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the vector has at least one coord non-zero. Note that this is subject to (possibly imprecise) floating point math.",
},
Length =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the (euclidean) length of the vector.",
},
LineCoeffToXYPlane =
{
Params =
{
{
Name = "Vector3d",
Type = "Vector3d",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection.",
},
LineCoeffToXZPlane =
{
Params =
{
{
Name = "Vector3d",
Type = "Vector3d",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection.",
},
LineCoeffToYZPlane =
{
Params =
{
{
Name = "Vector3d",
Type = "Vector3d",
},
{
Name = "X",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection.",
},
Move =
{
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Notes = "Adds the specified offsets to each coord, effectively moving the vector by the specified coord offsets.",
},
{
Params =
{
{
Name = "Diff",
Type = "Vector3d",
},
},
Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result.",
},
},
Normalize =
{
Notes = "Changes this vector so that it keeps current direction but is exactly 1 unit long. FIXME: Fails for a zero vector.",
},
NormalizeCopy =
{
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new vector that has the same direction as this but is exactly 1 unit long. FIXME: Fails for a zero vector.",
},
operator_div =
{
{
Params =
{
{
Name = "ParCoordDivisors",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d object with each coord divided by the corresponding coord from the given vector.",
},
{
Params =
{
{
Name = "Divisor",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d object with each coord divided by the specified number.",
},
},
operator_mul =
{
{
Params =
{
{
Name = "PerCoordMultiplier",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d object with each coord multiplied by the corresponding coord from the given vector.",
},
{
Params =
{
{
Name = "Multiplier",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d object with each coord multiplied.",
},
},
operator_plus =
{
Params =
{
{
Name = "Addend",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d containing the sum of this vector and the specified vector",
},
operator_sub =
{
{
Params =
{
{
Name = "Subtrahend",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d object containing the difference between this object and the specified vector.",
},
{
Returns =
{
{
Type = "Vector3d",
},
},
Notes = "Returns a new Vector3d object that is a negative of this vector (all coords multiplied by -1).",
},
},
Set =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Notes = "Sets all the coords in this object.",
},
SqrLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison. ",
},
TurnCCW =
{
Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.",
},
TurnCW =
{
Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.",
},
},
Constants =
{
EPS =
{
Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al).",
},
NO_INTERSECTION =
{
Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane.",
},
},
Variables =
{
x =
{
Type = "number",
Notes = "The X coord of the vector.",
},
y =
{
Type = "number",
Notes = "The Y coord of the vector.",
},
z =
{
Type = "number",
Notes = "The Z coord of the vector.",
},
},
},
Vector3f =
{
Desc = [[
A Vector3f object uses floating point values to describe a point in space.
See also {{Vector3d}} for double-precision floating point 3D coords and {{Vector3i}} for integer
3D coords.
]],
Functions =
{
Abs =
{
Notes = "Updates each coord to its absolute value.",
},
addedX =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the X axis",
},
addedXZ =
{
Params =
{
{
Name = "ofsX",
Type = "number",
},
{
Name = "ofsZ",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a copy of the vector, moved by the specified offsets on the X and Z axes",
},
addedY =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the Y axis",
},
addedZ =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the Z axis",
},
Ceil =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new {{Vector3i}} object with coords set to math.ceil of this vector's coords.",
},
Clamp =
{
Params =
{
{
Name = "min",
Type = "number",
},
{
Name = "max",
Type = "number",
},
},
Notes = "Clamps each coord into the specified range.",
},
constructor =
{
{
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Creates a new Vector3f object with zero coords",
},
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "z",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Creates a new Vector3f object with the specified coords",
},
{
Params =
{
{
Name = "Vector3f",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Creates a new Vector3f object as a copy of the specified vector",
},
{
Params =
{
{
Name = "Vector3d",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Creates a new Vector3f object as a copy of the specified {{Vector3d}}",
},
{
Params =
{
{
Name = "Vector3i",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Creates a new Vector3f object as a copy of the specified {{Vector3i}}",
},
},
Cross =
{
Params =
{
{
Name = "Other",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object that holds the cross product of this vector and the specified vector.",
},
Dot =
{
Params =
{
{
Name = "Other",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the dot product of this vector and the specified vector.",
},
Equals =
{
Params =
{
{
Name = "Other",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified vector is exactly equal to this vector. Note that this is subject to (possibly imprecise) floating point math.",
},
EqualsEps =
{
Params =
{
{
Name = "Other",
Type = "Vector3f",
},
{
Name = "Eps",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps.",
},
Floor =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords.",
},
HasNonZeroLength =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the vector has at least one coord non-zero. Note that this is subject to (possibly imprecise) floating point math.",
},
Length =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the (euclidean) length of this vector",
},
LineCoeffToXYPlane =
{
Params =
{
{
Name = "Vector3f",
Type = "Vector3f",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection.",
},
LineCoeffToXZPlane =
{
Params =
{
{
Name = "Vector3f",
Type = "Vector3f",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection.",
},
LineCoeffToYZPlane =
{
Params =
{
{
Name = "Vector3f",
Type = "Vector3f",
},
{
Name = "X",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection.",
},
Move =
{
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Notes = "Adds the specified offsets to each coord, effectively moving the vector by the specified coord offsets.",
},
{
Params =
{
{
Name = "Diff",
Type = "Vector3f",
},
},
Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result.",
},
},
Normalize =
{
Notes = "Normalizes this vector (makes it 1 unit long while keeping the direction). FIXME: Fails for zero vectors.",
},
NormalizeCopy =
{
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a copy of this vector that is normalized (1 unit long while keeping the same direction). FIXME: Fails for zero vectors.",
},
operator_div =
{
{
Params =
{
{
Name = "PerCoordDivisor",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object with each coord divided by the corresponding coord from the given vector.",
},
{
Params =
{
{
Name = "Divisor",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object with each coord divided by the specified number.",
},
},
operator_mul =
{
{
Params =
{
{
Name = "PerCoordMultiplier",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object that has each of its coords multiplied by the specified number",
},
{
Params =
{
{
Name = "Multiplier",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object that has each of its coords multiplied by the respective coord of the specified vector.",
},
},
operator_plus =
{
Params =
{
{
Name = "Other",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object that holds the vector sum of this vector and the specified vector.",
},
operator_sub =
{
{
Params =
{
{
Name = "Subtrahend",
Type = "Vector3f",
},
},
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f object that holds the vector differrence between this vector and the specified vector.",
},
{
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a new Vector3f that is a negative of this vector (all coords multiplied by -1).",
},
},
Set =
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "z",
Type = "number",
},
},
Notes = "Sets all the coords of the vector at once.",
},
SqrLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison.",
},
TurnCCW =
{
Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.",
},
TurnCW =
{
Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.",
},
},
Constants =
{
EPS =
{
Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al).",
},
NO_INTERSECTION =
{
Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane.",
},
},
Variables =
{
x =
{
Type = "number",
Notes = "The X coord of the vector.",
},
y =
{
Type = "number",
Notes = "The Y coord of the vector.",
},
z =
{
Type = "number",
Notes = "The Z coord of the vector.",
},
},
},
Vector3i =
{
Desc = [[
A Vector3i object uses integer values to describe a point in space.
See also {{Vector3d}} for double-precision floating point 3D coords and {{Vector3f}} for
single-precision floating point 3D coords.
]],
Functions =
{
Abs =
{
Notes = "Updates each coord to its absolute value.",
},
addedX =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the X axis",
},
addedXZ =
{
Params =
{
{
Name = "ofsX",
Type = "number",
},
{
Name = "ofsZ",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a copy of the vector, moved by the specified offsets on the X and Z axes",
},
addedY =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the Y axis",
},
addedZ =
{
Params =
{
{
Name = "ofs",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a copy of the vector, moved by the specified offset on the Z axis",
},
Ceil =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new {{Vector3i}} object with coords set to math.ceil of this vector's coords. Normally not too useful with integer-only vectors, but still included for API completeness.",
},
Clamp =
{
Params =
{
{
Name = "min",
Type = "number",
},
{
Name = "max",
Type = "number",
},
},
Notes = "Clamps each coord into the specified range.",
},
constructor =
{
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Creates a new Vector3i object with zero coords.",
},
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "z",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Creates a new Vector3i object with the specified coords.",
},
{
Params =
{
{
Name = "Vector3d",
Type = "Vector3d",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Creates a new Vector3i object with coords copied and floor()-ed from the specified {{Vector3d}}.",
},
},
Cross =
{
Params =
{
{
Name = "Other",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i that is a {{https://en.wikipedia.org/wiki/Cross_product|cross product}} of this vector and the specified vector.",
},
Dot =
{
Params =
{
{
Name = "Other",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the dot product of this vector and the specified vector.",
},
Equals =
{
Params =
{
{
Name = "Other",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this vector is exactly the same as the specified vector.",
},
EqualsEps =
{
Params =
{
{
Name = "Other",
Type = "Vector3i",
},
{
Name = "Eps",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps. Normally not too useful for integer-only vectors, but still included for API completeness.",
},
Floor =
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords. Normally not too useful with integer-only vectors, but still included for API completeness.",
},
HasNonZeroLength =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the vector has at least one coord non-zero.",
},
Length =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the (euclidean) length of this vector.",
},
LineCoeffToXYPlane =
{
Params =
{
{
Name = "Vector3i",
Type = "Vector3i",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection.",
},
LineCoeffToXZPlane =
{
Params =
{
{
Name = "Vector3i",
Type = "Vector3i",
},
{
Name = "Y",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection.",
},
LineCoeffToYZPlane =
{
Params =
{
{
Name = "Vector3i",
Type = "Vector3i",
},
{
Name = "X",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection.",
},
Move =
{
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "z",
Type = "number",
},
},
Notes = "Moves the vector by the specified amount in each axis direction.",
},
{
Params =
{
{
Name = "Diff",
Type = "Vector3i",
},
},
Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result.",
},
},
Normalize =
{
Notes = "Normalizes this vector (makes it 1 unit long while keeping the direction). Quite useless for integer-only vectors, since the normalized vector will almost always truncate to zero vector. FIXME: Fails for zero vectors.",
},
NormalizeCopy =
{
Returns =
{
{
Type = "Vector3f",
},
},
Notes = "Returns a copy of this vector that is normalized (1 unit long while keeping the same direction). Quite useless for integer-only vectors, since the normalized vector will almost always truncate to zero vector. FIXME: Fails for zero vectors.",
},
operator_div =
{
{
Params =
{
{
Name = "Divisor",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i object that has each of its coords divided by the specified number",
},
{
Params =
{
{
Name = "PerCoordDivisors",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i object that has each of its coords divided by the respective coord of the specified vector.",
},
},
operator_mul =
{
{
Params =
{
{
Name = "Multiplier",
Type = "number",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i object that has each of its coords multiplied by the specified number",
},
{
Params =
{
{
Name = "PerCoordMultipliers",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i object that has each of its coords multiplied by the respective coord of the specified vector.",
},
},
operator_plus =
{
Params =
{
{
Name = "Addend",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3f object that holds the vector sum of this vector and the specified vector.",
},
operator_sub =
{
{
Params =
{
{
Name = "Subtrahend",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i object that holds the vector differrence between this vector and the specified vector.",
},
{
Returns =
{
{
Type = "Vector3i",
},
},
Notes = "Returns a new Vector3i that is a negative of this vector (all coords multiplied by -1).",
},
},
Set =
{
Params =
{
{
Name = "x",
Type = "number",
},
{
Name = "y",
Type = "number",
},
{
Name = "z",
Type = "number",
},
},
Notes = "Sets all the coords of the vector at once",
},
SqrLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison.",
},
TurnCCW =
{
Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.",
},
TurnCW =
{
Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.",
},
},
Constants =
{
EPS =
{
Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al). Quite useless with integer-only vector.",
},
NO_INTERSECTION =
{
Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane.",
},
},
Variables =
{
x =
{
Type = "number",
Notes = "The X coord of the vector.",
},
y =
{
Type = "number",
Notes = "The Y coord of the vector.",
},
z =
{
Type = "number",
Notes = "The Z coord of the vector.",
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/Network.lua
================================================
-- Network.lua
-- Defines the documentation for the cNetwork-related classes and cUrlClient
return
{
cNetwork =
{
Desc = [[
This is the namespace for high-level network-related operations. Allows plugins to make TCP
connections to the outside world using a callback-based API.
All functions in this namespace are static, they should be called on the cNetwork class itself:
local Server = cNetwork:Listen(1024, ListenCallbacks);
]],
Functions =
{
Connect =
{
IsStatic = true,
Params =
{
{
Name = "Host",
Type = "string",
},
{
Name = "Port",
Type = "number",
},
{
Name = "LinkCallbacks",
Type = "table",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Begins establishing a (client) TCP connection to the specified host. Uses the LinkCallbacks table to report progress, success, errors and incoming data. Returns false if it fails immediately (bad port value, bad hostname format), true otherwise. Host can be either an IP address or a hostname.",
},
CreateUDPEndpoint =
{
IsStatic = true,
Params =
{
{
Name = "Port",
Type = "number",
},
{
Name = "UDPCallbacks",
Type = "table",
},
},
Returns =
{
{
Type = "cUDPEndpoint",
},
},
Notes = "Creates a UDP endpoint that listens for incoming datagrams on the specified port, and can be used to send or broadcast datagrams. Uses the UDPCallbacks to report incoming datagrams or errors. If the endpoint cannot be created, the OnError callback is called with the error details and the returned endpoint will report IsOpen() == false. The plugin needs to store the returned endpoint object for as long as it needs the UDP port open; if the endpoint is garbage-collected by Lua, the socket will be closed and no more incoming data will be reported. If the Port is zero, the OS chooses an available UDP port for the endpoint; use {{cUDPEndpoint}}:GetPort() to query the port number in such case.",
},
EnumLocalIPAddresses =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns all local IP addresses for network interfaces currently available on the machine, as an array-table of strings.",
},
HostnameToIP =
{
IsStatic = true,
Params =
{
{
Name = "Host",
Type = "string",
},
{
Name = "LookupCallbacks",
Type = "table",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Begins a DNS lookup to find the IP address(es) for the specified host. Uses the LookupCallbacks table to report progress, success or errors. Returns false if it fails immediately (bad hostname format), true if the lookup started successfully. Host can be either a hostname or an IP address.",
},
IPToHostname =
{
IsStatic = true,
Params =
{
{
Name = "Address",
Type = "string",
},
{
Name = "LookupCallbacks",
Type = "table",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Begins a reverse-DNS lookup to find out the hostname for the specified IP address. Uses the LookupCallbacks table to report progress, success or errors. Returns false if it fails immediately (bad address format), true if the lookup started successfully.",
},
Listen =
{
IsStatic = true,
Params =
{
{
Name = "Port",
Type = "number",
},
{
Name = "ListenCallbacks",
Type = "table",
},
},
Returns =
{
{
Type = "cServerHandle",
},
},
Notes = "Starts listening on the specified port. Uses the ListenCallbacks to report incoming connections or errors. Returns a {{cServerHandle}} object representing the server. If the listen operation failed, the OnError callback is called with the error details and the returned server handle will report IsListening() == false. The plugin needs to store the server handle object for as long as it needs the server running, if the server handle is garbage-collected by Lua, the listening socket will be closed and all current connections dropped.",
},
},
AdditionalInfo =
{
{
Header = "Using callbacks",
Contents = [[
The entire Networking API is callback-based. Whenever an event happens on the network object, a
specific plugin-provided function is called. The callbacks are stored in tables which are passed
to the API functions, each table contains multiple callbacks for the various situations.
There are four different callback variants used: LinkCallbacks, LookupCallbacks, ListenCallbacks
and UDPCallbacks. Each is used in the situation appropriate by its name - LinkCallbacks are used
for handling the traffic on a single network link (plus additionally creation of such link when
connecting as a client), LookupCallbacks are used when doing DNS and reverse-DNS lookups,
ListenCallbacks are used for handling incoming connections as a server and UDPCallbacks are used
for incoming UDP datagrams.
LinkCallbacks have the following structure:
local LinkCallbacks =
{
OnConnected = function ({{cTCPLink|a_TCPLink}})
-- The specified {{cTCPLink|link}} has succeeded in connecting to the remote server.
-- Only called if the link is being connected as a client (using cNetwork:Connect() )
-- Not used for incoming server links
-- All returned values are ignored
end,
OnError = function ({{cTCPLink|a_TCPLink}}, a_ErrorCode, a_ErrorMsg)
-- The specified error has occured on the {{cTCPLink|link}}
-- No other callback will be called for this link from now on
-- For a client link being connected, this reports a connection error (destination unreachable etc.)
-- It is an Undefined Behavior to send data to a_TCPLink in or after this callback
-- All returned values are ignored
end,
OnReceivedData = function ({{cTCPLink|a_TCPLink}}, a_Data)
-- Data has been received on the {{cTCPLink|link}}
-- Will get called whenever there's new data on the {{cTCPLink|link}}
-- a_Data contains the raw received data, as a string
-- All returned values are ignored
end,
OnRemoteClosed = function ({{cTCPLink|a_TCPLink}})
-- The remote peer has closed the {{cTCPLink|link}}
-- The link is already closed, any data sent to it now will be lost
-- No other callback will be called for this link from now on
-- All returned values are ignored
end,
}
LookupCallbacks have the following structure:
local LookupCallbacks =
{
OnError = function (a_Query, a_ErrorCode, a_ErrorMsg)
-- The specified error has occured while doing the lookup
-- a_Query is the hostname or IP being looked up
-- No other callback will be called for this lookup from now on
-- All returned values are ignored
end,
OnFinished = function (a_Query)
-- There are no more DNS records for this query
-- a_Query is the hostname or IP being looked up
-- No other callback will be called for this lookup from now on
-- All returned values are ignored
end,
OnNameResolved = function (a_Hostname, a_IP)
-- A DNS record has been found, the specified hostname resolves to the IP
-- Called for both Hostname -> IP and IP -> Hostname lookups
-- May be called multiple times if a hostname resolves to multiple IPs
-- All returned values are ignored
end,
}
ListenCallbacks have the following structure:
local ListenCallbacks =
{
OnAccepted = function ({{cTCPLink|a_TCPLink}})
-- A new connection has been accepted and a {{cTCPLink|Link}} for it created
-- It is safe to send data to the link now
-- All returned values are ignored
end,
OnError = function (a_ErrorCode, a_ErrorMsg)
-- The specified error has occured while trying to listen
-- No other callback will be called for this server handle from now on
-- This callback is called before the cNetwork:Listen() call returns
-- All returned values are ignored
end,
OnIncomingConnection = function (a_RemoteIP, a_RemotePort, a_LocalPort)
-- A new connection is being accepted, from the specified remote peer
-- This function needs to return either nil to drop the connection,
-- or valid LinkCallbacks to use for the new connection's {{cTCPLink|TCPLink}} object
return SomeLinkCallbacks
end,
}
UDPCallbacks have the following structure:
local UDPCallbacks =
{
OnError = function (a_ErrorCode, a_ErrorMsg)
-- The specified error has occured when trying to listen for incoming UDP datagrams
-- No other callback will be called for this endpoint from now on
-- This callback is called before the cNetwork:CreateUDPEndpoint() call returns
-- All returned values are ignored
end,
OnReceivedData = function ({{cUDPEndpoint|a_UDPEndpoint}}, a_Data, a_RemotePeer, a_RemotePort)
-- A datagram has been received on the {{cUDPEndpoint|endpoint}} from the specified remote peer
-- a_Data contains the raw received data, as a string
-- All returned values are ignored
end,
}
]],
},
{
Header = "Example client connection",
Contents = [[
The following example, adapted from the NetworkTest plugin, shows a simple example of a client
connection using the cNetwork API. It connects to www.google.com on port 80 (http) and sends a http
request for the front page. It dumps the received data to the console.
First, the callbacks are defined in a table. The OnConnected() callback takes care of sending the http
request once the socket is connected. The OnReceivedData() callback sends all data to the console. The
OnError() callback logs any errors. Then, the connection is initiated using the cNetwork::Connect() API
function.
-- Define the callbacks to use for the client connection:
local ConnectCallbacks =
{
OnConnected = function (a_Link)
-- Connection succeeded, send the http request:
a_Link:Send("GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n")
end,
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
-- Log the error to console:
LOG("An error has occurred while talking to google.com: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
-- Log the received data to console:
LOG("Incoming http data:\r\n" .. a_Data)
end,
OnRemoteClosed = function (a_Link)
-- Log the event into the console:
LOG("Connection to www.google.com closed")
end,
}
-- Connect:
if not(cNetwork:Connect("www.google.com", 80, ConnectCallbacks)) then
-- Highly unlikely, but better check for errors
LOG("Cannot queue connection to www.google.com")
end
-- Note that the connection is being made on the background,
-- there's no guarantee that it's already connected at this point in code
]],
},
{
Header = "Example server implementation",
Contents = [[
The following example, adapted from the NetworkTest plugin, shows a simple example of creating a
server listening on a TCP port using the cNetwork API. The server listens on port 9876 and for
each incoming connection it sends a welcome message and then echoes back whatever the client has
sent ("echo server").
First, the callbacks for the listening server are defined. The most important of those is the
OnIncomingConnection() callback that must return the LinkCallbacks that will be used for the new
connection. In our simple scenario each connection uses the same callbacks, so a predefined
callbacks table is returned; it is, however, possible to define different callbacks for each
connection. This allows the callbacks to be "personalised", for example by the remote IP or the
time of connection. The OnAccepted() and OnError() callbacks only log that they occurred, there's
no processing needed for them.
Finally, the cNetwork:Listen() API function is used to create the listening server. The status of
the server is checked and if it is successfully listening, it is stored in a global variable, so
that Lua doesn't garbage-collect it until we actually want the server closed.
-- Define the callbacks used for the incoming connections:
local EchoLinkCallbacks =
{
OnConnected = function (a_Link)
-- This will not be called for a server connection, ever
assert(false, "Unexpected Connect callback call")
end,
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
-- Log the error to console:
local RemoteName = "'" .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. "'"
LOG("An error has occurred while talking to " .. RemoteName .. ": " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
-- Send the received data back to the remote peer
a_Link:Send(Data)
end,
OnRemoteClosed = function (a_Link)
-- Log the event into the console:
local RemoteName = "'" .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. "'"
LOG("Connection to '" .. RemoteName .. "' closed")
end,
}
-- Define the callbacks used by the server:
local ListenCallbacks =
{
OnAccepted = function (a_Link)
-- No processing needed, just log that this happened:
LOG("OnAccepted callback called")
end,
OnError = function (a_ErrorCode, a_ErrorMsg)
-- An error has occured while listening for incoming connections, log it:
LOG("Cannot listen, error " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")"
end,
OnIncomingConnection = function (a_RemoteIP, a_RemotePort, a_LocalPort)
-- A new connection is being accepted, give it the EchoCallbacks
return EchoLinkCallbacks
end,
}
-- Start the server:
local Server = cNetwork:Listen(9876, ListenCallbacks)
if not(Server:IsListening()) then
-- The error has been already printed in the OnError() callbacks
-- Just bail out
return;
end
-- Store the server globally, so that it stays open:
g_Server = Server
...
-- Elsewhere in the code, when terminating:
-- Close the server and let it be garbage-collected:
g_Server:Close()
g_Server = nil
]],
},
},
},
cServerHandle =
{
Desc = [[
This class provides an interface for TCP sockets listening for a connection. In order to listen, the
plugin needs to use the {{cNetwork}}:Listen() function to create the listening socket.
Note that when Lua garbage-collects this class, the listening socket is closed. Therefore the plugin
should keep it referenced in a global variable for as long as it wants the server running.
]],
Functions =
{
Close =
{
Notes = "Closes the listening socket. No more connections will be accepted, and all current connections will be closed.",
},
IsListening =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the socket is listening.",
},
},
},
cTCPLink =
{
Desc = [[
This class wraps a single TCP connection, that has been established. Plugins can create these by
calling {{cNetwork}}:Connect() to connect to a remote server, or by listening using
{{cNetwork}}:Listen() and accepting incoming connections. The links are callback-based - when an event
such as incoming data or remote disconnect happens on the link, a specific callback is called. See the
additional information in {{cNetwork}} documentation for details.
The link can also optionally perform TLS encryption. Plugins can use the StartTLSClient() function to
start the TLS handshake as the client side. Since that call, the OnReceivedData() callback is
overridden internally so that the data is first routed through the TLS decryptor, and the plugin's
callback is only called for the decrypted data, once it starts arriving. The Send function changes its
behavior so that the data written by the plugin is first encrypted and only then sent over the
network. Note that calling Send() before the TLS handshake finishes is supported, but the data is
queued internally and only sent once the TLS handshake is completed.
]],
Functions =
{
Close =
{
Notes = "Closes the link forcefully (TCP RST). There's no guarantee that the last sent data is even being delivered. See also the Shutdown() method.",
},
GetLocalIP =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the IP address of the local endpoint of the TCP connection.",
},
GetLocalPort =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the port of the local endpoint of the TCP connection.",
},
GetRemoteIP =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the IP address of the remote endpoint of the TCP connection.",
},
GetRemotePort =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the port of the remote endpoint of the TCP connection.",
},
Send =
{
Params =
{
{
Name = "Data",
Type = "string",
},
},
Notes = "Sends the data (raw string) to the remote peer. The data is sent asynchronously and there is no report on the success of the send operation, other than the connection being closed or reset by the underlying OS.",
},
Shutdown =
{
Notes = "Shuts the socket down for sending data. Notifies the remote peer that there will be no more data coming from us (TCP FIN). The data that is in flight will still be delivered. The underlying socket will be closed when the remote end shuts down as well, or after a timeout.",
},
StartTLSClient =
{
Params =
{
{
Name = "OwnCert",
Type = "string",
},
{
Name = "OwnPrivateKey",
Type = "string",
},
{
Name = "OwnPrivateKeyPassword",
Type = "string",
},
{
Name = "TrustedRootCAs",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrorMessage",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a TLS handshake on the link, as a client side of the TLS. The Own___ parameters specify the client certificate and its corresponding private key and password; all three parameters are optional and no client certificate is presented to the remote peer if they are not used or all empty. Once the TLS handshake is started by this call, all incoming data is first decrypted before being sent to the OnReceivedData callback, and all outgoing data is queued until the TLS handshake completes, and then sent encrypted over the link. Returns true on success, nil and optional error message on immediate failure. The TrustedRootCAs is a string containing all certificates that should be trusted, in PEM format, concatenated and separated by a newline.NOTE: If TrustedRootCAs is empty or nil, the server's certificate will NOT be verified, which is UNSAFE!",
},
StartTLSServer =
{
Params =
{
{
Name = "Certificate",
Type = "string",
},
{
Name = "PrivateKey",
Type = "string",
},
{
Name = "PrivateKeyPassword",
Type = "string",
},
{
Name = "StartTLSData",
Type = "string",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrorMessage",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a TLS handshake on the link, as a server side of the TLS. The plugin needs to specify the server certificate and its corresponding private key and password. The StartTLSData can contain data that the link has already reported as received but it should be used as part of the TLS handshake. Once the TLS handshake is started by this call, all incoming data is first decrypted before being sent to the OnReceivedData callback, and all outgoing data is queued until the TLS handshake completes, and then sent encrypted over the link. Returns true on success, nil and optional error message on immediate failure. NOTE: The TLS support in the API is currently experimental and shouldn't be considered safe - there's no peer certificate verification and the error reporting is only basic.",
},
},
},
cUDPEndpoint =
{
Desc = [[
Represents a UDP socket that is listening for incoming datagrams on a UDP port and can send or broadcast datagrams to other peers on the network. Plugins can create an instance of the endpoint by calling {{cNetwork}}:CreateUDPEndpoint(). The endpoints are callback-based - when a datagram is read from the network, the OnRececeivedData() callback is called with details about the datagram. See the additional information in {{cNetwork}} documentation for details.
Note that when Lua garbage-collects this class, the listening socket is closed. Therefore the plugin should keep this object referenced in a global variable for as long as it wants the endpoint open.
]],
Functions =
{
Close =
{
Notes = "Closes the UDP endpoint. No more datagrams will be reported through the callbacks, the UDP port will be closed.",
},
EnableBroadcasts =
{
Notes = "Some OSes need this call before they allow UDP broadcasts on an endpoint.",
},
GetPort =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the local port number of the UDP endpoint listening for incoming datagrams. Especially useful if the UDP endpoint was created with auto-assign port (0).",
},
IsOpen =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the UDP endpoint is listening for incoming datagrams.",
},
Send =
{
Params =
{
{
Name = "RawData",
Type = "string",
},
{
Name = "RemoteHost",
Type = "string",
},
{
Name = "RemotePort",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sends the specified raw data (string) to the specified remote host. The RemoteHost can be either a hostname or an IP address; if it is a hostname, the endpoint will queue a DNS lookup first, if it is an IP address, the send operation is executed immediately. Returns true if there was no immediate error, false on any failure. Note that the return value needn't represent whether the packet was actually sent, only if it was successfully queued.",
},
},
},
cUrlClient =
{
Desc = [[
Implements high-level asynchronous access to URLs, such as downloading webpages over HTTP(S).
Note that unlike other languages' URL access libraries, this class implements asynchronous requests.
This means that the functions only start a request and return immediately. The request is then
fulfilled in the background, while the server continues to run. The response is delivered back to the
plugin using callbacks. This allows the plugin to start requests and not block the server until the
response is received.
The functions that make network requests are all static and have a dual interface. Either you can use
a single callback function, which gets called once the entire response is received or an error is
encountered. Or you can use a table of callback functions, each function being called whenever the
specific event happens during the request and response lifetime. See the Simple Callback and Callback
Table chapters later on this page for details and examples.
All the request function also support optional parameters for further customization of the request -
the Headers parameter specifies additional HTTP headers that are to be sent (as a dictionary-table of
key -> value), the RequestBody parameter specifying the optional body of the request (used mainly for
POST and PUT requests), and an Options parameter specifying additional options specific to the protocol
used.
]],
Functions =
{
Delete =
{
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "table",
},
{
Name = "Headers",
Type = "table",
IsOptional = true,
},
{
Name = "RequestBody",
Type = "string",
IsOptional = true,
},
{
Name = "Options",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrorMessagge",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP DELETE request. Alias for Request(\"DELETE\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "function",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrorMessagge",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP DELETE request. Alias for Request(\"DELETE\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
},
Get =
{
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "table",
},
{
Name = "Headers",
Type = "table",
IsOptional = true,
},
{
Name = "RequestBody",
Type = "string",
IsOptional = true,
},
{
Name = "Options",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP GET request. Alias for Request(\"GET\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "function",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP GET request. Alias for Request(\"GET\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
}
},
Post =
{
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "table",
},
{
Name = "Headers",
Type = "table",
IsOptional = true,
},
{
Name = "RequestBody",
Type = "string",
IsOptional = true,
},
{
Name = "Options",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP POST request. Alias for Request(\"POST\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "function",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP POST request. Alias for Request(\"POST\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
},
Put =
{
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "table",
},
{
Name = "Headers",
Type = "table",
IsOptional = true,
},
{
Name = "RequestBody",
Type = "string",
IsOptional = true,
},
{
Name = "Options",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP PUT request. Alias for Request(\"PUT\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "function",
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a HTTP PUT request. Alias for Request(\"PUT\", ...). Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
},
Request =
{
IsStatic = true,
Params =
{
{
Name = "Method",
Type = "string",
},
{
Name = "URL",
Type = "string",
},
{
Name = "Callbacks",
Type = "table",
},
{
Name = "Headers",
Type = "table",
IsOptional = true,
},
{
Name = "RequestBody",
Type = "string",
IsOptional = true,
},
{
Name = "Options",
Type = "table",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
},
{
Name = "ErrMsg",
Type = "string",
IsOptional = true,
},
},
Notes = "Starts a request with the specified Method. Returns true on succes, false and error message on immediate failure (unparsable URL etc.).",
},
},
AdditionalInfo =
{
{
Header = "Simple Callback",
Contents = [[
When you don't need fine control for receiving the requests and are interested only in the result,
you can use the simple callback approach. Pass a single function as the Callback parameter, the
function will get called when the response is fully processed, either with the body of the response,
or with an error message:
cUrlClient:Get(url,
function (a_Body, a_Data)
if (a_Body) then
-- Response received correctly, a_Body contains the entire response body,
-- a_Data is a dictionary-table of the response's HTTP headers
else
-- There was an error, a_Data is the error message string
end
end
)
]],
},
{
Header = "Callback Table",
Contents = [[
To provide complete control over the request and response handling, Cuberite allows plugins to pass
a table of callbacks as the Callback parameter. Then the respective functions are called for their
respective events during the lifetime of the request and response. This way it is possible to
process huge downloads that wouldn't fit into memory otherwise, or display detailed progress.
Each callback function receives a "self" as its first parameter, this allows the functions to
access the Callback table and any of its other members, allowing the use of Lua object idiom for
the table. See this forum post for an
example.
The following callback functions are used by Cuberite. Any callback that is not assigned is
silently ignored. The table may also contain other functions and other values, those are silently
ignored.
Callback
Params
Notes
OnConnected
self, {{cTCPLink}}, RemoteIP, RemotePort
Called when the connection to the remote host is established. Note that current implementation doesn't provide the {{cTCPLink}} parameter and passes nil instead.
OnCertificateReceived
self
Called for HTTPS URLs when the server's certificate is received. If the callback returns anything else than true, the connection is aborted. Note that the current implementation doesn't provide the certificate because there is no representation for the cert in Lua.
OnTlsHandshakeCompleted
self
Called for HTTPS URLs when the TLS is established on the connection.
OnRequestSent
self
Called after the entire request is sent to the server.
OnStatusLine
self, HttpVersion, StatusCode, Rest
The initial line of the response has been parsed. HttpVersion is typically "HTTP/1.1", StatusCode is the numerical HTTP status code reported by the server (200 being OK), Rest is the rest of the line, usually a short message in case of an error.
OnHeader
self, Name, Value
A new HTTP response header line has been received.
OnHeadersFinished
self, AllHeaders
All HTTP response headers have been parsed. AllHeaders is a dictionary-table containing all the headers received.
OnBodyData
self, Data
A piece of the response body has been received. This callback is called repeatedly until the entire body is reported through its Data parameter.
OnBodyFinished
self
The entire response body has been reported by OnBodyData(), the response has finished.
OnError
self, ErrorMsg
Called whenever an error is detected. After this call, no other callback will get called.
OnRedirecting
self, NewUrl
Called if the server returned a valid redirection HTTP status code and a Location header, and redirection is allowed by the Options.
The following example is adapted from the Debuggers plugin's "download" command, it downloads the
contents of an URL into a file.
function HandleConsoleDownload(a_Split) -- Console command handler
-- Read the params from the command:
local url = a_Split[2]
local fnam = a_Split[3]
if (not(url) or not(fnam)) then
return true, "Missing parameters. Usage: download "
end
-- Define the cUrlClient callbacks
local callbacks =
{
OnStatusLine = function (self, a_HttpVersion, a_Status, a_Rest)
-- Only open the output file if the server reports a success:
if (a_Status ~= 200) then
LOG("Cannot download " .. url .. ", HTTP error code " .. a_Status)
return
end
local f, err = io.open(fnam, "wb")
if not(f) then
LOG("Cannot download " .. url .. ", error opening the file " .. fnam .. ": " .. (err or ""))
return
end
self.m_File = f
end,
OnBodyData = function (self, a_Data)
-- If the file has been opened, write the data:
if (self.m_File) then
self.m_File:write(a_Data)
end
end,
OnBodyFinished = function (self)
-- If the file has been opened, close it and report success
if (self.m_File) then
self.m_File:close()
LOG("File " .. fnam .. " has been downloaded.")
end
end,
}
-- Start the URL download:
local isSuccess, msg = cUrlClient:Get(url, callbacks)
if not(isSuccess) then
LOG("Cannot start an URL download: " .. (msg or ""))
return true
end
return true
end
]],
},
{
Header = "Options",
Contents = [[
The requests support the following options, specified in the optional Options table parameter:
Option name
Description
MaxRedirects
Maximum number of HTTP redirects that the cUrlClient will follow. If the server still reports a redirect after reaching this many redirects, the cUrlClient reports an error. May be specified as either a number or a string parsable into a number. Default: 30.
OwnCert
The client certificate to use, if requested by the server. A string containing a PEM- or DER-encoded cert is expected.
OwnPrivKey
The private key appropriate for OwnCert. A string containing a PEM- or DER-encoded private key is expected.
OwnPrivKeyPassword
The password for OwnPrivKey. If not present or empty, no password is assumed.
TrustedRootCAs
The certificates of the Root CAs that are to be trusted, encoded in PEM format. Multiple certificates can be used by concatenating the certificates, separating them by newlines. If this option is not present or empty, the request will NOT check the server's certificate, which is UNSAFE!
Redirection:
If a redirect is received, and redirection is allowed by MaxRedirects, the redirection is
reported via OnRedirecting() callback and the request is restarted at the redirect URL, without
reporting any of the redirect's headers nor body.
If a redirect is received and redirection is not allowed (maximum redirection attempts have
been reached), the OnRedirecting() callback is called with the redirect URL and then the request
terminates with an OnError() callback, without reporting the redirect's headers nor body.
]],
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/Plugins.lua
================================================
return
{
cPlugin =
{
Desc = "cPlugin describes a Lua plugin. Each plugin has its own cPlugin object.",
Functions =
{
GetDirectory =
{
Returns =
{
{
Type = "string",
},
},
Notes = "OBSOLETE, use GetFolderName() instead!",
},
GetFolderName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the folder where the plugin's files are. (APIDump)",
},
GetLoadError =
{
Returns =
{
{
Type = "string",
},
},
Notes = "If the plugin failed to load, returns the error message for the failure.",
},
GetLocalDirectory =
{
Notes = "OBSOLETE, use GetLocalFolder instead.",
},
GetLocalFolder =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the path where the plugin's files are. (Plugins/APIDump)",
},
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the plugin.",
},
GetStatus =
{
Returns =
{
{
Name = "PluginStatus",
Type = "cPluginManager#ePluginStatus",
},
},
Notes = "Returns the status of the plugin (loaded, disabled, unloaded, error, not found)",
},
GetVersion =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the version of the plugin.",
},
IsLoaded =
{
Notes = "",
Returns =
{
{
Type = "boolean",
},
},
},
SetName =
{
Params =
{
{
Name = "PluginApiName",
Type = "string",
},
},
Notes = "Sets the API name of the Plugin that is used by {{cPluginManager}}:CallPlugin() to identify the plugin.",
},
SetVersion =
{
Params =
{
{
Name = "PluginApiVersion",
Type = "number",
},
},
Notes = "Sets the API version of the plugin. Currently unused.",
},
},
}, -- cPlugin
cPluginLua =
{
Desc = "(OBSOLETE) This class is no longer useful in the API and will be removed as soon as all core plugins are migrated away from it. The {{cPlugin}} class serves as the main plugin instance's interface.",
Functions =
{
AddWebTab =
{
Params =
{
{
Name = "Title",
Type = "string",
},
{
Name = "HandlerFn",
Type = "function",
},
},
Notes = "OBSOLETE - Use {{cWebAdmin}}:AddWebTab() instead.",
},
},
Inherits = "cPlugin",
}, -- cPluginLua
cPluginManager =
{
Desc = [[
This class is used for generic plugin-related functionality. The plugin manager has a list of all
plugins, can enable or disable plugins, manages hooks and in-game console commands.
Plugins can be identified by either the PluginFolder or PluginName. Note that these two can differ,
refer to the forum for detailed discussion.
There is one instance of cPluginManager in Cuberite, to get it, call either
{{cRoot|cRoot}}:Get():GetPluginManager() or cPluginManager:Get() function.
Note that some functions are "static", that means that they are called using a dot operator instead
of the colon operator. For example:
]],
Functions =
{
AddHook =
{
{
IsStatic = true,
Params =
{
{
Name = "HookType",
Type = "cPluginManager#PluginHook",
},
{
Name = "Callback",
Type = "function",
IsOptional = true,
},
},
Notes = "Informs the plugin manager that it should call the specified function when the specified hook event occurs. If a function is not specified, a default global function name is looked up, based on the hook type",
},
},
BindCommand =
{
{
Params =
{
{
Name = "Command",
Type = "string",
},
{
Name = "Permission",
Type = "string",
},
{
Name = "Callback",
Type = "function",
},
{
Name = "HelpString",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Binds an in-game command with the specified callback function, permission and help string. By common convention, providing an empty string for HelpString will hide the command from the /help display. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature:
function(Split, {{cPlayer|Player}})
The Split parameter contains an array-table of the words that the player has sent, Player is the {{cPlayer}} object representing the player who sent the command. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server sends a warning to the player that the command is unknown (this is so that subcommands can be implemented).",
},
{
IsStatic = true,
Params =
{
{
Name = "Command",
Type = "string",
},
{
Name = "Permission",
Type = "string",
},
{
Name = "Callback",
Type = "function",
},
{
Name = "HelpString",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Binds an in-game command with the specified callback function, permission and help string. By common convention, providing an empty string for HelpString will hide the command from the /help display. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature:
function(Split, {{cPlayer|Player}})
The Split parameter contains an array-table of the words that the player has sent, Player is the {{cPlayer}} object representing the player who sent the command. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server sends a warning to the player that the command is unknown (this is so that subcommands can be implemented).",
},
},
BindConsoleCommand =
{
{
IsStatic = true,
Params =
{
{
Name = "Command",
Type = "string",
},
{
Name = "Callback",
Type = "function",
},
{
Name = "HelpString",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
IsOptional = true,
},
},
Notes = "Binds a console command with the specified callback function and help string. By common convention, providing an empty string for HelpString will hide the command from the \"help\" console command. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature:
function(Split)
The Split parameter contains an array-table of the words that the admin has typed. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server issues a warning to the console that the command is unknown (this is so that subcommands can be implemented).",
},
{
Params =
{
{
Name = "Command",
Type = "string",
},
{
Name = "Callback",
Type = "function",
},
{
Name = "HelpString",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
IsOptional = true,
},
},
Notes = "Binds a console command with the specified callback function and help string. By common convention, providing an empty string for HelpString will hide the command from the \"help\" console command. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature:
function(Split)
The Split parameter contains an array-table of the words that the admin has typed. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server issues a warning to the console that the command is unknown (this is so that subcommands can be implemented).",
},
},
CallPlugin =
{
IsStatic = true,
Params =
{
{
Name = "PluginName",
Type = "string",
},
{
Name = "FunctionName",
Type = "string",
},
{
Name = "FunctionArgs...",
Type = "...",
IsOptional = true,
},
},
Returns =
{
{
Name = "FunctionRets",
Type = "...",
IsOptional = true,
},
},
Notes = "Calls the specified function in the specified plugin, passing all the given arguments to it. If it succeeds, it returns all the values returned by that function. If it fails, returns no value at all. Note that only strings, numbers, bools, nils, API classes and simple tables can be used for parameters and return values; functions cannot be copied across plugins.",
},
DoWithPlugin =
{
IsStatic = true,
Params =
{
{
Name = "PluginName",
Type = "string",
},
{
Name = "CallbackFn",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the CallbackFn for the specified plugin, if found. A plugin can be found even if it is currently unloaded, disabled or errored, the callback should check the plugin status. If the plugin is not found, this function returns false, otherwise it returns the bool value that the callback has returned. The CallbackFn has the following signature:
function ({{cPlugin|Plugin}})
",
},
ExecuteCommand =
{
Params =
{
{
Name = "Player",
Type = "cPlayer",
},
{
Name = "CommandStr",
Type = "string",
},
},
Returns =
{
{
Name = "CommandResult",
Type = "cPluginManager#CommandResult",
},
},
Notes = "Executes the command as if given by the specified Player. Checks permissions.",
},
ExecuteConsoleCommand =
{
Params =
{
{
Name = "CommandStr",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
{
Type = "string",
},
},
Notes = "Executes the console command as if given by the admin on the console. If the command is successfully executed, returns true and the text that would be output to the console normally. On error it returns false and an error message.",
},
FindPlugins =
{
Notes = "OBSOLETE, use RefreshPluginList() instead",
},
ForceExecuteCommand =
{
Params =
{
{
Name = "Player",
Type = "cPlayer",
},
{
Name = "CommandStr",
Type = "string",
},
},
Returns =
{
{
Name = "CommandResult",
Type = "cPluginManager#CommandResult",
},
},
Notes = "Same as ExecuteCommand, but doesn't check permissions",
},
ForEachCommand =
{
Params =
{
{
Name = "CallbackFn",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the CallbackFn function for each command that has been bound using BindCommand(). The CallbackFn has the following signature:
function(Command, Permission, HelpString)
If the callback returns true, the enumeration is aborted and this API function returns false; if it returns false or no value, the enumeration continues with the next command, and the API function returns true.",
},
ForEachConsoleCommand =
{
Params =
{
{
Name = "CallbackFn",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the CallbackFn function for each command that has been bound using BindConsoleCommand(). The CallbackFn has the following signature:
function (Command, HelpString)
If the callback returns true, the enumeration is aborted and this API function returns false; if it returns false or no value, the enumeration continues with the next command, and the API function returns true.",
},
ForEachPlugin =
{
{
IsStatic = true,
Params =
{
{
Name = "CallbackFn",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the CallbackFn function for each plugin that is currently discovered by Cuberite (including disabled, unloaded and errrored plugins). The CallbackFn has the following signature:
function ({{cPlugin|Plugin}})
If the callback returns true, the enumeration is aborted and this API function returns false; if it returns false or no value, the enumeration continues with the next command, and the API function returns true.",
},
{
Params =
{
{
Name = "CallbackFn",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the CallbackFn function for each plugin that is currently discovered by Cuberite (including disabled, unloaded and errrored plugins). The CallbackFn has the following signature:
function ({{cPlugin|Plugin}})
If the callback returns true, the enumeration is aborted and this API function returns false; if it returns false or no value, the enumeration continues with the next command, and the API function returns true.",
}
},
Get =
{
IsStatic = true,
Returns =
{
{
Type = "cPluginManager",
},
},
Notes = "Returns the single instance of the plugin manager",
},
GetAllPlugins =
{
Returns =
{
{
Type = "table",
},
},
Notes = "Returns a table (dictionary) of all plugins, [name => value], where value is a valid {{cPlugin}} if the plugin is loaded, or the bool value false if the plugin is not loaded.",
},
GetCommandPermission =
{
Params =
{
{
Name = "Command",
Type = "string",
},
},
Returns =
{
{
Name = "Permission",
Type = "string",
},
},
Notes = "Returns the permission needed for executing the specified command",
},
GetCurrentPlugin =
{
Returns =
{
{
Type = "cPlugin",
},
},
Notes = "Returns the {{cPlugin}} object for the calling plugin. This is the same object that the Initialize function receives as the argument.",
},
GetNumLoadedPlugins =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of loaded plugins (psLoaded only)",
},
GetNumPlugins =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of plugins, including the disabled, errored, unloaded and not-found ones",
},
GetPlugin =
{
Params =
{
{
Name = "PluginName",
Type = "string",
},
},
Returns =
{
{
Type = "cPlugin",
},
},
Notes = "(DEPRECATED, UNSAFE) Returns a plugin handle of the specified plugin, or nil if such plugin is not loaded. Note thatdue to multithreading the handle is not guaranteed to be safe for use when stored - a single-plugin reload may have been triggered in the mean time for the requested plugin.",
},
GetPluginFolderName =
{
Params =
{
{
Name = "PluginName",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the folder from which the plugin was loaded (without the \"Plugins\" part). Used as a plugin's display name.",
},
GetPluginsPath =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the path where the individual plugin folders are located. Doesn't include the path separator at the end of the returned string.",
},
IsCommandBound =
{
Params =
{
{
Name = "Command",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if in-game Command is already bound (by any plugin)",
},
IsConsoleCommandBound =
{
Params =
{
{
Name = "Command",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if console Command is already bound (by any plugin)",
},
IsPluginLoaded =
{
Params =
{
{
Name = "PluginName",
Type = "string",
},
},
Notes = "Returns true if the specified plugin is loaded.",
},
LoadPlugin =
{
Params =
{
{
Name = "PluginFolder",
Type = "string",
},
},
Notes = "(DEPRECATED) Loads a plugin from the specified folder. NOTE: Loading plugins may be an unsafe operation and may result in a deadlock or a crash. This API is deprecated and might be removed.",
},
LogStackTrace =
{
IsStatic = true,
Notes = "Logs a current stack trace of the Lua engine to the server console log. Same format as is used when the plugin fails.",
},
RefreshPluginList =
{
Notes = "Refreshes the list of plugins to include all folders inside the Plugins folder (potentially new disabled plugins)",
},
ReloadPlugins =
{
Notes = "Reloads all active plugins",
},
UnloadPlugin =
{
Params =
{
{
Name = "PluginName",
Type = "string",
},
},
Notes = "Queues the specified plugin to be unloaded. To avoid deadlocks, the unloading happens in the main tick thread asynchronously.",
},
ReloadPlugin =
{
Params =
{
{
Name = "PluginName",
Type = "string",
},
},
Notes = "Queues the specified plugin to be reloaded. To avoid deadlocks, the reloading happens in the main tick thread asynchronously.",
}
},
Constants =
{
crBlocked =
{
Notes = "When a plugin stopped the command using the OnExecuteCommand hook",
},
crError =
{
Notes = "When the command handler for the given command results in an error",
},
crExecuted =
{
Notes = "When the command is successfully executed.",
},
crNoPermission =
{
Notes = "When the player doesn't have permission to execute the given command.",
},
crUnknownCommand =
{
Notes = "When the given command doesn't exist.",
},
HOOK_BLOCK_SPREAD =
{
Notes = "Called when a block spreads based on world conditions",
},
HOOK_BLOCK_TO_PICKUPS =
{
Notes = "Called when a block has been dug and is being converted to pickups. The server has provided the default pickups and the plugins may modify them.",
},
HOOK_BREWING_COMPLETED =
{
Notes = "Called when a brewing stand completed a brewing process.",
},
HOOK_BREWING_COMPLETING =
{
Notes = "Called before a brewing stand completes a brewing process.",
},
HOOK_CHAT =
{
Notes = "Called when a client sends a chat message that is not a command. The plugin may modify the chat message",
},
HOOK_CHUNK_AVAILABLE =
{
Notes = "Called when a chunk is loaded or generated and becomes available in the {{cWorld|world}}.",
},
HOOK_CHUNK_GENERATED =
{
Notes = "Called after a chunk is generated. A plugin may do last modifications on the generated chunk before it is handed of to the {{cWorld|world}}.",
},
HOOK_CHUNK_GENERATING =
{
Notes = "Called before a chunk is generated. A plugin may override some parts of the generation algorithm.",
},
HOOK_CHUNK_UNLOADED =
{
Notes = "Called after a chunk has been unloaded from a {{cWorld|world}}.",
},
HOOK_CHUNK_UNLOADING =
{
Notes = "Called before a chunk is unloaded from a {{cWorld|world}}. The chunk has already been saved.",
},
HOOK_COLLECTING_PICKUP =
{
Notes = "Called when a player is about to collect a pickup.",
},
HOOK_CRAFTING_NO_RECIPE =
{
Notes = "Called when a player has items in the crafting slots and the server cannot locate any recipe. Plugin may provide a recipe.",
},
HOOK_DISCONNECT =
{
Notes = "Called after the player has disconnected.",
},
HOOK_ENTITY_ADD_EFFECT =
{
Notes = "Called when an effect is being added to an {{cEntity|entity}}. Plugin may refuse the effect.",
},
HOOK_ENTITY_CHANGED_WORLD =
{
Notes = "Called after a entity has changed the world.",
},
HOOK_ENTITY_CHANGING_WORLD =
{
Notes = "Called before a entity has changed the world. Plugin may disallow a entity to change the world.",
},
HOOK_ENTITY_TELEPORT =
{
Notes = "Called when an {{cEntity|entity}} is being teleported. Plugin may refuse the teleportation.",
},
HOOK_EXECUTE_COMMAND =
{
Notes = "Called when a client sends a chat message that is recognized as a command, before handing that command to the regular command handler. A plugin may stop the command from being handled. This hook is called even when the player doesn't have permissions for the command.",
},
HOOK_EXPLODED =
{
Notes = "Called after an explosion has been processed in a {{cWorld|world}}.",
},
HOOK_EXPLODING =
{
Notes = "Called before an explosion is processed in a {{cWorld|world}}. A plugin may alter the explosion parameters or cancel the explosion altogether.",
},
HOOK_HANDSHAKE =
{
Notes = "Called when a Handshake packet is received from a client.",
},
HOOK_HOPPER_PULLING_ITEM =
{
Notes = "Called when a hopper is pulling an item from the container above it.",
},
HOOK_HOPPER_PUSHING_ITEM =
{
Notes = "Called when a hopper is pushing an item into the container it is aimed at.",
},
HOOK_DROPSPENSE =
{
Notes = "Called when a {{cDropSpenserEntity|DropSpenser}} is dropspensing an {{cItem|item}}.",
},
HOOK_KILLED =
{
Notes = "Called when an entity has been killed.",
},
HOOK_KILLING =
{
Notes = "Called when an entity has just been killed. A plugin may resurrect the entity by setting its health to above zero.",
},
HOOK_LOGIN =
{
Notes = "Called when a Login packet is sent to the client, before the client is queued for authentication.",
},
HOOK_LOGIN_FORGE =
{
Notes = "Called when a Forge client has sent its ModList to the server, during the login handshake.",
},
HOOK_PLAYER_ANIMATION =
{
Notes = "Called when a client send the Animation packet.",
},
HOOK_PLAYER_BREAKING_BLOCK =
{
Notes = "Called when a player is about to break a block. A plugin may cancel the event.",
},
HOOK_PLAYER_BROKEN_BLOCK =
{
Notes = "Called after a player has broken a block.",
},
HOOK_PLAYER_CROUCHED =
{
Notes = "Called when a player crouches.",
},
HOOK_PLAYER_DESTROYED =
{
Notes = "Called when the {{cPlayer}} object is destroyed - a player has disconnected.",
},
HOOK_PLAYER_EATING =
{
Notes = "Called when the player starts eating a held item. Plugins may abort the eating.",
},
HOOK_PLAYER_FISHED =
{
Notes = "Called when the player reels the fishing rod back in, after the server decides the player's fishing reward and the experience to grant.",
},
HOOK_PLAYER_FISHING =
{
Notes = "Called when the player reels the fishing rod back in, plugins may alter the fishing reward and the experience granted to the player.",
},
HOOK_PLAYER_FOOD_LEVEL_CHANGE =
{
Notes = "Called when the player's food level is changing. Plugins may refuse the change.",
},
HOOK_PLAYER_JOINED =
{
Notes = "Called when the player entity has been created. It has not yet been fully initialized.",
},
HOOK_PLAYER_LEFT_CLICK =
{
Notes = "Called when the client sends the LeftClick packet.",
},
HOOK_PLAYER_MOVING =
{
Notes = "Called when the player has moved and the movement is now being applied.",
},
HOOK_PLAYER_OPENING_WINDOW =
{
Notes = "Called when the player is about to open a window. The plugin can return true to cancel the window opening.",
},
HOOK_PLAYER_PLACED_BLOCK =
{
Notes = "Called when the player has just placed a block",
},
HOOK_PLAYER_PLACING_BLOCK =
{
Notes = "Called when the player is about to place a block. A plugin may cancel the event.",
},
HOOK_PLAYER_RIGHT_CLICK =
{
Notes = "Called when the client sends the RightClick packet.",
},
HOOK_PLAYER_RIGHT_CLICKING_ENTITY =
{
Notes = "Called when the client sends the UseEntity packet.",
},
HOOK_PLAYER_SHOOTING =
{
Notes = "Called when the player releases the mouse button to fire their bow.",
},
HOOK_PLAYER_SPAWNED =
{
Notes = "Called after the player entity has been created. The entity is fully initialized and is spawning in the {{cWorld|world}}.",
},
HOOK_PLAYER_TOSSING_ITEM =
{
Notes = "Called when the player is tossing the held item (keypress Q)",
},
HOOK_PLAYER_USED_BLOCK =
{
Notes = "Called after the player has right-clicked a block",
},
HOOK_PLAYER_USED_ITEM =
{
Notes = "Called after the player has right-clicked with a usable item in their hand.",
},
HOOK_PLAYER_USING_BLOCK =
{
Notes = "Called when the player is about to use (right-click) a block",
},
HOOK_PLAYER_USING_ITEM =
{
Notes = "Called when the player is about to right-click with a usable item in their hand.",
},
HOOK_PLUGIN_MESSAGE =
{
Notes = "Called when a PluginMessage packet is received from a client.",
},
HOOK_PLUGINS_LOADED =
{
Notes = "Called after all plugins have loaded.",
},
HOOK_POST_CRAFTING =
{
Notes = "Called after a valid recipe has been chosen for the current contents of the crafting grid. Plugins may modify the recipe.",
},
HOOK_PRE_CRAFTING =
{
Notes = "Called before a recipe is searched for the current contents of the crafting grid. Plugins may provide a recipe and cancel the built-in search.",
},
HOOK_PROJECTILE_HIT_BLOCK =
{
Notes = "Called when a {{cProjectileEntity|projectile}} hits a block.",
},
HOOK_PROJECTILE_HIT_ENTITY =
{
Notes = "Called when a {{cProjectileEntity|projectile}} hits an {{cEntity|entity}}.",
},
HOOK_SERVER_PING =
{
Notes = "Called when a client pings the server from the server list. Plugins may change the favicon, server description, players online and maximum players values.",
},
HOOK_SPAWNED_ENTITY =
{
Notes = "Called after an entity is spawned in a {{cWorld|world}}. The entity is already part of the world.",
},
HOOK_SPAWNED_MONSTER =
{
Notes = "Called after a mob is spawned in a {{cWorld|world}}. The mob is already part of the world.",
},
HOOK_SPAWNING_ENTITY =
{
Notes = "Called just before an entity is spawned in a {{cWorld|world}}.",
},
HOOK_SPAWNING_MONSTER =
{
Notes = "Called just before a mob is spawned in a {{cWorld|world}}.",
},
HOOK_TAKE_DAMAGE =
{
Notes = "Called when an entity is taking any kind of damage. Plugins may modify the damage value, effects, source or cancel the damage.",
},
HOOK_TICK =
{
Notes = "Called when the main server thread ticks - 20 times a second.",
},
HOOK_UPDATED_SIGN =
{
Notes = "Called after a {{cSignEntity|sign}} text has been updated, either by a player or by any external means.",
},
HOOK_UPDATING_SIGN =
{
Notes = "Called before a {{cSignEntity|sign}} text is updated, either by a player or by any external means.",
},
HOOK_WEATHER_CHANGED =
{
Notes = "Called after the weather has changed.",
},
HOOK_WEATHER_CHANGING =
{
Notes = "Called just before the weather changes",
},
HOOK_WORLD_STARTED =
{
Notes = "Called when a world has been started.",
},
HOOK_WORLD_TICK =
{
Notes = "Called in each world's tick thread when the game logic is about to tick (20 times a second).",
},
psDisabled =
{
Notes = "The plugin is not enabled in settings.ini",
},
psError =
{
Notes = "The plugin is enabled in settings.ini, but it has run into an error while loading. Use {{cPlugin}}:GetLoadError() to identify the error.",
},
psLoaded =
{
Notes = "The plugin is enabled and loaded.",
},
psNotFound =
{
Notes = "The plugin has been loaded, but is no longer present on disk.",
},
psUnloaded =
{
Notes = "The plugin is enabled in settings.ini, but it has been unloaded (by a command).",
},
},
ConstantGroups =
{
CommandResult =
{
Include =
{
"^cr.*",
},
TextBefore = "Results that the (Force)ExecuteCommand functions return. This gives information whether the command was executed or not, and the reason.",
},
PluginHook =
{
Include =
{
"HOOK_.*",
},
TextBefore = [[
These constants identify individual hooks. To register the plugin to receive notifications on hooks, use the
cPluginManager:AddHook() function. For detailed description of each hook, see the
hooks reference.]],
},
ePluginStatus =
{
Include =
{
"ps.*",
},
TextBefore = [[
These constants are used to report status of individual plugins. Use {{cPlugin}}:GetStatus() to query the
status of a plugin; use cPluginManager::ForEachPlugin() to iterate over plugins.]],
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/Projectiles.lua
================================================
return
{
cArrowEntity =
{
Desc = [[
Represents the arrow when it is shot from the bow. A subclass of the {{cProjectileEntity}}.
]],
Functions =
{
CanPickup =
{
Params =
{
{
Name = "Player",
Type = "cPlayer",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified player can pick the arrow when it's on the ground",
},
GetBlockHit =
{
Notes = "Returns the coords of the block into which the arrow is stuck. Undefined if the arrow is still moving.",
Returns =
{
{
Type = "Vector3i",
},
},
},
GetDamageCoeff =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the damage coefficient stored within the arrow. The damage dealt by this arrow is multiplied by this coeff",
},
GetPickupState =
{
Returns =
{
{
Type = "cArrowEntity#ePickupState",
},
},
Notes = "Returns the pickup state (one of the psXXX constants, above)",
},
IsCritical =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the arrow should deal critical damage. Based on the bow charge when the arrow was shot.",
},
SetDamageCoeff =
{
Params =
{
{
Name = "DamageCoeff",
Type = "number",
},
},
Notes = "Sets the damage coefficient. The damage dealt by this arrow is multiplied by this coeff",
},
SetIsCritical =
{
Params =
{
{
Name = "IsCritical",
Type = "boolean",
},
},
Notes = "Sets the IsCritical flag on the arrow. Critical arrow deal additional damage",
},
SetPickupState =
{
Params =
{
{
Name = "PickupState",
Type = "cArrowEntity#ePickupState",
},
},
Notes = "Sets the pickup state (one of the psXXX constants, above)",
},
},
Constants =
{
psInCreative =
{
Notes = "The arrow can be picked up only by players in creative gamemode",
},
psInSurvivalOrCreative =
{
Notes = "The arrow can be picked up by players in survival or creative gamemode",
},
psNoPickup =
{
Notes = "The arrow cannot be picked up at all",
},
},
ConstantGroups =
{
ePickupState =
{
Include = "ps.*",
TextBefore = [[
The following constants are used to signalize whether the arrow, once it lands, can be picked by
players:
]],
},
},
Inherits = "cProjectileEntity",
},
cExpBottleEntity =
{
Desc = [[
Represents a thrown ExpBottle. A subclass of the {{cProjectileEntity}}.
]],
Functions =
{
},
Inherits = "cProjectileEntity",
},
cFireChargeEntity =
{
Desc = [[
Represents a fire charge that has been shot by a Blaze or a {{cDispenserEntity|Dispenser}}. A subclass
of the {{cProjectileEntity}}.
]],
Functions =
{
},
Inherits = "cProjectileEntity",
},
cFireworkEntity =
{
Desc = [[
Represents a firework rocket.
]],
Functions =
{
GetItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Returns the item that has been used to create the firework rocket. The item's m_FireworkItem member contains all the firework-related data.",
},
GetTicksToExplosion =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks left until the firework explodes.",
},
SetItem =
{
Params =
{
{
Name = "FireworkItem",
Type = "cItem",
},
},
Notes = "Sets a new item to be used for the firework.",
},
SetTicksToExplosion =
{
Params =
{
{
Name = "NumTicks",
Type = "number",
},
},
Notes = "Sets the number of ticks left until the firework explodes.",
},
},
Inherits = "cProjectileEntity",
},
cGhastFireballEntity =
{
Desc = "",
Functions =
{
},
Inherits = "cProjectileEntity",
},
cProjectileEntity =
{
Desc = "Base class for all projectiles, such as arrows and fireballs.",
Functions =
{
GetCreatorName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the player that created the projectile. Will be empty for non-player creators",
},
GetCreatorUniqueID =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the unique ID of the entity who created this projectile, or {{cEntity#INVALID_ID|cEntity.INVALID_ID}} if the projectile wasn't created by an entity.",
},
GetMCAClassName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string that identifies the projectile type (class name) in MCA files",
},
GetProjectileKind =
{
Returns =
{
{
Type = "cProjectileEntity#eKind",
},
},
Notes = "Returns the kind of this projectile (pkXXX constant)",
},
IsInGround =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if this projectile has hit the ground.",
},
},
Constants =
{
pkArrow =
{
Notes = "The projectile is an {{cArrowEntity|arrow}}",
},
pkEgg =
{
Notes = "The projectile is a {{cThrownEggEntity|thrown egg}}",
},
pkEnderPearl =
{
Notes = "The projectile is a {{cThrownEnderPearlEntity|thrown enderpearl}}",
},
pkExpBottle =
{
Notes = "The projectile is a {{cExpBottleEntity|thrown exp bottle}}",
},
pkFireCharge =
{
Notes = "The projectile is a {{cFireChargeEntity|fire charge}}",
},
pkFirework =
{
Notes = "The projectile is a (flying) {{cFireworkEntity|firework}}",
},
pkGhastFireball =
{
Notes = "The projectile is a {{cGhastFireballEntity|ghast fireball}}",
},
pkSnowball =
{
Notes = "The projectile is a {{cThrownSnowballEntity|thrown snowball}}",
},
pkSplashPotion =
{
Notes = "The projectile is a {{cSplashPotionEntity|thrown splash potion}}",
},
pkWitherSkull =
{
Notes = "The projectile is a {{cWitherSkullEntity|wither skull}}",
},
},
ConstantGroups =
{
eKind =
{
Include = "pk.*",
TextBefore = "The following constants are used to distinguish between the different projectile kinds:",
},
},
Inherits = "cEntity",
},
cSplashPotionEntity =
{
Desc = [[
Represents a thrown splash potion.
]],
Functions =
{
GetEntityEffectType =
{
Returns =
{
{
Type = "cEntityEffect#eType",
},
},
Notes = "Returns the effect type of this potion",
},
GetItem =
{
Returns =
{
{
Type = "cItem",
},
},
Notes = "Gets the potion item that was thrown.",
},
GetPotionColor =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the color index of the particles emitted by this potion",
},
SetEntityEffectType =
{
Params =
{
{
Name = "EntityEffectType",
Type = "cEntityEffect#eType",
},
},
Notes = "Sets the effect type of this potion",
},
SetPotionColor =
{
Params =
{
{
Name = "PotionColor",
Type = "number",
},
},
Notes = "Sets the color index of the particles for this potion",
},
},
Inherits = "cProjectileEntity",
},
cThrownEggEntity =
{
Desc = [[
Represents a thrown egg.
]],
Functions =
{
},
Inherits = "cProjectileEntity",
},
cThrownEnderPearlEntity =
{
Desc = "Represents a thrown ender pearl.",
Functions =
{
},
Inherits = "cProjectileEntity",
},
cThrownSnowballEntity =
{
Desc = "Represents a thrown snowball.",
Functions =
{
},
Inherits = "cProjectileEntity",
},
cWitherSkullEntity =
{
Desc = "Represents a wither skull being shot.",
Functions =
{
},
Inherits = "cProjectileEntity",
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/RankManager.lua
================================================
-- Describes the cRankManager class API
return
{
cRankManager =
{
Desc = [[
Manages the players' permissions. The players are assigned a single rank, which contains groups of
permissions and restrictions. The functions in this class query or modify these.
All the functions are static, call them using the cRankManager:Function() convention.
The players are identified by their UUID, to support player renaming.
The rank also contains specific "mesage visuals" - bits that are used for formatting messages from the
players. There's a message prefix, which is put in front of every message the player sends, and the
message suffix that is appended to each message. There's also a PlayerNameColorCode, which holds the
color that is used for the player's name in the messages.
Each rank can contain any number of permission groups. These groups allow for an easier setup of the
permissions - you can share groups among ranks, so the usual approach is to group similar permissions
together and add that group to any rank that should use those permissions.
Permissions are added to individual groups. Each group can support unlimited permissions. Note that
adding a permission to a group will make the permission available to all the ranks that contain that
permission group.
One rank is reserved as the Default rank. All players that don't have an explicit rank assigned to them
will behave as if assigned to this rank. The default rank can be changed to any other rank at any time.
Note that the default rank cannot be removed from the RankManager - RemoveRank() will change the default
rank to the replacement rank, if specified, and fail if no replacement rank is specified. Renaming the
default rank using RenameRank() will change the default rank to the new name.
]],
Functions =
{
AddGroup =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
},
Notes = "Adds the group of the specified name. Logs a warning and does nothing if the group already exists.",
},
AddGroupToRank =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Adds the specified group to the specified rank. Returns true on success, false on failure - if the group name or the rank name is not found.",
},
AddPermissionToGroup =
{
IsStatic = true,
Params =
{
{
Name = "Permission",
Type = "string",
},
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Adds the specified permission to the specified group. Returns true on success, false on failure - if the group name is not found.",
},
AddRank =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
{
Name = "MsgPrefix",
Type = "string",
},
{
Name = "MsgSuffix",
Type = "string",
},
{
Name = "MsgNameColorCode",
Type = "string",
},
},
Notes = "Adds a new rank of the specified name and with the specified message visuals. Logs an info message and does nothing if the rank already exists.",
},
AddRestrictionToGroup =
{
IsStatic = true,
Params =
{
{
Name = "Permission",
Type = "string",
},
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{ Type = "boolean" },
},
Notes = "Adds a new restriction to the specified group. Returns true if successful, false if it fails (no such group). No action if the group already has the restriction.",
},
ClearPlayerRanks =
{
IsStatic = true,
Notes = "Removes all player ranks from the database. Note that this doesn't change the cPlayer instances for the already connected players, you need to update all the instances manually.",
},
GetAllGroups =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing the names of all the groups that are known to the manager.",
},
GetAllPermissions =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing all the permissions that are known to the manager.",
},
GetAllPermissionsRestrictions =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing all the permissions and restrictions (intermixed together) that are known to the manager.",
},
GetAllPlayerUUIDs =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns the short uuids of all players stored in the rank DB, sorted by the players' names (case insensitive).",
},
GetAllRanks =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing the names of all the ranks that are known to the manager.",
},
GetAllRestrictions =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing all the restrictions that are known to the manager.",
},
GetDefaultRank =
{
IsStatic = true,
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the default rank. ",
},
GetGroupPermissions =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing the permissions that the specified group contains.",
},
GetGroupRestrictions =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing the restrictions that the specified group contains.",
},
GetPlayerGroups =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table of the names of the groups that are assigned to the specified player through their rank. Returns an empty table if the player is not known or has no rank or groups assigned to them.",
},
GetPlayerMsgVisuals =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Returns =
{
{
Name = "MsgPrefix",
Type = "string",
},
{
Name = "MsgSuffix",
Type = "string",
},
{
Name = "MsgNameColorCode",
Type = "string",
},
},
Notes = "Returns the message visuals assigned to the player. If the player is not explicitly assigned a rank, the default rank's visuals are returned. If there is an error, no value is returned at all.",
},
GetPlayerName =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Returns =
{
{
Name = "PlayerName",
Type = "string",
},
},
Notes = "Returns the last name that the specified player has, for a player in the ranks database. An empty string is returned if the player isn't in the database.",
},
GetPlayerPermissions =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table containing all permissions that the specified player is assigned through their rank. Returns the default rank's permissions if the player has no explicit rank assigned to them. Returns an empty array on error.",
},
GetPlayerRankName =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Returns =
{
{
Name = "RankName",
Type = "string",
},
},
Notes = "Returns the name of the rank that is assigned to the specified player. An empty string (NOT the default rank) is returned if the player has no rank assigned to them.",
},
GetRankGroups =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table of the names of all the groups that are assigned to the specified rank. Returns an empty table if there is no such rank.",
},
GetRankPermissions =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table of all the permissions that are assigned to the specified rank through its groups. Returns an empty table if there is no such rank.",
},
GetRankRestrictions =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table of all the restrictions that are assigned to the specified rank through its groups. Returns an empty table if there is no such rank.",
},
GetRankVisuals =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Name = "MsgPrefix",
Type = "string",
},
{
Name = "MsgSuffix",
Type = "string",
},
{
Name = "MsgNameColorCode",
Type = "string",
},
},
Notes = "Returns the message visuals for the specified rank. Returns no value if the specified rank does not exist.",
},
GroupExists =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the specified group exists.",
},
IsGroupInRank =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the specified group is assigned to the specified rank.",
},
IsPermissionInGroup =
{
IsStatic = true,
Params =
{
{
Name = "Permission",
Type = "string",
},
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the specified permission is assigned to the specified group.",
},
IsPlayerRankSet =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the specified player has a rank assigned to them.",
},
IsRestrictionInGroup =
{
IsStatic = true,
Params =
{
{
Name = "Restriction",
Type = "string",
},
{
Name = "GroupName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the specified restriction is assigned to the specified group.",
},
RankExists =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true iff the specified rank exists.",
},
RemoveGroup =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
},
Notes = "Removes the specified group completely. The group will be removed from all the ranks using it and then erased from the manager. Logs an info message and does nothing if the group doesn't exist.",
},
RemoveGroupFromRank =
{
IsStatic = true,
Params =
{
{
Name = "GroupName",
Type = "string",
},
{
Name = "RankName",
Type = "string",
},
},
Notes = "Removes the specified group from the specified rank. The group will still exist, even if it isn't assigned to any rank. Logs an info message and does nothing if the group or rank doesn't exist.",
},
RemovePermissionFromGroup =
{
IsStatic = true,
Params =
{
{
Name = "Permission",
Type = "string",
},
{
Name = "GroupName",
Type = "string",
},
},
Notes = "Removes the specified permission from the specified group. Logs an info message and does nothing if the group doesn't exist.",
},
RemovePlayerRank =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
},
Notes = "Removes the player's rank; the player's left without a rank. Note that this doesn't change the {{cPlayer}} instances for the already connected players, you need to update all the instances manually. No action if the player has no rank assigned to them already.",
},
RemoveRank =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
{
Name = "ReplacementRankName",
Type = "string",
IsOptional = true,
},
},
Notes = "Removes the specified rank. If ReplacementRankName is given, the players that have RankName will get their rank set to ReplacementRankName. If it isn't given, or is an invalid rank, the players will be removed from the manager, their ranks will be unset completely. Logs an info message and does nothing if the rank is not found.",
},
RemoveRestrictionFromGroup =
{
IsStatic = true,
Params =
{
{
Name = "Restriction",
Type = "string",
},
{
Name = "GroupName",
Type = "string",
},
},
Notes = "Removes the specified restriction from the specified group.",
},
RenameGroup =
{
IsStatic = true,
Params =
{
{
Name = "OldName",
Type = "string",
},
{
Name = "NewName",
Type = "string",
},
},
Notes = "Renames the specified group. Logs an info message and does nothing if the group is not found or the new name is already used.",
},
RenameRank =
{
IsStatic = true,
Params =
{
{
Name = "OldName",
Type = "string",
},
{
Name = "NewName",
Type = "string",
},
},
Notes = "Renames the specified rank. Logs an info message and does nothing if the rank is not found or the new name is already used.",
},
SetDefaultRank =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the specified rank as the default rank. Returns true on success, false on failure (rank doesn't exist).",
},
SetPlayerRank =
{
IsStatic = true,
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
{
Name = "PlayerName",
Type = "string",
},
{
Name = "RankName",
Type = "string",
},
},
Notes = "Updates the rank for the specified player. The player name is provided for reference, the UUID is used for identification. Logs a warning and does nothing if the rank is not found.",
},
SetRankVisuals =
{
IsStatic = true,
Params =
{
{
Name = "RankName",
Type = "string",
},
{
Name = "MsgPrefix",
Type = "string",
},
{
Name = "MsgSuffix",
Type = "string",
},
{
Name = "MsgNameColorCode",
Type = "string",
},
},
Notes = "Updates the rank's message visuals. Logs an info message and does nothing if rank not found.",
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/WebAdmin.lua
================================================
return
{
cWebAdmin =
{
Desc = "",
Functions =
{
AddWebTab =
{
IsStatic = true,
Params =
{
{
Name = "Title",
Type = "string",
},
{
Name = "UrlPath",
Type = "string",
},
{
Name = "HandlerFn",
Type = "function",
},
},
Notes = "Adds a new web tab to webadmin. The tab uses \"Title\" as its display string and is identified in the URL using the UrlPath (https://server.domain.com/webadmin/{PluginName}/{UrlPath}). The HandlerFn is the callback function that is called when the admin accesses the page, it has the following signature:
function ({{HTTPRequest|a_Request}}, a_UrlPath) return Content, ContentType end
URLPath must not contain a '/', the recommendation is to use only 7-bit-clean ASCII character set.",
},
GetAllWebTabs =
{
IsStatic = true,
Returns =
{
{
Type = "table",
},
},
Notes = "Returns an array-table with each item describing a web tab, for all web tabs registered in the WebAdmin, for all plugins. The returned table has the following format:
{ { PluginName = \"Plugin's API name\", UrlPath = \"UrlPath given to AddWebTab\", Title = \"Title given to AddWebTab\", }, ... }",
},
GetBaseURL =
{
IsStatic = true,
Params =
{
{
Name = "URL",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the string that is the path of the base webadmin (\"../../../webadmin\") relative to the given URL.",
},
GetContentTypeFromFileExt =
{
IsStatic = true,
Params =
{
{
Name = "FileExt",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the content-type that should be used for files with the specified extension (without the dot), such as \"text/plain\" for the \"txt\" extension. If the extension is not known, returns an empty string.",
},
GetHTMLEscapedString =
{
IsStatic = true,
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "Gets the HTML-escaped representation of a requested string. This is useful for user input and game data that is not guaranteed to be escaped already.",
},
GetPage =
{
IsStatic = true,
Params =
{
{
Name = "Request",
Type = "HTTPRequest",
},
},
Returns =
{
{
Type = "table",
},
},
Notes = "Returns the (inner HTML) page contents for the specified request. Calls the appropriate WebTab handler registered via AddWebTab() and returns the information from that plugin wrapped in a table with the following structure:
{ Content = \"\", -- Content returned by the plugin ContentType = \"\", -- Content type returned by the plugin, or \"text/html\" if none returned UrlPath = \"\", -- UrlPath decoded from the request TabTitle = \"\", -- Title of the tab that handled the request, as given to AddWebTab() PluginName = \"\", -- API name of the plugin that handled the request PluginFolder = \"\", -- Folder name (= display name) of the plugin that handled the request }
This function is mainly used in the webadmin template file.",
},
GetPorts =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns a comma-separated list of ports on which the webadmin is configured to listen. Note that this list does include ports that may currently be unavailable (another server was already listening on them prior to launching Cuberite).",
},
GetURLEncodedString =
{
IsStatic = true,
ObsoletedBy = "cUrlParser:UrlEncode",
Params =
{
{
Name = "Input",
Type = "string",
},
},
Returns =
{
{
Type = "string",
},
},
Notes = "OBSOLETE - use {{cUrlParser}}:UrlEncode() instead. Returns the string given to it escaped by URL encoding, which makes the string suitable for transmission in an URL. Invalid characters are turned into \"%xy\" values.",
},
Reload =
{
Notes = "Reloads the webadmin's config - the allowed logins, the template script and the login page. Note that reloading will not change the \"enabled\" state of the server, and it will not update listening ports. Existing WebTabs will be kept registered even after the reload.",
},
},
},
HTTPFormData =
{
Desc = "This class stores data for one form element for a {{HTTPRequest|HTTP request}}.",
Variables =
{
Name =
{
Type = "string",
Notes = "Name of the form element",
},
Type =
{
Type = "string",
Notes = "Type of the data (usually empty)",
},
Value =
{
Type = "string",
Notes = "Value of the form element. Contains the raw data as sent by the browser.",
},
},
},
HTTPRequest =
{
Desc = [[
This class encapsulates all the data that is sent to the WebAdmin through one HTTP request. Plugins
receive this class as a parameter to the function handling the web requests, as registered in the
{{cPluginLua}}:AddWebPage().
]],
Constants =
{
Params =
{
Notes = "Map-table of parameters given to the request in the URL (?param=value); if a form uses GET method, this is the same as FormData. For each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value.",
},
FormData =
{
Notes = "Array-table of {{HTTPFormData}}, contains the values of individual form elements submitted by the client",
},
PostParams =
{
Notes = "Map-table of data posted through a FORM - either a GET or POST method. Logically the same as FormData, but in a map-table format (for each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value).",
},
},
Variables =
{
Method =
{
Type = "string",
Notes = "The HTTP method used to make the request. Usually GET or POST.",
},
Path =
{
Type = "string",
Notes = "The Path part of the URL (excluding the parameters)",
},
URL =
{
Type = "string",
Notes = "The entire URL used for the request.",
},
Username =
{
Type = "string",
Notes = "Name of the logged-in user.",
},
},
},
HTTPTemplateRequest =
{
Desc = [[
This class is used only in the WebAdmin template script as the parameter to the function that provides the template.
]],
Variables =
{
Request =
{
Type = "HTTPRequest",
Notes = "The request for which the template is being built.",
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Classes/World.lua
================================================
-- Describes the cWorld class API
return
{
cWorld =
{
Desc = [[
cWorld is the game world. It is the hub of all the information managed by individual classes,
providing convenient access to them. Cuberite supports multiple worlds in any combination of
world types. You can have two overworlds, three nethers etc. To enumerate all world the server
provides, use the {{cRoot}}:ForEachWorld() function.
The world data is held in individual chunks. Each chunk consists of 16 (x) * 16 (z) * 256 (y)
blocks, each block is specified by its block type (8-bit) and block metadata (4-bit).
Additionally, each block has two light values calculated - skylight (how much daylight it receives)
and blocklight (how much light from light-emissive blocks it receives), both 4-bit.
Each world runs several separate threads used for various housekeeping purposes, the most important
of those is the Tick thread. This thread updates the game logic 20 times per second, and it is
the thread where all the gameplay actions are evaluated. Liquid physics, entity interactions,
player movement etc., all are applied in this thread.
Additional threads include the generation thread (generates new chunks as needed, storage thread
(saves and loads chunk from the disk), lighting thread (updates block light values) and the
chunksender thread (compresses chunks to send to the clients).
The world provides access to all its {{cPlayer|players}}, {{cEntity|entities}} and {{cBlockEntity|block
entities}}. Because of multithreading issues, individual objects cannot be retrieved for indefinite
handling, but rather must be modified in callbacks, within which they are guaranteed to stay valid.
Physics for individual blocks are handled by the simulators. These will fire in each tick for all
blocks that have been scheduled for simulator update ("simulator wakeup"). The simulators include
liquid physics, falling blocks, fire spreading and extinguishing and redstone.
Game time is also handled by the world. It provides the time-of-day and the total world age.
]],
Functions =
{
AreCommandBlocksEnabled =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether command blocks are enabled on the (entire) server",
},
BroadcastBlockAction =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "ActionByte1",
Type = "number",
},
{
Name = "ActionByte2",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Broadcasts the BlockAction packet to all clients who have the appropriate chunk loaded (except ExcludeClient). The contents of the packet are specified by the parameters for the call, the blocktype needn't match the actual block that is present in the world data at the specified location.",
},
BroadcastBlockAction =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "ActionByte1",
Type = "number",
},
{
Name = "ActionByte2",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Broadcasts the BlockAction packet to all clients who have the appropriate chunk loaded (except ExcludeClient). The contents of the packet are specified by the parameters for the call, the blocktype needn't match the actual block that is present in the world data at the specified location. (DEPRECATED)",
},
BroadcastChat =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
{
Name = "ChatPrefix",
Type = "eMessageType",
IsOptional = true,
},
},
Notes = "Sends the Message to all players in this world, except the optional ExcludeClient. No formatting is done by the server.",
},
BroadcastChatDeath =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Prepends Gray [DEATH] / colours entire text (depending on ShouldUseChatPrefixes()) and broadcasts message. For when a player dies.",
},
BroadcastChatFailure =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Prepends Rose [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and broadcasts message. For a command that failed to run because of insufficient permissions, etc.",
},
BroadcastChatFatal =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Prepends Red [FATAL] / colours entire text (depending on ShouldUseChatPrefixes()) and broadcasts message. For a plugin that crashed, or similar.",
},
BroadcastChatInfo =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Prepends Yellow [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and broadcasts message. For informational messages, such as command usage.",
},
BroadcastChatSuccess =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Prepends Green [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and broadcasts message. For success messages.",
},
BroadcastChatWarning =
{
Params =
{
{
Name = "Message",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Prepends Rose [WARN] / colours entire text (depending on ShouldUseChatPrefixes()) and broadcasts message. For concerning events, such as plugin reload etc.",
},
BroadcastEntityAnimation =
{
Params =
{
{
Name = "TargetEntity",
Type = "cEntity",
},
{
Name = "Animation",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Sends an animation of an entity to all clienthandles (except ExcludeClient if given)",
},
BroadcastParticleEffect =
{
Params =
{
{
Name = "ParticleName",
Type = "string",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "OffsetX",
Type = "number",
},
{
Name = "OffsetY",
Type = "number",
},
{
Name = "OffsetZ",
Type = "number",
},
{
Name = "ParticleData",
Type = "number",
},
{
Name = "ParticleAmount",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Spawns the specified particles to all players in the world exept the optional ExeptClient. A list of available particles by thinkofdeath can be found {{https://gist.github.com/thinkofdeath/5110835|Here}}. OBSOLETE, use the vector-based overload instead",
},
BroadcastParticleEffect =
{
Params =
{
{
Name = "ParticleName",
Type = "string",
},
{
Name = "SourcePos",
Type = "Vector3f"
},
{
Name = "Offset",
Type = "Vector3f",
},
{
Name = "ParticleData",
Type = "number",
},
{
Name = "ParticleAmount",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Spawns the specified particles to all players in the world exept the optional ExeptClient. A list of available particles by thinkofdeath can be found {{https://gist.github.com/thinkofdeath/5110835|Here}}",
},
BroadcastPlayerListHeaderFooter =
{
Params =
{
{
Type = "cCompositeChat",
Name = "Header",
},
{
Type = "cCompositeChat",
Name = "Footer",
},
},
Desc = "Broadcasts the header and footer of the player list to all players in the world.",
},
BroadcastSoundEffect =
{
Params =
{
{
Name = "SoundName",
Type = "string",
},
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "Volume",
Type = "number",
},
{
Name = "Pitch",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Sends the specified sound effect to all players in this world, except the optional ExceptClient",
},
BroadcastSoundEffect =
{
Params =
{
{
Name = "SoundName",
Type = "string",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "Volume",
Type = "number",
},
{
Name = "Pitch",
Type = "number",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Sends the specified sound effect to all players in this world, except the optional ExceptClient (DEPRECATED, use vector-parametered version instead)",
},
BroadcastSoundParticleEffect =
{
Params =
{
{
Name = "EffectID",
Type = "number",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "EffectData",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Sends the specified effect to all players in this world, except the optional ExceptClient. OBSOLETE, use the vector overload instead",
},
BroadcastSoundParticleEffect =
{
Params =
{
{
Name = "EffectID",
Type = "number",
},
{
Name = "SourcePos",
Type = "Vector3i"
},
{
Name = "EffectData",
Type = "string",
},
{
Name = "ExcludeClient",
Type = "cClientHandle",
IsOptional = true,
},
},
Notes = "Sends the specified effect to all players in this world, except the optional ExceptClient",
},
CastThunderbolt =
{
Params =
{
{
Name = "Position",
Type = "Vector3d",
},
},
Notes = "Creates a thunderbolt at the specified coords",
},
CastThunderbolt =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Notes = "Creates a thunderbolt at the specified coords (DEPRECATED, use vector-parametered version instead)",
},
ChangeWeather =
{
Notes = "Forces the weather to change in the next game tick. Weather is changed according to the normal rules: wSunny <-> wRain <-> wStorm",
},
ChunkStay =
{
Params =
{
{
Name = "ChunkCoordTable",
Type = "table",
},
{
Name = "OnChunkAvailable",
Type = "function",
IsOptional = true,
},
{
Name = "OnAllChunksAvailable",
Type = "function",
IsOptional = true,
},
},
Notes = "Queues the specified chunks to be loaded or generated and calls the specified callbacks once they are loaded. ChunkCoordTable is an arra-table of chunk coords, each coord being a table of 2 numbers: { {Chunk1x, Chunk1z}, {Chunk2x, Chunk2z}, ...}. When any of those chunks are made available (including being available at the start of this call), the OnChunkAvailable() callback is called. When all the chunks are available, the OnAllChunksAvailable() callback is called. The function signatures are:
function OnChunkAvailable(ChunkX, ChunkZ)\
function OnAllChunksAvailable()
All return values from the callbacks are ignored.",
},
CreateProjectile =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "ProjectileKind",
Type = "cProjectileEntity#eKind",
},
{
Name = "Creator",
Type = "cEntity",
},
{
Name = "Originating Item",
Type = "cItem",
},
{
Name = "Speed",
Type = "Vector3d",
IsOptional = true,
},
},
Notes = "Creates a new projectile of the specified kind at the specified coords. The projectile's creator is set to Creator (may be nil). The item that created the projectile entity, commonly the {{cPlayer|player}}'s currently equipped item, is used at present for fireworks to correctly set their entity metadata. It is not used for any other projectile. Optional speed indicates the initial speed for the projectile.",
},
DigBlock =
{
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "Digger",
Type = "cEntity",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Replaces the specified block with air, without dropping the usual pickups for the block. Wakes up the simulators for the block and its neighbors. The optional Digger parameter specifies the entity who dug the block, usually a player. Returns true on success, or false if the chunk is not loaded or invalid coords. See also DropBlockAsPickups() for the version that drops pickups.",
},
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "Digger",
Type = "cEntity",
IsOptional = true,
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Replaces the specified block with air, without dropping the usual pickups for the block. Wakes up the simulators for the block and its neighbors. The optional Digger parameter specifies the entity who dug the block, usually a player. Returns true on success, or false if the chunk is not loaded or invalid coords. See also DropBlockAsPickups() for the version that drops pickups.",
},
},
DoExplosionAt =
{
Params =
{
{
Name = "Force",
Type = "number",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "CanCauseFire",
Type = "boolean",
},
{
Name = "Source",
Type = "eExplosionSource",
},
{
Name = "SourceData",
Type = "any",
},
},
Notes = "Creates an explosion of the specified relative force in the specified position. If CanCauseFire is set, the explosion will set blocks on fire, too. The Source parameter specifies the source of the explosion, one of the esXXX constants. The SourceData parameter is specific to each source type, usually it provides more info about the source.",
},
DoWithBeaconAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a beacon at the specified coords, calls the CallbackFunction with the {{cBeaconEntity}} parameter representing the beacon. The CallbackFunction has the following signature:
function Callback({{cBeaconEntity|BeaconEntity}})
The function returns false if there is no beacon, or if there is, it returns the bool value that the callback has returned.",
},
DoWithBedAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a bed at the specified coords, calls the CallbackFunction with the {{cBedEntity}} parameter representing the bed. The CallbackFunction has the following signature:
function Callback({{cBedEntity|cBedEntity}})
The function returns false if there is no bed, or if there is, it returns the bool value that the callback has returned.",
},
DoWithBlockEntityAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a block entity at the specified coords, calls the CallbackFunction with the {{cBlockEntity}} parameter representing the block entity. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
The function returns false if there is no block entity, or if there is, it returns the bool value that the callback has returned.",
},
DoWithBrewingstandAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a brewingstand at the specified coords, calls the CallbackFunction with the {{cBrewingstandEntity}} parameter representing the brewingstand. The CallbackFunction has the following signature:
function Callback({{cBrewingstandEntity|cBrewingstandEntity}})
The function returns false if there is no brewingstand, or if there is, it returns the bool value that the callback has returned.",
},
DoWithChestAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a chest at the specified coords, calls the CallbackFunction with the {{cChestEntity}} parameter representing the chest. The CallbackFunction has the following signature:
function Callback({{cChestEntity|ChestEntity}})
The function returns false if there is no chest, or if there is, it returns the bool value that the callback has returned.",
},
DoWithCommandBlockAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a command block at the specified coords, calls the CallbackFunction with the {{cCommandBlockEntity}} parameter representing the command block. The CallbackFunction has the following signature:
function Callback({{cCommandBlockEntity|CommandBlockEntity}})
The function returns false if there is no command block, or if there is, it returns the bool value that the callback has returned.",
},
DoWithDispenserAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a dispenser at the specified coords, calls the CallbackFunction with the {{cDispenserEntity}} parameter representing the dispenser. The CallbackFunction has the following signature:
function Callback({{cDispenserEntity|DispenserEntity}})
The function returns false if there is no dispenser, or if there is, it returns the bool value that the callback has returned.",
},
DoWithDropperAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a dropper at the specified coords, calls the CallbackFunction with the {{cDropperEntity}} parameter representing the dropper. The CallbackFunction has the following signature:
function Callback({{cDropperEntity|DropperEntity}})
The function returns false if there is no dropper, or if there is, it returns the bool value that the callback has returned.",
},
DoWithDropSpenserAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a dropper or a dispenser at the specified coords, calls the CallbackFunction with the {{cDropSpenserEntity}} parameter representing the dropper or dispenser. The CallbackFunction has the following signature:
function Callback({{cDropSpenserEntity|DropSpenserEntity}})
Note that this can be used to access both dispensers and droppers in a similar way. The function returns false if there is neither dispenser nor dropper, or if there is, it returns the bool value that the callback has returned.",
},
DoWithEntityByID =
{
Params =
{
{
Name = "EntityID",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If an entity with the specified ID exists, calls the callback with the {{cEntity}} parameter representing the entity. The CallbackFunction has the following signature:
function Callback({{cEntity|Entity}})
The function returns false if the entity was not found, and it returns the same bool value that the callback has returned if the entity was found.",
},
DoWithFlowerPotAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a flower pot at the specified coords, calls the CallbackFunction with the {{cFlowerPotEntity}} parameter representing the flower pot. The CallbackFunction has the following signature:
function Callback({{cFlowerPotEntity|FlowerPotEntity}})
The function returns false if there is no flower pot, or if there is, it returns the bool value that the callback has returned.",
},
DoWithFurnaceAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a furnace at the specified coords, calls the CallbackFunction with the {{cFurnaceEntity}} parameter representing the furnace. The CallbackFunction has the following signature:
function Callback({{cFurnaceEntity|FurnaceEntity}})
The function returns false if there is no furnace, or if there is, it returns the bool value that the callback has returned.",
},
DoWithHopperAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a hopper at the specified coords, calls the CallbackFunction with the {{cHopperEntity}} parameter representing the hopper. The CallbackFunction has the following signature:
function Callback({{cHopperEntity|cHopperEntity}})
The function returns false if there is no hopper, or if there is, it returns the bool value that the callback has returned.",
},
DoWithMobHeadAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a mob head at the specified coords, calls the CallbackFunction with the {{cMobHeadEntity}} parameter representing the furnace. The CallbackFunction has the following signature:
function Callback({{cMobHeadEntity|MobHeadEntity}})
The function returns false if there is no mob head, or if there is, it returns the bool value that the callback has returned.",
},
DoWithNearestPlayer =
{
Params =
{
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "RangeLimit",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
{
Name = "CheckLineOfSight",
Type = "boolean",
},
{
Name = "IgnoreSpectator",
Type = "boolean",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback function with the {{cPlayer|player}} nearest to the specified position as its parameter, if they are still within the range limit. The CallbackFunction has the following signature:
function Callback({{cPlayer|Player}})
The function returns false if the player was not found, or whatever bool value the callback returned if the player was found.",
},
DoWithNoteBlockAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a note block at the specified coords, calls the CallbackFunction with the {{cNoteEntity}} parameter representing the note block. The CallbackFunction has the following signature:
function Callback({{cNoteEntity|NoteEntity}})
The function returns false if there is no note block, or if there is, it returns the bool value that the callback has returned.",
},
DoWithPlayer =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is a player of the specified name (exact match), calls the CallbackFunction with the {{cPlayer}} parameter representing the player. The CallbackFunction has the following signature:
function Callback({{cPlayer|Player}})
The function returns false if the player was not found, or whatever bool value the callback returned if the player was found.",
},
DoWithPlayerByUUID =
{
Params =
{
{
Name = "PlayerUUID",
Type = "cUUID",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "If there is the player with the uuid, calls the CallbackFunction with the {{cPlayer}} parameter representing the player. The CallbackFunction has the following signature:
function Callback({{cPlayer|Player}})
The function returns false if the player was not found, or whatever bool value the callback returned if the player was found.",
},
DropBlockAsPickups =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "Digger",
Type = "cEntity",
IsOptional = true,
},
{
Name = "Tool",
Type = "cItem",
IsOptional = true,
},
},
Returns =
{
{
Name = "IsSuccess",
Type = "boolean",
}
},
Notes = "Digs up the specified block and spawns the appropriate pickups for it. The optional Digger parameter specifies the {{cEntity|entity}} who dug the block, usually a {{cPlayer|player}}. The optional Tool parameter specifies the tool used to dig the block, not present means an empty hand. Returns true on success, false if the chunk is not present. See also DigBlock() for the pickup-less version.",
},
FastSetBlock =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block at the specified coords, without waking up the simulators or replacing the block entities for the previous block type. Do not use if the block being replaced has a block entity tied to it! OBSOLETE, use the vector-based overload instead.",
},
{
Params =
{
{
Name = "BlockCoords",
Type = "Vector3i",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block at the specified coords, without waking up the simulators or replacing the block entities for the previous block type. Do not use if the block being replaced has a block entity tied to it!",
},
},
FindAndDoWithPlayer =
{
Params =
{
{
Name = "PlayerName",
Type = "string",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the given callback function for the player with the name best matching the name string provided. This function is case-insensitive and will match partial names. Returns false if player not found or there is ambiguity, true otherwise. The CallbackFunction has the following signature:
function Callback({{cPlayer|Player}})
",
},
ForEachBlockEntityInChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each block entity in the chunk. Returns true if all block entities in the chunk have been processed (including when there are zero block entities), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature:
function Callback({{cBlockEntity|BlockEntity}})
The callback should return false or no value to continue with the next block entity, or true to abort the enumeration.",
},
ForEachBrewingstandInChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each brewingstand in the chunk. Returns true if all brewingstands in the chunk have been processed (including when there are zero brewingstands), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature:
function Callback({{cBrewingstandEntity|cBrewingstandEntity}})
The callback should return false or no value to continue with the next brewingstand, or true to abort the enumeration.",
},
ForEachChestInChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each chest in the chunk. Returns true if all chests in the chunk have been processed (including when there are zero chests), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature:
function Callback({{cChestEntity|ChestEntity}})
The callback should return false or no value to continue with the next chest, or true to abort the enumeration.",
},
ForEachEntity =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each entity in the loaded world. Returns true if all the entities have been processed (including when there are zero entities), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature:
function Callback({{cEntity|Entity}})
The callback should return false or no value to continue with the next entity, or true to abort the enumeration.",
},
ForEachEntityInBox =
{
Params =
{
{
Name = "Box",
Type = "cBoundingBox",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each entity in the specified bounding box. Returns true if all the entities have been processed (including when there are zero entities), or false if the callback function has aborted the enumeration by returning true. If any chunk within the bounding box is not valid, it is silently skipped without any notification. The callback function has the following signature:
function Callback({{cEntity|Entity}})
The callback should return false or no value to continue with the next entity, or true to abort the enumeration.",
},
ForEachEntityInChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each entity in the specified chunk. Returns true if all the entities have been processed (including when there are zero entities), or false if the chunk is not loaded or the callback function has aborted the enumeration by returning true. The callback function has the following signature:
function Callback({{cEntity|Entity}})
The callback should return false or no value to continue with the next entity, or true to abort the enumeration.",
},
ForEachFurnaceInChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each furnace in the chunk. Returns true if all furnaces in the chunk have been processed (including when there are zero furnaces), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature:
function Callback({{cFurnaceEntity|FurnaceEntity}})
The callback should return false or no value to continue with the next furnace, or true to abort the enumeration.",
},
ForEachLoadedChunk =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each loaded chunk in the world. Returns true if all chunks have been processed, or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature:
function Callback(ChunkX, ChunkZ)
The callback should return false or no value to continue with the next chunk, or true to abort the enumeration.",
},
ForEachPlayer =
{
Params =
{
{
Name = "CallbackFunction",
Type = "function",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Calls the specified callback for each player in the loaded world. Returns true if all the players have been processed (including when there are zero players), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature:
function Callback({{cPlayer|Player}})
The callback should return false or no value to continue with the next player, or true to abort the enumeration.",
},
GenerateChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
},
Notes = "Queues the specified chunk in the chunk generator. Ignored if the chunk is already generated (use RegenerateChunk() to force chunk re-generation).",
},
GetBiomeAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "eBiome",
Type = "EMCSBiome",
},
},
Notes = "Returns the biome at the specified coords. Reads the biome from the chunk, if it is loaded, otherwise it uses the chunk generator to provide the biome value.",
},
GetBlock =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the block type of the block at the specified coords, or 0 if the appropriate chunk is not loaded. OBSOLETE, use the vector-based overload instead.",
},
{
Params =
{
{
Name = "BlockCoords",
Type = "Vector3i",
},
},
Returns =
{
{
Name = "BLOCKTYPE",
Type = "number",
},
},
Notes = "Returns the block type of the block at the specified coords, or 0 if the appropriate chunk is not loaded.",
},
},
GetBlockBlockLight =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of block light at the specified coords, or 0 if the appropriate chunk is not loaded. OBSOLETE, use the vector-based overload instead.",
},
{
Params =
{
{
Name = "Pos",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the amount of block light at the specified coords, or 0 if the appropriate chunk is not loaded.",
},
},
GetBlockInfo =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "IsBlockValid",
Type = "boolean",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
{
Name = "BlockSkyLight",
Type = "number",
},
{
Name = "BlockBlockLight",
Type = "number",
},
},
Notes = "Returns the complete block info for the block at the specified coords. The first value specifies if the block is in a valid loaded chunk, the other values are valid only if BlockValid is true.",
},
GetBlockMeta =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block metadata of the block at the specified coords, or 0 if the appropriate chunk is not loaded. OBSOLETE, use the vector-based overload instead.",
},
{
Params =
{
{
Name = "BlockCoords",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block metadata of the block at the specified coords, or 0 if the appropriate chunk is not loaded.",
},
},
GetBlockSkyLight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the block skylight of the block at the specified coords, or 0 if the appropriate chunk is not loaded.",
},
GetBlockTypeMeta =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "IsBlockValid",
Type = "boolean",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Returns the block type and metadata for the block at the specified coords. The first value specifies if the block is in a valid loaded chunk, the other values are valid only if BlockValid is true.",
},
GetDataPath =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the path to the root of the world data.",
},
GetDefaultWeatherInterval =
{
Params =
{
{
Name = "Weather",
Type = "eWeather",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the default weather interval for the specific weather type. Returns -1 for any unknown weather.",
},
GetDimension =
{
Returns =
{
{
Type = "eDimension",
},
},
Notes = "Returns the dimension of the world - dimOverworld, dimNether or dimEnd.",
},
GetGameMode =
{
Returns =
{
{
Type = "eGameMode",
},
},
Notes = "Returns the gamemode of the world - gmSurvival, gmCreative or gmAdventure.",
},
GetGeneratorQueueLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of chunks that are queued in the chunk generator.",
},
GetHeight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "DEPRECATED, use TryGetHeight instead. Returns the maximum height of the particular block column in the world. If the chunk is not loaded, this function used to block until the chunk was loaded, leading to possible deadlock. Now it returns 0 instead.",
},
GetIniFileName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the world.ini file that the world uses to store the information.",
},
GetLightingQueueLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of chunks in the lighting thread's queue.",
},
GetLinkedEndWorldName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the end world this world is linked to.",
},
GetLinkedNetherWorldName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the Netherworld linked to this world.",
},
GetLinkedOverworldName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the world this world is linked to.",
},
GetMapManager =
{
Returns =
{
{
Type = "cMapManager",
},
},
Notes = "Returns the {{cMapManager|MapManager}} object used by this world.",
},
GetMaxCactusHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the configured maximum height to which cacti will grow naturally.",
},
GetMaxNetherPortalHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum height for a nether portal",
},
GetMaxNetherPortalWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum width for a nether portal",
},
GetMaxSugarcaneHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the configured maximum height to which sugarcane will grow naturally.",
},
GetMaxViewDistance =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the maximum viewdistance that players can see in this world. The view distance is the amount of chunks around the player that the player can see.",
},
GetMinNetherPortalHeight =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the minimum height for a nether portal",
},
GetMinNetherPortalWidth =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the minimum width for a nether portal",
},
GetName =
{
Returns =
{
{
Type = "string",
},
},
Notes = "Returns the name of the world, as specified in the settings.ini file.",
},
GetNumChunks =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of chunks currently loaded.",
},
GetNumUnusedDirtyChunks =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of unused dirty chunks. That's the number of chunks that we can save and then unload.",
},
GetScoreBoard =
{
Returns =
{
{
Type = "cScoreboard",
},
},
Notes = "Returns the {{cScoreboard|Scoreboard}} object used by this world. ",
},
GetSeed =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the seed of the world.",
},
GetSignLines =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "IsValid",
Type = "boolean",
},
{
Name = "Line1",
Type = "string",
IsOptional = true,
},
{
Name = "Line2",
Type = "string",
IsOptional = true,
},
{
Name = "Line3",
Type = "string",
IsOptional = true,
},
{
Name = "Line4",
Type = "string",
IsOptional = true,
},
},
Notes = "Returns true and the lines of a sign at the specified coords, or false if there is no sign at the coords.",
},
GetSpawnX =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the X coord of the default spawn",
},
GetSpawnY =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Y coord of the default spawn",
},
GetSpawnZ =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the Z coord of the default spawn",
},
GetSpawnPos =
{
Returns =
{
{
Type = "Vector3d"
},
},
Notes = "Returns the default spawn position",
},
GetStorageLoadQueueLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of chunks queued up for loading",
},
GetStorageSaveQueueLength =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of chunks queued up for saving",
},
GetTicksUntilWeatherChange =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks that will pass before the weather is changed",
},
GetTimeOfDay =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the number of ticks that have passed from the sunrise, 0 .. 24000.",
},
GetTNTShrapnelLevel =
{
Returns =
{
{
Name = "ShrapnelLevel",
Type = "eShrapnelLevel",
},
},
Notes = "Returns the shrapnel level, representing the block types that are propelled outwards following an explosion. Based on this value and a random picker, blocks are selectively converted to physics entities (FallingSand) and flung outwards.",
},
GetWeather =
{
Returns =
{
{
Type = "eWeather",
},
},
Notes = "Returns the current weather in the world (wSunny, wRain, wStorm). To check for weather, use IsWeatherXXX() functions instead.",
},
GetWorldAge =
{
Returns =
{
{
Type = "number",
},
},
Notes = "Returns the total age of the world, in ticks. The age always grows, cannot be set by plugins and is unrelated to TimeOfDay.",
},
GrowPlantAt =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "NumStages",
Type = "number",
},
},
Returns =
{
{
Type = "number",
},
},
Notes = "Grows the plant at the specified block by the specified number of stages. Returns the number of stages actually grown. Returns zero for non-growable blocks.",
},
GrowRipePlant =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Grows the plant at the specified coords to maturity. Returns true if the plant was grown, false if not.",
},
GrowTree =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Grows a tree based at the specified coords. If there is a sapling there, grows the tree based on that sapling, otherwise chooses a tree image based on the biome. Returns true if the tree was grown, false if not (invalid chunk, insufficient space)",
},
GrowTreeByBiome =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Grows a tree based at the specified coords. The tree type is picked from types available for the biome at those coords. Returns true if the tree was grown, false if not (invalid chunk, insufficient space)",
},
GrowTreeFromSapling =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Grows a tree based at the specified coords. The tree type is determined from the sapling meta. If the sapling is part of a 2x2 sapling area, grows a large tree. Returns true if the tree was grown, false if not (invalid chunk, insufficient space)",
},
IsBlockDirectlyWatered =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified block has a water block right next to it (on the X/Z axes)",
},
IsDaylightCycleEnabled =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the daylight cycle is enabled.",
},
IsDeepSnowEnabled =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether the configuration has DeepSnow enabled.",
},
IsFarmlandTramplingEnabled =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if farmland trampling is enabled.",
},
IsGameModeAdventure =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current gamemode is gmAdventure.",
},
IsGameModeCreative =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current gamemode is gmCreative.",
},
IsGameModeSpectator =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current gamemode is gmSpectator.",
},
IsGameModeSurvival =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current gamemode is gmSurvival.",
},
IsPVPEnabled =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether PVP is enabled in the world settings.",
},
IsSavingEnabled =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether or not saving chunk data is enabled. If disabled, the world will keep dirty chunks in memory forever, and will simply regenerate non-dirty chunks that are unloaded.",
},
IsSlimeChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether slimes can spawn in the chunk.",
},
IsTrapdoorOpen =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns false if there is no trapdoor there or if the block isn't a trapdoor or if the chunk wasn't loaded. Returns true if trapdoor is open.",
},
IsWeatherRain =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current weather is rainy.",
},
IsWeatherRainAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if it is rainy at the specified location. This takes into account biomes.",
},
IsWeatherStorm =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current weather is stormy.",
},
IsWeatherStormAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if it is stormy at the specified location. This takes into account biomes.",
},
IsWeatherSunny =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the current weather is sunny.",
},
IsWeatherSunnyAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if it is sunny at the specified location. This takes into account biomes.",
},
IsWeatherWet =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the world currently has any precipitation - rain, storm or snow.",
},
IsWeatherWetAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if it is raining or storming at the specified location. This takes into account biomes.",
},
IsWeatherWetAtXYZ =
{
Params =
{
{
Name = "Pos",
Type = "Vector3i",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the specified location has wet weather (rain or storm), using the same logic as IsWeatherWetAt, except that any rain-blocking blocks above the specified position will block the precipitation and this function will return false. Note if the chunk is unloaded then the weather state for the world will be returned.",
},
PickupsFromBlock =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "Digger",
Type = "cEntity",
IsOptional = true,
},
{
Name = "Tool",
Type = "cItem",
IsOptional = true,
},
},
Returns =
{
{
Name = "Items",
Type = "cItems",
},
},
Notes = "Returns all the pickups that would result if the Digger dug up the block at BlockPos using Tool. Digger is usually a {{cPlayer}}, but can be nil for natural causes. Tool is usually the equipped {{cItem|item}}, can be nil for empty hand. Returns an empty {{cItems}} object if the chunk is not present."
},
PrepareChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "Callback",
Type = "function",
IsOptional = true,
},
},
Notes = "Queues the chunk for preparing - making sure that it's generated and lit. It is legal to call with no callback. The callback function has the following signature:
function Callback(ChunkX, ChunkZ)
",
},
QueueBlockForTick =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "TicksToWait",
Type = "number",
},
},
Notes = "Queues the specified block to be ticked after the specified number of gameticks.",
},
QueueSaveAllChunks =
{
Notes = "Queues all chunks to be saved in the world storage thread",
},
QueueTask =
{
Params =
{
{
Name = "TaskFunction",
Type = "function",
},
},
Notes = [[
Queues the specified function to be executed in the tick thread. This is the primary means
of interaction with a cWorld from the WebAdmin page handlers (see {{WebWorldThreads}}). The function
signature is
function({{cWorld|World}})
All return values
from the function are ignored. Note that this function is actually called *after* the QueueTask()
function returns. Note that it is unsafe to store references to Cuberite objects, such as entities,
across from the caller to the task handler function; store the EntityID instead.
]],
},
QueueUnloadUnusedChunks =
{
Notes = "Queues a cTask that unloads chunks that are no longer needed and are saved.",
},
RegenerateChunk =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
},
Notes = "Queues the specified chunk to be re-generated, overwriting the current data. To queue a chunk for generating only if it doesn't exist, use the GenerateChunk() instead.",
},
ScheduleTask =
{
Params =
{
{
Name = "DelayTicks",
Type = "number",
},
{
Name = "TaskFunction",
Type = "function",
},
},
Notes = "Queues the specified function to be executed in the world's tick thread after a the specified number of ticks. This enables operations to be queued for execution in the future. The function signature is
function({{cWorld|World}})
All return values from the function are ignored. Note that it is unsafe to store references to Cuberite objects, such as entities, across from the caller to the task handler function; store the EntityID instead.",
},
SendBlockTo =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Player",
Type = "cPlayer",
},
},
Notes = "Sends the block at the specified coords to the specified player's client, as an UpdateBlock packet.",
},
SetAreaBiome =
{
{
Params =
{
{
Name = "MinX",
Type = "number",
},
{
Name = "MaxX",
Type = "number",
},
{
Name = "MinZ",
Type = "number",
},
{
Name = "MaxZ",
Type = "number",
},
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the biome in the rectangular area specified. Returns true if successful, false if any of the chunks were unloaded.",
},
{
Params =
{
{
Name = "Cuboid",
Type = "cCuboid",
},
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the biome in the cuboid specified. Returns true if successful, false if any of the chunks were unloaded. The cuboid needn't be sorted.",
},
},
SetBiomeAt =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Biome",
Type = "EMCSBiome",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the biome at the specified block coords. Returns true if successful, false otherwise.",
},
SetBlock =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the block at the specified coords, replaces the block entities for the previous block type, creates a new block entity for the new block, if appropriate, and wakes up the simulators. This is the preferred way to set blocks, as opposed to FastSetBlock(), which is only to be used under special circumstances.",
},
SetBlockMeta =
{
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the meta for the block at the specified coords. Any call to SetBlockMeta will not generate a simulator update (water, lava, redstone), consider using SetBlock instead.",
},
{
Params =
{
{
Name = "BlockCoords",
Type = "Vector3i",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Notes = "Sets the meta for the block at the specified coords. Any call to SetBlockMeta will not generate a simulator update (water, lava, redstone), consider using SetBlock instead.",
},
},
SetChunkAlwaysTicked =
{
Params =
{
{
Name = "ChunkX",
Type = "number",
},
{
Name = "ChunkZ",
Type = "number",
},
{
Name = "IsAlwaysTicked",
Type = "boolean",
},
},
Notes = "Sets the chunk to always be ticked and loaded even when it doesn't contain any clients. IsAlwaysTicked set to true turns forced ticking on, set to false turns it off. Every call with 'true' should be paired with a later call with 'false', otherwise the ticking won't stop. Multiple actions can request ticking independently, the ticking will continue until the last call with 'false'."
},
SetCommandBlockCommand =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Command",
Type = "string",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the command to be executed in a command block at the specified coordinates. Returns if command was changed.",
},
SetCommandBlocksEnabled =
{
Params =
{
{
Name = "AreEnabled",
Type = "boolean",
},
},
Notes = "Sets whether command blocks should be enabled on the (entire) server.",
},
SetDaylightCycleEnabled =
{
Params =
{
{
Name = "IsEnabled",
Type = "boolean",
},
},
Notes = "Starts or stops the daylight cycle.",
},
SetLinkedEndWorldName =
{
Params =
{
{
Name = "WorldName",
Type = "string",
},
},
Notes = "Sets the name of the world that the end portal should link to.",
},
SetLinkedNetherWorldName =
{
Params =
{
{
Name = "WorldName",
Type = "string",
},
},
Notes = "Sets the name of the world that the nether portal should link to.",
},
SetLinkedOverworldName =
{
Params =
{
{
Name = "WorldName",
Type = "string",
},
},
Notes = "Sets the name of the world that the nether portal should link to?",
},
SetMaxNetherPortalHeight =
{
Params =
{
{
Name = "Height",
Type = "number",
},
},
Notes = "Sets the maximum height for a nether portal",
},
SetMaxNetherPortalWidth =
{
Params =
{
{
Name = "Width",
Type = "number",
},
},
Notes = "Sets the maximum width for a nether portal",
},
SetMaxViewDistance =
{
Params =
{
{
Name = "MaxViewDistance",
Type = "number",
},
},
Notes = "Sets the maximum viewdistance of the players in the world. This maximum takes precedence over each player's ViewDistance setting.",
},
SetMinNetherPortalHeight =
{
Params =
{
{
Name = "Height",
Type = "number",
},
},
Notes = "Sets the minimum height for a nether portal",
},
SetMinNetherPortalWidth =
{
Params =
{
{
Name = "Width",
Type = "number",
},
},
Notes = "Sets the minimum width for a nether portal",
},
SetNextBlockTick =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Notes = "DEPRECATED, use SetNextBlockToTick() instead.",
},
SetNextBlockToTick =
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
},
Notes = "Requests that the specified block be ticked at the start of the next world tick. Only one block per chunk can be queued this way; a second call to the same chunk overwrites the previous call.",
},
SetSavingEnabled =
{
Params =
{
{
Name = "SavingEnabled",
Type = "boolean",
},
},
Notes = "Sets whether saving chunk data is enabled. If disabled, dirty chunks will stay in memory forever, which may cause performance and stability issues.",
},
SetShouldUseChatPrefixes =
{
Params =
{
{
Name = "ShouldUseChatPrefixes",
Type = "boolean",
},
},
Notes = "Sets whether coloured chat prefixes such as [INFO] is used with the SendMessageXXX() or BroadcastChatXXX(), or simply the entire message is coloured in the respective colour.",
},
SetSignLines =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Line1",
Type = "string",
},
{
Name = "Line2",
Type = "string",
},
{
Name = "Line3",
Type = "string",
},
{
Name = "Line4",
Type = "string",
},
{
Name = "Player",
Type = "cPlayer",
IsOptional = true,
},
},
Notes = "Sets the sign text at the specified coords. The sign-updating hooks are called for the change. The Player parameter is used to indicate the player from whom the change has come, it may be nil.",
},
SetSpawn =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Sets the default spawn at the specified coords. Returns false if the new spawn couldn't be stored in the INI file.",
},
SetTicksUntilWeatherChange =
{
Params =
{
{
Name = "NumTicks",
Type = "number",
},
},
Notes = "Sets the number of ticks after which the weather will be changed.",
},
SetTimeOfDay =
{
Params =
{
{
Name = "TimeOfDayTicks",
Type = "number",
},
},
Notes = "Sets the time of day, expressed as number of ticks past sunrise, in the range 0 .. 24000.",
},
SetTNTShrapnelLevel =
{
Params =
{
{
Name = "ShrapnelLevel",
Type = "eShrapnelLevel",
},
},
Notes = "Sets the Shrapnel level of the world.",
},
SetTrapdoorOpen =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "IsOpen",
Type = "boolean",
},
},
Returns =
{
{
Type = "boolean",
},
},
Notes = "Opens or closes a trapdoor at the specific coordinates. Returns true on success, false if there is no trapdoor or it's already in the requested state.",
},
SetWeather =
{
Params =
{
{
Name = "Weather",
Type = "eWeather",
},
},
Notes = "Sets the current weather (wSunny, wRain, wStorm) and resets the TicksUntilWeatherChange to the default value for the new weather. The normal weather-changing hooks are called for the change.",
},
ShouldBroadcastAchievementMessages =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the server should broadcast achievement messages in this world.",
},
ShouldBroadcastDeathMessages =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the server should broadcast death messages in this world.",
},
ShouldLavaSpawnFire =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns true if the world is configured to spawn fires near lava (world.ini: [Physics].ShouldLavaSpawnFire value)",
},
ShouldUseChatPrefixes =
{
Returns =
{
{
Type = "boolean",
},
},
Notes = "Returns whether coloured chat prefixes are prepended to chat messages or the entire message is simply coloured.",
},
SpawnBoat =
{
{
Params =
{
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a {{cBoat|boat}} at the specific coordinates. Returns the EntityID of the new boat, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no boat was created.",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "Material",
Type = "cBoat#eMaterial",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a {{cBoat|boat}} at the specific coordinates. Returns the EntityID of the new boat, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no boat was created. (DEPRECATED, use vector-parametered version)",
},
},
SpawnEnderCrystal =
{
Params =
{
{
Name = "Pos",
Type = "Vector3d",
},
{
Name = "ShowBottom",
Type = "boolean",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns an {{cEnderCrystal|ender crystal}} at the specified coords. Returns the EntityID of the new ender crystal, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no ender crystal was created.",
},
SpawnExperienceOrb =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "Reward",
Type = "number",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns an {{cExpOrb|experience orb}} at the specified coords, with the given reward. Returns the EntityID of the new experience orb, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no experience orb was created.",
},
SpawnFallingBlock =
{
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "OBSOLETE, use the Vector3-based overloads instead. Spawns a {{cFallingBlock|Falling Block}} entity at the specified coords with the given block type/meta. Returns the EntityID of the new falling block, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no falling block was created.",
},
{
Params =
{
{
Name = "BlockPos",
Type = "Vector3i",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a {{cFallingBlock|Falling Block}} entity in the middle of the specified block, with the given block type/meta. Returns the EntityID of the new falling block, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no falling block was created.",
},
{
Params =
{
{
Name = "Pos",
Type = "Vector3d",
},
{
Name = "BlockType",
Type = "number",
},
{
Name = "BlockMeta",
Type = "number",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a {{cFallingBlock|Falling Block}} entity at exactly the specified coords, with the given block type/meta. Returns the EntityID of the new falling block, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no falling block was created.",
},
},
SpawnItemPickup =
{
Params =
{
{
Name = "PosX",
Type = "number",
},
{
Name = "PosY",
Type = "number",
},
{
Name = "PosZ",
Type = "number",
},
{
Name = "Item",
Type = "cItem",
},
{
Name = "SpeedX",
Type = "number",
IsOptional = true,
Notes = "Speed along X coordinate to spawn with. Default is 0.",
},
{
Name = "SpeedY",
Type = "number",
IsOptional = true,
Notes = "Speed along Y coordinate to spawn with. Default is 0.",
},
{
Name = "SpeedZ",
Type = "number",
IsOptional = true,
Notes = "Speed along Z coordinate to spawn with. Default is 0.",
},
{
Name = "LifetimeTicks",
Type = "number",
IsOptional = true,
Notes = "Length of the pickups lifetime, in ticks. Default 5 minutes (6000 ticks)",
},
{
Name = "CanCombine",
Type = "boolean",
IsOptional = true,
Notes = "Whether this pickup is allowed to combine with other similar pickups.",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
}
},
Notes = "Creates a single pickup entity of the given item at the given position with the given speed, and returns the entities unique ID."
},
SpawnItemPickups =
{
{
Params =
{
{
Name = "Pickups",
Type = "cItems",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "FlyAwaySpeed",
Type = "number",
IsOptional = true,
},
{
Name = "IsPlayerCreated",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Spawns the specified pickups at the position specified. The FlyAwaySpeed is a coefficient (default: 1) used to initialize the random speed in which the pickups fly away from the spawn position. The IsPlayerCreated parameter (default: false) is used to initialize the created {{cPickup}} object's IsPlayerCreated value.",
},
{
Params =
{
{
Name = "Pickups",
Type = "cItems",
},
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "SpeedX",
Type = "number",
},
{
Name = "SpeedY",
Type = "number",
},
{
Name = "SpeedZ",
Type = "number",
},
{
Name = "IsPlayerCreated",
Type = "boolean",
IsOptional = true,
},
},
Notes = "Spawns the specified pickups at the position specified. All the pickups fly away from the spawn position using the specified speed. The IsPlayerCreated parameter (default: false) is used to initialize the created {{cPickup}} object's IsPlayerCreated value.",
},
},
SpawnMinecart =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "MinecartType",
Type = "number",
},
{
Name = "Item",
Type = "cItem",
IsOptional = true,
},
{
Name = "BlockHeight",
Type = "number",
IsOptional = true,
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a minecart at the specific coordinates. MinecartType is the item type of the minecart. If the minecart is an empty minecart then the given Item (default: empty) is the block to be displayed inside the minecart, and BlockHeight (default: 1) is the relative distance of the block from the minecart. Returns the EntityID of the new minecart, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no minecart was created.",
},
SpawnMob =
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "MonsterType",
Type = "eMonsterType",
},
{
Name = "IsBaby",
Type = "boolean",
IsOptional = true,
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns the specified type of mob at the specified coords. If the Baby parameter is true, the mob will be a baby. Returns the EntityID of the created entity, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} on failure.",
},
SpawnPrimedTNT =
{
{
Params =
{
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "FuseTicks",
Type = "number",
},
{
Name = "InitialVelocityCoeff",
Type = "number",
},
{
Name = "ShouldPlayFuseSound",
Type = "boolean",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a {{cTNTEntity|primed TNT entity}} at the specified coords, with the given fuse ticks. The entity gets a random speed multiplied by the InitialVelocityCoeff, 1 being the default value. Returns the EntityID of the new spawned primed tnt, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no primed tnt was created.",
},
{
Params =
{
{
Name = "X",
Type = "number",
},
{
Name = "Y",
Type = "number",
},
{
Name = "Z",
Type = "number",
},
{
Name = "FuseTicks",
Type = "number",
},
{
Name = "InitialVelocityCoeff",
Type = "number",
},
},
Returns =
{
{
Name = "EntityID",
Type = "number",
},
},
Notes = "Spawns a {{cTNTEntity|primed TNT entity}} at the specified coords, with the given fuse ticks. The entity gets a random speed multiplied by the InitialVelocityCoeff, 1 being the default value. Returns the EntityID of the new spawned primed tnt, or {{cEntity#INVALID_ID|cEntity#INVALID_ID}} if no primed tnt was created. (DEPRECATED, use vector-parametered version)",
},
},
SpawnSplitExperienceOrbs =
{
Params =
{
{
Name = "Position",
Type = "Vector3d",
},
{
Name = "Reward",
Type = "number",
},
},
Returns =
{
{
Name = "EntityID",
Type = "table",
},
},
Notes = "Spawns experience orbs of the specified total value at the given location. The orbs' values are split according to regular Minecraft rules. Returns an array-table of UniqueID of all the orbs.",
},
TryGetHeight =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Returns =
{
{
Name = "IsValid",
Type = "boolean",
},
{
Name = "Height",
Type = "number",
},
},
Notes = "Returns true and height of the highest non-air block if the chunk is loaded, or false otherwise.",
},
UpdateSign =
{
Params =
{
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
{
Name = "Line1",
Type = "string",
},
{
Name = "Line2",
Type = "string",
},
{
Name = "Line3",
Type = "string",
},
{
Name = "Line4",
Type = "string",
},
{
Name = "Player",
Type = "cPlayer",
IsOptional = true,
},
},
Notes = "(DEPRECATED) Please use SetSignLines().",
},
UseBlockEntity =
{
Params =
{
{
Name = "Player",
Type = "cPlayer",
},
{
Name = "BlockX",
Type = "number",
},
{
Name = "BlockY",
Type = "number",
},
{
Name = "BlockZ",
Type = "number",
},
},
Notes = "Makes the specified Player use the block entity at the specified coords (open chest UI, etc.) If the cords are in an unloaded chunk or there's no block entity, ignores the call.",
},
VillagersShouldHarvestCrops =
{
Notes = "Returns true if villagers can harvest crops.",
Returns =
{
{
Type = "boolean",
},
},
},
WakeUpSimulators =
{
Params =
{
{
Name = "Block",
Type = "Vector3i",
},
},
Notes = "Wakes up the simulators for the specified block.",
},
WakeUpSimulatorsInArea =
{
Params =
{
{
Name = "Area",
Type = "cCuboid",
},
},
Notes = "Wakes up the simulators for all the blocks in the specified area (edges inclusive).",
},
},
AdditionalInfo =
{
{
Header = "Using callbacks",
Contents = [[
To avoid problems with stale objects, the cWorld class will not let plugins get a direct pointer
to an {{cEntity|entity}}, {{cBlockEntity|block entity}} or a {{cPlayer|player}}. Such an object
could be modified or even destroyed by another thread while the plugin holds it, so it would be
rather unsafe.
Instead, the cWorld provides access to these objects using callbacks. The plugin provides a
function that is called and receives the object as a parameter; cWorld guarantees that while
the callback is executing, the object will stay valid. If a plugin needs to "remember" the
object outside of the callback, it needs to store the entity ID, blockentity coords or player
name.
The following code examples show how to use the callbacks
This code teleports player Player to another player named ToName in the same world:
-- Player is a cPlayer object
-- ToName is a string
-- World is a cWorld object
World:ForEachPlayer(
function (a_OtherPlayer)
if (a_OtherPlayer:GetName() == ToName) then
Player:TeleportToEntity(a_OtherPlayer);
end
);
This code fills each furnace in the chunk with 64 coals:
-- Player is a cPlayer object
-- World is a cWorld object
World:ForEachFurnaceInChunk(Player:GetChunkX(), Player:GetChunkZ(),
function (a_Furnace)
a_Furnace:SetFuelSlot(cItem(E_ITEM_COAL, 64));
end
);
This code teleports all spiders up by 100 blocks:
-- World is a cWorld object
World:ForEachEntity(
function (a_Entity)
if not(a_Entity:IsMob()) then
return;
end
-- Now that we know the entity represents a mob, we can use cMonster functions:
if (a_Entity:GetMobType() == mtSpider) then
a_Entity:TeleportToCoords(a_Entity:GetPosX(), a_Entity:GetPosY() + 100, a_Entity:GetPosZ());
end
end
);
]],
},
},
},
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnBlockSpread.lua
================================================
return
{
HOOK_BLOCK_SPREAD =
{
CalledWhen = "Called when a block spreads based on world conditions",
DefaultFnName = "OnBlockSpread", -- also used as pagename
Desc = [[
This hook is called when a block spreads.
The spread carries with it the type of its source - whether it's a block spreads.
It also carries the identification of the actual source. The exact type of the identification
depends on the source kind:
Source
Notes
ssFireSpread
Fire spreading
ssGrassSpread
Grass spreading
ssMushroomSpread
Mushroom spreading
ssMycelSpread
Mycel spreading
ssVineSpread
Vine spreading
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the block resides" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "Source", Type = "eSpreadSource", Notes = "Source of the spread. See the table above." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called, and finally
Cuberite will process the spread. If the function
returns true, no other callback is called for this event and the spread will not occur.
]],
Examples =
{
{
Title = "Stop fire spreading",
Desc = "Stops fire from spreading, but does not remove any player-placed fire.",
Code = [[
function OnBlockSpread(World, BlockX, Blocky, BlockZ, source)
if (source == ssFireSpread) then
-- Return true to block the fire spreading.
return true
end
-- We don't care about any other events, let them continue.
return false
end
-- Add the callback.
cPluginManager:AddHook(cPluginManager.HOOK_BLOCK_SPREAD, OnBlockSpread);
]],
},
},
}, -- HOOK_BLOCK_SPREAD
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnBlockToPickups.lua
================================================
return
{
HOOK_BLOCK_TO_PICKUPS =
{
CalledWhen = "A block is about to be dug ({{cPlayer|player}}, {{cEntity|entity}} or natural reason), plugins may override what pickups that will produce.",
DefaultFnName = "OnBlockToPickups", -- also used as pagename
Desc = [[
This callback gets called whenever a block is about to be dug. This includes {{cPlayer|players}}
digging blocks, entities causing blocks to disappear ({{cTNTEntity|TNT}}, Endermen) and natural
causes (water washing away a block). Plugins may override the amount and kinds of pickups this
action produces.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the block resides" },
{ Name = "Digger", Type = "{{cEntity}} descendant", Notes = "The entity causing the digging. May be a {{cPlayer}}, {{cTNTEntity}} or even nil (natural causes)" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockType", Type = "BLOCKTYPE", Notes = "Block type of the block" },
{ Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "Block meta of the block" },
{ Name = "Pickups", Type = "{{cItems}}", Notes = "Items that will be spawned as pickups" },
},
Returns = [[
If the function returns false or no value, the next callback in the hook chain will be called. If
the function returns true, no other callbacks in the chain will be called.
Either way, the server will then spawn pickups specified in the Pickups parameter, so to disable
pickups, you need to Clear the object first, then return true.
]],
CodeExamples =
{
{
Title = "Modify pickups",
Desc = "This example callback function makes tall grass drop diamonds when digged by natural causes (washed away by water).",
Code = [[
function OnBlockToPickups(a_World, a_Digger, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta, a_Pickups)
if (a_Digger ~= nil) then
-- Not a natural cause
return false;
end
if (a_BlockType ~= E_BLOCK_TALL_GRASS) then
-- Not a tall grass being washed away
return false;
end
-- Remove all pickups suggested by Cuberite:
a_Pickups:Clear();
-- Drop a diamond:
a_Pickups:Add(cItem(E_ITEM_DIAMOND));
return true;
end;
]],
},
} , -- CodeExamples
}, -- HOOK_BLOCK_TO_PICKUPS
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnBrewingCompleted.lua
================================================
return
{
HOOK_BREWING_COMPLETED =
{
CalledWhen = "A brewing process is completed.",
DefaultFnName = "OnBrewingCompleted", -- also used as pagename
Desc = [[
This hook is called whenever a {{cBrewingstandEntity|brewing stand}} has completed the brewing process.
See also the {{OnBrewingCompleting|HOOK_BREWING_COMPLETING}} hook for a similar hook, is called when a
brewing process is completing.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World where the brewing stand resides." },
{ Name = "Brewingstand", Type = "{{cBrewingstandEntity}}", Notes = "The brewing stand that completed the brewing process." },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins with this event. If the
function returns true, no other plugin is called for this event.
]],
}, -- HOOK_BREWING_COMPLETED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnBrewingCompleting.lua
================================================
return
{
HOOK_BREWING_COMPLETING =
{
CalledWhen = "A brewing process is completing.",
DefaultFnName = "OnBrewingCompleting", -- also used as pagename
Desc = [[
This hook is called whenever a {{cBrewingstandEntity|brewing stand}} is completing the brewing process. Plugins may
refuse the completing of the brewing process.
See also the {{OnBrewingCompleted|HOOK_BREWING_COMPLETED}} hook for a similar hook, is called after the
brewing process has been completed.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World where the brewing stand resides." },
{ Name = "Brewingstand", Type = "{{cBrewingstandEntity}}", Notes = "The brewing stand that completes the brewing process." },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins with this event. If the function returns true,
no other plugin's callback is called and the brewing process is canceled.
]],
}, -- HOOK_BREWING_COMPLETING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnChat.lua
================================================
return
{
HOOK_CHAT =
{
CalledWhen = "Player sends a chat message",
DefaultFnName = "OnChat", -- also used as pagename
Desc = [[
A plugin may implement an OnChat() function and register it as a Hook to process chat messages from
the players. The function is then called for every in-game message sent from any player. Note that
registered in-game commands are not sent through this hook. Use the
{{OnExecuteCommand|HOOK_EXECUTE_COMMAND}} to intercept registered in-game commands.
]],
Params = {
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who sent the message" },
{ Name = "Message", Type = "string", Notes = "The message" },
},
Returns = [[
The plugin may return 2 values. The first is a boolean specifying whether the hook handling is to be
stopped or not. If it is false, the message is broadcast to all players in the world. If it is true,
no message is broadcast and no further action is taken.
The second value is specifies the message to broadcast. This way, plugins may modify the message. If
the second value is not provided, the original message is used.
]],
}, -- HOOK_CHAT
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnChunkAvailable.lua
================================================
return
{
HOOK_CHUNK_AVAILABLE =
{
CalledWhen = "A chunk has just been added to world, either generated or loaded. ",
DefaultFnName = "OnChunkAvailable", -- also used as pagename
Desc = [[
This hook is called after a chunk is either generated or loaded from the disk. The chunk is
already available for manipulation using the {{cWorld}} API. This is a notification-only callback,
there is no behavior that plugins could override.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world to which the chunk belongs" },
{ Name = "ChunkX", Type = "number", Notes = "X-coord of the chunk" },
{ Name = "ChunkZ", Type = "number", Notes = "Z-coord of the chunk" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event.
]],
}, -- HOOK_CHUNK_AVAILABLE
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnChunkGenerated.lua
================================================
return
{
HOOK_CHUNK_GENERATED =
{
CalledWhen = "After a chunk was generated. Notification only.",
DefaultFnName = "OnChunkGenerated", -- also used as pagename
Desc = [[
This hook is called when world generator finished its work on a chunk. The chunk data has already
been generated and is about to be stored in the {{cWorld|world}}. A plugin may provide some
last-minute finishing touches to the generated data. Note that the chunk is not yet stored in the
world, so regular {{cWorld}} block API will not work! Instead, use the {{cChunkDesc}} object
received as the parameter.
See also the {{OnChunkGenerating|HOOK_CHUNK_GENERATING}} hook.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world to which the chunk will be added" },
{ Name = "ChunkX", Type = "number", Notes = "X-coord of the chunk" },
{ Name = "ChunkZ", Type = "number", Notes = "Z-coord of the chunk" },
{ Name = "ChunkDesc", Type = "{{cChunkDesc}}", Notes = "Generated chunk data. Plugins may still modify the chunk data contained." },
},
Returns = [[
If the plugin returns false or no value, Cuberite will call other plugins' callbacks for this event.
If a plugin returns true, no other callback is called for this event.
In either case, Cuberite will then store the data from ChunkDesc as the chunk's contents in the world.
]],
CodeExamples =
{
{
Title = "Generate emerald ore",
Desc = "This example callback function generates one block of emerald ore in each chunk, under the condition that the randomly chosen location is in an ExtremeHills biome.",
Code = [[
function OnChunkGenerated(a_World, a_ChunkX, a_ChunkZ, a_ChunkDesc)
-- Generate a psaudorandom value that is always the same for the same X/Z pair, but is otherwise random enough:
-- This is actually similar to how Cuberite does its noise functions
local PseudoRandom = (a_ChunkX * 57 + a_ChunkZ) * 57 + 19785486
PseudoRandom = PseudoRandom * 8192 + PseudoRandom;
PseudoRandom = ((PseudoRandom * (PseudoRandom * PseudoRandom * 15731 + 789221) + 1376312589) % 0x7fffffff;
PseudoRandom = PseudoRandom / 7;
-- Based on the PseudoRandom value, choose a location for the ore:
local OreX = PseudoRandom % 16;
local OreY = 2 + ((PseudoRandom / 16) % 20);
local OreZ = (PseudoRandom / 320) % 16;
-- Check if the location is in ExtremeHills:
if (a_ChunkDesc:GetBiome(OreX, OreZ) ~= biExtremeHills) then
return false;
end
-- Only replace allowed blocks with the ore:
local CurrBlock = a_ChunDesc:GetBlockType(OreX, OreY, OreZ);
if (
(CurrBlock == E_BLOCK_STONE) or
(CurrBlock == E_BLOCK_DIRT) or
(CurrBlock == E_BLOCK_GRAVEL)
) then
a_ChunkDesc:SetBlockTypeMeta(OreX, OreY, OreZ, E_BLOCK_EMERALD_ORE, 0);
end
end;
]],
},
} , -- CodeExamples
}, -- HOOK_CHUNK_GENERATED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnChunkGenerating.lua
================================================
return
{
HOOK_CHUNK_GENERATING =
{
CalledWhen = "A chunk is about to be generated. Plugin can override the built-in generator.",
DefaultFnName = "OnChunkGenerating", -- also used as pagename
Desc = [[
This hook is called before the world generator starts generating a chunk. The plugin may provide
some or all parts of the generation, by-passing the built-in generator. The function is given access
to the {{cChunkDesc|ChunkDesc}} object representing the contents of the chunk. It may override parts
of the built-in generator by using the object's SetUseDefaultXXX(false) functions. After all
the callbacks for a chunk have been processed, the server will generate the chunk based on the
{{cChunkDesc|ChunkDesc}} description - those parts that are set for generating (by default
everything) are generated, the rest are read from the ChunkDesc object.
See also the {{OnChunkGenerated|HOOK_CHUNK_GENERATED}} hook.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world to which the chunk will be added" },
{ Name = "ChunkX", Type = "number", Notes = "X-coord of the chunk" },
{ Name = "ChunkZ", Type = "number", Notes = "Z-coord of the chunk" },
{ Name = "ChunkDesc", Type = "{{cChunkDesc}}", Notes = "Generated chunk data." },
},
Returns = [[
If this function returns true, the server will not call any other plugin with the same chunk. If
this function returns false, the server will call the rest of the plugins with the same chunk,
possibly overwriting the ChunkDesc's contents.
]],
}, -- HOOK_CHUNK_GENERATING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnChunkUnloaded.lua
================================================
return
{
HOOK_CHUNK_UNLOADED =
{
CalledWhen = "A chunk has been unloaded from the memory.",
DefaultFnName = "OnChunkUnloaded", -- also used as pagename
Desc = [[
This hook is called when a chunk is unloaded from the memory. Though technically still in memory,
the plugin should behave as if the chunk was already not present. In particular, {{cWorld}} block
API should not be used in the area of the specified chunk.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world from which the chunk is unloading" },
{ Name = "ChunkX", Type = "number", Notes = "X-coord of the chunk" },
{ Name = "ChunkZ", Type = "number", Notes = "Z-coord of the chunk" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event. There is no behavior that plugins could
override.
]],
}, -- HOOK_CHUNK_UNLOADED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnChunkUnloading.lua
================================================
return
{
HOOK_CHUNK_UNLOADING =
{
CalledWhen = " A chunk is about to be unloaded from the memory. Plugins may refuse the unload.",
DefaultFnName = "OnChunkUnloading", -- also used as pagename
Desc = [[
Cuberite calls this function when a chunk is about to be unloaded from the memory. A plugin may
force Cuberite to keep the chunk in memory by returning true.
CAUTION: Preventing the server from unloading chunks can cause the server to use too much RAM, which will adversely affect both performance and stability (i.e. your computer will get slow and crash). Return true sparingly.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world from which the chunk is unloading" },
{ Name = "ChunkX", Type = "number", Notes = "X-coord of the chunk" },
{ Name = "ChunkZ", Type = "number", Notes = "Z-coord of the chunk" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called and finally Cuberite
unloads the chunk. If the function returns true, no other callback is called for this event and the
chunk is left in the memory.
]],
}, -- HOOK_CHUNK_UNLOADING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnCollectingPickup.lua
================================================
return
{
HOOK_COLLECTING_PICKUP =
{
CalledWhen = "Player is about to collect a pickup. Plugin can refuse / override behavior. ",
DefaultFnName = "OnCollectingPickup", -- also used as pagename
Desc = [[
This hook is called when a player is about to collect a pickup. Plugins may refuse the action.
Pickup collection happens within the world tick, so if the collecting is refused, it will be tried
again in the next world tick, as long as the player is within reach of the pickup.
FIXME: There is no OnCollectedPickup() callback.
FIXME: This callback is called even if the pickup doesn't fit into the player's inventory.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who's collecting the pickup" },
{ Name = "Pickup", Type = "{{cPickup}}", Notes = "The pickup being collected" },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins' callbacks and finally the
pickup is collected. If the function returns true, no other plugins are called for this event and
the pickup is not collected.
]],
}, -- HOOK_COLLECTING_PICKUP
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnCraftingNoRecipe.lua
================================================
return
{
HOOK_CRAFTING_NO_RECIPE =
{
CalledWhen = " No built-in crafting recipe is found. Plugin may provide a recipe.",
DefaultFnName = "OnCraftingNoRecipe", -- also used as pagename
Desc = [[
This callback is called when a player places items in their {{cCraftingGrid|crafting grid}} and
Cuberite cannot find a built-in {{cCraftingRecipe|recipe}} for the combination. Plugins may provide
a recipe for the ingredients given.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player whose crafting is reported in this hook" },
{ Name = "Grid", Type = "{{cCraftingGrid}}", Notes = "Contents of the player's crafting grid" },
{ Name = "Recipe", Type = "{{cCraftingRecipe}}", Notes = "The recipe that will be used (can be filled by plugins)" },
},
Returns = [[
If the function returns false or no value, no recipe will be used. If the function returns true, no
other plugin will have their callback called for this event and Cuberite will use the crafting
recipe in Recipe.
FIXME: To allow plugins give suggestions and overwrite other plugins' suggestions, we should change
the behavior with returning false, so that the recipe will still be used, but fill the recipe with
empty values by default.
]],
}, -- HOOK_CRAFTING_NO_RECIPE
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnDisconnect.lua
================================================
return
{
HOOK_DISCONNECT =
{
CalledWhen = [[
A client has disconnected, either by explicitly sending the disconnect packet (in older protocols) or
their connection was terminated
]],
DefaultFnName = "OnDisconnect", -- also used as pagename
Desc = [[
This hook is called when a client has disconnected from the server, for whatever reason. It is also
called when the client sends the Disconnect packet (only in pre-1.7 protocols). This hook is not called
for server ping connections.
Note that the hook is called even for connections to players who failed to auth. In such a case there's
no {{cPlayer}} object associated with the client.
See also the {{OnHandshake|HOOK_HANDSHAKE}} hook which is called when the client connects (and presents
a handshake message, so that they are not just status-pinging). If you need to store a per-player
object, use the {{OnPlayerJoined|HOOK_PLAYER_JOINED}} and {{OnPlayerDestroyed|HOOK_PLAYER_DESTROYED}}
hooks instead, those are guaranteed to have the {{cPlayer}} object associated.
]],
Params =
{
{ Name = "Client", Type = "{{cClientHandle}}", Notes = "The client who has disconnected" },
{ Name = "Reason", Type = "string", Notes = "The reason that the client has sent in the disconnect packet" },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins' callbacks for this event.
If the function returns true, no other plugins are called for this event. In either case,
the client is disconnected.
]],
}, -- HOOK_DISCONNECT
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnDropSpense.lua
================================================
return
{
HOOK_DROPSPENSE =
{
CalledWhen = "A dispenser or dropper is about to dispense/drop an item.",
DefaultFnName = "OnDropSpense", -- also used as pagename
Desc = [[
This callback is called whenever a {{cDropSpenserEntity|dropspenser}} dropspenses an {{cItem|item}}. A plugin may decide to disallow
the move by returning true.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World where the dropspenser resides" },
{ Name = "DropSpenser", Type = "{{cDropSpenserEntity}}", Notes = "The dropspenser that is pulling the item" },
{ Name = "SlotNum", Type = "number", Notes = "The slot of the dropspensed item in the dropspenser's {{cItemGrid|internal storage}}" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event and the dropspenser will not dropspense the item.
]],
}, -- HOOK_DROPSPENSE
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnEntityAddEffect.lua
================================================
return
{
HOOK_ENTITY_ADD_EFFECT =
{
CalledWhen = "An entity effect is about to get added to an entity.",
DefaultFnName = "OnEntityAddEffect", -- also used as pagename
Desc = [[
This hook is called whenever an entity effect is about to be added to an entity. The plugin may
disallow the addition by returning true.
Note that this hook only fires for adding the effect, but not for the actual effect application. See
also the {{OnEntityRemoveEffect|HOOK_ENTITY_REMOVE_EFFECT}} for notification about effects expiring /
removing, and {{OnEntityApplyEffect|HOOK_ENTITY_APPLY_EFFECT}} for the actual effect application to the
entity.
]],
Params =
{
{ Name = "Entity", Type = "{{cEntity}}", Notes = "The entity to which the effect is about to be added" },
{ Name = "EffectType", Type = "number", Notes = "The type of the effect to be added. One of the effXXX constants." },
{ Name = "EffectDuration", Type = "number", Notes = "The duration of the effect to be added, in ticks." },
{ Name = "EffectIntensity", Type = "number", Notes = "The intensity (level) of the effect to be added. " },
{ Name = "DistanceModifier", Type = "number", Notes = "The modifier for the effect intensity, based on distance. Used mainly for splash potions." },
},
Returns = [[
If the plugin returns true, the effect will not be added and none of the remaining hook handlers will
be called. If the plugin returns false, Cuberite calls all the remaining hook handlers and finally
the effect is added to the entity.
]],
}, -- HOOK_EXECUTE_COMMAND
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnEntityChangedWorld.lua
================================================
return
{
HOOK_ENTITY_CHANGED_WORLD =
{
CalledWhen = "After a entity has changed the world.",
DefaultFnName = "OnEntityChangedWorld", -- also used as pagename
Desc = [[
This hook is called after the server has moved the {{cEntity|entity}} to the given world. This is an information-only
callback, the entity is already in the new world.
See also the {{OnEntityChangingWorld|HOOK_ENTITY_CHANGING_WORLD}} hook for a similar hook called before the
entity is moved to the new world.
]],
Params =
{
{ Name = "Entity", Type = "{{cEntity}}", Notes = "The entity that has changed the world" },
{ Name = "World", Type = "{{cWorld}}", Notes = "The world from which the entity has come" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event.
]],
}, -- HOOK_ENTITY_CHANGED_WORLD
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnEntityChangingWorld.lua
================================================
return
{
HOOK_ENTITY_CHANGING_WORLD =
{
CalledWhen = "Before a entity is changing the world.",
DefaultFnName = "OnEntityChangingWorld", -- also used as pagename
Desc = [[
This hook is called before the server moves the {{cEntity|entity}} to the given world. Plugins may
refuse the changing of the entity to the new world.
See also the {{OnEntityChangedWorld|HOOK_ENTITY_CHANGED_WORLD}} hook for a similar hook is called after the
entity has been moved to the world.
]],
Params =
{
{ Name = "Entity", Type = "{{cEntity}}", Notes = "The entity that wants to change the world" },
{ Name = "World", Type = "{{cWorld}}", Notes = "The world to which the entity wants to change" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event and the change of the entity to the world is
cancelled.
]],
}, -- HOOK_ENTITY_CHANGING_WORLD
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnEntityTeleport.lua
================================================
return
{
HOOK_ENTITY_TELEPORT =
{
CalledWhen = "Any entity teleports. Plugin may refuse teleport.",
DefaultFnName = "OnEntityTeleport", -- also used as pagename
Desc = [[
This function is called in each server tick for each {{cEntity|Entity}} that has
teleported. Plugins may refuse the teleport.
]],
Params =
{
{ Name = "Entity", Type = "{{cEntity}}", Notes = "The entity who has teleported. New position is set in the object after successfull teleport" },
{ Name = "OldPosition", Type = "{{Vector3d}}", Notes = "The old position." },
{ Name = "NewPosition", Type = "{{Vector3d}}", Notes = "The new position." },
},
Returns = [[
If the function returns true, teleport is prohibited.
If the function returns false or no value, other plugins' callbacks are called and finally the new
position is permanently stored in the cEntity object.
]],
}, -- HOOK_ENTITY_TELEPORT
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnExecuteCommand.lua
================================================
return
{
HOOK_EXECUTE_COMMAND =
{
CalledWhen = [[
A player executes an in-game command, or the admin issues a console command. Note that built-in
console commands are exempt to this hook - they are always performed and the hook is not called.
]],
DefaultFnName = "OnExecuteCommand", -- also used as pagename
Desc = [[
A plugin may implement a callback for this hook to intercept both in-game commands executed by the
players and console commands executed by the server admin. The function is called for every in-game
command sent from any player and for those server console commands that are not built in in the
server.
If the command is in-game, the first parameter to the hook function is the {{cPlayer|player}} who's
executing the command. If the command comes from the server console, the first parameter is nil.
The server calls this hook even for unregistered (unknown) console commands. It also calls the hook
for unknown in-game commands, as long as they begin with a slash ('/'). If a plugin needs to intercept
in-game chat messages not beginning with a slash, it should use the {{OnChat|HOOK_CHAT}} hook.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "For in-game commands, the player who has sent the message. For console commands, nil" },
{ Name = "CommandSplit", Type = "array-table of strings", Notes = "The command and its parameters, broken into a table by spaces" },
{ Name = "EntireCommand", Type = "string", Notes = "The entire command as a single string" },
},
Returns = [[
If the plugin returns false, Cuberite calls all the remaining hook handlers and finally the command
will be executed. If the plugin returns true, the none of the remaining hook handlers will be called.
In this case the plugin can return a second value, specifying whether what the command result should
be set to, one of the {{cPluginManager#CommandResult|CommandResult}} constants. If not
provided, the value defaults to crBlocked.
]],
}, -- HOOK_EXECUTE_COMMAND
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnExploded.lua
================================================
return
{
HOOK_EXPLODED =
{
CalledWhen = "An explosion has happened",
DefaultFnName = "OnExploded", -- also used as pagename
Desc = [[
This hook is called after an explosion has been processed in a world.
See also {{OnExploding|HOOK_EXPLODING}} for a similar hook called before the explosion.
The explosion carries with it the type of its source - whether it's a creeper exploding, or TNT,
etc. It also carries the identification of the actual source. The exact type of the identification
depends on the source kind, see the {{Globals#ExplosionSource|esXXX}} constants' descriptions for details.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world where the explosion happened" },
{ Name = "ExplosionSize", Type = "number", Notes = "The relative explosion size" },
{ Name = "CanCauseFire", Type = "bool", Notes = "True if the explosion has turned random air blocks to fire (such as a ghast fireball)" },
{ Name = "X", Type = "number", Notes = "X-coord of the explosion center" },
{ Name = "Y", Type = "number", Notes = "Y-coord of the explosion center" },
{ Name = "Z", Type = "number", Notes = "Z-coord of the explosion center" },
{ Name = "Source", Type = "eExplosionSource", Notes = "Source of the explosion. See the table above." },
{ Name = "SourceData", Type = "varies", Notes = "Additional data for the source. The exact type varies by the source. See the {{Globals#ExplosionSource|esXXX}} constants' descriptions." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event. There is no overridable behaviour.
]],
}, -- HOOK_EXPLODED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnExploding.lua
================================================
return
{
HOOK_EXPLODING =
{
CalledWhen = "An explosion is about to be processed",
DefaultFnName = "OnExploding", -- also used as pagename
Desc = [[
This hook is called before an explosion has been processed in a world.
See also {{OnExploded|HOOK_EXPLODED}} for a similar hook called after the explosion.
The explosion carries with it the type of its source - whether it's a creeper exploding, or TNT,
etc. It also carries the identification of the actual source. The exact type of the identification
depends on the source kind, see the {{Globals#ExplosionSource|esXXX}} constants' descriptions for details
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world where the explosion happens" },
{ Name = "ExplosionSize", Type = "number", Notes = "The relative explosion size" },
{ Name = "CanCauseFire", Type = "bool", Notes = "True if the explosion will turn random air blocks to fire (such as a ghast fireball)" },
{ Name = "X", Type = "number", Notes = "X-coord of the explosion center" },
{ Name = "Y", Type = "number", Notes = "Y-coord of the explosion center" },
{ Name = "Z", Type = "number", Notes = "Z-coord of the explosion center" },
{ Name = "Source", Type = "eExplosionSource", Notes = "Source of the explosion. See the table above." },
{ Name = "SourceData", Type = "varies", Notes = "Additional data for the source. The exact type varies by the source. See the {{Globals#ExplosionSource|esXXX}} constants' description." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called, and finally
Cuberite will process the explosion - destroy blocks and push + hurt entities. If the function
returns true, no other callback is called for this event and the explosion will not occur.
The hook handler may return up to two more values after the initial bool. The second returned value
overrides the CanCauseFire parameter for subsequent hook calls and the final explosion, the third
returned value overrides the ExplosionSize parameter for subsequent hook calls and the final explosion.
]],
}, -- HOOK_EXPLODING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnHandshake.lua
================================================
return
{
HOOK_HANDSHAKE =
{
CalledWhen = "A client is connecting.",
DefaultFnName = "OnHandshake", -- also used as pagename
Desc = [[
This hook is called when a client sends the Handshake packet. At this stage, only the client IP and
(unverified) username are known. Plugins may refuse access to the server based on this
information.
Note that the username is not authenticated - the authentication takes place only after this hook is
processed.
]],
Params =
{
{ Name = "Client", Type = "{{cClientHandle}}", Notes = "The client handle representing the connection. Note that there's no {{cPlayer}} object for this client yet." },
{ Name = "UserName", Type = "string", Notes = "The username presented in the packet. Note that this username is unverified." },
},
Returns = [[
If the function returns false, the user is let in to the server. If the function returns true, no
other plugin's callback is called, the user is kicked and the connection is closed.
]],
}, -- HOOK_HANDSHAKE
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnHopperPullingItem.lua
================================================
return
{
HOOK_HOPPER_PULLING_ITEM =
{
CalledWhen = "A hopper is pulling an item from another block entity.",
DefaultFnName = "OnHopperPullingItem", -- also used as pagename
Desc = [[
This callback is called whenever a {{cHopperEntity|hopper}} transfers an {{cItem|item}} from another
block entity into its own internal storage. A plugin may decide to disallow the move by returning
true. Note that in such a case, the hook may be called again for the same hopper, with different
slot numbers.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World where the hopper resides" },
{ Name = "Hopper", Type = "{{cHopperEntity}}", Notes = "The hopper that is pulling the item" },
{ Name = "DstSlot", Type = "number", Notes = "The destination slot in the hopper's {{cItemGrid|internal storage}}" },
{ Name = "SrcBlockEntity", Type = "{{cBlockEntityWithItems}}", Notes = "The block entity that is losing the item" },
{ Name = "SrcSlot", Type = "number", Notes = "Slot in SrcBlockEntity from which the item will be pulled" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event and the hopper will not pull the item.
]],
}, -- HOOK_HOPPER_PULLING_ITEM
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnHopperPushingItem.lua
================================================
return
{
HOOK_HOPPER_PUSHING_ITEM =
{
CalledWhen = "A hopper is pushing an item into another block entity. ",
DefaultFnName = "OnHopperPushingItem", -- also used as pagename
Desc = [[
This hook is called whenever a {{cHopperEntity|hopper}} transfers an {{cItem|item}} from its own
internal storage into another block entity. A plugin may decide to disallow the move by returning
true. Note that in such a case, the hook may be called again for the same hopper and block, with
different slot numbers.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World where the hopper resides" },
{ Name = "Hopper", Type = "{{cHopperEntity}}", Notes = "The hopper that is pushing the item" },
{ Name = "SrcSlot", Type = "number", Notes = "Slot in the hopper that will lose the item" },
{ Name = "DstBlockEntity", Type = "{{cBlockEntityWithItems}}", Notes = " The block entity that will receive the item" },
{ Name = "DstSlot", Type = "number", Notes = " Slot in DstBlockEntity's internal storage where the item will be stored" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event and the hopper will not push the item.
]],
}, -- HOOK_HOPPER_PUSHING_ITEM
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnKilled.lua
================================================
return
{
HOOK_KILLED =
{
CalledWhen = "A player or a mob died.",
DefaultFnName = "OnKilled",
Desc = [[
This hook is called whenever player or a mob dies. It can be used to change the death message.
]],
Params =
{
{ Name = "Victim", Type = "{{cEntity}}", Notes = "The player or mob that died" },
{ Name = "TDI", Type = "{{TakeDamageInfo}}", Notes = "Informations about the death" },
{ Name = "DeathMessage", Type = "string", Notes = "The default death message. An empty string if the victim is not a player" },
},
Returns = [[
The function may return two values. The first value is a boolean specifying whether other plugins should be called. If it is true, the other plugins won't get notified of the death. If it is false, the other plugins will get notified.
The second value is a string containing the death message. If the victim is a player, this death message is broadcasted instead of the default death message. If it is empty, no death message is broadcasted. If it is nil, the message is left unchanged. If the victim is not a player, the death message is never broadcasted.
In either case, the victim is dead.
]],
}, -- HOOK_KILLED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnKilling.lua
================================================
return
{
HOOK_KILLING =
{
CalledWhen = "A player or a mob is dying.",
DefaultFnName = "OnKilling", -- also used as pagename
Desc = [[
This hook is called whenever a {{cPawn|pawn}}'s (a player's or a mob's) health reaches zero. This
means that the pawn is about to be killed, unless a plugin "revives" them by setting their health
back to a positive value.
]],
Params =
{
{ Name = "Victim", Type = "{{cPawn}}", Notes = "The player or mob that is about to be killed" },
{ Name = "Killer", Type = "{{cEntity}}", Notes = "The entity that has caused the victim to lose the last point of health. May be nil for environment damage" },
{ Name = "TDI", Type = "{{TakeDamageInfo}}", Notes = "The damage type, cause and effects." },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins with this event. If the
function returns true, no other plugin is called for this event.
In either case, the victim's health is then re-checked and if it is greater than zero, the victim is
"revived" with that health amount. If the health is less or equal to zero, the victim is killed.
]],
}, -- HOOK_KILLING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnLogin.lua
================================================
return
{
HOOK_LOGIN =
{
CalledWhen = "Right before player authentication. If auth is disabled, right after the player sends their name.",
DefaultFnName = "OnLogin", -- also used as pagename
Desc = [[
This hook is called whenever a client logs in. It is called right before the client's name is sent
to be authenticated. Plugins may refuse the client from accessing the server. Note that when this
callback is called, the {{cPlayer}} object for this client doesn't exist yet - the client has no
representation in any world. To process new players when their world is known, use a later callback,
such as {{OnPlayerJoined|HOOK_PLAYER_JOINED}} or {{OnPlayerSpawned|HOOK_PLAYER_SPAWNED}}.
]],
Params =
{
{ Name = "Client", Type = "{{cClientHandle}}", Notes = "The client handle representing the connection" },
{ Name = "ProtocolVersion", Type = "number", Notes = "Versio of the protocol that the client is talking" },
{ Name = "UserName", Type = "string", Notes = "The name that the client has presented for authentication. This name will be given to the {{cPlayer}} object when it is created for this client." },
},
Returns = [[
If the function returns true, no other plugins are called for this event and the client is kicked.
If the function returns false or no value, Cuberite calls other plugins' callbacks and finally
sends an authentication request for the client's username to the auth server. If the auth server
is disabled in the server settings, the player object is immediately created.
]],
}, -- HOOK_LOGIN
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerAnimation.lua
================================================
return
{
HOOK_PLAYER_ANIMATION =
{
CalledWhen = "A client has sent an Animation packet",
DefaultFnName = "OnPlayerAnimation", -- also used as pagename
Desc = [[
This hook is called when the server receives an Animation packet from the client.
For the list of animations that are sent by the client, see the
Protocol wiki.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player from whom the packet was received" },
{ Name = "Animation", Type = "number", Notes = "The kind of animation" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. Afterwards, the
server broadcasts the animation packet to all nearby clients. If the function returns true, no other
callback is called for this event and the packet is not broadcasted.
]],
}, -- HOOK_PLAYER_ANIMATION
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerBreakingBlock.lua
================================================
return
{
HOOK_PLAYER_BREAKING_BLOCK =
{
CalledWhen = "Just before a player breaks a block. Plugin may override / refuse. ",
DefaultFnName = "OnPlayerBreakingBlock", -- also used as pagename
Desc = [[
This hook is called when a {{cPlayer|player}} breaks a block, before the block is actually broken in
the {{cWorld|World}}. Plugins may refuse the breaking.
See also the {{OnPlayerBrokenBlock|HOOK_PLAYER_BROKEN_BLOCK}} hook for a similar hook called after
the block is broken.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is digging the block" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of the block upon which the player is acting. One of the BLOCK_FACE_ constants" },
{ Name = "BlockType", Type = "BLOCKTYPE", Notes = "The block type of the block being broken" },
{ Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "The block meta of the block being broken " },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called, and then the block
is broken. If the function returns true, no other plugin's callback is called and the block breaking
is cancelled. The server re-sends the block back to the player to replace it (the player's client
already thinks the block was broken).
]],
}, -- HOOK_PLAYER_BREAKING_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerBrokenBlock.lua
================================================
return
{
HOOK_PLAYER_BROKEN_BLOCK =
{
CalledWhen = "After a player has broken a block. Notification only.",
DefaultFnName = "OnPlayerBrokenBlock", -- also used as pagename
Desc = [[
This function is called after a {{cPlayer|player}} breaks a block. The block is already removed
from the {{cWorld|world}} and {{cPickup|pickups}} have been spawned. To get the world in which the
block has been dug, use the {{cPlayer}}:GetWorld() function.
See also the {{OnPlayerBreakingBlock|HOOK_PLAYER_BREAKING_BLOCK}} hook for a similar hook called
before the block is broken. To intercept the creation of pickups, see the
{{OnBlockToPickups|HOOK_BLOCK_TO_PICKUPS}} hook.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who broke the block" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of the block upon which the player interacted. One of the BLOCK_FACE_ constants" },
{ Name = "BlockType", Type = "BLOCKTYPE", Notes = "The block type of the block" },
{ Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "The block meta of the block" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event.
]],
}, -- HOOK_PLAYER_BROKEN_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerCrouched.lua
================================================
return
{
HOOK_PLAYER_CROUCHED =
{
CalledWhen = "Player crouched in the tick being currently processed.",
DefaultFnName = "OnPlayerCrouched", -- also used as pagename
Desc = [[
This function is called in each server tick for each {{cPlayer|player}} that has crouched.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has crouched." },
},
Returns = [[
If the function returns false or no value, other plugins callbacks are called.
]],
}, -- HOOK_PLAYER_CROUCHED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerDestroyed.lua
================================================
return
{
HOOK_PLAYER_DESTROYED =
{
CalledWhen = "A player object is about to be destroyed.",
DefaultFnName = "OnPlayerDestroyed", -- also used as pagename
Desc = [[
This function is called before a {{cPlayer|player}} is about to be destroyed.
The player has disconnected for whatever reason and is no longer in the server.
If a plugin returns true, a leave message is not broadcast, and vice versa.
However, whatever the return value, the player object is removed from memory.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The destroyed player" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and a leave message is broadcast.
If the function returns true, no other callbacks are called for this event and no leave message appears. Either way the player is removed internally.
]],
}, -- HOOK_PLAYER_DESTROYED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerEating.lua
================================================
return
{
HOOK_PLAYER_EATING =
{
CalledWhen = "When the player starts eating",
DefaultFnName = "OnPlayerEating", -- also used as pagename
Desc = [[
This hook gets called when the {{cPlayer|player}} starts eating, after the server checks that the
player can indeed eat (is not satiated and is holding food). Plugins may still refuse the eating by
returning true.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who started eating" },
},
Returns = [[
If the function returns false or no value, the server calls the next plugin handler, and finally
lets the player eat. If the function returns true, the server doesn't call any more callbacks for
this event and aborts the eating. A "disallow" packet is sent to the client.
]],
}, -- HOOK_PLAYER_EATING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerFished.lua
================================================
return
{
HOOK_PLAYER_FISHED =
{
CalledWhen = "A player gets a reward from fishing.",
DefaultFnName = "OnPlayerFished", -- also used as pagename
Desc = [[
This hook gets called after a player reels in the fishing rod. This is a notification-only hook, the reward has already been decided. If a plugin needs to modify the reward, use the {{OnPlayerFishing|HOOK_PLAYER_FISHING}} hook.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who pulled the fish in." },
{ Name = "Reward", Type = "{{cItems}}", Notes = "The reward the player gets. It can be a fish, treasure and junk." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function returns true, no other
callback is called for this event.
]],
}, -- HOOK_PLAYER_FISHED
};
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerFishing.lua
================================================
return
{
HOOK_PLAYER_FISHING =
{
CalledWhen = "A player is about to get a reward from fishing.",
DefaultFnName = "OnPlayerFishing", -- also used as pagename
Desc = [[
This hook gets called when a player right clicks with a fishing rod while the floater is under water. The reward is already descided, but the plugin may change it.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who pulled the fish in." },
{ Name = "Reward", Type = "{{cItems}}", Notes = "The reward the player gets. It can be a fish, treasure and junk." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. Afterwards, the
server gives the player his reward. If the function returns true, no other
callback is called for this event and the player doesn't get his reward.
]],
}, -- HOOK_PLAYER_FISHING
};
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerFoodLevelChange.lua
================================================
return
{
HOOK_PLAYER_FOOD_LEVEL_CHANGE =
{
CalledWhen = "Called before the player food level changed. Plugin may override",
DefaultFnName = "OnPlayerFoodLevelChange", -- also used as pagename
Desc = [[
This hook is called before the food level changes.
The food level is not changed yet, plugins may choose
to refuse the change.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who changes the food level." },
{ Name = "NewFoodLevel", Type = "number", Notes = "The new food level." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. Afterwards, the
server changes the food level of the player. If the function returns true, no
other callback is called for this event and the player's food level doesn't change.
]],
}, -- HOOK_PLAYER_FOOD_LEVEL_CHANGE
};
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerJoined.lua
================================================
return
{
HOOK_PLAYER_JOINED =
{
CalledWhen = "After Login and before Spawned, before being added to world. ",
DefaultFnName = "OnPlayerJoined", -- also used as pagename
Desc = [[
This hook is called whenever a {{cPlayer|player}} has completely logged in. If authentication is
enabled, this function is called after their name has been authenticated. It is called after
{{OnLogin|HOOK_LOGIN}} and before {{OnPlayerSpawned|HOOK_PLAYER_SPAWNED}}, right after the player's
entity is created, but not added to the world yet. The player is not yet visible to other players.
Returning true will block a join message from being broadcast, but otherwise, the player is still allowed to join.
Plugins wishing to refuse player's entry should kick the player using the {{cPlayer}}:Kick() function.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has joined the game" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and a join message is broadcast. If the function
returns true, no other callbacks are called for this event and a join message is not sent. Either way the player is let in.
]],
}, -- HOOK_PLAYER_JOINED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerLeftClick.lua
================================================
return
{
HOOK_PLAYER_LEFT_CLICK =
{
CalledWhen = "A left-click packet is received from the client. Plugin may override / refuse.",
DefaultFnName = "OnPlayerLeftClick", -- also used as pagename
Desc = [[
This hook is called when Cuberite receives a left-click packet from the {{cClientHandle|client}}. It
is called before any processing whatsoever is performed on the packet, meaning that hacked /
malicious clients may be trigerring this event very often and with unchecked parameters. Therefore
plugin authors are advised to use extreme caution with this callback.
Plugins may refuse the default processing for the packet, causing Cuberite to behave as if the
packet has never arrived. This may, however, create inconsistencies in the client - the client may
think that they broke a block, while the server didn't process the breaking, etc. For this reason,
if a plugin refuses the processing, Cuberite sends the block specified in the packet back to the
client (as if placed anew), if the status code specified a block-break action. For other actions,
plugins must rectify the situation on their own.
The client sends the left-click packet for several other occasions, such as dropping the held item
(Q keypress) or shooting an arrow. This is reflected in the Status code. Consult the
protocol documentation for details on the actions.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player whose client sent the packet" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of the block upon which the player interacted. One of the BLOCK_FACE_ constants" },
{ Name = "Action", Type = "number", Notes = "Action to be performed on the block (\"status\" in the protocol docs)" },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins' callbacks and finally sends
the packet for further processing.
If the function returns true, no other plugins are called, processing is halted. If the action was a
block dig, Cuberite sends the block specified in the coords back to the client. The packet is
dropped.
]],
}, -- HOOK_PLAYER_LEFT_CLICK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerMoving.lua
================================================
return
{
HOOK_PLAYER_MOVING =
{
CalledWhen = "Player tried to move in the tick being currently processed. Plugin may refuse movement.",
DefaultFnName = "OnPlayerMoving", -- also used as pagename
Desc = [[
This function is called in each server tick for each {{cPlayer|player}} that has sent any of the
player-move packets. Plugins may refuse the movement.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has moved. The object already has the new position stored in it." },
{ Name = "OldPosition", Type = "{{Vector3d}}", Notes = "The old position." },
{ Name = "NewPosition", Type = "{{Vector3d}}", Notes = "The new position." },
{ Name = "PreviousIsOnGround", Type = "{{boolean}}", Notes = "Specifies if the player was standing on a solid block." },
},
Returns = [[
If the function returns true, movement is prohibited.
If the function returns false or no value, other plugins' callbacks are called and finally the new
position is permanently stored in the cPlayer object.
]],
}, -- HOOK_PLAYER_MOVING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerOpeningWindow.lua
================================================
return
{
HOOK_PLAYER_OPENING_WINDOW =
{
CalledWhen = "Called when a player is about to open a window",
DefaultFnName = "OnPlayerOpeningWindow", -- also used as pagename
Desc = [[
This hook is called when a player is about to open a window, e.g. when they click on a chest or a furnace.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is opening the window" },
{ Name = "Window", Type = "{{cWindow}}", Notes = "The window that is being opened" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called, and finally
Cuberite will process the opening window. If the function returns true, no other callback is called for this event.
]],
}, -- HOOK_PLAYER_OPENING_WINDOW
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerPlacedBlock.lua
================================================
return
{
HOOK_PLAYER_PLACED_BLOCK =
{
CalledWhen = "After a player has placed a block. Notification only.",
DefaultFnName = "OnPlayerPlacedBlock", -- also used as pagename
Desc = [[
This hook is called after a {{cPlayer|player}} has placed a block in the {{cWorld|world}}. The block
is already added to the world and the corresponding item removed from player's
{{cInventory|inventory}}.
Use the {{cPlayer}}:GetWorld() function to get the world to which the block belongs.
See also the {{OnPlayerPlacingBlock|HOOK_PLAYER_PLACING_BLOCK}} hook for a similar hook called
before the placement.
If the client action results in multiple blocks being placed (such as a bed or a door), each separate
block is reported through this hook. All the blocks are already present in the world before the first
instance of this hook is called.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who placed the block" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockType", Type = "BLOCKTYPE", Notes = "The block type of the block" },
{ Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "The block meta of the block" },
},
Returns = [[
If this function returns false or no value, Cuberite calls other plugins with the same event. If
this function returns true, no other plugin is called for this event.
]],
}, -- HOOK_PLAYER_PLACED_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerPlacingBlock.lua
================================================
return
{
HOOK_PLAYER_PLACING_BLOCK =
{
CalledWhen = "Just before a player places a block. Plugin may override / refuse.",
DefaultFnName = "OnPlayerPlacingBlock", -- also used as pagename
Desc = [[
This hook is called just before a {{cPlayer|player}} places a block in the {{cWorld|world}}. The
block is not yet placed, plugins may choose to override the default behavior or refuse the placement
at all.
Note that the client already expects that the block has been placed. For that reason, if a plugin
refuses the placement, Cuberite sends the old block at the provided coords to the client.
Use the {{cPlayer}}:GetWorld() function to get the world to which the block belongs.
See also the {{OnPlayerPlacedBlock|HOOK_PLAYER_PLACED_BLOCK}} hook for a similar hook called after
the placement.
If the client action results in multiple blocks being placed (such as a bed or a door), each separate
block is reported through this hook and only if all of them succeed, all the blocks are placed. If
any one of the calls are refused by the plugin, all the blocks are refused and reverted on the client.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is placing the block" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockType", Type = "BLOCKTYPE", Notes = "The block type of the block" },
{ Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "The block meta of the block" },
},
Returns = [[
If this function returns false or no value, Cuberite calls other plugins with the same event and
finally places the block and removes the corresponding item from player's inventory. If this
function returns true, no other plugin is called for this event, Cuberite sends the old block at
the specified coords to the client and drops the packet.
]],
}, -- HOOK_PLAYER_PLACING_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerRightClick.lua
================================================
return
{
HOOK_PLAYER_RIGHT_CLICK =
{
CalledWhen = "A right-click packet is received from the client. Plugin may override / refuse.",
DefaultFnName = "OnPlayerRightClick", -- also used as pagename
Desc = [[
This hook is called when Cuberite receives a right-click packet from the {{cClientHandle|client}}. It
is called before any processing whatsoever is performed on the packet, meaning that hacked /
malicious clients may be trigerring this event very often and with unchecked parameters. Therefore
plugin authors are advised to use extreme caution with this callback.
Plugins may refuse the default processing for the packet, causing Cuberite to behave as if the
packet has never arrived. This may, however, create inconsistencies in the client - the client may
think that they placed a block, while the server didn't process the placing, etc.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player whose client sent the packet" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of the block upon which the player interacted. One of the BLOCK_FACE_ constants" },
{ Name = "CursorX", Type = "number", Notes = "X-coord of the mouse crosshair on the block" },
{ Name = "CursorY", Type = "number", Notes = "Y-coord of the mouse crosshair on the block" },
{ Name = "CursorZ", Type = "number", Notes = "Z-coord of the mouse crosshair on the block" },
},
Returns = [[
If the function returns false or no value, Cuberite calls other plugins' callbacks and finally sends
the packet for further processing.
If the function returns true, no other plugins are called, processing is halted.
]],
}, -- HOOK_PLAYER_RIGHT_CLICK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerRightClickingEntity.lua
================================================
return
{
HOOK_PLAYER_RIGHT_CLICKING_ENTITY =
{
CalledWhen = "A player has right-clicked an entity. Plugins may override / refuse.",
DefaultFnName = "OnPlayerRightClickingEntity", -- also used as pagename
Desc = [[
This hook is called when the {{cPlayer|player}} right-clicks an {{cEntity|entity}}. Plugins may
override the default behavior or even cancel the default processing.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has right-clicked the entity" },
{ Name = "Entity", Type = "{{cEntity}} descendant", Notes = "The entity that has been right-clicked" },
},
Returns = [[
If the functino returns false or no value, Cuberite calls other plugins' callbacks and finally does
the default processing for the right-click. If the function returns true, no other callbacks are
called and the default processing is skipped.
]],
}, -- HOOK_PLAYER_RIGHT_CLICKING_ENTITY
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerShooting.lua
================================================
return
{
HOOK_PLAYER_SHOOTING =
{
CalledWhen = "When the player releases the bow, shooting an arrow (other projectiles: unknown)",
DefaultFnName = "OnPlayerShooting", -- also used as pagename
Desc = [[
This hook is called when the {{cPlayer|player}} shoots their bow. It is called for the actual
release of the {{cArrowEntity|arrow}}. FIXME: It is currently unknown whether other
{{cProjectileEntity|projectiles}} (snowballs, eggs) trigger this hook.
To get the player's position and direction, use the {{cPlayer}}:GetEyePosition() and
cPlayer:GetLookVector() functions. Note that for shooting a bow, the position for the arrow creation
is not at the eye pos, some adjustments are required. FIXME: Export the {{cPlayer}} function for
this adjustment.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player shooting" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called, and finally
Cuberite creates the projectile. If the functino returns true, no other callback is called and no
projectile is created.
]],
}, -- HOOK_PLAYER_SHOOTING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerSpawned.lua
================================================
return
{
HOOK_PLAYER_SPAWNED =
{
CalledWhen = "After a player (re)spawns in the world to which they belong to.",
DefaultFnName = "OnPlayerSpawned", -- also used as pagename
Desc = [[
This hook is called after a {{cPlayer|player}} has spawned in the world. It is called after
{{OnLogin|HOOK_LOGIN}} and {{OnPlayerJoined|HOOK_PLAYER_JOINED}}, after the player name has been
authenticated, the initial worldtime, inventory and health have been sent to the player and the
player spawn packet has been broadcast to all players near enough to the player spawn place. This is
a notification-only event, plugins wishing to refuse player's entry should kick the player using the
{{cPlayer}}:Kick() function.
This hook is also called when the player respawns after death (and a respawn packet is received from
the client, meaning the player has already clicked the Respawn button).
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has (re)spawned" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called for this event. There is no overridable behavior.
]],
}, -- HOOK_PLAYER_SPAWNED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerTossingItem.lua
================================================
return
{
HOOK_PLAYER_TOSSING_ITEM =
{
CalledWhen = "A player is tossing an item. Plugin may override / refuse.",
DefaultFnName = "OnPlayerTossingItem", -- also used as pagename
Desc = [[
This hook is called when a {{cPlayer|player}} has tossed an item. The
{{cPickup|pickup}} has not been spawned yet. Plugins may disallow the tossing, but in that case they
need to clean up - the player's client already thinks the item has been tossed so the
{{cInventory|inventory}} needs to be re-sent to the player.
To get the item that is about to be tossed, call the {{cPlayer}}:GetEquippedItem() function.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player tossing an item" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and finally Cuberite
creates the pickup for the item and tosses it, using {{cPlayer}}:TossHeldItem, {{cPlayer}}:TossEquippedItem,
or {{cPlayer}}:TossPickup. If the function returns true, no other callbacks are called for this event
and Cuberite doesn't toss the item.
]],
}, -- HOOK_PLAYER_TOSSING_ITEM
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerUsedBlock.lua
================================================
return
{
HOOK_PLAYER_USED_BLOCK =
{
CalledWhen = "A player has just used a block (chest, furnace...). Notification only.",
DefaultFnName = "OnPlayerUsedBlock", -- also used as pagename
Desc = [[
This hook is called after a {{cPlayer|player}} has right-clicked a block that can be used, such as a
{{cChestEntity|chest}} or a lever. It is called after Cuberite processes the usage (sends the UI
handling packets / toggles redstone). Note that for UI-related blocks, the player is most likely
still using the UI. This is a notification-only event.
Note that the block coords given in this callback are for the (solid) block that is being clicked,
not the air block between it and the player.
To get the world at which the right-click occurred, use the {{cPlayer}}:GetWorld() function.
See also the {{OnPlayerUsingBlock|HOOK_PLAYER_USING_BLOCK}} for a similar hook called before the
use, the {{OnPlayerUsingItem|HOOK_PLAYER_USING_ITEM}} and {{OnPlayerUsedItem|HOOK_PLAYER_USED_ITEM}}
for similar hooks called when a player interacts with any block with a usable item in hand, such as
a bucket.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who used the block" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the clicked block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the clicked block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the clicked block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of clicked block which has been clicked. One of the BLOCK_FACE_ constants" },
{ Name = "CursorX", Type = "number", Notes = "X-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorY", Type = "number", Notes = "Y-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorZ", Type = "number", Notes = "Z-coord of the cursor crosshair on the block being clicked" },
{ Name = "BlockType", Type = "number", Notes = "Block type of the clicked block" },
{ Name = "BlockMeta", Type = "number", Notes = "Block meta of the clicked block" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called for this event.
]],
}, -- HOOK_PLAYER_USED_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerUsedItem.lua
================================================
return
{
HOOK_PLAYER_USED_ITEM =
{
CalledWhen = "A player has used an item in hand (bucket...)",
DefaultFnName = "OnPlayerUsedItem", -- also used as pagename
Desc = [[
This hook is called after a {{cPlayer|player}} has right-clicked a block with an {{cItem|item}} that
can be used (is not placeable, is not food and clicked block is not use-able), such as a bucket or a
hoe. It is called after Cuberite processes the usage (places fluid / turns dirt to farmland).
This is an information-only hook, there is no way to cancel the event anymore.
Note that the block coords given in this callback are for the (solid) block that is being clicked,
not the air block between it and the player.
To get the world at which the right-click occurred, use the {{cPlayer}}:GetWorld() function. To get
the item that the player is using, use the {{cPlayer}}:GetEquippedItem() function.
See also the {{OnPlayerUsingItem|HOOK_PLAYER_USING_ITEM}} for a similar hook called before the use,
the {{OnPlayerUsingBlock|HOOK_PLAYER_USING_BLOCK}} and {{OnPlayerUsedBlock|HOOK_PLAYER_USED_BLOCK}}
for similar hooks called when a player interacts with a block, such as a chest.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who used the item" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the clicked block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the clicked block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the clicked block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of clicked block which has been clicked. One of the BLOCK_FACE_ constants" },
{ Name = "CursorX", Type = "number", Notes = "X-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorY", Type = "number", Notes = "Y-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorZ", Type = "number", Notes = "Z-coord of the cursor crosshair on the block being clicked" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called for this event.
]],
}, -- HOOK_PLAYER_USED_ITEM
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerUsingBlock.lua
================================================
return
{
HOOK_PLAYER_USING_BLOCK =
{
CalledWhen = "Just before a player uses a block (chest, furnace...). Plugin may override / refuse.",
DefaultFnName = "OnPlayerUsingBlock", -- also used as pagename
Desc = [[
This hook is called when a {{cPlayer|player}} has right-clicked a block that can be used, such as a
{{cChestEntity|chest}} or a lever. It is called before Cuberite processes the usage (sends the UI
handling packets / toggles redstone). Plugins may refuse the interaction by returning true.
Note that the block coords given in this callback are for the (solid) block that is being clicked,
not the air block between it and the player.
To get the world at which the right-click occurred, use the {{cPlayer}}:GetWorld() function.
See also the {{OnPlayerUsedBlock|HOOK_PLAYER_USED_BLOCK}} for a similar hook called after the use, the
{{OnPlayerUsingItem|HOOK_PLAYER_USING_ITEM}} and {{OnPlayerUsedItem|HOOK_PLAYER_USED_ITEM}} for
similar hooks called when a player interacts with any block with a usable item in hand, such as a
bucket.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is using the block" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the clicked block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the clicked block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the clicked block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of clicked block which has been clicked. One of the BLOCK_FACE_ constants" },
{ Name = "CursorX", Type = "number", Notes = "X-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorY", Type = "number", Notes = "Y-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorZ", Type = "number", Notes = "Z-coord of the cursor crosshair on the block being clicked" },
{ Name = "BlockType", Type = "number", Notes = "Block type of the clicked block" },
{ Name = "BlockMeta", Type = "number", Notes = "Block meta of the clicked block" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and then Cuberite
processes the interaction. If the function returns true, no other callbacks are called for this
event and the block is treated like any other block (i.e. if it's possible to place a torch on,
it will be placed, and so on.)
]],
}, -- HOOK_PLAYER_USING_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPlayerUsingItem.lua
================================================
return
{
HOOK_PLAYER_USING_ITEM =
{
CalledWhen = "Just before a player uses an item in hand (bucket...). Plugin may override / refuse.",
DefaultFnName = "OnPlayerUsingItem", -- also used as pagename
Desc = [[
This hook is called when a {{cPlayer|player}} has right-clicked a block with an {{cItem|item}} that
can be used (is not placeable, is not food and clicked block is not use-able), such as a bucket or a
hoe. It is called before Cuberite processes the usage (places fluid / turns dirt to farmland).
Plugins may refuse the interaction by returning true.
Note that the block coords given in this callback are for the (solid) block that is being clicked,
not the air block between it and the player.
To get the world at which the right-click occurred, use the {{cPlayer}}:GetWorld() function. To get
the item that the player is using, use the {{cPlayer}}:GetEquippedItem() function.
See also the {{OnPlayerUsedItem|HOOK_PLAYER_USED_ITEM}} for a similar hook called after the use, the
{{OnPlayerUsingBlock|HOOK_PLAYER_USING_BLOCK}} and {{OnPlayerUsedBlock|HOOK_PLAYER_USED_BLOCK}} for
similar hooks called when a player interacts with a block, such as a chest.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is using the item" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the clicked block" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the clicked block" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the clicked block" },
{ Name = "BlockFace", Type = "number", Notes = "Face of clicked block which has been clicked. One of the BLOCK_FACE_ constants" },
{ Name = "CursorX", Type = "number", Notes = "X-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorY", Type = "number", Notes = "Y-coord of the cursor crosshair on the block being clicked" },
{ Name = "CursorZ", Type = "number", Notes = "Z-coord of the cursor crosshair on the block being clicked" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and then Cuberite
processes the interaction. If the function returns true, no other callbacks are called for this
event and the interaction is silently dropped.
]],
}, -- HOOK_PLAYER_USING_ITEM
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPluginMessage.lua
================================================
return
{
HOOK_PLUGIN_MESSAGE =
{
CalledWhen = "The server receives a plugin message from a client",
DefaultFnName = "OnPluginMessage", -- also used as pagename
Desc = [[
A plugin may implement an OnPluginMessage() function and register it as a Hook to process plugin messages
from the players. The function is then called for every plugin message sent from any player.
]],
Params = {
{ Name = "Client", Type = "{{cClientHandle}}", Notes = "The client who sent the plugin message" },
{ Name = "Channel", Type = "string", Notes = "The channel on which the message was sent" },
{ Name = "Message", Type = "string", Notes = "The message's payload" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called for this event.
]],
}, -- HOOK_CHAT
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPluginsLoaded.lua
================================================
return
{
HOOK_PLUGINS_LOADED =
{
CalledWhen = "All the enabled plugins have been loaded",
DefaultFnName = "OnPluginsLoaded", -- also used as pagename
Desc = [[
This callback gets called when the server finishes loading and initializing plugins. This is the
perfect occasion for a plugin to query other plugins through {{cPluginManager}}:GetPlugin() and
possibly start communicating with them using the {{cPlugin}}:Call() function.
]],
Params = {},
Returns = [[
The return value is ignored, all registered callbacks are called.
]],
CodeExamples =
{
{
Title = "CoreMessaging",
Desc = [[
This example shows how to implement the CoreMessaging functionality - messages to players will be
sent through the Core plugin, formatted by that plugin. As a fallback for when the Core plugin is
not present, the messages are sent directly by this code, unformatted.
]],
Code = [[
-- These are the fallback functions used when the Core is not present:
local function SendMessageFallback(a_Player, a_Message)
a_Player:SendMessage(a_Message);
end
local function SendMessageSuccessFallback(a_Player, a_Message)
a_Player:SendMessage(a_Message);
end
local function SendMessageFailureFallback(a_Player, a_Message)
a_Player:SendMessage(a_Message);
end
-- These three "variables" will hold the actual functions to call.
-- By default they are initialized to the Fallback variants,
-- but will be redirected to Core when all plugins load
SendMessage = SendMessageFallback;
SendMessageSuccess = SendMessageSuccessFallback;
SendMessageFailure = SendMessageFailureFallback;
-- The callback tries to connect to the Core
-- If successful, overwrites the three functions with Core ones
local function OnPluginsLoaded()
local CorePlugin = cPluginManager:Get():GetPlugin("Core");
if (CorePlugin == nil) then
-- The Core is not loaded, keep the Fallback functions
return;
end
-- Overwrite the three functions with Core functionality:
SendMessage = function(a_Player, a_Message)
CorePlugin:Call("SendMessage", a_Player, a_Message);
end
SendMessageSuccess = function(a_Player, a_Message)
CorePlugin:Call("SendMessageSuccess", a_Player, a_Message);
end
SendMessageFailure = function(a_Player, a_Message)
CorePlugin:Call("SendMessageFailure", a_Player, a_Message);
end
end
-- Global scope, register the callback:
cPluginManager.AddHook(cPluginManager.HOOK_PLUGINS_LOADED, CoreMessagingPluginsLoaded);
-- Usage, anywhere else in the plugin:
SendMessageFailure(
a_Player,
"Cannot teleport to player, the destination player " .. PlayerName .. " was not found"
);
]],
},
} , -- CodeExamples
}, -- HOOK_PLUGINS_LOADED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPostCrafting.lua
================================================
return
{
HOOK_POST_CRAFTING =
{
CalledWhen = "After the built-in recipes are checked and a recipe was found.",
DefaultFnName = "OnPostCrafting", -- also used as pagename
Desc = [[
This hook is called when a {{cPlayer|player}} changes contents of their
{{cCraftingGrid|crafting grid}}, after the recipe has been established by Cuberite. Plugins may use
this to modify the resulting recipe or provide an alternate recipe.
If a plugin implements custom recipes, it should do so using the {{OnPreCrafting|HOOK_PRE_CRAFTING}}
hook, because that will save the server from going through the built-in recipes. The
HOOK_POST_CRAFTING hook is intended as a notification, with a chance to tweak the result.
Note that this hook is not called if a built-in recipe is not found;
{{OnCraftingNoRecipe|HOOK_CRAFTING_NO_RECIPE}} is called instead in such a case.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has changed their crafting grid contents" },
{ Name = "Grid", Type = "{{cCraftingGrid}}", Notes = "The new crafting grid contents" },
{ Name = "Recipe", Type = "{{cCraftingRecipe}}", Notes = "The recipe that Cuberite has decided to use (can be tweaked by plugins)" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called for this event. In either case, Cuberite uses the value
of Recipe as the recipe to be presented to the player.
]],
}, -- HOOK_POST_CRAFTING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnPreCrafting.lua
================================================
return
{
HOOK_PRE_CRAFTING =
{
CalledWhen = "Before the built-in recipes are checked.",
DefaultFnName = "OnPreCrafting", -- also used as pagename
Desc = [[
This hook is called when a {{cPlayer|player}} changes contents of their
{{cCraftingGrid|crafting grid}}, before the built-in recipes are searched for a match by Cuberite.
Plugins may use this hook to provide a custom recipe.
If you intend to tweak built-in recipes, use the {{OnPostCrafting|HOOK_POST_CRAFTING}} hook, because
that will be called once the built-in recipe is matched.
Also note a third hook, {{OnCraftingNoRecipe|HOOK_CRAFTING_NO_RECIPE}}, that is called when Cuberite
cannot find any built-in recipe for the given ingredients.
]],
Params =
{
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who has changed their crafting grid contents" },
{ Name = "Grid", Type = "{{cCraftingGrid}}", Notes = "The new crafting grid contents" },
{ Name = "Recipe", Type = "{{cCraftingRecipe}}", Notes = "The recipe that Cuberite will use. Modify this object to change the recipe" },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and then Cuberite
searches the built-in recipes. The Recipe output parameter is ignored in this case.
If the function returns true, no other callbacks are called for this event and Cuberite uses the
recipe stored in the Recipe output parameter.
]],
}, -- HOOK_PRE_CRAFTING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnProjectileHitBlock.lua
================================================
return
{
HOOK_PROJECTILE_HIT_BLOCK =
{
CalledWhen = "A projectile hits a solid block.",
DefaultFnName = "OnProjectileHitBlock", -- also used as pagename
Desc = [[
This hook is called when a {{cProjectileEntity|projectile}} hits a solid block..
]],
Params =
{
{ Name = "ProjectileEntity", Type = "{{cProjectileEntity}}", Notes = "The projectile that hit an entity." },
{ Name = "BlockX", Type = "number", Notes = "The X-coord where the projectile hit." },
{ Name = "BlockY", Type = "number", Notes = "The Y-coord where the projectile hit." },
{ Name = "BlockZ", Type = "number", Notes = "The Z-coord where the projectile hit." },
{ Name = "BlockFace", Type = "number", Notes = "The side of the block where the projectile hit." },
{ Name = "BlockHitPos", Type = "Vector3d", Notes = "The exact position where the projectile hit." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event and the projectile flies through block..
]],
}, -- HOOK_PROJECTILE_HIT_BLOCK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnProjectileHitEntity.lua
================================================
return
{
HOOK_PROJECTILE_HIT_ENTITY =
{
CalledWhen = "A projectile hits another entity.",
DefaultFnName = "OnProjectileHitEntity", -- also used as pagename
Desc = [[
This hook is called when a {{cProjectileEntity|projectile}} hits another entity.
]],
Params =
{
{ Name = "ProjectileEntity", Type = "{{cProjectileEntity}}", Notes = "The projectile that hit an entity." },
{ Name = "Entity", Type = "{{cEntity}}", Notes = "The entity wich was hit." },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event and the projectile flies through the entity.
]],
}, -- HOOK_PROJECTILE_HIT_ENTITY
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnServerPing.lua
================================================
return
{
HOOK_SERVER_PING =
{
CalledWhen = "Client pings the server from the server list.",
DefaultFnName = "OnServerPing", -- also used as pagename
Desc = [[
A plugin may implement an OnServerPing() function and register it as a Hook to process pings from
clients in the server server list. It can change the logged in players and player capacity, as well
as the server description and the favicon, that are displayed to the client in the server list.
The client handle already has its protocol version assigned to it, so the plugin can check that; however,
there's no username associated with the client yet, and no player object.
]],
Params = {
{ Name = "ClientHandle", Type = "{{cClientHandle}}", Notes = "The client handle that pinged the server" },
{ Name = "ServerDescription", Type = "string", Notes = "The server description" },
{ Name = "OnlinePlayersCount", Type = "number", Notes = "The number of players currently on the server" },
{ Name = "MaxPlayersCount", Type = "number", Notes = "The current player cap for the server" },
{ Name = "Favicon", Type = "string", Notes = "The base64 encoded favicon to be displayed in the server list for compatible clients" },
},
Returns = [[
The plugin can return whether to continue processing of the hook with other plugins, the server description to
be displayed to the client, the currently online players, the player cap and the base64/png favicon data, in that order.
]],
CodeExamples = {
{
Title = "Change information returned to the player",
Desc = "Tells the client that the server description is 'test', there are one more players online than there actually are, and that the player cap is zero. It also changes the favicon data.",
Code = [[
function OnServerPing(ClientHandle, ServerDescription, OnlinePlayers, MaxPlayers, Favicon)
-- Change Server Description
ServerDescription = "Test"
-- Change online / max players
OnlinePlayers = OnlinePlayers + 1
MaxPlayers = 0
-- Change favicon
if cFile:IsFile("my-favicon.png") then
local FaviconData = cFile:ReadWholeFile("my-favicon.png")
if (FaviconData ~= "") and (FaviconData ~= nil) then
Favicon = Base64Encode(FaviconData)
end
end
return false, ServerDescription, OnlinePlayers, MaxPlayers, Favicon
end
]],
},
},
}, -- HOOK_SERVER_PING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnSpawnedEntity.lua
================================================
return
{
HOOK_SPAWNED_ENTITY =
{
CalledWhen = "After an entity is spawned in the world.",
DefaultFnName = "OnSpawnedEntity", -- also used as pagename
Desc = [[
This hook is called after the server spawns an {{cEntity|entity}}. This is an information-only
callback, the entity is already spawned by the time it is called. If the entity spawned is a
{{cMonster|monster}}, the {{OnSpawnedMonster|HOOK_SPAWNED_MONSTER}} hook is called before this
hook.
See also the {{OnSpawningEntity|HOOK_SPAWNING_ENTITY}} hook for a similar hook called before the
entity is spawned.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the entity has spawned" },
{ Name = "Entity", Type = "{{cEntity}} descentant", Notes = "The entity that has spawned" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event.
]],
}, -- HOOK_SPAWNED_ENTITY
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnSpawnedMonster.lua
================================================
return
{
HOOK_SPAWNED_MONSTER =
{
CalledWhen = "After a monster is spawned in the world",
DefaultFnName = "OnSpawnedMonster", -- also used as pagename
Desc = [[
This hook is called after the server spawns a {{cMonster|monster}}. This is an information-only
callback, the monster is already spawned by the time it is called. After this hook is called, the
{{OnSpawnedEntity|HOOK_SPAWNED_ENTITY}} is called for the monster entity.
See also the {{OnSpawningMonster|HOOK_SPAWNING_MONSTER}} hook for a similar hook called before the
monster is spawned.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the monster has spawned" },
{ Name = "Monster", Type = "{{cMonster}} descendant", Notes = "The monster that has spawned" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event.
]],
}, -- HOOK_SPAWNED_MONSTER
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnSpawningEntity.lua
================================================
return
{
HOOK_SPAWNING_ENTITY =
{
CalledWhen = "Before an entity is spawned in the world.",
DefaultFnName = "OnSpawningEntity", -- also used as pagename
Desc = [[
This hook is called before the server spawns an {{cEntity|entity}}. The plugin can either modify the
entity before it is spawned, or disable the spawning altogether. You can't disable the spawning if the
entity is a player. If the entity spawning is a monster, the {{OnSpawningMonster|HOOK_SPAWNING_MONSTER}}
hook is called before this hook.
See also the {{OnSpawnedEntity|HOOK_SPAWNED_ENTITY}} hook for a similar hook called after the
entity is spawned.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the entity will spawn" },
{ Name = "Entity", Type = "{{cEntity}} descentant", Notes = "The entity that will spawn" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. Finally, the server
spawns the entity with whatever parameters have been set on the {{cEntity}} object by the callbacks.
If the function returns true, no other callback is called for this event and the entity is not
spawned.
]],
}, -- HOOK_SPAWNING_ENTITY
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnSpawningMonster.lua
================================================
return
{
HOOK_SPAWNING_MONSTER =
{
CalledWhen = "Before a monster is spawned in the world.",
DefaultFnName = "OnSpawningMonster", -- also used as pagename
Desc = [[
This hook is called before the server spawns a {{cMonster|monster}}. The plugins may modify the
monster's parameters in the {{cMonster}} class, or disallow the spawning altogether. This hook is
called before the {{OnSpawningEntity|HOOK_SPAWNING_ENTITY}} is called for the monster entity.
See also the {{OnSpawnedMonster|HOOK_SPAWNED_MONSTER}} hook for a similar hook called after the
monster is spawned.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the entity will spawn" },
{ Name = "Monster", Type = "{{cMonster}} descentant", Notes = "The monster that will spawn" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. Finally, the server
spawns the monster with whatever parameters the plugins set in the cMonster parameter.
If the function returns true, no other callback is called for this event and the monster won't
spawn.
]],
}, -- HOOK_SPAWNING_MONSTER
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnTakeDamage.lua
================================================
return
{
HOOK_TAKE_DAMAGE =
{
CalledWhen = "An {{cEntity|entity}} is taking any kind of damage",
DefaultFnName = "OnTakeDamage", -- also used as pagename
Desc = [[
This hook is called when any {{cEntity}} descendant, such as a {{cPlayer|player}} or a
{{cMonster|mob}}, takes any kind of damage. The plugins may modify the amount of damage or effects
with this hook by editting the {{TakeDamageInfo}} object passed.
This hook is called after the final damage is calculated, including all the possible weapon
{{cEnchantments|enchantments}}, armor protection and potion effects.
]],
Params =
{
{ Name = "Receiver", Type = "{{cEntity}} descendant", Notes = "The entity taking damage" },
{ Name = "TDI", Type = "{{TakeDamageInfo}}", Notes = "The damage type, cause and effects. Plugins may modify this object to alter the final damage applied." },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called and then the server
applies the final values from the TDI object to Receiver. If the function returns true, no other
callbacks are called, and no damage nor effects are applied.
]],
}, -- HOOK_TAKE_DAMAGE
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnTick.lua
================================================
return
{
HOOK_TICK =
{
CalledWhen = "Every server tick (approximately 20 times per second)",
DefaultFnName = "OnTick", -- also used as pagename
Desc = [[
This hook is called every game tick (50 msec, or 20 times a second). If the server is overloaded,
the interval is larger, which is indicated by the TimeDelta parameter.
This hook is called in the context of the server-tick thread, that is, the thread that takes care of
{{cClientHandle|client connections}} before they're assigned to {{cPlayer|player entities}}, and
processing console commands.
]],
Params =
{
{ Name = "TimeDelta", Type = "number", Notes = "The number of milliseconds elapsed since the last server tick. Will not be less than 50 msec." },
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called. There is no overridable behavior.
]],
}, -- HOOK_TICK
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnUpdatedSign.lua
================================================
return
{
HOOK_UPDATED_SIGN =
{
CalledWhen = "After the sign text is updated. Notification only.",
DefaultFnName = "OnUpdatedSign", -- also used as pagename
Desc = [[
This hook is called after a sign has had its text updated. The text is already updated at this
point.
The update may have been caused either by a {{cPlayer|player}} directly updating the sign, or by
a plugin changing the sign text using the API.
See also the {{OnUpdatingSign|HOOK_UPDATING_SIGN}} hook for a similar hook called before the update,
with a chance to modify the text.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the sign resides" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the sign" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the sign" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the sign" },
{ Name = "Line1", Type = "string", Notes = "1st line of the new text" },
{ Name = "Line2", Type = "string", Notes = "2nd line of the new text" },
{ Name = "Line3", Type = "string", Notes = "3rd line of the new text" },
{ Name = "Line4", Type = "string", Notes = "4th line of the new text" },
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is changing the text. May be nil for non-player updates." }
},
Returns = [[
If the function returns false or no value, other plugins' callbacks are called. If the function
returns true, no other callbacks are called. There is no overridable behavior.
]],
}, -- HOOK_UPDATED_SIGN
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnUpdatingSign.lua
================================================
return
{
HOOK_UPDATING_SIGN =
{
CalledWhen = "Before the sign text is updated. Plugin may modify the text / refuse.",
DefaultFnName = "OnUpdatingSign", -- also used as pagename
Desc = [[
This hook is called when a sign text is about to be updated, either as a result of player's
manipulation or any other event, such as a plugin setting the sign text. Plugins may modify the text
or refuse the update altogether.
See also the {{OnUpdatedSign|HOOK_UPDATED_SIGN}} hook for a similar hook called after the update.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "The world in which the sign resides" },
{ Name = "BlockX", Type = "number", Notes = "X-coord of the sign" },
{ Name = "BlockY", Type = "number", Notes = "Y-coord of the sign" },
{ Name = "BlockZ", Type = "number", Notes = "Z-coord of the sign" },
{ Name = "Line1", Type = "string", Notes = "1st line of the new text" },
{ Name = "Line2", Type = "string", Notes = "2nd line of the new text" },
{ Name = "Line3", Type = "string", Notes = "3rd line of the new text" },
{ Name = "Line4", Type = "string", Notes = "4th line of the new text" },
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who is changing the text. May be nil for non-player updates." }
},
Returns = [[
The function may return up to five values. If the function returns true as the first value, no other
callbacks are called for this event and the sign is not updated. If the function returns no value or
false as its first value, other plugins' callbacks are called.
The other up to four values returned are used to update the sign text, line by line, respectively.
Note that other plugins may again update the texts (if the first value returned is false).
]],
CodeExamples =
{
{
Title = "Add player signature",
Desc = "The following example appends a player signature to the last line, if the sign is updated by a player:",
Code = [[
function OnUpdatingSign(World, BlockX, BlockY, BlockZ, Line1, Line2, Line3, Line4, Player)
if (Player == nil) then
-- Not changed by a player
return false;
end
-- Sign with playername, allow other plugins to interfere:
return false, Line1, Line2, Line3, Line4 .. Player:GetName();
end
]],
}
} ,
}, -- HOOK_UPDATING_SIGN
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnWeatherChanged.lua
================================================
return
{
HOOK_WEATHER_CHANGED =
{
CalledWhen = "The weather has changed",
DefaultFnName = "OnWeatherChanged", -- also used as pagename
Desc = [[
This hook is called after the weather has changed in a {{cWorld|world}}. The new weather has already
been sent to the clients.
See also the {{OnWeatherChanging|HOOK_WEATHER_CHANGING}} hook for a similar hook called before the
change.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World for which the weather has changed" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event. There is no overridable behavior.
]],
}, -- HOOK_WEATHER_CHANGED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnWeatherChanging.lua
================================================
return
{
HOOK_WEATHER_CHANGING =
{
CalledWhen = "The weather is about to change",
DefaultFnName = "OnWeatherChanging", -- also used as pagename
Desc = [[
This hook is called when the current weather has expired and a new weather is selected. Plugins may
override the new weather being set.
The new weather setting is sent to the clients only after this hook has been processed.
See also the {{OnWeatherChanged|HOOK_WEATHER_CHANGED}} hook for a similar hook called after the
change.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World for which the weather is changing" },
{ Name = "Weather", Type = "number", Notes = "The newly selected weather. One of wSunny, wRain, wStorm" },
},
Returns = [[
The hook handler can return up to two values. If the first value is false or not present, the server
calls other plugins' callbacks and finally sets the weather. If it is true, the server doesn't call any
more callbacks for this hook. The second value returned is used as the new weather. If no value is
given, the weather from the parameters is used as the weather. Returning false as the first value and a
specific weather constant as the second value makes the server call the rest of the hook handlers with
the new weather value.
]],
}, -- HOOK_WEATHER_CHANGING
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnWorldStarted.lua
================================================
return
{
HOOK_WORLD_STARTED =
{
CalledWhen = "A {{cWorld|world}} is initialized",
DefaultFnName = "OnWorldStarted", -- also used as pagename
Desc = [[
This hook is called whenever a {{cWorld|world}} is initialized.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World that is started" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event. There is no overridable behavior.
]],
}, -- HOOK_WORLD_STARTED
}
================================================
FILE: Server/Plugins/APIDump/Hooks/OnWorldTick.lua
================================================
return
{
HOOK_WORLD_TICK =
{
CalledWhen = "Every world tick (about 20 times per second), separately for each world",
DefaultFnName = "OnWorldTick", -- also used as pagename
Desc = [[
This hook is called for each {{cWorld|world}} every tick (50 msec, or 20 times a second). If the
world is overloaded, the interval is larger, which is indicated by the TimeDelta parameter.
This hook is called in the world's tick thread context and thus has access to all world data
guaranteed without blocking.
]],
Params =
{
{ Name = "World", Type = "{{cWorld}}", Notes = "World that is ticking" },
{ Name = "TimeDelta", Type = "number", Notes = "The number of milliseconds since the previous game tick. Will not be less than 50 msec" },
},
Returns = [[
If the function returns false or no value, the next plugin's callback is called. If the function
returns true, no other callback is called for this event. There is no overridable behavior.
]],
}, -- HOOK_WORLD_TICK
}
================================================
FILE: Server/Plugins/APIDump/InfoFile.html
================================================
For a long time Cuberite plugins were plagued by poor documentation. The plugins worked, people who wrote them knew how to use them, but for anyone new to the plugin it was a terrible ordeal learning how to use it. Most of the times, the plugin authors only wrote what commands the plugin supported, sometimes not even that. Then, there was a call to action to put an end to this, to make documenting the plugins easy and at the same time centralized. Thus, the Info.lua file was born.
Most plugins have some parts that are the same across all the plugins. These are commands, console commands and their permissions. If a plugin implemented a command, it would practically copy & paste the same code over and over again. So it makes sense to extract only unique information, centralize it and automate all the parts around it. This was another reason for the Info.lua file - it is a central hub of commands, console commands and their permissions.
Last, but not least, we want to make a plugin repository on the web in the future, a repository that would store plugins, their descriptions, comments. It makes sense that the centralized information can be parsed by the repository automatically, so that advanced things, such as searching for a plugin based on a command, or determining whether two plugins collide command-wise, are possible.
A tool has been written that allows for an easy generation of the documentation for the plugin in various formats. It outputs the documentation in a format that is perfect for pasting into the forum. It generates documentation in a Markup format to use in README.md on GitHub and similar sites. The clever thing is that you don't need to keep all those formats in sync manually - you edit the Info.lua file and this tool will re-generate the documentation for you.
To generate documentation for the plugin, activate the DumpInfo plugin on a cuberite server with your plugin installed, and use the webadmin interface to "Dump" the plugin information. This will create a README.md suitable for uploading to your git repo, and a forum_info.txt, which can be copy-pasted into a forum post.
So to sum up, the Info.lua file contains the plugins' commands, console commands, their permissions and possibly the overall plugin documentation, in a structured manner that can be parsed by a program, yet is human readable and editable.
The file consist of a declaration of a single Lua table, g_PluginInfo. This table contains all the information, structured, as its members. Each member can be a structure by itself. The entire file is a valid Lua source file, so any tool that syntax-checks Lua source can syntax-check this file. The file is somewhat forward- and backward- compatible, in the sense that it can be extended in any way without breaking.
Here's a skeleton of the file:
g_PluginInfo =
{
Name = "Example Plugin",
Date = "2014-06-12",
Description = "This is an example plugin that shows how to use the Info.lua file",
-- The following members will be documented in greater detail later:
AdditionalInfo = {},
Commands = {},
ConsoleCommands = {},
Permissions = {},
Categories = {},
}
As you can see, the structure is pretty straightforward. Note that the order of the elements inside the table is not important (Lua property).
The first few elements are for book-keeping. They declare the plugin's name, the date in ISO-format, representing the version of the plugin, and the description. The idea is that the description sums up what the plugin is all about, within some two or three sentences.
This table is used for more detailed description of the plugin. If there is any non-trivial setup process, dependencies, describe them here. This is where the description should get detailed. Don't worry about using several paragraphs of text here, if it makes the plugin easier to understand.
The table should have the following layout:
AdditionalInfo =
{
{
Title = "Chapter 1",
Contents = "Describe one big aspect of the plugin here",
},
{
Title = "Chapter 2",
Contents = "Describe another big topic",
},
}
The idea here is that the tool that is used to generate the documentation from the Info.lua file will create a linkified table of contents and then each of the information elements' contents. This information should be all that is needed to successfully configure, run and manage the plugin.
The commands table lists all the commands that the plugin implements, together with their handler functions, required permissions, help strings and further information. The table supports recursion, which allows plugins to create multi-word commands easily (such as "//schematic load" and "//schematic save"), each having its own separate handler.
The table uses structure similar to the following:
Commands =
{
["/cmd1"] =
{
HelpString = "Performs the first action",
Permission = "firstplugin.cmds.1",
Alias = "/c1",
Handler = HandleCmd1,
ParameterCombinations =
{
{
Params = "x y z",
Help = "Performs the first action at the specified coordinates",
},
{
Params = "-p",
Help = "Performs the first action at the player's coordinates",
}
},
},
["/cmd2"] =
{
Alias = {"/c2", "//c2" },
Category = "Something",
Subcommands =
{
sub1 = -- This declares a "/cmd2 sub1" command
{
HelpString = "Performs the second action's first subcommand",
Permission = "firstplugin.cmds.2.1",
Alias = "1",
Handler = HandleCmd2Sub1,
ParameterCombinations =
{
{
Params = "x y z",
Help = "Performs the second action's first subcommand at the specified coordinates",
},
{
Params = "-p",
Help = "Performs the second action's first subcommand at the player's coordinates",
}
},
},
sub2 = -- Declares a "/cmd2 sub2" command
{
HelpString = "Performs the second action's second subcommand",
Permission = "firstplugin.cmds.2.2",
Handler = HandleCmd2Sub2,
},
},
},
}
Although it may seem overwhelming at first, there is a "method to this madness". Each element of the Commands table defines one command. Most commands start with a slash, so the special Lua syntax for table elements with non-standard names needs to be applied (["/cmd1"] =). The command can either specify subcommands, or a handler function (specifying both is UndefinedBehavior). Subcommands uses the same structure as the entire Commands table, recursively.
The permission element specifies that the command is only available with the specified permission. Note that the permission for subcommand's parent isn't checked when the subcommand is called. This means that specifying the permission for a command that has subcommands has no effect whatsoever, but is discouraged because we may add processing for that in the future.
The optional Categories table provides descriptions for command categories in the generated documentation. The documentation generator will group the commands by their specified Category ("General" by default) and each category will have the specified description written to it.
The ParameterCombinations table is used only for generating the documentation, it lists the various combinations of parameters that the command supports. It's worth specifying even if the command supports only one combination, because that combination will get documented this way.
The Alias member specifies any possible aliases for the command. Each alias is registered separately and if there is a subcommand table, it is applied to all aliases, just as one would expect. You can specify either a single string as the value (if there's only one alias), or a table of strings for multiple aliases. Commands with no aliases do not need to specify this member at all.
The purpose of this table is to document permissions that the plugin uses. The documentation generator automatically collects the permissions specified in the Command table; the Permissions table adds a description for these permissions and may declare other permissions that aren't specifically included in the Command table.
Permissions =
{
["firstplugin.cmd.1.1"] =
{
Description = "Allows the players to build high towers using the first action.",
RecommendedGroups = "players",
},
["firstplugin.cmd.2.1"] =
{
Description = "Allows the players to kill entities using the second action. Note that this may be misused to kill other players, too.",
RecommendedGroups = "admins, mods",
},
}
The RecommendedGroup element lists, in plain English, the intended groups for which the permission should be enabled on a typical server. Plugin authors are advised to create reasonable defaults, prefering security to openness, so that admins using these settings blindly don't expose their servers to malicious users.
The optional Categories table provides descriptions for categories in the generated documentation. Commands can have categories with or without category descriptions in this table. The documentation generator will output a table of listed categories along with their description.
Categories =
{
General =
{
Description = "A general, yet somehow vague description of the default category."
},
Something =
{
Description = "Some descriptive words which form sentences pertaining to this set of commands use and goals."
},
},
Just writing the Info.lua file and saving it to the plugin folder is not enough for it to actually be used. Your plugin needs to include the following boilerplate code, preferably in its Initialize() function:
-- Use the InfoReg shared library to process the Info.lua file:
dofile(cPluginManager:GetPluginsPath() .. "/InfoReg.lua")
RegisterPluginInfoCommands()
RegisterPluginInfoConsoleCommands()
Of course, if your plugin doesn't have any console commands, it doesn't need to call the RegisterPluginInfoConsoleCommands() function, and similarly if it doesn't have any in-game commands, it doesn't need to call the RegisterPluginInfoCommands() function.
There are several plugins that already implement this approach. You can visit them for inspiration and to see what the generated documentation looks like:
================================================
FILE: Server/Plugins/APIDump/LICENSE-prettify.txt
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
Copyright 2011 Mike Samuel et al
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Server/Plugins/APIDump/SettingUpDecoda.html
================================================
Cuberite - Setting up Decoda
Setting up the Decoda IDE
This article will explain how to set up Decoda, an IDE for writing Lua code, so that you can develop Cuberite plugins with the comfort of an IDE.
About Decoda
To quickly introduce Decoda, it is an IDE for writing Lua code. It has the basic features expected of an IDE - you can group files into project, you can edit multiple files in a tabbed editor, the code is syntax-highlighted. Code completion, symbol browsing, and more. It also features a Lua debugger that allows you to debug your Lua code within any application that embeds the Lua runtime or uses Lua as a dynamic-link library (DLL). Although it is written using the multiplatform WxWidgets toolkit, it hasn't yet been ported to any platform other than 32-bit Windows. This unfortunately means that Linux users will not be able to use it. It can be used on 64-bit Windows, but the debugger only works for 32-bit programs.
Here's a screenshot of a default Decoda window with the debugger stepping through the code (scaled down):
As you can see, you can set breakpoints in the code, inspect variables' values, view both the Lua and native (C++) call-stacks. Decoda also breaks program execution when a faulty Lua script is executed, providing a detailed error message and pointing you directly to the faulting code. It is even possible to attach a C++ debugger to a process that is being debugged by Decoda, this way you can trap both C++ and Lua errors.
To begin using Decoda, you need to create a project, or load an existing one. Decoda projects have a .deproj extension, and are simply a list of Lua files that are to be opened. You can create a project through menu Project -> New Project. Save your project first, so that Decoda knows what relative paths to use for the files. Then either add existing Lua files or create new one, through menu Project -> Add Add New File / Add Existing File.
Next you need to set up the executable that Decoda will run when debugging your files. Select menu Project -> Settings. A new dialog will open:
In the debugging section, fill in the full path to Cuberite.exe, or click the triple-dot button to browse for the file. Note that the Working directory will be automatically filled in for you with the folder where the executable is (until the last backslash). This is how it's supposed to work, don't change it; if it for some reason doesn't update, copy and paste the folder name from the Command edit box. All done, you can close this dialog now.
Debugging
You are now ready to debug your code. Before doing that, though, don't forget to save your project file. If you haven't done so already, enable your plugin in the settings.ini file. If you want the program to break at a certain line, it is best to set the breakpoint before starting the program. Set the cursor on the line and hit F9 (or use menu Debug -> Toggle Breakpoint) to toggle a breakpoint on that line. Finally, hit F5, or select menu Debug -> Start to launch Cuberite under the debugger. The Cuberite window comes up and loads your plugin. If Decoda displays the Project Settings dialog instead, you haven't set up the executable to run, see the Project management section for instructions.
At this point you will see that Decoda starts adding new items to your project. All the files for all plugins are added temporarily. Don't worry, they are only temporary, they will be removed again once the debugging session finishes. You can tell the temporary files from the regular files by their icon, it's faded out. Decoda handles all the files that Cuberite loads, so you can actually debug any of those faded files, too.
If there's an error in the code, the Decoda window will flash and a dialog box will come up, describing the error and taking you to the line where it occured. Note that the execution is paused in the thread executing the plugin, so until you select Debug -> Continue from the menu (F5), Cuberite won't be fully running. You can fix the error and issue a "reload" command in Cuberite console to reload the plugin code anew (Cuberite doesn't detect changes in plugin code automatically).
If the execution hits a breakpoint, the Decoda window will flash and a yellow arrow is displayed next to the line. You can step through the code using F10 and F11, just like in MSVS. You can also use the Watch window to inspect variable values, or simply hover your mouse over a variable to display its value in the tooltip.
Limitations
So far everything seems wonderful. Unfortunately, it doesn't always go as easy. There are several limits to what Decoda can do:
When the program encounters a logical bug (using a nil value, calling a non-existent function etc.), Decoda will break, but usually the Watch window and the tooltips are showing nonsense values. You shouldn't trust them in such a case, if you kep running into such a problem regularly, put console logging functions (LOG) in the code to print out any info you need prior to the failure.
Sometimes breakpoints just don't work. This is especially true if there are multiple plugins that have files of the same name. Breakpoints will never work after changing the code and reloading the plugin in Cuberite; you need to stop the server and start again to reenable breakpoints.
Most weirdly, sometimes Decoda reports an error, but instead of opening the current version of the file, opens up another window with old contents of the file. Watch for this, because you could overwrite your new code if you saved this file over your newer file. Fortunately enough, Decoda will always ask you for a filename before saving such a file.
Decoda stores the project in two files. The .deproj file has the file list, and should be put into version control systems. The .deuser file has the settings (debugged application etc.) and is per-user specific. This file shouldn't go to version control systems, because each user may have different paths for the debuggee.
Unfortunately for us Windows users, the Decoda project file uses Unix-lineends (CR only). This makes it problematic when checking the file into a version control system, since those usually expect windows (CRLF) lineends; I personally convert the lineends each time I edit the project file using TED Notepad.
================================================
FILE: Server/Plugins/APIDump/SettingUpLuaLanguageServer.html
================================================
Cuberite - Setting up the Lua-Language-Server (VSCode)
Setting up the Lua-Language-Server (VSCode)
This article will explain how to configure an IDE that is able to use the Lua-Language-Server. This article will show how it's done using Visual Studio Code, but it should work with any IDE that supports language servers.
About Language Servers
IDE's in the past always implemented every programming language they supported on their own, it was baked in. Because of this everyone supported different features. With language servers this all changes. A single language server can be created with a community which can be shared across any number of IDE's which support the protocol. To learn more about language servers and IDE's that support them see langserver.org
First-time setup
Visual Studio Code doesn't support Lua by default. Instead it has a marketplace where extensions can be downloaded from. In this example we're going to use the Lua extension by Sumneko who also created the language server.
Libraries
The extension doesn't know the Cuberite API by default. The extension, or rather the language server, supports the inclusion of libraries. In order to generate the definitions required by the language server you have to activate the APIDump plugin in Cuberite which is included by default but not enabled. When the plugin is enabled the entire API can be exported by using the 'api' command in the console. Once this has completed there is a new folder next to the Cuberite executable called LLS.
In order to use these definition files you need to create a settings.json file in the plugin folder you're developing for. This file should be in a folder called '.vscode'. If it doesn't exist yet you have to create it yourself. There are two important settings to configure:
Lua.runtime.version which has to be set to "Lua 5.1". Cuberite only supports Lua 5.1.
Lua.workspace.library which is an array containing all libraries used in the project. In this case it needs to point to the newly generated definition files. If you're developing your plugin using the same Cuberite instance as where you generated the definitions using the APIDump plugin you can set this to "../../LLS/cuberite/library". If your definitions are on a different location you will have to point to it yourself. Absolute paths are also supported.
After configuring your settings.json file would something like this:
After saving the settings.json file the IDE should recognize Cuberite's API.
================================================
FILE: Server/Plugins/APIDump/SettingUpZeroBrane.html
================================================
Cuberite - Setting up ZeroBrane Studio
Setting up the ZeroBrane Studio IDE
This article will explain how to set up ZeroBrane Studio, an IDE for writing Lua code, so that you can develop Cuberite plugins with the comfort of an IDE.
About ZeroBrane Studio
To quickly introduce ZeroBrane Studio, it is an IDE for writing Lua code. It has the basic features expected of an IDE - it allows you to manage groups of files as a project, you can edit multiple files in a tabbed editor, the code is syntax-highlighted. Code completion, symbol browsing, and more. It also features a Lua debugger that allows you to debug your Lua code within any application that uses Lua and can load Lua packages. It is written using the multiplatform WxWidgets toolkit, and runs on multiple platforms, including Windows, Linux and MacOS.
Here's a screenshot of a default ZBS window with the debugger stepping through the code (scaled down):
As you can see, you can set breakpoints in the code, inspect variables' values, view the Lua call-stacks.
Since ZBS is a universal Lua IDE, you need to first set it up so that it is ready for Cuberite plugin development. For that, you need to download one file, cuberite.lua from the ZBS's plugin repository. Place that file in the "packages" folder inside your ZBS's folder. Note that there are other useful plugins in the repository and you may want to have a look there later on to further customize your ZBS. To install them, simply save them into the same folder.
Next you should install the code-completion support specific for Cuberite. You should repeat this step from time to time, because the API evolves in time so new functions and classes are added to it quite often. You should have an APIDump plugin in your Cuberite installation. Enable the APIDump plugin in the server settings, it's very cheap to keep it enabled and it doesn't cost any performance during normal gameplay. To generate the code-completion support file, enter the api command into the server console. This will create a new file, "cuberite_api.lua", next to the Cuberite executable. Move that file into the "api/lua" subfolder inside your ZBS's folder. (Note that if you had the "mcserver_api.lua" file from previous versions, you should remove it)
After you download the cuberite.lua file and install the completion support, you need to restart ZBS in order for the plugin to load. If there are no errors, you should see two new items in the Project -> Lua Interpreter submenu: "Cuberite - debug mode" and "Cuberite - release mode". The only difference between the two is which filename they use to launch Cuberite - cuberite_debug(.exe) for the debug option and "cuberite(.exe)" for the release option. If you built your own Cuberite executable and you built it in debug mode, you should select the debug mode option. In all other cases, including if you downloaded the already-compiled Cuberite executable from the internet, you should select the release mode option.
For a first time user, it might be a bit overwhelming that there are no GUI settings in the ZBS, yet the IDE is very configurable. There are two files that you edit in order to change settings, either system-wide (all users of the computer share those settings) or user-wide (the settings are only for a specific user of the computer). Those files are regular Lua sources and you can quickly locate them and edit them from within the IDE itself, select Edit -> Preferences -> Settings: XYZ from the menu, with XYZ being either System or User.
There is a documentation on most of the settings on ZBS's webpage, have a look at https://studio.zerobrane.com/documentation.html, especially the Preferences section. Personally I recommend setting editor.usetabs to true and possibly adjusting the editor.tabwidth, turn off the editor.smartindent feature and for debugging the option debugger.alloweditting should be set to true unless you feel like punishing yourself.
Project management
ZBS works with projects, it considers all files and subfolder in a specific folder to be a project. There's no need for a special project file nor for adding individual files to the workspace, all files are added automatically. To open a Cuberite plugin as the project, click the triple-dot button in the Project pane, or select Project -> Project directory -> Choose... from the menu. Browse and select the Cuberite plugin's folder. ZBS will load all the files in the plugin's folder and you can start editting code.
Note that although ZBS allows you to work with subfolders in your plugins (and you should, especially with larger plugins), the current Cuberite ZBS plugin will not be able to start debugging unless you have a file open in the editor that is at the root level of the Cuberite plugin's folder.
Debugging
You are now ready to debug your code. Before doing that, though, don't forget to save your project files. If you haven't done so already, enable your plugin in the settings.ini file. If you want the program to break at a certain line, it is best to set the breakpoint before starting the program. Set the cursor on the line and hit F9 (or use menu Project -> Toggle Breakpoint) to toggle a breakpoint on that line. Finally, hit F5, or select menu Project -> Start Debugging to launch Cuberite under the debugger. The Cuberite window comes up and loads your plugin. If the window doesn't come up, inspect the Output pane in ZBS, there are usually two reasons for failure:
Your code in the currently open file has a hard syntax error. These are reported as "Compilation error" in the Output pane, double-click the line to go to the error
ZBS cannot find the Cuberite executable. Make sure you are editting a file two or three levels down the folder hierarchy from the Cuberite executable and that the Cuberite executable is named properly (cuberite[.exe] or cuberite_debug[.exe]). Also make sure you have selected the right Interpreter (menu Project -> Lua Interpreter).
Once running, if the execution hits a breakpoint, the ZBS window will come up and a green arrow is displayed next to the breakpoint line. You can step through the code using F10 (Step Into) and Shift+F10 (Step Over). You can also use the Watch window to inspect variable values, or simply hover your mouse over a variable to display its value in the tooltip. Use the Remote console pane to execute commands directly *inside* the Cuberite's plugin context.
You can also use the Project -> Break menu item to break into the debugger as soon as possible. You can also set breakpoints while the Cuberite plugin is running. Note that due to the way in which the debugger is implemented, Cuberite may execute some more Lua code before the break / breakpoint comes into effect. If Cuberite is not executing any Lua code in your plugin, it will not break until the plugin code kicks in again. This may result in missed breakpoints and delays before the Break command becomes effective. Therefore it's best to set breakpoints before running the program, or while the program is waiting in another breakpoint.
A plugin may need to manipulate data in arbitrary chunks, and it needs a way to make the server
guarantee that the chunks are available in memory.
The problem
Usually when plugins want to manipulate larger areas of world data, they need to make sure that the
server has the appropriate chunks loaded in the memory. When the data being manipulated can be further
away from the connected players, or the data is being manipulated from a console handler, there is a
real chance that the chunks are not loaded.
This gets even more important when using the cBlockArea class for reading
and writing. Those functions will fail when any of the required chunks aren't valid. This means that
either the block area has incomplete data (Read() failed) or incomplete data has been written to the
world (Write() failed). Recovery from this is near impossible - you can't simply read or write again
later, because the world may have changed in the meantime.
The solution
The naive solution would be to monitor chunk loads and unloads, and postpone the operations until all
the chunks are available. This would be quite ineffective and also very soon it would become very
difficult to maintain, if there were multiple code paths requiring this handling.
An alternate approach has been implemented, accessible through a single (somewhat hidden) function
call: cWorld:ChunkStay(). All that this call basically does is, it tells the
server "Load these chunks for me, and call this callback function once you have them all." And the
server does exactly that - it remembers the callback and asks the world loader / generator to provide
the chunks. Once the chunks become available, it calls the callback function for the plugin.
There are a few gotcha-s, though. If the code that was requesting the read or write had access to some
of the volatile objects, such as cPlayer or
cEntity objects, those cannot be accessed by the callback anymore, because
they may have become invalid in the meantime - the player may have disconnected, the entity may have
despawned. So the callback must use the longer way to access such objects, such as calling
cWorld:DoWithEntityByID() or
cWorld:DoWithPlayer().
The example
As a simple example, consider a theoretical plugin that allows a player to save the immediate
surroundings of the spawn into a schematic file. The player issues a command to initiate the save, and
the plugin reads a 50 x 50 x 50 block area around the spawn into a cBlockArea and saves it on the disk
as "_spawn.schematic". When it's done with the saving, it wants to send a message to the
player to let them know the command has succeeded.
The first attempt shows the naive approach. It simply reads the block area and saves it, then sends the
message. I'll repeat once more, this code is the wrong way to do it!
function HandleCommandSaveSpawn(a_Split, a_Player)
-- Get the coords for the spawn:
local SpawnX = a_Player:GetWorld():GetSpawnX()
local SpawnY = a_Player:GetWorld():GetSpawnY()
local SpawnZ = a_Player:GetWorld():GetSpawnZ()
local Bounds = cCuboid(SpawnX - 25, SpawnY - 25, SpawnZ - 25, SpawnX + 25, SpawnY + 25, SpawnZ + 25)
Bounds:ClampY(0, 255)
-- Read the area around spawn into a cBlockArea, save to file:
local Area = cBlockArea()
local FileName = a_Player:GetName() .. "_spawn.schematic"
Area:Read(a_Player:GetWorld(), Bounds, cBlockArea.baTypes + cBlockArea.baMetas)
Area:SaveToSchematicFile(FileName)
-- Notify the player:
a_Player:SendMessage(cCompositeChat("The spawn has been saved", mtInfo))
return true
end
Now if the player goes exploring far and uses the command to save their spawn, the chunks aren't
loaded, so the BlockArea reading fails, the BlockArea contains bad data. Note that the plugin fails to
do any error checking and if the area isn't read from the world, it happily saves the incomplete data
and says "hey, everything's right", althought it has just trashed any previous backup of the spawn
schematic with nonsense data.
The following script uses the ChunkStay method to alleviate chunk-related problems. This is the
right way of doing it:
function HandleCommandSaveSpawn(a_Split, a_Player)
-- Get the coords for the spawn:
local SpawnX = a_Player:GetWorld():GetSpawnX()
local SpawnY = a_Player:GetWorld():GetSpawnY()
local SpawnZ = a_Player:GetWorld():GetSpawnZ()
local Bounds = cCuboid(SpawnX - 25, SpawnY - 25, SpawnZ - 25, SpawnX + 25, SpawnY + 25, SpawnZ + 25)
Bounds:ClampY(0, 255)
-- Get a list of chunks that we need loaded:
local MinChunkX = math.floor((SpawnX - 25) / 16)
local MaxChunkX = math.ceil ((SpawnX + 25) / 16)
local MinChunkZ = math.floor((SpawnZ - 25) / 16)
local MaxChunkZ = math.ceil ((SpawnZ + 25) / 16)
local Chunks = {}
for x = MinChunkX, MaxChunkX do
for z = MinChunkZ, MaxChunkZ do
table.insert(Chunks, {x, z})
end
end -- for x
-- Store the player's name and world to use in the callback, because the a_Player object may no longer be valid:
local PlayerName = a_Player:GetName()
local World = a_Player:GetWorld()
-- This is the callback that is executed once all the chunks are loaded:
local OnAllChunksAvailable = function()
-- Read the area around spawn into a cBlockArea, save to file:
local Area = cBlockArea()
local FileName = PlayerName .. "_spawn.schematic"
if (Area:Read(World, Bounds, cBlockArea.baTypes + cBlockArea.baMetas)) then
Area:SaveToSchematicFile(FileName)
Msg = cCompositeChat("The spawn has been saved", mtInfo)
else
Msg = cCompositeChat("Cannot save the spawn", mtFailure)
end
-- Notify the player:
-- Note that we cannot use a_Player here, because it may no longer be valid (if the player disconnected before the command completes)
World:DoWithPlayer(PlayerName,
function (a_CBPlayer)
a_CBPlayer:SendMessage(Msg)
end
)
end
-- Ask the server to load our chunks and notify us once it's done:
World:ChunkStay(Chunks, nil, OnAllChunksAvailable)
-- Note that code here may get executed before the callback is called!
-- The ChunkStay says "once you have the chunks", not "wait until you have the chunks"
-- So you can't notify the player here, because the saving needn't have occurred yet.
return true
end
Note that this code does its error checking of the Area:Read() function, and it will not overwrite the
previous file unless it actually has the correct data. If you're wondering how the reading could fail
when we've got the chunks loaded, there's still the issue of free RAM - if the memory for the area
cannot be allocated, it cannot be read even with all the chunks present. So we still do need that
check.
The conclusion
Although it makes the code a little bit longer and is a bit more difficult to grasp at first, the
ChunkStay is a useful technique to add to your repertoire. It is to be used whenever you need access to
chunks that may potentially be inaccessible, and you really need the data.
Possibly the biggest hurdle in using the ChunkStay is the fact that it does its work in the
background, thus invalidating all cPlayer and cEntity objects your function may hold, so you need to
re-acquire them from their IDs and names. This is the penalty for using multi-threaded code.
================================================
FILE: Server/Plugins/APIDump/WebWorldThreads.html
================================================
Cuberite - Webserver vs World threads
Webserver vs World threads
This article will explain the threading issues that arise between the webserver and world threads are of concern to plugin authors.
Generally, plugins that provide webadmin pages should be quite careful about their interactions. Most operations on Cuberite objects requires synchronization, that Cuberite provides automatically and transparently to plugins - when a block is written, the chunkmap is locked, or when an entity is being manipulated, the entity list is locked. Each plugin also has a mutex lock, so that only one thread at a time may be executing plugin code.
This locking can be a source of deadlocks for plugins that are not written carefully.
Example scenario
Consider the following example. A plugin provides a webadmin page that allows the admin to kick players off the server. When the admin presses the "Kick" button, the plugin calls cWorld:DoWithPlayer() with a callback to kick the player. Everything seems to be working fine now.
A new feature is developed in the plugin, now the plugin adds a new in-game command so that the admins can kick players while they're playing the game. The plugin registers a command callback with cPluginManager.AddCommand(). Now there are problems bound to happen.
Suppose that two admins are in, one is using the webadmin and the other is in-game. Both try to kick a player at the same time. The webadmin locks the plugin, so that it can execute the plugin code, but right at this moment the OS switches threads. The world thread locks the world so that it can access the list of in-game commands, receives the in-game command, it tries to lock the plugin. The plugin is already locked, so the world thread is put on hold. After a while, the webadmin thread is woken up again and continues processing. It tries to lock the world so that it can traverse the playerlist, but the lock is already held by the world thread. Now both threads are holding one lock each and trying to grab the other lock, and are therefore deadlocked.
How to avoid the deadlock
There are two main ways to avoid such a deadlock. The first approach is using tasks: Everytime you need to execute a task inside a world, instead of executing it, queue it, using cWorld:QueueTask(). This handy utility can will call the given function inside the world's TickThread, thus eliminating the deadlock, because now there's only one thread. However, this approach will not let you get data back. You cannot query the player list, or the entities, or anything - because when the task runs, the webadmin page has already been served to the browser.
To accommodate this, you'll need to use the second approach - preparing and caching data in the tick thread, possibly using callbacks. This means that the plugin will have global variables that will store the data, and update those variables when the data changes; then the webserver thread will only read those variables, instead of calling the world functions. For example, if a webpage was to display the list of currently connected players, the plugin should maintain a global variable, g_WorldPlayers, which would be a table of worlds, each item being a list of currently connected players. The webadmin handler would read this variable and create the page from it; the plugin would use HOOK_PLAYER_JOINED and HOOK_DISCONNECT to update the variable.
What to avoid
Now that we know what the danger is and how to avoid it, how do we know if our code is susceptible?
The general rule of thumb is to avoid calling any functions that read or write lists of things in the webserver thread. This means most ForEach() and DoWith() functions. Only cRoot:ForEachWorld() is safe - because the list of worlds is not expected to change, so it is not guarded by a mutex. Getting and setting world's blocks is, naturally, unsafe, as is calling other plugins, or creating entities.
Example
The Core has the facility to kick players using the web interface. It used the following code for the kicking (inside the webadmin handler):
local KickPlayerName = Request.Params["players-kick"]
local FoundPlayerCallback = function(Player)
if (Player:GetName() == KickPlayerName) then
Player:GetClientHandle():Kick("You were kicked from the game!")
end
end
cRoot:Get():FindAndDoWithPlayer(KickPlayerName, FoundPlayerCallback)
The cRoot:FindAndDoWithPlayer() is unsafe and could have caused a deadlock. The new solution is queue a task; but since we don't know in which world the player is, we need to queue the task to all worlds:
cRoot:Get():ForEachWorld( -- For each world...
function(World)
World:QueueTask( -- ... queue a task...
function(a_World)
a_World:DoWithPlayer(KickPlayerName, -- ... to walk the playerlist...
function (a_Player)
a_Player:GetClientHandle():Kick("You were kicked from the game!") -- ... and kick the player
end
)
end
)
end
)
This article will explain how to write a basic plugin. It details basic requirements
for a plugin, explains how to register a hook and bind a command, and gives plugin
standards details.
Let us begin. In order to begin development, we must firstly obtain a compiled copy
of Cuberite, and make sure that the Core plugin is within the Plugins folder, and activated.
Core handles much of the Cuberite end-user experience and gameplay will be very bland without it.
Creating the basic template
Plugins are written in Lua. Therefore, create a new Lua file. You can create as many files as you wish, with
any filename - Cuberite bungs them all together at runtime, however, let us create a file called main.lua for now.
Format it like so:
PLUGIN = nil
function Initialize(Plugin)
Plugin:SetName("NewPlugin")
Plugin:SetVersion(1)
-- Hooks
PLUGIN = Plugin -- NOTE: only needed if you want OnDisable() to use GetName() or something like that
-- Command Bindings
LOG("Initialised version " .. Plugin:GetVersion())
return true
end
function OnDisable()
LOG("Shutting down...")
end
Now for an explanation of the basics.
function Initialize is called on plugin startup. It is the place where the plugin is set up.
Plugin:SetName sets the name of the plugin.
Plugin:SetVersion sets the revision number of the plugin. This must be an integer.
LOG logs to console a message, in this case, it prints that the plugin was initialised. This will add a prefix with the name of your plugin.
The PLUGIN variable just stores this plugin's object, so GetName() can be called in OnDisable (as no Plugin parameter is passed there, contrary to Initialize).
This global variable is only needed if you want to know the plugin details (name, etc.) when shutting down.
function OnDisable is called when the plugin is disabled, commonly when the server is shutting down. Perform cleanup and logging here.
Be sure to return true for this function, else Cuberite thinks you plugin had failed to initialise and prints a stacktrace with an error message.
Registering hooks
Hooks are things that Cuberite calls when an internal event occurs. For example, a hook is fired when a player places a block, moves,
logs on, eats, and many other things. For a full list, see the API documentation.
A hook can be either informative or overridable. In any case, returning false will not trigger a response, but returning true will cancel
the hook and prevent it from being propagated further to other plugins. An overridable hook simply means that there is visible behaviour
to a hook's cancellation, such as a chest being prevented from being opened. There are some exceptions to this where only changing the value the
hook passes has an effect, and not the actual return value, an example being the HOOK_KILLING hook. See the API docs for details.
To register a hook, insert the following code template into the "-- Hooks" area in the previous code example.
cPluginManager.AddHook registers the hook. The hook name is the second parameter. See the previous API documentation link for a list of all hooks.
What about the third parameter, you ask? Well, it is the name of the function that Cuberite calls when the hook fires. It is in this
function that you should handle or cancel the hook.
So in total, this is a working representation of what we have so far covered.
function Initialize(Plugin)
Plugin:SetName("DerpyPlugin")
Plugin:SetVersion(1)
cPluginManager.AddHook(cPluginManager.HOOK_PLAYER_MOVING, OnPlayerMoving)
LOG("Initialised " .. Plugin:GetName() .. " v." .. Plugin:GetVersion())
return true
end
function OnPlayerMoving(Player) -- See API docs for parameters of all hooks
return true -- Prohibit player movement, see docs for whether a hook is cancellable
end
So, that code stops the player from moving. Not particularly helpful, but yes :P. Note that ALL documentation is available
on the main API docs page, so if ever in doubt, go there.
Binding a command
Format
So now we know how to hook into Cuberite, how do we bind a command, such as /explode, for a player to type? That is more complicated.
We firstly add this template to the "-- Command bindings" section of the initial example:
-- ADD THIS IF COMMAND DOES NOT REQUIRE A PARAMETER (/explode)
cPluginManager.BindCommand("/commandname", "permissionnode", FunctionToCall, " - Description of command")
-- ADD THIS IF COMMAND DOES REQUIRE A PARAMETER (/explode Notch)
cPluginManager.BindCommand("/commandname", "permissionnode", FunctionToCall, " ~ Description of command and parameter(s)")
What does it do, and why are there two?
PluginManager:BindCommand binds a command. It takes the command name (with a slash), the permission a player needs to execute the command, the function
to call when the command is executed, and a description of the command.
The command name is pretty self explanatory. The permission node is basically just a string that the player's group needs to have, so you can have anything in there,
though we recommend a style such as "derpyplugin.explode". The function to call is like the ones with Hooks, but with some fixed parameters which we will come on to later,
and the description is a description of the command which is shown when "/help" is typed.
So why are there two? Standards. A plugin that accepts a parameter MUST use a format for the description of " ~ Description of command and parms"
whereas a command that doesn't accept parameters MUST use " - Description of command" instead. Be sure to put a space before the tildes or dashes.
Additionally, try to keep the description brief and on one line on the client.
Parameters
What parameters are in the function Cuberite calls when the command is executed? A 'Split' array and a 'Player' object.
The Split Array
The Split array is an array of all text submitted to the server, including the actual command. Cuberite automatically splits the text into the array,
so plugin authors do not need to worry about that. An example of a Split array passed for the command, "/derp zubby explode" would be:
   The total amount of parameters passed were: 3 (#Split)
The Player Object and sending them messages
The Player object is basically a pointer to the player that has executed the command. You can do things with them, but most common is sending
a message. Again, see the API documentation for fuller details. But, you ask, how do we send a message to the client?
There are dedicated functions used for sending a player formatted messages. By format, I refer to coloured prefixes/coloured text (depending on configuration)
that clearly categorise what type of message a player is being sent. For example, an informational message has a yellow coloured [INFO] prefix, and a warning message
has a rose coloured [WARNING] prefix. A few of the most used functions are listed here, but see the API docs for more details. Look in the cRoot, cWorld, and cPlayer sections
for functions that broadcast to the entire server, the whole world, and a single player, respectively.
-- Format: §yellow[INFO] §white%text% (yellow [INFO], white text following it)
-- Use: Informational message, such as instructions for usage of a command
Player:SendMessageInfo("Usage: /explode [player]")
-- Format: §green[INFO] §white%text% (green [INFO] etc.)
-- Use: Success message, like when a command executes successfully
Player:SendMessageSuccess("Notch was blown up!")
-- Format: §rose[INFO] §white%text% (rose coloured [INFO] etc.)
-- Use: Failure message, like when a command was entered correctly but failed to run, such as when the destination player wasn't found in a /tp command
Player:SendMessageFailure("Player Salted was not found")
Those are the basics. If you want to output text to the player for a reason other than the three listed above, and you want to colour the text, simply concatenate
"cChatColor.*colorhere*" with your desired text, concatenate being "..". See the API docs for more details of all colours, as well as details on logging to console with
LOG("Text").
Final example and conclusion
So, a working example that checks the validity of a command, and blows up a player, and also refuses pickup collection to players with >100ms ping.
function Initialize(Plugin)
Plugin:SetName("DerpyPluginThatBlowsPeopleUp")
Plugin:SetVersion(9001)
cPluginManager.BindCommand("/explode", "derpyplugin.explode", Explode, " ~ Explode a player");
cPluginManager:AddHook(cPluginManager.HOOK_COLLECTING_PICKUP, OnCollectingPickup)
LOG("Initialised " .. Plugin:GetName() .. " v." .. Plugin:GetVersion())
return true
end
function Explode(Split, Player)
if (#Split ~= 2) then
-- There was more or less than one argument (excluding the "/explode" bit)
-- Send the proper usage to the player and exit
Player:SendMessage("Usage: /explode [playername]")
return true
end
-- Create a callback ExplodePlayer with parameter Explodee, which Cuberite calls for every player on the server
local HasExploded = false
local ExplodePlayer = function(Explodee)
-- If the player name matches exactly
if (Explodee:GetName() == Split[2]) then
-- Create an explosion of force level 2 at the same position as they are
-- see API docs for further details of this function
Player:GetWorld():DoExplosionAt(2, Explodee:GetPosX(), Explodee:GetPosY(), Explodee:GetPosZ(), false, esPlugin)
Player:SendMessageSuccess(Split[2] .. " was successfully exploded")
HasExploded = true;
return true -- Signalize to Cuberite that we do not need to call this callback for any more players
end
end
-- Tell Cuberite to loop through all players and call the callback above with the Player object it has found
cRoot:Get():FindAndDoWithPlayer(Split[2], ExplodePlayer)
if not(HasExploded) then
-- We have not broken out so far, therefore, the player must not exist, send failure
Player:SendMessageFailure(Split[2] .. " was not found")
end
return true
end
function OnCollectingPickup(Player, Pickup) -- Again, see the API docs for parameters of all hooks. In this case, it is a Player and Pickup object
if (Player:GetClientHandle():GetPing() > 100) then -- Get ping of player, in milliseconds
return true -- Discriminate against high latency - you don't get drops :D
else
return false -- You do get the drops! Yay~
end
end
Make sure to read the comments for a description of what everything does. Also be sure to return true for all command handlers, unless you want Cuberite to print out an "Unknown command" message
when the command gets executed :P. Make sure to follow standards - use CoreMessaging.lua functions for messaging, dashes for no parameter commands and tildes for vice versa,
and finally, the API documentation is your friend!
Happy coding ;)
================================================
FILE: Server/Plugins/APIDump/_preload.lua
================================================
-- _preload.lua
-- First thing executed when the plugin loads. Replaces the global environment (_G) with an empty table
-- with __index set to the old environment. This way any function or variable that is created globally by the plugin
-- won't be reported as new or undocumented.
local newEnv, oldEnv = {}, _G
local setmetatable = setmetatable
for k, v in pairs(_G) do
newEnv[k] = v;
oldEnv[k] = nil;
end
_G = setmetatable(oldEnv, {__index = newEnv});
================================================
FILE: Server/Plugins/APIDump/lang-lua.js
================================================
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
================================================
FILE: Server/Plugins/APIDump/lualanguageserver.lua
================================================
-- lualanguageserver.lua
-- Implements the code for exporting definition files which can be used by a Lua-Language-Server
--- Cleans up the name of a parameter so it can be used in a definition file
--- Removes anything containing brackets and removes dashes and spaces.
local function CleanupParameterName(paramName)
paramName = paramName:gsub("[%- ]", "")
:gsub("<.->.-", '');
return paramName
end
--- Cleans up a description so it can be used in a definition file.
--- Uses the standard cleanup function but also removes any newlines.
local function CleanUpDescriptionLLS(a_Desc)
return CleanUpDescription(a_Desc)
:gsub("\n", " ")
end
--- Writes a list of methods into the specified file in LLS format
local function WriteLLSMethods(f, a_NameSpace, a_Methods)
for _, func in ipairs(a_Methods or {}) do
f:write("\n---\n")
f:write("---", CleanUpDescriptionLLS(func.Notes or ""), "\n");
f:write("---\n");
local parameterList = {}
if (func.Params) then
local paramNr = 0;
for _, param in ipairs(func.Params) do
paramNr = paramNr + 1;
local paramName = CleanupParameterName(param.Name or ("param" .. paramNr));
if (paramName:find("%.%.%.")) then
paramName = "..."
end
table.insert(parameterList, paramName)
if (param.IsOptional and paramName ~= "...") then
paramName = paramName .. "?"
end
local paramType = param.Type;
if (paramType:find("%#")) then
paramType = paramType:match("%#(.+)");
end
f:write("---@param ", paramName, " ", paramType, "\n");
end
f:write("---\n");
end
if (func.Returns) then
for _, ret in ipairs(func.Returns) do
f:write("---@return ", ret.Type, "\n");
end
f:write("---\n");
end
local name = func.Name:find("constructor") and "__call" or func.Name;
name = name:find("operator") and "__meta" or name
local parameters = table.concat(parameterList, ", ");
f:write("function ")
if (a_NameSpace) then
f:write(a_NameSpace, ":")
end
f:write(name, "(", parameters, ") end\n\n");
end
end
--- Writes the list of constants. If the value is an enum the value is set from that enum.
--- This is a bit of a hack because Cuberite exports allot of enums as a constant inside
--- a class or global but documents them as if they are in their own table.
local function WriteLLSConstants(f, a_NameSpace, a_Constants, a_Enum)
if (not a_Constants) then
return;
end
local prefix = ""
if (a_NameSpace) then
prefix = a_NameSpace .. ".";
end
for _, const in pairs(a_Constants) do
f:write(prefix)
if (a_Enum) then
f:write(const.Name, " = ", prefix, a_Enum, ".", const.Name, "\n")
else
local constValue = tostring(const.Value):match("[%w%d]+") or "nil";
f:write(const.Name, " = ", constValue, "\n")
end
end
end
--- Writes a list of constants into the specified file in LLS format
local function WriteLLSEnums(f, a_NameSpace, a_ConstantGroups)
if (not a_ConstantGroups) then
return;
end
local prefix = "";
if (a_NameSpace) then
prefix = a_NameSpace .. "."
end
for _, group in pairs(a_ConstantGroups) do
f:write("---@enum ", group.Name, "\n");
f:write(prefix, group.Name, " = {\n")
for _, const in pairs(group.Constants) do
local constValue = tostring(const.Value):match("[%w%d]+") or "nil";
f:write("\t", const.Name, " = ", constValue, ",\n")
end
f:write("}\n")
WriteLLSConstants(f, a_NameSpace, group.Constants, group.Name);
end
end
--- Writes all the fields which a class has.
---@param f file*
---@param a_Variables table
local function WriteLLSVariables(f, a_Variables)
for _, variable in ipairs(a_Variables or {}) do
f:write("---@field ", variable.Name)
if (variable.Type) then
local type = variable.Type:match("%w+")
f:write(" ", type)
end
if (variable.Notes) then
f:write(" ", variable.Notes)
end
f:write("\n");
end
end
--- Writes one Cuberite class definition into the specified file in LLS format
local function WriteLLSClass(a_Class)
assert(type(a_Class) == "table")
local f = io.open("LLS/cuberite/library/" .. a_Class.Name .. ".lua", "w");
f:write("---@meta\n");
f:write("\n\n---\n---The ", a_Class.Name, " namespace\n");
local inherit = "";
if (a_Class.Inherits) then
inherit = ": " .. a_Class.Inherits.Name
end
f:write("---@class ", a_Class.Name, inherit, "\n");
WriteLLSVariables(f, a_Class.Variables);
for _, func in pairs(a_Class.Functions or {}) do
if (func.Name:find("constructor")) then
local parameters = {};
for _, param in ipairs(func.Parameters or {}) do
table.insert(parameters, param.Type);
end
f:write("---@operator call(", table.concat(parameters, ","), "):" .. a_Class.Name, "\n")
end
end
f:write("", a_Class.Name, " = {}\n");
-- Export methods and constants:
WriteLLSEnums(f, a_Class.Name, a_Class.ConstantGroups);
WriteLLSConstants(f, a_Class.Name, a_Class.Constants);
WriteLLSMethods(f, a_Class.Name, a_Class.Functions);
f:close();
end
--- Dumps the entire API table into a file in the LLS format
function DumpAPILLS(a_API)
LOG("Dumping LLS API description...")
cFile:CreateFolderRecursive("LLS/cuberite/library");
-- Export each class except Globals, store those aside:
local Globals
for _, cls in ipairs(a_API) do
if (cls.Name ~= "Globals") then
WriteLLSClass(cls)
else
Globals = cls
end
end
-- Export the globals:
if (Globals) then
local f = io.open("LLS/cuberite/library/Globals.lua", "w");
f:write("---@meta\n\n");
WriteLLSMethods(f, nil, Globals.Functions)
WriteLLSEnums(f, nil, Globals.ConstantGroups)
f:close();
end
-- Finish the file:
LOG("LLS API dumped...")
end
================================================
FILE: Server/Plugins/APIDump/main.css
================================================
html
{
background-color: #C0C0C0;
}
table
{
background-color: #fff;
border-spacing: 0px;
border-collapse: collapse;
border-color: gray;
}
tr
{
display: table-row;
vertical-align: inherit;
border-color: inherit;
}
td, th
{
display: table-cell;
vertical-align: inherit;
padding: 3px;
border: 1px solid #ccc;
}
pre
{
border: 1px solid #ccc;
background-color: #eee;
-moz-tab-size: 2;
-o-tab-size: 2;
-webkit-tab-size: 2;
-ms-tab-size: 2;
tab-size: 2;
}
body
{
min-width: 400px;
max-width: 1200px;
width: 95%;
margin: 10px auto;
background-color: white;
border: 4px #FF8C00 solid;
border-radius: 20px;
font-family: Calibri, Trebuchet MS;
}
header
{
text-align: center;
font-family: Segoe UI Light, Helvetica;
}
footer
{
text-align: center;
font-family: Segoe UI Light, Helvetica;
}
#content, #timestamp
{
padding: 0px 25px 25px 25px;
}
================================================
FILE: Server/Plugins/APIDump/main_APIDump.lua
================================================
-- main.lua
-- Implements the plugin entrypoint (in this case the entire plugin)
-- Global variables:
local g_Plugin = nil
local g_PluginFolder = ""
local g_Stats = {}
local g_TrackedPages = {}
local function LoadAPIFiles(a_Folder, a_DstTable)
assert(type(a_Folder) == "string")
assert(type(a_DstTable) == "table")
local Folder = g_PluginFolder .. a_Folder;
for _, fnam in ipairs(cFile:GetFolderContents(Folder)) do
local FileName = Folder .. fnam;
-- We only want .lua files from the folder:
if (cFile:IsFile(FileName) and fnam:match(".*%.lua$")) then
local TablesFn = assert(loadfile(FileName))
local Tables = TablesFn()
if (type(Tables) ~= "table") then
error("Cannot load API descriptions from " .. FileName .. ", returned object is not a table (" .. type(Tables) .. ").")
break
end
for k, cls in pairs(Tables) do
if (a_DstTable[k]) then
-- The class is documented in two files, warn and store into a file (so that CIs can mark build as failure):
LOGWARNING(string.format(
"Warning: class %s is documented at two places, the documentation in file %s will overwrite the previously loaded one!",
k, FileName
))
local f = io.open("DuplicateDocs.txt", "a")
f:write(k, "\t", FileName)
f:close()
end
a_DstTable[k] = cls
end
end -- if (is lua file)
end -- for fnam - Folder[]
end
--- Returns the API currently detected from the global environment
local function CreateAPITables()
--[[
We want an API table of the following shape:
local API = {
{
Name = "cCuboid",
Functions = {
{Name = "Sort"},
{Name = "IsInside"}
},
Constants = {
},
Variables = {
},
Descendants = {}, -- Will be filled by ReadDescriptions(), array of class APIs (references to other member in the tree)
},
{
Name = "cBlockArea",
Functions = {
{Name = "Clear"},
{Name = "CopyFrom"},
...
},
Constants = {
{Name = "baTypes", Value = 0},
{Name = "baMetas", Value = 1},
...
},
Variables = {
},
...
},
cCuboid = {} -- Each array item also has the map item by its name
};
local Globals = {
Functions = {
...
},
Constants = {
...
}
};
--]]
local Globals = {Functions = {}, Constants = {}, Variables = {}, Descendants = {}};
local API = {};
local function Add(a_APIContainer, a_ObjName, a_ObjValue)
if (type(a_ObjValue) == "function") then
table.insert(a_APIContainer.Functions, {Name = a_ObjName});
elseif (
(type(a_ObjValue) == "number") or
(type(a_ObjValue) == "string")
) then
table.insert(a_APIContainer.Constants, {Name = a_ObjName, Value = a_ObjValue});
end
end
local function ParseClass(a_ClassName, a_ClassObj)
local res = {Name = a_ClassName, Functions = {}, Constants = {}, Variables = {}, Descendants = {}};
-- Add functions and constants:
for i, v in pairs(a_ClassObj) do
Add(res, i, v);
end
-- Member variables:
local GetField = a_ClassObj[".get"];
local SetField = a_ClassObj[".set"] or {};
if ((GetField ~= nil) and (type(GetField) == "table")) then
for k, v in pairs(GetField) do
if ((SetField[k] == nil) and ((type(v) ~= "table") or (v["__newindex"] == nil))) then
-- It is a read-only variable or array, add it as a constant:
table.insert(res.Constants, {Name = k, Value = ""});
else
-- It is a read-write variable or array, add it as a variable:
table.insert(res.Variables, { Name = k });
end
end
end
return res;
end
for i, v in pairs(getmetatable(_G).__index) do
if (
(v ~= _G) and -- don't want the global namespace
(v ~= _G.packages) and -- don't want any packages
(v ~= _G[".get"])
) then
if (type(v) == "table") then
local cls = ParseClass(i, v)
table.insert(API, cls);
API[cls.Name] = cls
else
Add(Globals, i, v);
end
end
end
-- Remove the built-in Lua libraries:
API.debug = nil
API.io = nil
API.string = nil
API.table = nil
return API, Globals;
end
--- Returns the timestamp in HTML format
-- The timestamp will be inserted to all generated HTML files
local function GetHtmlTimestamp()
return string.format("
Generated by APIDump on %s, Build ID %s, Commit %s
",
os.date("%Y-%m-%d %H:%M:%S"),
cRoot:GetBuildID(), cRoot:GetBuildCommitID()
)
end
--- Writes links to articles in a bullet format into the output HTML file
-- f is the output file stream
-- a_APIDesc is the API description as read from APIDesc.lua
local function WriteArticles(f, a_APIDesc)
f:write([[
The following articles provide various extra information on plugin development
]]);
for _, extra in ipairs(a_APIDesc.ExtraPages) do
local SrcFileName = g_PluginFolder .. "/" .. extra.FileName;
if (cFile:IsFile(SrcFileName)) then
local DstFileName = "API/" .. extra.FileName;
cFile:Delete(DstFileName);
cFile:Copy(SrcFileName, DstFileName);
f:write("
");
end
-- Make a link out of anything with the special linkifying syntax {{link|title}}
local function LinkifyString(a_String, a_Referrer, a_API)
assert(a_Referrer ~= nil);
assert(a_Referrer ~= "");
-- If the string is a known class, return a direct link to it:
if (a_API[a_String]) then
return "" .. a_String .. ""
end
--- Adds a page to the list of tracked pages (to be checked for existence at the end)
local function AddTrackedPage(a_PageName)
local Pg = (g_TrackedPages[a_PageName] or {});
table.insert(Pg, a_Referrer);
g_TrackedPages[a_PageName] = Pg;
end
--- Creates the HTML for the specified link and title
local function CreateLink(Link, Title)
if ((Link:sub(1, 7) == "http://") or (Link:sub(1, 8) == "https://")) then
-- The link is a full absolute URL, do not modify, do not track:
return "" .. Title .. "";
end
local idxHash = Link:find("#");
if (idxHash ~= nil) then
-- The link contains an anchor:
if (idxHash == 1) then
-- Anchor in the current page, no need to track:
return "" .. Title .. "";
end
-- Anchor in another page:
local PageName = Link:sub(1, idxHash - 1);
AddTrackedPage(PageName);
return "" .. Title .. "";
end
-- Link without anchor:
AddTrackedPage(Link);
return "" .. Title .. "";
end
-- Linkify the strings using the CreateLink() function:
local txt = a_String:gsub("{{([^|}]*)|([^}]*)}}", CreateLink) -- {{link|title}}
txt = txt:gsub("{{([^|}]*)}}", -- {{LinkAndTitle}}
function(LinkAndTitle)
local idxHash = LinkAndTitle:find("#");
if (idxHash ~= nil) then
-- The LinkAndTitle contains a hash, remove the hashed part from the title:
return CreateLink(LinkAndTitle, LinkAndTitle:sub(1, idxHash - 1));
end
return CreateLink(LinkAndTitle, LinkAndTitle);
end
);
return txt;
end
local function WriteHtmlHook(a_Hook, a_HookNav, a_API)
local fnam = "API/" .. a_Hook.DefaultFnName .. ".html";
local f, error = io.open(fnam, "w");
if (f == nil) then
LOG("Cannot write \"" .. fnam .. "\": \"" .. error .. "\".");
return;
end
local HookName = a_Hook.DefaultFnName;
f:write([[
Cuberite API - ]], HookName, [[ Hook
The default name for the callback function is ");
f:write(a_Hook.DefaultFnName, ". It has the following signature:\n");
f:write("
function My", HookName, "(");
if (a_Hook.Params == nil) then
a_Hook.Params = {};
end
for i, param in ipairs(a_Hook.Params) do
if (i > 1) then
f:write(", ");
end
f:write(param.Name);
end
f:write(")
\n
Parameters:
\n
Name
Type
Notes
\n");
for _, param in ipairs(a_Hook.Params) do
f:write("
", param.Name, "
", LinkifyString(param.Type, HookName, a_API), "
", LinkifyString(param.Notes, HookName, a_API), "
\n");
end
f:write("
\n
" .. LinkifyString(a_Hook.Returns or "", HookName, a_API) .. "
\n\n");
local Examples = a_Hook.CodeExamples or {};
for _, example in ipairs(Examples) do
f:write("
", (example.Title or "missing Title"), "
\n");
f:write("
", (example.Desc or "missing Desc"), "
\n");
f:write("
", (example.Code or "missing Code"), "\n
\n\n");
end
f:write([[
]])
f:write(GetHtmlTimestamp())
f:write([[]])
f:close();
end
--- Writes all hooks into HTML output file as links in a sorted bullet list, as well as the individual hook HTML files
-- f is the output HTML index file
-- a_Hooks is an array of hook descriptions
-- a_UndocumentedHooks is a table that will be filled with the names of hooks that are not documented
-- a_HookNav is the HTML code for the menu on the left that is constant for all hook pages
local function WriteHooks(f, a_Hooks, a_UndocumentedHooks, a_HookNav, a_API)
f:write([[
A plugin can register to be called whenever an "interesting event" occurs. It does so by calling
cPluginManager's AddHook() function and implementing a callback
function to handle the event.
A plugin can decide whether it will let the event pass through to the rest of the plugins, or hide it
from them. This is determined by the return value from the hook callback function. If the function
returns false or no value, the event is propagated further. If the function returns true, the processing
is stopped, no other plugin receives the notification (and possibly Cuberite disables the default
behavior for the event). See each hook's details to see the exact behavior.
Hook name
Called when
]]);
for _, hook in ipairs(a_Hooks) do
if (hook.DefaultFnName == nil) then
-- The hook is not documented yet
f:write("
\n");
WriteHtmlHook(hook, a_HookNav, a_API);
end
end
f:write([[
]]);
end
--- Fills the API in a_API table with descriptions from a_Desc
-- a_API is the API detected from current global environment
-- a_Desc is the description loaded from APIDesc.lua and Classes files
local function ReadDescriptions(a_API, a_Desc)
-- Returns true if the class of the specified name is to be ignored
local function IsClassIgnored(a_ClsName)
if (a_Desc.IgnoreClasses == nil) then
return false;
end
for _, name in ipairs(a_Desc.IgnoreClasses) do
if (a_ClsName:match(name)) then
return true;
end
end
return false;
end
-- Returns true if the function is to be ignored
local function IsFunctionIgnored(a_ClassName, a_FnName)
if (a_Desc.IgnoreFunctions == nil) then
return false;
end
if (((a_Desc.Classes[a_ClassName] or {}).Functions or {})[a_FnName] ~= nil) then
-- The function is documented, don't ignore
return false;
end
local FnName = a_ClassName .. "." .. a_FnName;
for _, name in ipairs(a_Desc.IgnoreFunctions) do
if (FnName:match(name)) then
return true;
end
end
return false;
end
-- Returns true if the constant (specified by its fully qualified name) is to be ignored
local function IsConstantIgnored(a_CnName)
if (a_Desc.IgnoreConstants == nil) then
return false;
end;
for _, name in ipairs(a_Desc.IgnoreConstants) do
if (a_CnName:match(name)) then
return true;
end
end
return false;
end
-- Returns true if the member variable (specified by its fully qualified name) is to be ignored
local function IsVariableIgnored(a_VarName)
if (a_Desc.IgnoreVariables == nil) then
return false;
end;
for _, name in ipairs(a_Desc.IgnoreVariables) do
if (a_VarName:match(name)) then
return true;
end
end
return false;
end
-- Remove ignored classes from a_API:
local APICopy = {};
for _, cls in ipairs(a_API) do
if not(IsClassIgnored(cls.Name)) then
table.insert(APICopy, cls);
end
end
for i = 1, #a_API do
a_API[i] = APICopy[i];
end;
-- Process the documentation for each class:
for _, cls in ipairs(a_API) do
-- Initialize default values for each class:
cls.ConstantGroups = {};
cls.NumConstantsInGroups = 0;
cls.NumConstantsInGroupsForDescendants = 0;
-- Rename special functions:
for _, fn in ipairs(cls.Functions) do
if (fn.Name == ".call") then
fn.DocID = "constructor";
fn.Name = "() (constructor)";
elseif (fn.Name == ".add") then
fn.DocID = "operator_plus";
fn.Name = "operator +";
elseif (fn.Name == ".div") then
fn.DocID = "operator_div";
fn.Name = "operator /";
elseif (fn.Name == ".mul") then
fn.DocID = "operator_mul";
fn.Name = "operator *";
elseif (fn.Name == ".sub") then
fn.DocID = "operator_sub";
fn.Name = "operator -";
elseif (fn.Name == ".eq") then
fn.DocID = "operator_eq";
fn.Name = "operator ==";
end
end
local APIDesc = a_Desc.Classes[cls.Name];
if (APIDesc ~= nil) then
APIDesc.IsExported = true;
cls.Desc = APIDesc.Desc;
cls.AdditionalInfo = APIDesc.AdditionalInfo;
-- Process inheritance:
if (APIDesc.Inherits ~= nil) then
for _, icls in ipairs(a_API) do
if (icls.Name == APIDesc.Inherits) then
table.insert(icls.Descendants, cls);
cls.Inherits = icls;
end
end
end
cls.UndocumentedFunctions = {}; -- This will contain names of all the functions that are not documented
cls.UndocumentedConstants = {}; -- This will contain names of all the constants that are not documented
cls.UndocumentedVariables = {}; -- This will contain names of all the variables that are not documented
local DoxyFunctions = {}; -- This will contain all the API functions together with their documentation
local function AddFunction(a_Name, a_Params, a_Returns, a_IsStatic, a_Notes)
table.insert(DoxyFunctions, {Name = a_Name, Params = a_Params, Returns = a_Returns, IsStatic = a_IsStatic, Notes = a_Notes});
end
if (APIDesc.Functions ~= nil) then
-- Assign function descriptions:
for _, func in ipairs(cls.Functions) do
local FnName = func.DocID or func.Name;
local FnDesc = APIDesc.Functions[FnName];
if (FnDesc == nil) then
-- No description for this API function
AddFunction(func.Name);
if not(IsFunctionIgnored(cls.Name, FnName)) then
table.insert(cls.UndocumentedFunctions, FnName);
end
else
-- Description is available
if (FnDesc[1] == nil) then
-- Single function definition
AddFunction(func.Name, FnDesc.Params, FnDesc.Returns, FnDesc.IsStatic, FnDesc.Notes);
else
-- Multiple function overloads
for _, desc in ipairs(FnDesc) do
AddFunction(func.Name, desc.Params, desc.Returns, desc.IsStatic, desc.Notes);
end -- for k, desc - FnDesc[]
end
FnDesc.IsExported = true;
end
end -- for j, func
-- Replace functions with their described and overload-expanded versions:
cls.Functions = DoxyFunctions;
else -- if (APIDesc.Functions ~= nil)
for _, func in ipairs(cls.Functions) do
local FnName = func.DocID or func.Name;
if not(IsFunctionIgnored(cls.Name, FnName)) then
table.insert(cls.UndocumentedFunctions, FnName);
end
end
end -- if (APIDesc.Functions ~= nil)
if (APIDesc.Constants ~= nil) then
-- Assign constant descriptions:
for _, cons in ipairs(cls.Constants) do
local CnDesc = APIDesc.Constants[cons.Name];
if (CnDesc == nil) then
-- Not documented
if not(IsConstantIgnored(cls.Name .. "." .. cons.Name)) then
table.insert(cls.UndocumentedConstants, cons.Name);
end
else
cons.Notes = CnDesc.Notes;
CnDesc.IsExported = true;
end
end -- for j, cons
else -- if (APIDesc.Constants ~= nil)
for _, cons in ipairs(cls.Constants) do
if not(IsConstantIgnored(cls.Name .. "." .. cons.Name)) then
table.insert(cls.UndocumentedConstants, cons.Name);
end
end
end -- else if (APIDesc.Constants ~= nil)
-- Assign member variables' descriptions:
if (APIDesc.Variables ~= nil) then
for _, var in ipairs(cls.Variables) do
local VarDesc = APIDesc.Variables[var.Name];
if (VarDesc == nil) then
-- Not documented
if not(IsVariableIgnored(cls.Name .. "." .. var.Name)) then
table.insert(cls.UndocumentedVariables, var.Name);
end
else
-- Copy all documentation:
for k, v in pairs(VarDesc) do
var[k] = v
end
end
end -- for j, var
else -- if (APIDesc.Variables ~= nil)
for _, var in ipairs(cls.Variables) do
if not(IsVariableIgnored(cls.Name .. "." .. var.Name)) then
table.insert(cls.UndocumentedVariables, var.Name);
end
end
end -- else if (APIDesc.Variables ~= nil)
if (APIDesc.ConstantGroups ~= nil) then
-- Create links between the constants and the groups:
local NumInGroups = 0;
local NumInDescendantGroups = 0;
for j, group in pairs(APIDesc.ConstantGroups) do
group.Name = j;
group.Constants = {};
if (type(group.Include) == "string") then
group.Include = { group.Include };
end
local NumInGroup = 0;
for _, incl in ipairs(group.Include or {}) do
for _, cons in ipairs(cls.Constants) do
if ((cons.Group == nil) and cons.Name:match(incl)) then
cons.Group = group;
table.insert(group.Constants, cons);
NumInGroup = NumInGroup + 1;
end
end -- for cidx - cls.Constants[]
end -- for idx - group.Include[]
NumInGroups = NumInGroups + NumInGroup;
if (group.ShowInDescendants) then
NumInDescendantGroups = NumInDescendantGroups + NumInGroup;
end
-- Sort the constants:
table.sort(group.Constants,
function(c1, c2)
return (c1.Name < c2.Name);
end
);
end -- for j - APIDesc.ConstantGroups[]
cls.ConstantGroups = APIDesc.ConstantGroups;
cls.NumConstantsInGroups = NumInGroups;
cls.NumConstantsInGroupsForDescendants = NumInDescendantGroups;
-- Remove grouped constants from the normal list:
local NewConstants = {};
for _, cons in ipairs(cls.Constants) do
if (cons.Group == nil) then
table.insert(NewConstants, cons);
end
end
cls.Constants = NewConstants;
end -- if (ConstantGroups ~= nil)
else -- if (APIDesc ~= nil)
-- Class is not documented at all, add all its members to Undocumented lists:
cls.UndocumentedFunctions = {};
cls.UndocumentedConstants = {};
cls.UndocumentedVariables = {};
cls.Variables = cls.Variables or {};
g_Stats.NumUndocumentedClasses = g_Stats.NumUndocumentedClasses + 1;
for _, func in ipairs(cls.Functions) do
local FnName = func.DocID or func.Name;
if not(IsFunctionIgnored(cls.Name, FnName)) then
table.insert(cls.UndocumentedFunctions, FnName);
end
end -- for j, func - cls.Functions[]
for _, cons in ipairs(cls.Constants) do
if not(IsConstantIgnored(cls.Name .. "." .. cons.Name)) then
table.insert(cls.UndocumentedConstants, cons.Name);
end
end -- for j, cons - cls.Constants[]
for _, var in ipairs(cls.Variables) do
if not(IsConstantIgnored(cls.Name .. "." .. var.Name)) then
table.insert(cls.UndocumentedVariables, var.Name);
end
end -- for j, var - cls.Variables[]
end -- else if (APIDesc ~= nil)
-- Remove ignored functions:
local NewFunctions = {};
for _, fn in ipairs(cls.Functions) do
if (not(IsFunctionIgnored(cls.Name, fn.Name))) then
table.insert(NewFunctions, fn);
end
end -- for j, fn
cls.Functions = NewFunctions;
-- Sort the functions (they may have been renamed):
table.sort(cls.Functions,
function(f1, f2)
return (f1.Name < f2.Name);
end
);
-- Remove ignored constants:
local NewConstants = {};
for _, cn in ipairs(cls.Constants) do
if (not(IsFunctionIgnored(cls.Name, cn.Name))) then
table.insert(NewConstants, cn);
end
end -- for j, cn
cls.Constants = NewConstants;
-- Sort the constants:
table.sort(cls.Constants,
function(c1, c2)
return (c1.Name < c2.Name);
end
);
-- Remove ignored member variables:
local NewVariables = {};
for _, var in ipairs(cls.Variables) do
if (not(IsVariableIgnored(cls.Name .. "." .. var.Name))) then
table.insert(NewVariables, var);
end
end -- for j, var
cls.Variables = NewVariables;
-- Sort the member variables:
table.sort(cls.Variables,
function(v1, v2)
return (v1.Name < v2.Name);
end
);
end -- for i, cls
-- Sort the descendants lists:
for _, cls in ipairs(a_API) do
table.sort(cls.Descendants,
function(c1, c2)
return (c1.Name < c2.Name);
end
);
end -- for i, cls
end
--- Fills the hooks in a_Hooks with their descriptions from a_Descs
-- a_Hooks is an array of hooks detected from current global environment
-- a_Descs is the description read from APIDesc.lua and Hooks files
local function ReadHooks(a_Hooks, a_Descs)
--[[
a_Hooks = {
{ Name = "HOOK_1"},
{ Name = "HOOK_2"},
...
};
We want to add hook descriptions to each hook in this array
--]]
for _, hook in ipairs(a_Hooks) do
local HookDesc = a_Descs.Hooks[hook.Name];
if (HookDesc ~= nil) then
for key, val in pairs(HookDesc) do
hook[key] = val;
end
end
end -- for i, hook - a_Hooks[]
g_Stats.NumTotalHooks = #a_Hooks;
end
--- Returns a HTML string describing the (parameter) type, linking to the type's documentation, if available
-- a_Type is the string containing the type (such as "cPlugin" or "number"), or nil
-- a_API is the complete API description (used for searching the classnames)
local function LinkifyType(a_Type, a_API)
-- Check params:
assert(type(a_Type) == "string")
assert(type(a_API) == "table")
-- If the type is a known class, return a direct link to it:
if (a_API[a_Type]) then
return "" .. a_Type .. ""
end
-- If the type has a hash sign, it's a child enum of a class:
local idxColon = a_Type:find("#")
if (idxColon) then
local classType = a_Type:sub(1, idxColon - 1)
if (a_API[classType]) then
local enumType = a_Type:sub(idxColon + 1)
return "" .. enumType .. ""
end
end
-- If the type is a ConstantGroup within the Globals, it's a global enum:
if ((a_API.Globals.ConstantGroups or {})[a_Type]) then
return "" .. a_Type .. ""
end
-- Unknown or built-in type, output just text:
return a_Type
end
--- Returns an HTML string describing all function parameters (or return values)
-- a_FnParams is an array-table or string description of the parameters
-- a_ClassName is the name of the class for which the function is being documented (for Linkification)
-- a_API is the complete API description (for cross-type linkification)
local function CreateFunctionParamsDescription(a_FnParams, a_ClassName, a_API)
local pt = type(a_FnParams)
assert((pt == "string") or (pt == "table"))
assert(type(a_ClassName) == "string")
assert(type(a_API) == "table")
-- If the params description is a string (old format), just linkify it:
if (pt == "string") then
return LinkifyString(a_FnParams, a_ClassName, a_API)
end
-- If the params description is an empty table, give no description at all:
if not(a_FnParams[1]) then
return ""
end
-- The params description is a table, output the full desc:
local res = {"
"}
local idx = 2
for _, param in ipairs(a_FnParams) do
res[idx] = "
"
return table.concat(res)
end
--- Writes an HTML file containing the class API description for the given class
-- a_ClassAPI is the API description of the class to output
-- a_ClassMenu is the HTML string containing the code for the menu sidebar
-- a_API is the complete API (for cross-type linkification)
local function WriteHtmlClass(a_ClassAPI, a_ClassMenu, a_API)
-- Check params:
assert(type(a_ClassAPI) == "table")
assert(type(a_ClassMenu) == "string")
assert(type(a_API) == "table")
local cf, err = io.open("API/" .. a_ClassAPI.Name .. ".html", "w");
if (cf == nil) then
LOGINFO("Cannot write HTML API for class " .. a_ClassAPI.Name .. ": " .. err)
return;
end
-- Writes a table containing all functions in the specified list, with an optional "inherited from" header when a_InheritedName is valid
local function WriteFunctions(a_Functions, a_InheritedName)
if not(a_Functions[1]) then
-- No functions to write
return;
end
if (a_InheritedName) then
cf:write("
Functions inherited from ", a_InheritedName, "
\n");
end
cf:write("
\n
Name
Parameters
Return value
Notes
\n");
-- Store all function names, to create unique anchor names for all functions
local TableOverloadedFunctions = {}
for _, func in ipairs(a_Functions) do
local StaticClause = ""
if (func.IsStatic) then
StaticClause = "(STATIC) "
end
-- Increase number by one
TableOverloadedFunctions[func.Name] = (TableOverloadedFunctions[func.Name] or 0) + 1
-- Add the anchor names as a title
cf:write("
", func.Name, "
\n");
cf:write("
", CreateFunctionParamsDescription(func.Params or {}, a_InheritedName or a_ClassAPI.Name, a_API), "
\n");
cf:write("
", CreateFunctionParamsDescription(func.Returns or {}, a_InheritedName or a_ClassAPI.Name, a_API), "
\n");
cf:write("
", StaticClause .. LinkifyString(func.Notes or "(undocumented)", (a_InheritedName or a_ClassAPI.Name), a_API), "
\n");
end
cf:write("
\n");
end
local function WriteConstantTable(a_Constants, a_Source)
cf:write("
\n
Name
Value
Notes
\n");
for _, cons in ipairs(a_Constants) do
cf:write("
", cons.Name, "
\n");
cf:write("
", cons.Value, "
\n");
cf:write("
", LinkifyString(cons.Notes or "", a_Source, a_API), "
\n");
end
cf:write("
\n\n");
end
local function WriteConstants(a_Constants, a_ConstantGroups, a_NumConstantGroups, a_InheritedName)
if ((#a_Constants == 0) and (a_NumConstantGroups == 0)) then
return;
end
local Source = a_ClassAPI.Name
if (a_InheritedName ~= nil) then
cf:write("
Constants inherited from ", a_InheritedName, "
\n");
Source = a_InheritedName;
end
if (#a_Constants > 0) then
WriteConstantTable(a_Constants, Source);
end
for _, group in pairs(a_ConstantGroups) do
if ((a_InheritedName == nil) or group.ShowInDescendants) then
cf:write("
");
end
end
end
local function WriteVariables(a_Variables, a_InheritedName)
if (#a_Variables == 0) then
return;
end
if (a_InheritedName ~= nil) then
cf:write("
Member variables inherited from ", a_InheritedName, "
\n");
end
cf:write("
Name
Type
Notes
\n");
for _, var in ipairs(a_Variables) do
cf:write("
", var.Name, "
\n");
cf:write("
", LinkifyString(var.Type or "(undocumented)", a_InheritedName or a_ClassAPI.Name, a_API), "
\n");
cf:write("
", LinkifyString(var.Notes or "", a_InheritedName or a_ClassAPI.Name, a_API), "
\n
\n");
end
cf:write("
\n\n");
end
local function WriteDescendants(a_Descendants)
if (#a_Descendants == 0) then
return;
end
cf:write("
");
for _, desc in ipairs(a_Descendants) do
cf:write("
\n");
end
local ClassName = a_ClassAPI.Name;
-- Build an array of inherited classes chain:
local InheritanceChain = {};
local CurrInheritance = a_ClassAPI.Inherits;
while (CurrInheritance ~= nil) do
table.insert(InheritanceChain, CurrInheritance);
CurrInheritance = CurrInheritance.Inherits;
end
cf:write([[
Cuberite API - ]], a_ClassAPI.Name, [[ Class
]]);
local HasInheritance = ((#a_ClassAPI.Descendants > 0) or (a_ClassAPI.Inherits ~= nil));
local HasConstants = (#a_ClassAPI.Constants > 0) or (a_ClassAPI.NumConstantsInGroups > 0);
local HasFunctions = (#a_ClassAPI.Functions > 0);
local HasVariables = (#a_ClassAPI.Variables > 0);
for _, cls in ipairs(InheritanceChain) do
HasConstants = HasConstants or (#cls.Constants > 0) or (cls.NumConstantsInGroupsForDescendants > 0);
HasFunctions = HasFunctions or (#cls.Functions > 0);
HasVariables = HasVariables or (#cls.Variables > 0);
end
-- Write the table of contents:
if (HasInheritance) then
cf:write("
\n");
WriteConstants(a_ClassAPI.Constants, a_ClassAPI.ConstantGroups, a_ClassAPI.NumConstantsInGroups, nil);
g_Stats.NumTotalConstants = g_Stats.NumTotalConstants + #a_ClassAPI.Constants + (a_ClassAPI.NumConstantsInGroups or 0);
for _, cls in ipairs(InheritanceChain) do
WriteConstants(cls.Constants, cls.ConstantGroups, cls.NumConstantsInGroupsForDescendants, cls.Name);
end;
end;
-- Write the member variables:
if (HasVariables) then
cf:write("
\n");
WriteVariables(a_ClassAPI.Variables, nil);
g_Stats.NumTotalVariables = g_Stats.NumTotalVariables + #a_ClassAPI.Variables;
for _, cls in ipairs(InheritanceChain) do
WriteVariables(cls.Variables, cls.Name);
end;
end
-- Write the functions, including the inherited ones:
if (HasFunctions) then
cf:write("
\n");
WriteFunctions(a_ClassAPI.Functions, nil);
g_Stats.NumTotalFunctions = g_Stats.NumTotalFunctions + #a_ClassAPI.Functions;
for _, cls in ipairs(InheritanceChain) do
WriteFunctions(cls.Functions, cls.Name);
end
end
-- Write the additional infos:
if (a_ClassAPI.AdditionalInfo ~= nil) then
for i, additional in ipairs(a_ClassAPI.AdditionalInfo) do
cf:write("
\n");
cf:write(LinkifyString(additional.Contents, ClassName, a_API));
end
end
cf:write([[
]])
cf:write(GetHtmlTimestamp())
cf:write([[]])
cf:close()
end
--- Writes all classes into HTML output file as links in a sorted bullet list, as well as the individual class HTML files
-- f is the output file
-- a_API is the API detected from current environment enriched with descriptions
-- a_ClassMenu is the HTML code for the menu on the left that is constant for all class pages
local function WriteClasses(f, a_API, a_ClassMenu)
f:write([[
\n");
WriteHtmlClass(cls, a_ClassMenu, a_API);
end
f:write([[
]]);
end
--- Writes a list of undocumented objects into a file
local function ListUndocumentedObjects(API, UndocumentedHooks)
local f = io.open("API/_undocumented.lua", "w");
if (f ~= nil) then
f:write("\n-- This is the list of undocumented API objects, automatically generated by APIDump\n\n");
f:write("return\n{\n\tClasses =\n\t{\n");
for _, cls in ipairs(API) do
local HasFunctions = ((cls.UndocumentedFunctions ~= nil) and (#cls.UndocumentedFunctions > 0));
local HasConstants = ((cls.UndocumentedConstants ~= nil) and (#cls.UndocumentedConstants > 0));
local HasVariables = ((cls.UndocumentedVariables ~= nil) and (#cls.UndocumentedVariables > 0));
g_Stats.NumUndocumentedFunctions = g_Stats.NumUndocumentedFunctions + #cls.UndocumentedFunctions;
g_Stats.NumUndocumentedConstants = g_Stats.NumUndocumentedConstants + #cls.UndocumentedConstants;
g_Stats.NumUndocumentedVariables = g_Stats.NumUndocumentedVariables + #cls.UndocumentedVariables;
if (HasFunctions or HasConstants or HasVariables) then
f:write("\t\t" .. cls.Name .. " =\n\t\t{\n");
if ((cls.Desc == nil) or (cls.Desc == "")) then
f:write("\t\t\tDesc = \"\",\n");
end
end
if (HasFunctions) then
f:write("\t\t\tFunctions =\n\t\t\t{\n");
table.sort(cls.UndocumentedFunctions);
for _, fn in ipairs(cls.UndocumentedFunctions) do
f:write("\t\t\t\t" .. fn .. " = { Params = \"\", Return = \"\", Notes = \"\" },\n");
end -- for j, fn - cls.UndocumentedFunctions[]
f:write("\t\t\t},\n\n");
end
if (HasConstants) then
f:write("\t\t\tConstants =\n\t\t\t{\n");
table.sort(cls.UndocumentedConstants);
for _, cn in ipairs(cls.UndocumentedConstants) do
f:write("\t\t\t\t" .. cn .. " = { Notes = \"\" },\n");
end -- for j, fn - cls.UndocumentedConstants[]
f:write("\t\t\t},\n\n");
end
if (HasVariables) then
f:write("\t\t\tVariables =\n\t\t\t{\n");
table.sort(cls.UndocumentedVariables);
for _, vn in ipairs(cls.UndocumentedVariables) do
f:write("\t\t\t\t" .. vn .. " = { Type = \"\", Notes = \"\" },\n");
end -- for j, fn - cls.UndocumentedVariables[]
f:write("\t\t\t},\n\n");
end
if (HasFunctions or HasConstants or HasVariables) then
f:write("\t\t},\n\n");
end
end -- for i, cls - API[]
f:write("\t},\n");
if (#UndocumentedHooks > 0) then
f:write("\n\tHooks =\n\t{\n");
for i, hook in ipairs(UndocumentedHooks) do
if (i > 1) then
f:write("\n");
end
f:write("\t\t" .. hook .. " =\n\t\t{\n");
f:write("\t\t\tCalledWhen = \"\",\n");
f:write("\t\t\tDefaultFnName = \"On\", -- also used as pagename\n");
f:write("\t\t\tDesc = [[\n\t\t\t\t\n\t\t\t]],\n");
f:write("\t\t\tParams =\n\t\t\t{\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t\t{ Name = \"\", Type = \"\", Notes = \"\" },\n");
f:write("\t\t\t},\n");
f:write("\t\t\tReturns = [[\n\t\t\t\t\n\t\t\t]],\n");
f:write("\t\t}, -- " .. hook .. "\n");
end
f:write("\t},\n");
end
f:write("}\n\n\n\n");
f:close();
end
g_Stats.NumUndocumentedHooks = #UndocumentedHooks;
end
--- Lists the API objects that are documented but not available in the API:
local function ListUnexportedObjects(a_APIDesc)
f = io.open("API/_unexported-documented.txt", "w");
if (f ~= nil) then
for clsname, cls in pairs(a_APIDesc.Classes) do
if not(cls.IsExported) then
-- The whole class is not exported
f:write("class\t" .. clsname .. "\n");
else
if (cls.Functions ~= nil) then
for fnname, fnapi in pairs(cls.Functions) do
if not(fnapi.IsExported) then
f:write("func\t" .. clsname .. "." .. fnname .. "\n");
end
end -- for j, fn - cls.Functions[]
end
if (cls.Constants ~= nil) then
for cnname, cnapi in pairs(cls.Constants) do
if not(cnapi.IsExported) then
f:write("const\t" .. clsname .. "." .. cnname .. "\n");
end
end -- for j, fn - cls.Functions[]
end
end
end -- for i, cls - a_APIDesc.Classes[]
f:close();
end
end
local function ListMissingPages()
local MissingPages = {};
local NumLinks = 0;
for PageName, Referrers in pairs(g_TrackedPages) do
NumLinks = NumLinks + 1;
if not(cFile:IsFile("API/" .. PageName .. ".html")) then
table.insert(MissingPages, {Name = PageName, Refs = Referrers} );
end
end;
g_Stats.NumTrackedLinks = NumLinks;
g_TrackedPages = {};
if (#MissingPages == 0) then
-- No missing pages, congratulations!
return;
end
-- Sort the pages by name:
table.sort(MissingPages,
function (Page1, Page2)
return (Page1.Name < Page2.Name);
end
);
-- Output the pages:
local f, err = io.open("API/_missingPages.txt", "w");
if (f == nil) then
LOGWARNING("Cannot open _missingPages.txt for writing: '" .. err .. "'. There are " .. #MissingPages .. " pages missing.");
return;
end
for _, pg in ipairs(MissingPages) do
f:write(pg.Name .. ":\n");
-- Sort and output the referrers:
table.sort(pg.Refs);
f:write("\t" .. table.concat(pg.Refs, "\n\t"));
f:write("\n\n");
end
f:close();
g_Stats.NumInvalidLinks = #MissingPages;
end
--- Writes the documentation statistics (in g_Stats) into the given HTML file
local function WriteStats(f)
local function ExportMeter(a_Percent)
local Color;
if (a_Percent > 99) then
Color = "green";
elseif (a_Percent > 50) then
Color = "orange";
else
Color = "red";
end
local meter = {
"\n",
"
There are ]], g_Stats.NumTrackedLinks, " internal links, ", g_Stats.NumInvalidLinks, " of them are invalid.
"
);
end
local function DumpAPIHtml(a_API, a_Descs)
LOG("Dumping all available functions and constants to API subfolder...");
-- Create the output folder
if not(cFile:IsFolder("API")) then
cFile:CreateFolder("API");
end
LOG("Copying static files..");
cFile:CreateFolder("API/Static");
local localFolder = g_Plugin:GetLocalFolder();
for _, fnam in ipairs(cFile:GetFolderContents(localFolder .. "/Static")) do
cFile:Delete("API/Static/" .. fnam);
cFile:Copy(localFolder .. "/Static/" .. fnam, "API/Static/" .. fnam);
end
-- Extract hook constants:
local Hooks = {};
local UndocumentedHooks = {};
for name, obj in pairs(cPluginManager) do
if (
(type(obj) == "number") and
name:match("HOOK_.*") and
(name ~= "HOOK_MAX") and
(name ~= "HOOK_NUM_HOOKS")
) then
table.insert(Hooks, { Name = name });
end
end
table.sort(Hooks,
function(Hook1, Hook2)
return (Hook1.Name < Hook2.Name);
end
);
ReadHooks(Hooks, a_Descs);
-- Create a "class index" file, write each class as a link to that file,
-- then dump class contents into class-specific file
LOG("Writing HTML files...");
local f, err = io.open("API/index.html", "w");
if (f == nil) then
LOGINFO("Cannot output HTML API: " .. err);
return;
end
-- Create a class navigation menu that will be inserted into each class file for faster navigation (#403)
local ClassMenuTab = {};
for _, cls in ipairs(a_API) do
table.insert(ClassMenuTab, "");
table.insert(ClassMenuTab, cls.Name);
table.insert(ClassMenuTab, " ");
end
local ClassMenu = table.concat(ClassMenuTab, "");
-- Create a hook navigation menu that will be inserted into each hook file for faster navigation(#403)
local HookNavTab = {};
for _, hook in ipairs(Hooks) do
table.insert(HookNavTab, "");
table.insert(HookNavTab, (hook.Name:gsub("^HOOK_", ""))); -- remove the "HOOK_" part of the name
table.insert(HookNavTab, " ");
end
local HookNav = table.concat(HookNavTab, "");
-- Write the HTML file:
f:write([[
Cuberite API - Index
Cuberite API - Index
The API reference is divided into the following sections:
]]);
WriteArticles(f, a_Descs);
WriteClasses(f, a_API, ClassMenu);
WriteHooks(f, Hooks, UndocumentedHooks, HookNav, a_API);
-- Copy the static files to the output folder:
local StaticFiles =
{
"main.css",
"prettify.js",
"prettify.css",
"lang-lua.js",
};
for _, fnam in ipairs(StaticFiles) do
cFile:Delete("API/" .. fnam);
cFile:Copy(g_Plugin:GetLocalFolder() .. "/" .. fnam, "API/" .. fnam);
end
-- List the documentation problems:
LOG("Listing leftovers...");
ListUndocumentedObjects(a_API, UndocumentedHooks);
ListUnexportedObjects(a_Descs);
ListMissingPages();
WriteStats(f);
f:write([[
]])
f:write(GetHtmlTimestamp())
f:write([[]])
f:close()
LOG("API subfolder written");
end
--- Returns the string with extra tabs and CR/LFs removed
function CleanUpDescription(a_Desc)
-- Get rid of indent and newlines, normalize whitespace:
local res = a_Desc:gsub("[\n\t]", "")
res = a_Desc:gsub("%s%s+", " ")
-- Replace paragraph marks with newlines:
res = res:gsub("
", "\n")
res = res:gsub("
", "")
-- Replace list items with dashes:
res = res:gsub("?ul>", "")
res = res:gsub("
", "\n - ")
res = res:gsub("
", "")
return res
end
--- Writes a list of methods into the specified file in ZBS format
local function WriteZBSMethods(f, a_Methods)
for _, func in ipairs(a_Methods or {}) do
f:write("\t\t\t[\"", func.Name, "\"] =\n")
f:write("\t\t\t{\n")
f:write("\t\t\t\ttype = \"method\",\n")
-- No way to indicate multiple signatures to ZBS, so don't output any params at all
if ((func.Notes ~= nil) and (func.Notes ~= "")) then
f:write("\t\t\t\tdescription = [[", CleanUpDescription(func.Notes or ""), " ]],\n")
end
f:write("\t\t\t},\n")
end
end
--- Writes a list of constants into the specified file in ZBS format
local function WriteZBSConstants(f, a_Constants)
for _, cons in ipairs(a_Constants or {}) do
f:write("\t\t\t[\"", cons.Name, "\"] =\n")
f:write("\t\t\t{\n")
f:write("\t\t\t\ttype = \"value\",\n")
if ((cons.Desc ~= nil) and (cons.Desc ~= "")) then
f:write("\t\t\t\tdescription = [[", CleanUpDescription(cons.Desc or ""), " ]],\n")
end
f:write("\t\t\t},\n")
end
end
--- Writes one Cuberite class definition into the specified file in ZBS format
local function WriteZBSClass(f, a_Class)
assert(type(a_Class) == "table")
-- Write class header:
f:write("\t", a_Class.Name, " =\n\t{\n")
f:write("\t\ttype = \"class\",\n")
f:write("\t\tdescription = [[", CleanUpDescription(a_Class.Desc or ""), " ]],\n")
f:write("\t\tchilds =\n")
f:write("\t\t{\n")
-- Export methods and constants:
WriteZBSMethods(f, a_Class.Functions)
WriteZBSConstants(f, a_Class.Constants)
-- Finish the class definition:
f:write("\t\t},\n")
f:write("\t},\n\n")
end
--- Dumps the entire API table into a file in the ZBS format
local function DumpAPIZBS(a_API)
LOG("Dumping ZBS API description...")
local f, err = io.open("cuberite_api.lua", "w")
if (f == nil) then
LOG("Cannot open cuberite_api.lua for writing, ZBS API will not be dumped. " .. err)
return
end
-- Write the file header:
f:write("-- This is a Cuberite API file automatically generated by the APIDump plugin\n")
f:write("-- Note that any manual changes will be overwritten by the next dump\n\n")
f:write("return {\n")
-- Export each class except Globals, store those aside:
local Globals
for _, cls in ipairs(a_API) do
if (cls.Name ~= "Globals") then
WriteZBSClass(f, cls)
else
Globals = cls
end
end
-- Export the globals:
if (Globals) then
WriteZBSMethods(f, Globals.Functions)
WriteZBSConstants(f, Globals.Constants)
end
-- Finish the file:
f:write("}\n")
f:close()
LOG("ZBS API dumped...")
end
local function DumpLuaCheck(a_API)
LOG("Creating file .luacheckrc...")
local file = io.open(".luacheckrc", "w")
file:write([[
-- This file is the config file for the tool named Luacheck
-- Documentation: https://luacheck.readthedocs.io/en/stable/index.html
-- Ignore unused function and loop arguments
unused_args = false
-- Allow self defined globals
allow_defined = true
-- Ignore this functions
ignore =
{
"Initialize", -- Plugin
"OnDisable", -- Plugin
"RegisterPluginInfoCommands", -- InfoReg.lua
"RegisterPluginInfoConsoleCommands", -- InfoReg.lua
"g_PluginInfo", -- Info.lua
}
-- Ignore files / directories
exclude_files =
{
"tests/" -- CuberitePluginChecker
}
-- All globals from cuberite (classes, enums, functions)
globals =
{
]])
-- Export all global symbols
for _, cls in ipairs(a_API) do
if cls.Name == "Globals" then
-- Global functions
for _, func in ipairs(cls.Functions) do
file:write("\t\"", func.Name, "\",\n")
end
-- Global constants
for _, const in ipairs(cls.Constants) do
file:write("\t\"", const.Name, "\",\n")
end
-- Global constants from all groups
for _, group in pairs(cls.ConstantGroups) do
for _, const in pairs(group.Constants) do
file:write("\t\"", const.Name, "\",\n")
end
end
else
file:write("\t\"", cls.Name, "\",\n")
end
end
file:write("}\n\n")
-- Add merge code
file:write([[
-- ## Main ##
-- Load plugins's luacheck
local FilePluginLuacheck = loadfile(".luacheckrc_plugin")
if FilePluginLuacheck ~= nil then
local PluginLuacheck = {}
setfenv(FilePluginLuacheck, PluginLuacheck)
FilePluginLuacheck()
for Option, Value in pairs(PluginLuacheck) do
if (type(Value) == "table") and not(getfenv(1)[Option] == nil) then
-- Merge tables together
for _ , Entry in ipairs(Value) do
table.insert(getfenv(1)[Option], Entry)
end
else
-- Add a option, table or overwrite a option
getfenv(1)[Option] = Value
end
end
end
]])
file:close()
LOG("Config file .luacheckrc created...")
end
--- Returns true if a_Descendant is declared to be a (possibly indirect) descendant of a_Base
local function IsDeclaredDescendant(a_DescendantName, a_BaseName, a_API)
-- Check params:
assert(type(a_DescendantName) == "string")
assert(type(a_BaseName) == "string")
assert(type(a_API) == "table")
if not(a_API[a_BaseName]) then
return false
end
assert(type(a_API[a_BaseName]) == "table", "Not a class name: " .. a_BaseName)
assert(type(a_API[a_BaseName].Descendants) == "table")
-- Check direct inheritance:
for _, desc in ipairs(a_API[a_BaseName].Descendants) do
if (desc.Name == a_DescendantName) then
return true
end
end -- for desc - a_BaseName's descendants
-- Check indirect inheritance:
for _, desc in ipairs(a_API[a_BaseName].Descendants) do
if (IsDeclaredDescendant(a_DescendantName, desc.Name, a_API)) then
return true
end
end -- for desc - a_BaseName's descendants
return false
end
--- Checks the specified class' inheritance
-- Reports any problems as new items in the a_Report table
local function CheckClassInheritance(a_Class, a_API, a_Report)
-- Check params:
assert(type(a_Class) == "table")
assert(type(a_API) == "table")
assert(type(a_Report) == "table")
-- Check that the declared descendants are really descendants:
local registry = debug.getregistry()
for _, desc in ipairs(a_Class.Descendants or {}) do
local isParent = false
local parents = registry["tolua_super"][_G[desc.Name]]
if not(parents[a_Class.Name]) then
table.insert(a_Report, desc.Name .. " is not a descendant of " .. a_Class.Name)
end
end -- for desc - a_Class.Descendants[]
-- Check that all inheritance is listed for the class:
local parents = registry["tolua_super"][_G[a_Class.Name]] -- map of "classname" -> true for each class that a_Class inherits
for clsName, isParent in pairs(parents or {}) do
if ((clsName ~= "") and not(clsName:match("const .*"))) then
if not(IsDeclaredDescendant(a_Class.Name, clsName, a_API)) then
table.insert(a_Report, a_Class.Name .. " inherits from " .. clsName .. " but this isn't documented")
end
end
end
end
--- Checks each class's declared inheritance versus the actual inheritance
local function CheckAPIDescendants(a_API)
-- Check each class:
local report = {}
for _, cls in ipairs(a_API) do
if (cls.Name ~= "Globals") then
CheckClassInheritance(cls, a_API, report)
end
end
-- If there's anything to report, output it to a file:
if (report[1] ~= nil) then
LOG("There are inheritance errors in the API description:")
for _, msg in ipairs(report) do
LOG(" " .. msg)
end
local f, err = io.open("API/_inheritance_errors.txt", "w")
if (f == nil) then
LOG("Cannot report inheritance problems to a file: " .. tostring(err))
return
end
f:write(table.concat(report, "\n"))
f:close()
end
end
--- Prepares the API and Globals tables containing the documentation
-- Returns the API and Globals desc table, containing the Classes and Hooks subtables with descriptions,
-- and the apiDesc table containing the descriptions only in their original format.
local function PrepareApi()
-- Load the API descriptions from the Classes and Hooks subfolders:
-- This needs to be done each time the command is invoked because the export modifies the tables' contents
local apiDesc = dofile(g_PluginFolder .. "/APIDesc.lua")
apiDesc.Classes = apiDesc.Classes or {}
apiDesc.Hooks = apiDesc.Hooks or {}
LoadAPIFiles("/Classes/", apiDesc.Classes)
LoadAPIFiles("/Hooks/", apiDesc.Hooks)
-- Reset the stats:
g_TrackedPages = {}; -- List of tracked pages, to be checked later whether they exist. Each item is an array of referring pagenames.
g_Stats = -- Statistics about the documentation
{
NumTotalClasses = 0,
NumUndocumentedClasses = 0,
NumTotalFunctions = 0,
NumUndocumentedFunctions = 0,
NumTotalConstants = 0,
NumUndocumentedConstants = 0,
NumTotalVariables = 0,
NumUndocumentedVariables = 0,
NumTotalHooks = 0,
NumUndocumentedHooks = 0,
NumTrackedLinks = 0,
NumInvalidLinks = 0,
}
-- Create the API tables:
local API, Globals = CreateAPITables();
-- Sort the classes by name:
table.sort(API,
function (c1, c2)
return (string.lower(c1.Name) < string.lower(c2.Name));
end
);
g_Stats.NumTotalClasses = #API;
-- Add Globals into the API:
Globals.Name = "Globals";
table.insert(API, Globals);
API.Globals = Globals
-- Read in the descriptions:
LOG("Reading descriptions...");
ReadDescriptions(API, apiDesc);
return API, Globals, apiDesc
end
local function DumpApi()
LOG("Dumping the API...")
-- Match the currently exported API with the available documentation:
local API, Globals, descs = PrepareApi()
-- Check that the API lists the inheritance properly, report any problems to a file:
CheckAPIDescendants(API)
-- Dump all available API objects in HTML format into a subfolder:
DumpAPIHtml(API, descs);
-- Dump all available API objects in format used by ZeroBraneStudio API descriptions:
DumpAPIZBS(API)
-- Dump all available API objects in format used by Lua-Language-Server API descriptions:
DumpAPILLS(API);
-- Export the API in a format used by LuaCheck
DumpLuaCheck(API)
LOG("APIDump finished");
return true
end
--- Checks the currently undocumented symbols against an "official" undocumented symbol list
-- Returns an array-table of strings representing the newly-undocumented symbol names
-- If no newly undocumented symbols are found, returns no value.
-- If an error occurs, returns true and error message.
local function CheckNewUndocumentedSymbols()
-- Download the official API stats on undocumented stuff:
-- (We need a blocking downloader, which is impossible with the current cNetwork API)
assert(os.execute("wget -q -O official_undocumented.lua https://api.cuberite.org/_undocumented.lua"))
local OfficialStats = cFile:ReadWholeFile("official_undocumented.lua")
if (OfficialStats == "") then
return true, "Cannot load official stats"
end
-- Load the API stats as a Lua file, process into usable dictionary:
-- The _undocumented.lua file format has changed from "g_APIDesc = {}" to "return {}"
-- To support both versions, we execute the function in a sandbox and check both its return value and the sandbox globals
local Loaded, Msg = loadstring(OfficialStats)
if not(Loaded) then
return true, "Cannot load official stats: " .. (Msg or "")
end
local sandbox = {}
setfenv(Loaded, sandbox)
local IsSuccess, OfficialUndocumented = pcall(Loaded)
if not(IsSuccess) then
return true, "Cannot parse official stats: " .. tostring(OfficialUndocumented or "")
end
local Parsed = {}
for clsK, clsV in pairs((sandbox.g_APIDesc or OfficialUndocumented).Classes) do -- Check return value OR sandbox global, whichever is present
local cls =
{
Desc = not(clsV.Desc), -- set to true if the Desc was not documented in the official docs
Functions = {},
Constants = {}
}
for funK, _ in pairs(clsV.Functions or {}) do
cls.Functions[funK] = true
end
for conK, _ in pairs(clsV.Constants or {}) do
cls.Constants[conK] = true
end
Parsed[clsK] = cls
end
-- Get the current API's undocumented stats:
local API = PrepareApi()
-- Compare the two sets of undocumented stats, list anything extra in current:
local res = {}
local ins = table.insert
for _, cls in ipairs(API) do
local ParsedOfficial = Parsed[cls.Name] or {}
if (not(cls.Desc) and ParsedOfficial.Desc) then
ins(res, cls.Name .. ".Desc")
end
local ParsedOfficialFns = ParsedOfficial.Functions or {}
for _, funK in ipairs(cls.UndocumentedFunctions or {}) do
if not(ParsedOfficialFns[funK]) then
ins(res, cls.Name .. "." .. funK .. " (function)")
end
end
local ParsedOfficialCons = ParsedOfficial.Constants or {}
for _, conK in ipairs(cls.UndocumentedConstants or {}) do
if not(ParsedOfficialCons[conK]) then
ins(res, cls.Name .. "." .. conK .. " (constant)")
end
end
end
table.sort(res)
-- Bail out if no items found:
if not(res[1]) then
return
end
-- Save any found items to a file:
local f = io.open("NewlyUndocumented.lua", "w")
f:write(table.concat(res, "\n"))
f:write("\n")
f:close()
return res
end
--- Checks the API description for unknown types listed in Params or Returns
-- Returns an array-table of { Location = "cClass:function(), param #1", Type = "UnknownType" }
-- Returns nil if no unknown types are found
local function CheckBadTypes()
-- Load the API and preprocess known types:
local api = PrepareApi()
local knownTypes =
{
string = true,
number = true,
boolean = true,
any = true,
self = true,
table = true,
["function"] = true,
["..."] = true,
["SQLite DB object"] = true,
[""] = true, -- Allow "" types, for now, until the API is properly documented
}
for _, clsDesc in ipairs(api) do
knownTypes[clsDesc.Name] = true -- The class is a known type
for grpName, _ in pairs(clsDesc.ConstantGroups or {}) do -- All class' enums are known types (with namespacing)
knownTypes[clsDesc.Name .. "#" .. grpName] = true
end
if (clsDesc.Name == "Globals") then
for grpName, _ in pairs(clsDesc.ConstantGroups or {}) do -- All Globals' enums are known types without namespacing, too
knownTypes[grpName] = true
end
end
end -- for cls - classes
-- Check types:
local res = {}
for _, clsDesc in ipairs(api) do
for _, fnDesc in ipairs(clsDesc.Functions or {}) do
local fnName = fnDesc.Name
local fn = fnDesc[1] and fnDesc or { fnDesc } -- Unify the format, fn is an array of function signatures
for idxS, signature in ipairs(fn) do
for idxP, param in ipairs(signature.Params or {}) do
if not(knownTypes[param.Type]) then
table.insert(res, {
Location = string.format("%s:%s(), signature #%d, param #%d", clsDesc.Name, fnName, idxS, idxP),
Type = param.Type,
})
end
end -- for param
if (type(signature.Returns) == "table") then
for idxR, ret in ipairs(signature.Returns) do
if not(knownTypes[ret.Type]) then
table.insert(res, {
Location = string.format("%s:%s(), signature #%d, return #%d", clsDesc.Name, fnName, idxS, idxR),
Type = ret.Type,
})
end
end -- for ret
elseif not(signature.Returns) then
else
table.insert(res, {
Location = string.format("%s:%s(), signature #%d, return string", clsDesc.Name, fnName, idxS),
Type = tostring(signature.Returns),
})
end
end -- for signature
end -- for fn - functions
end -- for cls - classes
-- If no problems found, bail out:
if not(res[1]) then
return
end
-- Write the problems into a file:
local f = io.open("UnknownTypes.lua", "w")
f:write("return\n{\n")
for _, item in ipairs(res) do
f:write("\t{ ", string.format("{ Location = %q, Type = %q", item.Location, item.Type), "},\n")
end
f:write("}\n")
f:close()
return res
end
--- Checks if any functions that are documented are present in the API
-- Returns an array-table of strings representing the unexported symbol names
-- If no unexported are found, returns no value.
-- If an error occurs, returns true and error message.
local function CheckUnexportedFunctions()
local res = {}
local API, Globals, Desc = PrepareApi()
for clsname, cls in pairs(Desc.Classes) do
if not(cls.IsExported) then
-- The whole class is not exported
table.insert(res, "class\t" .. clsname .. "\n");
else
if (cls.Functions ~= nil) then
for fnname, fnapi in pairs(cls.Functions) do
if not(fnapi.IsExported) then
table.insert(res, "func\t" .. clsname .. "." .. fnname);
end
end -- for j, fn - cls.Functions[]
end
if (cls.Constants ~= nil) then
for cnname, cnapi in pairs(cls.Constants) do
if not(cnapi.IsExported) then
table.insert(res, "const\t" .. clsname .. "." .. cnname);
end
end -- for j, fn - cls.Functions[]
end
end
end -- for i, cls - a_APIDesc.Classes[]
table.sort(res)
-- Bail out if no items found:
if not(res[1]) then
return
end
-- Save any found items to a file:
local f = io.open("Unexported.lua", "w")
f:write(table.concat(res, "\n"))
f:write("\n")
f:close()
return res
end
local function HandleWebAdminDump(a_Request)
if (a_Request.PostParams["Dump"] ~= nil) then
DumpApi()
end
return
[[
Pressing the button will generate the API dump on the server. Note that this can take some time.
]]
end
local function HandleCmdApi(a_Split)
DumpApi()
return true
end
local function HandleCmdApiShow(a_Split, a_EntireCmd)
os.execute("API" .. cFile:GetPathSeparator() .. "index.html")
return true, "Launching the browser to show the API docs..."
end
local function HandleCmdApiCheck(a_Split, a_EntireCmd)
-- Check the Params and Returns types:
LOG("Checking API for bad types...")
local badTypes = CheckBadTypes()
if (badTypes) then
-- Serialize into descriptions:
local descs = {}
for idx, t in ipairs(badTypes) do
descs[idx] = string.format("Location %q, type %q", t.Location, t.Type)
end
return true, "Found bad types:\n" .. table.concat(descs, "\n")
end
-- Check for new symbols that are not documented:
LOG("Checking API for newly undocumented symbols...")
local newUndocumented, msg = CheckNewUndocumentedSymbols()
if (newUndocumented) then
if (newUndocumented == true) then
LOGERROR("Cannot check for new undocumented symbols: " .. (msg or ""))
return true
else
LOGERROR("Found new undocumented symbols:\n" .. table.concat(newUndocumented, "\n"))
return true
end
end
LOG("Checking for unexported Objects...")
local unexported, msg = CheckUnexportedFunctions()
if (unexported) then
if (unexported == true) then
LOGERROR("Cannot check for unexported symbols: " .. (msg or ""))
return true
else
LOGERROR("Found unexported symbols:\n" .. table.concat(unexported, "\n"))
return true
end
end
-- The check completed successfully, remove the "test failed" flag from the filesystem:
cFile:DeleteFile("apiCheckFailed.flag")
return true, "API check completed successfully"
end
function Initialize(Plugin)
g_Plugin = Plugin;
g_PluginFolder = Plugin:GetLocalFolder();
LOG("Initialising v." .. Plugin:GetVersion())
-- Bind a console command to dump the API:
cPluginManager:BindConsoleCommand("api", HandleCmdApi, "Dumps the Lua API docs into the API/ subfolder")
cPluginManager:BindConsoleCommand("apicheck", HandleCmdApiCheck, "Checks the Lua API documentation stats against the official stats")
cPluginManager:BindConsoleCommand("apishow", HandleCmdApiShow, "Runs the default browser to show the API docs")
-- Add a WebAdmin tab that has a Dump button
g_Plugin:AddWebTab("APIDump", HandleWebAdminDump)
return true
end
================================================
FILE: Server/Plugins/APIDump/prettify.css
================================================
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
================================================
FILE: Server/Plugins/APIDump/prettify.js
================================================
!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a=
b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;ah[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com",
/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+
s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^]+/],["dec",/^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^
]]
function HandleRequest_StressTest(a_Request)
if (a_Request.PostParams["counter"]) then
g_Counter = g_Counter + 1
return tostring(g_Counter)
end
return g_JavaScript .. "
The counter below should be reloading as fast as possible
0
"
end
function OnPluginMessage(a_Client, a_Channel, a_Message)
LOGINFO("Received a plugin message from client " .. a_Client:GetUsername() .. ": channel '" .. a_Channel .. "', message '" .. a_Message .. "'");
if (a_Channel == "REGISTER") then
if (a_Message:find("WECUI")) then
-- The client has WorldEditCUI mod installed, test the comm by sending a few WECUI messages:
--[[
WECUI messages have the following generic format:
|
If shape is p (cuboid selection), the params are sent individually for each corner click and have the following format:
||||
point-index is 0 or 1 (lclk / rclk)
volume is the 3D volume of the current cuboid selected (all three coords' deltas multiplied), including the edge blocks; -1 if N/A
--]]
-- Select a 51 * 51 * 51 block cuboid:
a_Client:SendPluginMessage("WECUI", "p|0|50|50|50|-1");
a_Client:SendPluginMessage("WECUI", "p|1|100|100|100|132651"); -- 132651 = 51 * 51 * 51
end
end
end
function HandleChunkStay(a_Split, a_Player)
-- As an example of using ChunkStay, this call will load 3x3 chunks around the specified chunk coords,
-- then build an obsidian pillar in the middle of each one.
-- Once complete, the player will be teleported to the middle pillar
if (#a_Split ~= 3) then
a_Player:SendMessageInfo("Usage: /cs ")
return true
end
local ChunkX = tonumber(a_Split[2])
local ChunkZ = tonumber(a_Split[3])
if ((ChunkX == nil) or (ChunkZ == nil)) then
a_Player:SendMessageFailure("Invalid chunk coords.")
return true
end
local World = a_Player:GetWorld()
local PlayerID = a_Player:GetUniqueID()
a_Player:SendMessageInfo("Loading chunks, stand by...");
-- Set the wanted chunks:
local Chunks = {}
for z = -1, 1 do for x = -1, 1 do
table.insert(Chunks, {ChunkX + x, ChunkZ + z})
end end
-- The function that is called when all chunks are available
-- Will perform the actual action with all those chunks
-- Note that the player needs to be referenced using their EntityID - in case they disconnect before the chunks load
local OnAllChunksAvailable = function()
LOGINFO("ChunkStay all chunks now available")
-- Build something on the neighboring chunks, to verify:
for z = -1, 1 do for x = -1, 1 do
local BlockX = (ChunkX + x) * 16 + 8
local BlockZ = (ChunkZ + z) * 16 + 8
for y = 20, 80 do
World:SetBlock(BlockX, y, BlockZ, E_BLOCK_OBSIDIAN, 0)
end
end end
-- Teleport the player there for visual inspection:
World:DoWithEntityByID(PlayerID,
function (a_CallbackPlayer)
a_CallbackPlayer:TeleportToCoords(ChunkX * 16 + 8, 85, ChunkZ * 16 + 8)
a_CallbackPlayer:SendMessageSuccess("ChunkStay fully available")
end
)
end
-- This function will be called for each chunk that is made available
-- Note that the player needs to be referenced using their EntityID - in case they disconnect before the chunks load
local OnChunkAvailable = function(a_ChunkX, a_ChunkZ)
LOGINFO("ChunkStay now has chunk [" .. a_ChunkX .. ", " .. a_ChunkZ .. "]")
World:DoWithEntityByID(PlayerID,
function (a_CallbackPlayer)
a_CallbackPlayer:SendMessageInfo("ChunkStay now has chunk [" .. a_ChunkX .. ", " .. a_ChunkZ .. "]")
end
)
end
-- Process the ChunkStay:
World:ChunkStay(Chunks, OnChunkAvailable, OnAllChunksAvailable)
return true
end
function HandleCakeCmd(a_Split, a_Player)
local lookVector = a_Player:GetLookVector()
local pos = a_Player:GetEyePosition() + lookVector
local world = a_Player:GetWorld()
local speed = lookVector * 10
local cakeID = world:SpawnFallingBlock(pos, E_BLOCK_CAKE, 0)
world:DoWithEntityByID(cakeID,
function(a_CBCake)
a_CBCake:SetSpeed(speed)
end
)
a_Player:SendMessage("Your cake is served")
return true
end
function HandleClientVersionCmd(a_Split, a_Player)
a_Player:SendMessage("Your client version number is " .. a_Player:GetClientHandle():GetProtocolVersion() ..".")
return true
end
function HandleComeCmd(a_Split, a_Player)
-- Find the first solid block under the player (in case they are flying):
local playerWorld = a_Player:GetWorld()
local playerPos = a_Player:GetPosition()
local toPos = Vector3i(playerPos)
if (toPos.y < 1) then
a_Player:SendMessageFailure("Cannot navigate to you, you're too low in the world")
return true
end
while not(cBlockInfo:IsSolid(playerWorld:GetBlock(toPos.x, toPos.y, toPos.z))) do
if (toPos.y <= 0) then
a_Player:SendMessageFailure("Cannot navigate to you, there's no solid block below you")
return true
end
toPos.y = toPos.y - 1
end
-- Find the mob to navigate:
local mob
local playerLook = a_Player:GetLookVector():NormalizeCopy()
local maxDot = 0
playerWorld:ForEachEntity(
function (a_CBEntity)
local dir = (a_CBEntity:GetPosition() - playerPos)
dir:Normalize()
local dot = dir:Dot(playerLook)
if (dot > maxDot) then
maxDot = dot
mob = a_CBEntity
end
end
)
if not(mob) then
a_Player:SendMessageFailure("Cannot navigate to you, there's no mob this way")
return true
end
mob:MoveToPosition(Vector3d(toPos))
a_Player:SendMessageSuccess((
string.format("Navigating the %s to position {%d, %d, %d}",
cMonster:MobTypeToString(mob:GetMobType()), toPos.x, toPos.y, toPos.z
)
))
return true
end
function HandleCompo(a_Split, a_Player)
-- Send one composite message to self:
local msg = cCompositeChat()
msg:AddTextPart("Hello! ", "b@e") -- bold yellow
msg:AddUrlPart("Cuberite", "https://cuberite.org")
msg:AddTextPart(" rules! ")
msg:AddRunCommandPart("Set morning", "/time set 0")
a_Player:SendMessage(msg)
-- Broadcast another one to the world:
local msg2 = cCompositeChat()
msg2:AddSuggestCommandPart(a_Player:GetName(), "/tell " .. a_Player:GetName() .. " ")
msg2:AddTextPart(" knows how to use cCompositeChat!");
a_Player:GetWorld():BroadcastChat(msg2)
return true
end
function HandleSetBiome(a_Split, a_Player)
local Biome = biJungle
local Size = 20
local SplitSize = #a_Split
if (SplitSize > 3) then
a_Player:SendMessage("Too many parameters. Usage: " .. a_Split[1] .. " ")
return true
end
if (SplitSize >= 2) then
Biome = StringToBiome(a_Split[2])
if (Biome == biInvalidBiome) then
a_Player:SendMessage("Unknown biome: '" .. a_Split[2] .. "'. Command ignored.")
return true
end
end
if (SplitSize >= 3) then
Size = tostring(a_Split[3])
if (Size == nil) then
a_Player:SendMessage("Unknown size: '" .. a_Split[3] .. "'. Command ignored.")
return true
end
end
local BlockX = math.floor(a_Player:GetPosX())
local BlockZ = math.floor(a_Player:GetPosZ())
a_Player:GetWorld():SetAreaBiome(BlockX - Size, BlockX + Size, BlockZ - Size, BlockZ + Size, Biome)
a_Player:SendMessage(
"Blocks {" .. (BlockX - Size) .. ", " .. (BlockZ - Size) ..
"} - {" .. (BlockX + Size) .. ", " .. (BlockZ + Size) ..
"} set to biome #" .. tostring(Biome) .. "."
)
return true
end
function HandleVectorCmd(a_Split, a_Player)
a_Player:SendMessage("Testing the Vector3 APIs...")
-- Test the Vector3 coercion in ManualBindings - any Vector3 type should be accepted for any Vector3 parameter:
local pos = a_Player:GetPosition()
local c = cCuboid:new()
c:Assign(pos - Vector3d(2, 2, 2), pos + Vector3d(2, 2, 2))
assert(c:IsInside(Vector3d(pos)))
assert(c:IsInside(Vector3f(pos)))
assert(c:IsInside(Vector3i(pos)))
assert(c:IsInside({pos.x, pos.y, pos.z}))
a_Player:SendMessage("Test successful.")
return true
end
function HandleWESel(a_Split, a_Player)
-- Check if the selection is a cuboid:
local IsCuboid = cPluginManager:CallPlugin("WorldEdit", "IsPlayerSelectionCuboid")
if (IsCuboid == nil) then
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, WorldEdit is not loaded"))
return true
elseif (IsCuboid == false) then
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, the selection is not a cuboid"))
return true
end
-- Get the selection:
local SelCuboid = cCuboid()
local IsSuccess = cPluginManager:CallPlugin("WorldEdit", "GetPlayerCuboidSelection", a_Player, SelCuboid)
if not(IsSuccess) then
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, WorldEdit reported failure while getting current selection"))
return true
end
-- Adjust the selection:
local NumBlocks = tonumber(a_Split[2] or "1") or 1
SelCuboid:Expand(NumBlocks, NumBlocks, 0, 0, NumBlocks, NumBlocks)
-- Set the selection:
IsSuccess = cPluginManager:CallPlugin("WorldEdit", "SetPlayerCuboidSelection", a_Player, SelCuboid)
if not(IsSuccess) then
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, WorldEdit reported failure while setting new selection"))
return true
end
a_Player:SendMessage(cCompositeChat():SetMessageType(mtInformation):AddTextPart("Successfully adjusted the selection by " .. NumBlocks .. " block(s)"))
return true
end
function OnPlayerJoined(a_Player)
-- Test composite chat chaining:
a_Player:SendMessage(cCompositeChat()
:AddTextPart("Hello, ")
:AddUrlPart(a_Player:GetName(), "https://cuberite.org", "u@2")
:AddSuggestCommandPart(", and welcome.", "/help", "u")
:AddRunCommandPart(" SetDay", "/time set 0")
)
end
function OnProjectileHitBlock(a_Projectile, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_BlockHitPos)
-- Test projectile hooks by setting the blocks they hit on fire:
local BlockX, BlockY, BlockZ = AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace)
local World = a_Projectile:GetWorld()
World:SetBlock(BlockX, BlockY, BlockZ, E_BLOCK_FIRE, 0)
end
function OnChunkUnloading(a_World, a_ChunkX, a_ChunkZ)
-- Do not let chunk [0, 0] unload, so that it continues ticking [cWorld:SetChunkAlwaysTicked() test]
if ((a_ChunkX == 0) and (a_ChunkZ == 0)) then
return true
end
end
function OnWorldStarted(a_World)
-- Make the chunk [0, 0] in every world keep ticking [cWorld:SetChunkAlwaysTicked() test]
a_World:ChunkStay({{0, 0}}, nil,
function()
-- The chunk is loaded, make it always tick:
a_World:SetChunkAlwaysTicked(0, 0, true)
end
)
end
function OnProjectileHitBlock(a_ProjectileEntity, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_BlockHitPos)
-- This simple test is for testing issue #1326 - simply declaring this hook would crash the server upon call
LOG("Projectile hit block")
LOG(" Projectile EntityID: " .. a_ProjectileEntity:GetUniqueID())
LOG(" Block: {" .. a_BlockX .. ", " .. a_BlockY .. ", " .. a_BlockZ .. "}, face " .. a_BlockFace)
LOG(" HitPos: {" .. a_BlockHitPos.x .. ", " .. a_BlockHitPos.y .. ", " .. a_BlockHitPos.z .. "}")
end
local PossibleItems =
{
cItem(E_ITEM_DIAMOND),
cItem(E_ITEM_GOLD),
cItem(E_ITEM_IRON),
cItem(E_ITEM_DYE, 1, E_META_DYE_BLUE), -- Lapis lazuli
cItem(E_ITEM_COAL),
}
function HandlePickups(a_Split, a_Player)
local PlayerX = a_Player:GetPosX()
local PlayerY = a_Player:GetPosY()
local PlayerZ = a_Player:GetPosZ()
local World = a_Player:GetWorld()
local Range = 12
for x = 0, Range do for z = 0, Range do
local px = PlayerX + x - Range / 2
local pz = PlayerZ + z - Range / 2
local Items = cItems()
Items:Add(PossibleItems[math.random(#PossibleItems)])
World:SpawnItemPickups(Items, px, PlayerY, pz, 0)
end end -- for z, for x
return true
end
function HandlePlugMsg(a_Split, a_Player)
local ch = a_Player:GetClientHandle()
ch:SendPluginMessage("TestCh", "some\0string\1with\2funny\3chars")
return true
end
function HandlePoof(a_Split, a_Player)
local PlayerPos = Vector3d(a_Player:GetPosition()) -- Create a copy of the position
PlayerPos.y = PlayerPos.y - 1
local Box = cBoundingBox(PlayerPos, 4, 2)
local NumEntities = 0
a_Player:GetWorld():ForEachEntityInBox(Box,
function (a_Entity)
if not(a_Entity:IsPlayer()) then
local AddSpeed = a_Entity:GetPosition() - PlayerPos -- Speed away from the player
a_Entity:AddSpeed(AddSpeed * 32 / (AddSpeed:SqrLength() + 1)) -- The further away, the less speed to add
NumEntities = NumEntities + 1
end
end
)
a_Player:SendMessage("Poof! (" .. NumEntities .. " entities)")
return true
end
-- List of hashing functions to test:
local HashFunctions =
{
{"md5", md5 },
{"cCryptoHash.md5", cCryptoHash.md5 },
{"cCryptoHash.md5HexString", cCryptoHash.md5HexString },
{"cCryptoHash.sha1", cCryptoHash.sha1 },
{"cCryptoHash.sha1HexString", cCryptoHash.sha1HexString },
}
-- List of strings to try hashing:
local HashExamples =
{
"",
"\0",
"test",
}
function HandleConsoleHash(a_Split)
for _, str in ipairs(HashExamples) do
LOG("Hashing string \"" .. str .. "\":")
for _, hash in ipairs(HashFunctions) do
if not(hash[2]) then
LOG("Hash function " .. hash[1] .. " doesn't exist in the API!")
else
LOG(hash[1] .. "() = " .. hash[2](str))
end
end -- for hash - HashFunctions[]
end -- for str - HashExamples[]
return true
end
function HandleConsoleHitTrace(a_Split)
local world = cRoot:Get():GetDefaultWorld()
local s = Vector3d(0, 70, 0)
local e = Vector3d(100, 75, 100)
if (tonumber(a_Split[2])) then
s.x = tonumber(a_Split[2])
end
if (tonumber(a_Split[3])) then
s.y = tonumber(a_Split[3])
end
if (tonumber(a_Split[4])) then
s.z = tonumber(a_Split[4])
end
if (tonumber(a_Split[5])) then
e.x = tonumber(a_Split[5])
end
if (tonumber(a_Split[6])) then
e.y = tonumber(a_Split[6])
end
if (tonumber(a_Split[7])) then
e.z = tonumber(a_Split[7])
end
local res, hitCoords, hitBlockCoords, hitBlockFace = cLineBlockTracer:FirstSolidHitTrace(world, s, e)
if (res) then
return true, string.format("The line hits block {%d, %d, %d} at point {%f, %f, %f}, face %s",
hitBlockCoords.x, hitBlockCoords.y, hitBlockCoords.z,
hitCoords.x, hitCoords.y, hitCoords.z,
BlockFaceToString(hitBlockFace)
)
else
return true, "The two points specified don't have a solid block between them."
end
end
--- Monitors the state of the "inh" entity-spawning hook
-- if false, the hook is installed before the "inh" command processing
local isInhHookInstalled = false
function HandleConsoleInh(a_Split, a_FullCmd)
-- Check the param:
local kindStr = a_Split[2] or "pkArrow"
local kind = cProjectileEntity[kindStr]
if (kind == nil) then
return true, "There's no projectile kind '" .. kindStr .. "'."
end
-- Get the world to test in:
local world = cRoot:Get():GetDefaultWorld()
if (world == nil) then
return true, "Cannot test inheritance, no default world"
end
-- Install the hook, if needed:
if not(isInhHookInstalled) then
cPluginManager:AddHook(cPluginManager.HOOK_SPAWNING_ENTITY,
function (a_CBWorld, a_CBEntity)
LOG("New entity is spawning:")
LOG(" Lua type: '" .. type(a_CBEntity) .. "'")
LOG(" ToLua type: '" .. tolua.type(a_CBEntity) .. "'")
LOG(" GetEntityType(): '" .. a_CBEntity:GetEntityType() .. "'")
LOG(" GetClass(): '" .. a_CBEntity:GetClass() .. "'")
end
)
isInhHookInstalled = true
end
-- Create the projectile:
LOG("Creating a " .. kindStr .. " projectile in world " .. world:GetName() .. "...")
local msg
world:ChunkStay({{0, 0}},
nil,
function ()
-- Create a projectile at {8, 100, 8}:
local entityID = world:CreateProjectile(8, 100, 8, kind, nil, nil)
if (entityID < 0) then
msg = "Cannot test inheritance, projectile creation failed."
return
end
LOG("Entity created, ID #" .. entityID)
-- Call a function on the newly created entity:
local hasExecutedCallback = false
world:DoWithEntityByID(
entityID,
function (a_CBEntity)
LOG("Projectile created and found using the DoWithEntityByID() callback")
LOG("Lua type: '" .. type(a_CBEntity) .. "'")
LOG("ToLua type: '" .. tolua.type(a_CBEntity) .. "'")
LOG("GetEntityType(): '" .. a_CBEntity:GetEntityType() .. "'")
LOG("GetClass(): '" .. a_CBEntity:GetClass() .. "'")
hasExecutedCallback = true
end
)
if not(hasExecutedCallback) then
msg = "The callback failed to execute"
return
end
msg = "Inheritance test finished"
end
)
return true, msg
end
function HandleConsoleLoadChunk(a_Split)
-- Check params:
local numParams = #a_Split
if (numParams ~= 3) and (numParams ~= 4) then
return true, "Usage: " .. a_Split[1] .. " []"
end
-- Get the chunk coords:
local chunkX = tonumber(a_Split[2])
if (chunkX == nil) then
return true, "Not a number: '" .. a_Split[2] .. "'"
end
local chunkZ = tonumber(a_Split[3])
if (chunkZ == nil) then
return true, "Not a number: '" .. a_Split[3] .. "'"
end
-- Get the world:
local world
if (a_Split[4] == nil) then
world = cRoot:Get():GetDefaultWorld()
else
world = cRoot:Get():GetWorld(a_Split[4])
if (world == nil) then
return true, "There's no world named '" .. a_Split[4] .. "'."
end
end
-- Queue a ChunkStay for the chunk, log a message when the chunk is loaded:
world:ChunkStay({{chunkX, chunkZ}}, nil,
function()
LOG("Chunk [" .. chunkX .. ", " .. chunkZ .. "] is loaded")
end
)
return true
end
function HandleConsoleLosTrace(a_Split)
local world = cRoot:Get():GetDefaultWorld()
local s = Vector3d(0, 70, 0)
local e = Vector3d(100, 75, 100)
if (tonumber(a_Split[2])) then
s.x = tonumber(a_Split[2])
end
if (tonumber(a_Split[3])) then
s.y = tonumber(a_Split[3])
end
if (tonumber(a_Split[4])) then
s.z = tonumber(a_Split[4])
end
if (tonumber(a_Split[5])) then
e.x = tonumber(a_Split[5])
end
if (tonumber(a_Split[6])) then
e.y = tonumber(a_Split[6])
end
if (tonumber(a_Split[7])) then
e.z = tonumber(a_Split[7])
end
local res = cLineBlockTracer:LineOfSightTrace(world, s, e, cLineBlockTracer.losAir)
if (res) then
return true, "The two points can see each other."
else
return true, "The two points cannot see each other"
end
end
function HandleConsolePluginStats(a_Split)
cPluginManager:ForEachPlugin(
function (a_CBPlugin)
LOG("Plugin in " .. a_CBPlugin:GetFolderName() .. " has an API name of " .. a_CBPlugin:GetName() .. " and status " .. a_CBPlugin:GetStatus())
end
)
return true
end
function HandleConsolePrepareChunk(a_Split)
-- Check params:
local numParams = #a_Split
if (numParams ~= 3) and (numParams ~= 4) then
return true, "Usage: " .. a_Split[1] .. " []"
end
-- Get the chunk coords:
local chunkX = tonumber(a_Split[2])
if (chunkX == nil) then
return true, "Not a number: '" .. a_Split[2] .. "'"
end
local chunkZ = tonumber(a_Split[3])
if (chunkZ == nil) then
return true, "Not a number: '" .. a_Split[3] .. "'"
end
-- Get the world:
local world
if (a_Split[4] == nil) then
world = cRoot:Get():GetDefaultWorld()
else
world = cRoot:Get():GetWorld(a_Split[4])
if (world == nil) then
return true, "There's no world named '" .. a_Split[4] .. "'."
end
end
-- Queue the chunk for preparing, log a message when prepared:
world:PrepareChunk(chunkX, chunkZ,
function(a_CBChunkX, a_CBChunkZ)
LOG("Chunk [" .. chunkX .. ", " .. chunkZ .. "] has been prepared")
end
)
return true
end
function HandleConsoleSchedule(a_Split)
local prev = os.clock()
LOG("Scheduling a task for 5 seconds in the future (current os.clock is " .. prev .. ")")
cRoot:Get():GetDefaultWorld():ScheduleTask(5 * 20,
function ()
local current = os.clock()
local diff = current - prev
LOG("Scheduled function is called. Current os.clock is " .. current .. ", difference is " .. diff .. ")")
end
)
return true, "Task scheduled"
end
--- Returns the square of the distance from the specified point to the specified line
local function SqDistPtFromLine(x, y, x1, y1, x2, y2)
local dx = x - x1
local dy = y - y1
local px = x2 - x1
local py = y2 - y1
local ss = px * dx + py * dy
local ds = px * px + py * py
if (ss < 0) then
-- Return sqdistance from point 1
return dx * dx + dy * dy
end
if (ss > ds) then
-- Return sqdistance from point 2
return ((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y))
end
-- Return sqdistance from the line
if ((px * px + py * py) == 0) then
return dx * dx + dy * dy
else
return (py * dx - px * dy) * (py * dx - px * dy) / (px * px + py * py)
end
end
function HandleConsoleTestBbox(a_Split, a_EntireCmd)
-- Test bbox intersection:
local bbox1 = cBoundingBox(0, 5, 0, 5, 0, 5)
local bbox2 = cBoundingBox(bbox1) -- Make a copy
bbox2:Move(20, 20, 20)
local bbox3 = cBoundingBox(bbox1) -- Make a copy
bbox3:Move(2, 2, 2)
local doesIntersect, intersection = bbox1:Intersect(bbox2)
LOG("Bbox 2 intersection: " .. tostring(doesIntersect))
LOG(" Intersection type: " .. type(intersection) .. " / " .. tolua.type(intersection))
if (intersection) then
LOG(" {" .. intersection:GetMinX() .. ", " .. intersection:GetMinY() .. ", " .. intersection:GetMinZ() .. "}")
LOG(" {" .. intersection:GetMaxX() .. ", " .. intersection:GetMaxY() .. ", " .. intersection:GetMaxZ() .. "}")
end
doesIntersect, intersection = bbox1:Intersect(bbox3)
LOG("Bbox 3 intersection: " .. tostring(doesIntersect))
LOG(" Intersection type: " .. type(intersection) .. " / " .. tolua.type(intersection))
if (intersection) then
LOG(" {" .. intersection:GetMinX() .. ", " .. intersection:GetMinY() .. ", " .. intersection:GetMinZ() .. "}")
LOG(" {" .. intersection:GetMaxX() .. ", " .. intersection:GetMaxY() .. ", " .. intersection:GetMaxZ() .. "}")
end
-- Test line intersection:
local lines =
{
{ Vector3d(5, 0, 5), Vector3d(5, 1, 5) },
{ Vector3d(0, 0, 0), Vector3d(0, 1, 0) },
}
for idx, line in ipairs(lines) do
local doesIntersect, coeff, face = bbox2:CalcLineIntersection(line[1], line[2])
LOG("Line " .. idx .. " intersection: " .. tostring(doesIntersect))
LOG(" Coeff: " .. tostring(coeff))
LOG(" Face: " .. tostring(face))
local doesIntersect2, coeff2, face2 = cBoundingBox:CalcLineIntersection(bbox2:GetMin(), bbox2:GetMax(), line[1], line[2])
assert(doesIntersect == doesIntersect2)
assert(coeff == coeff2)
assert(face == face2)
end
return true
end
function HandleConsoleTestCall(a_Split, a_EntireCmd)
LOG("Testing inter-plugin calls")
LOG("Note: These will fail if the Core plugin is not enabled")
-- Test calling the HandleConsoleWeather handler:
local pm = cPluginManager
LOG("Calling Core's HandleConsoleWeather")
local isSuccess = pm:CallPlugin("Core", "HandleConsoleWeather",
{
"/weather",
"rain",
}
)
if (type(isSuccess) == "boolean") then
LOG("Success")
else
LOG("FAILED")
end
-- Test injecting some code:
LOG("Injecting code into the Core plugin")
isSuccess = pm:CallPlugin("Core", "dofile", pm:GetCurrentPlugin():GetLocalFolder() .. "/Inject.lua")
if (type(isSuccess) == "boolean") then
LOG("Success")
else
LOG("FAILED")
end
-- Test the full capabilities of the table-passing API, using the injected function:
LOG("Calling injected code")
isSuccess = pm:CallPlugin("Core", "injectedPrintParams",
{
"test",
nil,
{
"test",
"test"
},
[10] = "test",
["test"] = "test",
[{"test"}] = "test",
[true] = "test",
}
)
if (type(isSuccess) == "boolean") then
LOG("Success")
else
LOG("FAILED")
end
return true
end
function HandleConsoleTestErr(a_Split, a_EntireCmd)
cRoot:Get():GetDefaultWorld():ForEachEntity(
function (a_CBEntity)
error("This error should not abort the server")
end
)
end
function HandleConsoleTestJson(a_Split, a_EntireCmd)
LOG("Testing Json parsing...")
local t1 = cJson:Parse([[{"a": 1, "b": "2", "c": [3, "4", 5], "d": true }]])
assert(t1.a == 1)
assert(t1.b == "2")
assert(t1.c[1] == 3)
assert(t1.c[2] == "4")
assert(t1.c[3] == 5)
assert(t1.d == true)
LOG("Json parsing example 1 successful")
local t2, msg = cJson:Parse([[{"some": invalid, json}]])
assert(t2 == nil)
assert(type(msg) == "string")
LOG("Json parsing an invalid string: Error message returned: " .. msg)
local isSuccess, t3
isSuccess, t3, msg = pcall(cJson.Parse, cJson, nil)
if (isSuccess) then
LOG(string.format("Json parsing a 'nil' produced a %s and a %s, msg is %s.",
type(t3), type(msg), msg or ""
))
else
LOG("Json parsing a 'nil' raised an error")
end
LOG("Json parsing test succeeded")
LOG("Testing Json serializing...")
local s1, msg1 = cJson:Serialize({a = 1, b = "2", c = {3, "4", 5}, d = true}, {indentation = " "})
LOG("Serialization result: " .. (s1 or ("ERROR: " .. (msg1 or ""))))
local s2, msg2 = cJson:Serialize({valueA = 1, valueB = {3, badValue = "4", 5}, d = true}, {indentation = " "})
assert(not(s2), "Serialization should have failed")
LOG("Serialization correctly failed with message: " .. (msg2 or ""))
LOG("Json serializing test succeeded")
return true
end
function HandleConsoleTestTracer(a_Split, a_EntireCmd)
-- Check required params:
if not(a_Split[7]) then
return true, "Usage: " .. a_Split[1] .. " []"
end
local Coords = {}
for i = 1, 6 do
local v = tonumber(a_Split[i + 1])
if not(v) then
return true, "Parameter " .. (i + 1) .. " (" .. tostring(a_Split[i + 1]) .. ") not a number "
end
Coords[i] = v
end
-- Get the world in which to test:
local World
if (a_Split[8]) then
World = cRoot:GetWorld(a_Split[2])
else
World = cRoot:Get():GetDefaultWorld()
end
if not(World) then
return true, "No such world"
end
-- Define the callbacks to use for tracing:
local Callbacks =
{
OnNextBlock = function(a_BlockPos, a_BlockType, a_BlockMeta, a_EntryFace)
LOG(string.format("{%d, %d, %d}: %s", a_Block.x, a_Block.y, a_Block.z, ItemToString(cItem(a_BlockType, 1, a_BlockMeta))))
end,
OnNextBlockNoData = function(a_BlockPos, a_EntryFace)
LOG(string.format("{%d, %d, %d} (no data)", a_Block.x, a_Block.y, a_Block.z))
end,
OnNoChunk = function()
LOG("Chunk not loaded")
end,
OnNoMoreHits = function()
LOG("Trace finished")
end,
OnOutOfWorld = function()
LOG("Out of world")
end,
OnIntoWorld = function()
LOG("Into world")
end,
}
-- Approximate the chunks needed for the trace by iterating over all chunks and measuring their center's distance from the traced line
local Chunks = {}
local sx = math.floor(Coords[1] / 16)
local sz = math.floor(Coords[3] / 16)
local ex = math.floor(Coords[4] / 16)
local ez = math.floor(Coords[6] / 16)
local sgnx = (sx < ex) and 1 or -1
local sgnz = (sz < ez) and 1 or -1
for z = sz, ez, sgnz do
local ChunkCenterZ = z * 16 + 8
for x = sx, ex, sgnx do
local ChunkCenterX = x * 16 + 8
local sqdist = SqDistPtFromLine(ChunkCenterX, ChunkCenterZ, Coords[1], Coords[3], Coords[4], Coords[6])
if (sqdist <= 128) then
table.insert(Chunks, {x, z})
end
end
end
-- Load the chunks and do the trace once loaded:
local startPos = Vector3i(Coords[1], Coords[2], Coords[3])
local endPos = Vector3i(Coords[4], Coords[5], Coords[6])
World:ChunkStay(Chunks,
nil,
function()
cLineBlockTracer:Trace(World, Callbacks, startPos, endPos)
end
)
return true
end
function HandleConsoleTestTracerDeprecated(a_Split, a_EntireCmd)
-- Check required params:
if not(a_Split[7]) then
return true, "Usage: " .. a_Split[1] .. " []"
end
local Coords = {}
for i = 1, 6 do
local v = tonumber(a_Split[i + 1])
if not(v) then
return true, "Parameter " .. (i + 1) .. " (" .. tostring(a_Split[i + 1]) .. ") not a number "
end
Coords[i] = v
end
-- Get the world in which to test:
local World
if (a_Split[8]) then
World = cRoot:GetWorld(a_Split[2])
else
World = cRoot:Get():GetDefaultWorld()
end
if not(World) then
return true, "No such world"
end
-- Define the callbacks to use for tracing:
local Callbacks =
{
OnNextBlock = function(a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta, a_EntryFace)
LOG(string.format("{%d, %d, %d}: %s", a_BlockX, a_BlockY, a_BlockZ, ItemToString(cItem(a_BlockType, 1, a_BlockMeta))))
end,
OnNextBlockNoData = function(a_BlockX, a_BlockY, a_BlockZ, a_EntryFace)
LOG(string.format("{%d, %d, %d} (no data)", a_BlockX, a_BlockY, a_BlockZ))
end,
OnNoChunk = function()
LOG("Chunk not loaded")
end,
OnNoMoreHits = function()
LOG("Trace finished")
end,
OnOutOfWorld = function()
LOG("Out of world")
end,
OnIntoWorld = function()
LOG("Into world")
end,
}
-- Approximate the chunks needed for the trace by iterating over all chunks and measuring their center's distance from the traced line
local Chunks = {}
local sx = math.floor(Coords[1] / 16)
local sz = math.floor(Coords[3] / 16)
local ex = math.floor(Coords[4] / 16)
local ez = math.floor(Coords[6] / 16)
local sgnx = (sx < ex) and 1 or -1
local sgnz = (sz < ez) and 1 or -1
for z = sz, ez, sgnz do
local ChunkCenterZ = z * 16 + 8
for x = sx, ex, sgnx do
local ChunkCenterX = x * 16 + 8
local sqdist = SqDistPtFromLine(ChunkCenterX, ChunkCenterZ, Coords[1], Coords[3], Coords[4], Coords[6])
if (sqdist <= 128) then
table.insert(Chunks, {x, z})
end
end
end
-- Load the chunks and do the trace once loaded:
World:ChunkStay(Chunks,
nil,
function()
cLineBlockTracer:Trace(World, Callbacks, Coords[1], Coords[2], Coords[3], Coords[4], Coords[5], Coords[6])
end
)
return true
end
function HandleConsoleTestUrlClient(a_Split, a_EntireCmd)
local url = a_Split[2] or "https://github.com"
local isSuccess, msg = cUrlClient:Get(url,
function (a_Body, a_SecondParam)
if not(a_Body) then
-- An error has occurred, a_SecondParam is the error message
LOG("Error while retrieving URL \"" .. url .. "\": " .. (a_SecondParam or ""))
return
end
-- Body received, a_SecondParam is the HTTP headers dictionary-table
assert(type(a_Body) == "string")
assert(type(a_SecondParam) == "table")
LOG("URL body received, length is " .. string.len(a_Body) .. " bytes and there are these headers:")
for k, v in pairs(a_SecondParam) do
LOG(" \"" .. k .. "\": \"" .. v .. "\"")
end
LOG("(headers list finished)")
end
)
if not(isSuccess) then
LOG("cUrlClient request failed: " .. (msg or ""))
end
return true
end
function HandleConsoleTestUrlParser(a_Split, a_EntireCmd)
LOG("Testing cUrlParser...")
local UrlsToTest =
{
"invalid URL",
"https://github.com",
"ftp://anonymous:user@example.com@ftp.cuberite.org:9921/releases/2015/2015-12-25.zip",
"ftp://anonymous:user:name:with:colons@example.com@ftp.cuberite.org:9921",
"https://google.com/",
"https://google.com/?q=cuberite",
"https://google.com/search?q=cuberite",
"https://google.com/some/search?q=cuberite#results",
"https://google.com/?q=cuberite#results",
"https://google.com/#results",
"ftp://cuberite.org:9921/releases/2015/2015-12-25.zip",
"mailto:support@cuberite.org",
}
for _, u in ipairs(UrlsToTest) do
LOG("URL: " .. u)
local scheme, username, password, host, port, path, query, fragment = cUrlParser:Parse(u)
if not(scheme) then
LOG(" Error: " .. (username or ""))
else
LOG(" Scheme = " .. scheme)
LOG(" Username = " .. username)
LOG(" Password = " .. password)
LOG(" Host = " .. host)
LOG(" Port = " .. port)
LOG(" Path = " .. path)
LOG(" Query = " .. query)
LOG(" Fragment = " .. fragment)
end
end
LOG("cUrlParser test complete")
return true
end
function HandleConsoleUuid(a_Split, a_EntireCmd)
-- Check params:
local playerName = a_Split[2]
if not(playerName) then
return true, "Usage: uuid "
end
-- Query with cache:
LOG("Player " .. playerName .. ":")
local cachedUuid = cMojangAPI:GetUUIDFromPlayerName(playerName, true)
if not(cachedUuid) then
LOG(" - not in the UUID cache")
else
LOG(" - in the cache: \"" .. cachedUuid .. "\"")
end
-- Query online:
local onlineUuid = cMojangAPI:GetUUIDFromPlayerName(playerName, false)
if not(onlineUuid) then
LOG(" - UUID not available online")
else
LOG(" - online: \"" .. onlineUuid .. "\"")
end
return true
end
function HandleConsoleBBox(a_Split)
local bbox = cBoundingBox(0, 10, 0, 10, 0, 10)
local v1 = Vector3d(1, 1, 1)
local v2 = Vector3d(5, 5, 5)
local v3 = Vector3d(11, 11, 11)
if (bbox:IsInside(v1)) then
LOG("v1 is inside bbox")
else
LOG("v1 is not inside bbox")
end
if (bbox:IsInside(v2)) then
LOG("v2 is inside bbox")
else
LOG("v2 is not inside bbox")
end
if (bbox:IsInside(v3)) then
LOG("v3 is inside bbox")
else
LOG("v3 is not inside bbox")
end
if (bbox:IsInside(v1, v2)) then
LOG("v1*v2 is inside bbox")
else
LOG("v1*v2 is not inside bbox")
end
if (bbox:IsInside(v2, v1)) then
LOG("v2*v1 is inside bbox")
else
LOG("v2*v1 is not inside bbox")
end
if (bbox:IsInside(v1, v3)) then
LOG("v1*v3 is inside bbox")
else
LOG("v1*v3 is not inside bbox")
end
if (bbox:IsInside(v2, v3)) then
LOG("v2*v3 is inside bbox")
else
LOG("v2*v3 is not inside bbox")
end
return true
end
function HandleConsoleDeadlock(a_Split)
-- If given a parameter, assume it's a world name and simulate a deadlock in the world's tick thread
if (a_Split[2]) then
local world = cRoot:Get():GetWorld(a_Split[2])
if (world) then
world:ScheduleTask(0,
function()
-- Make a live-lock:
while (true) do
end
end
)
return true, "Deadlock in world tick thread for world " .. a_Split[2] .. " has been scheduled."
end
LOG("Not a world name: " .. a_Split[2] .. "; simulating a deadlock in the command execution thread instead.")
else
LOG("Simulating a deadlock in the command execution thread.")
end
-- Make a live-lock in the command execution thread:
while(true) do
end
end
function HandleConsoleDownload(a_Split)
-- Check params:
local url = a_Split[2]
local fnam = a_Split[3]
if (not(url) or not(fnam)) then
return true, "Missing parameters. Usage: download "
end
local callbacks =
{
OnStatusLine = function (self, a_HttpVersion, a_Status, a_Rest)
if (a_Status ~= 200) then
LOG("Cannot download " .. url .. ", HTTP error code " .. a_Status)
return
end
local f, err = io.open(fnam, "wb")
if not(f) then
LOG("Cannot download " .. url .. ", error opening the file " .. fnam .. ": " .. (err or ""))
return
end
self.m_File = f
end,
OnBodyData = function (self, a_Data)
if (self.m_File) then
self.m_File:write(a_Data)
end
end,
OnBodyFinished = function (self)
if (self.m_File) then
self.m_File:close()
LOG("File " .. fnam .. " has been downloaded.")
end
end,
}
local isSuccess, msg = cUrlClient:Get(url, callbacks)
if not(isSuccess) then
LOG("Cannot start an URL download: " .. (msg or ""))
return true
end
return true
end
function HandleBlkCmd(a_Split, a_Player)
-- Gets info about the block the player is looking at.
local World = a_Player:GetWorld();
local Callbacks = {
OnNextBlock = function(a_BlockPos, a_BlockType, a_BlockMeta)
if (a_BlockType ~= E_BLOCK_AIR) then
a_Player:SendMessage("Block at " .. a_BlockPos.x .. ", " .. a_BlockPos.y .. ", " .. a_BlockPos.z .. " is " .. a_BlockType .. ":" .. a_BlockMeta)
return true;
end
end
};
local EyePos = a_Player:GetEyePosition();
local LookVector = a_Player:GetLookVector();
LookVector:Normalize();
local End = EyePos + LookVector * 50;
cLineBlockTracer.Trace(World, Callbacks, EyePos, End);
return true;
end
function HandleBoomCmd(a_Split, a_Player)
local playerPos = a_Player:GetPosition()
a_Player:GetWorld():BroadcastParticleEffect("smoke", Vector3f(playerPos), Vector3f(), 0, 900)
a_Player:GetWorld():BroadcastSoundEffect("entity.firework.large_blast", playerPos, 1, 1)
a_Player:SendMessage("BOOM!")
return true
end
function HandleTeamsCmd(a_Split, a_Player)
local Scoreboard = a_Player:GetWorld():GetScoreBoard()
a_Player:SendMessage("Teams: " .. table.concat(Scoreboard:GetTeamNames(), ", "))
return true
end
================================================
FILE: Server/Plugins/Debuggers/Info.lua
================================================
-- Info.lua
-- Implements the g_PluginInfo standard plugin description
g_PluginInfo =
{
Name = "Debuggers",
Version = "14",
Date = "2014-12-11",
Description = [[Contains code for testing and debugging the server. Should not be enabled on a production server!]],
Commands =
{
["/arr"] =
{
Permission = "debuggers",
Handler = HandleArrowCmd,
HelpString = "Creates an arrow going away from the player"
},
["/blk"] =
{
Permission = "debuggers",
Handler = HandleBlkCmd,
HelpString = "Gets info about the block you are looking at"
},
["/boom"] =
{
Permission = "debuggers",
Handler = HandleBoomCmd,
HelpString = "Playes a sound and displays an effect at the player's position",
},
["/cake"] =
{
Permission = "debuggers",
Handler = HandleCakeCmd,
HelpString = "Throws a cake in the direction the player's looking, in a slow arc.",
},
["/clientversion"] =
{
Permission = "debuggers",
Handler = HandleClientVersionCmd,
HelpString = "Shows your client's protocol version",
},
["/come"] =
{
Permission = "debuggers.come",
Handler = HandleComeCmd,
HelpString = "Instruct the mob you're looking at to navigate to your position",
},
["/compo"] =
{
Permission = "debuggers",
Handler = HandleCompo,
HelpString = "Tests the cCompositeChat bindings"
},
["/cstay"] =
{
Permission = "debuggers",
Handler = HandleChunkStay,
HelpString = "Tests the ChunkStay Lua integration for the specified chunk coords"
},
["/dash"] =
{
Permission = "debuggers",
Handler = HandleDashCmd,
HelpString = "Switches between fast and normal sprinting speed"
},
["/ench"] =
{
Permission = "debuggers",
Handler = HandleEnchCmd,
HelpString = "Provides an instant dummy enchantment window"
},
["/fast"] =
{
Permission = "debuggers",
Handler = HandleFastCmd,
HelpString = "Switches between fast and normal movement speed"
},
["/fb"] =
{
Permission = "debuggers",
Handler = HandleFireballCmd,
HelpString = "Creates a ghast fireball as if shot by the player"
},
["/ff"] =
{
Permission = "debuggers",
Handler = HandleFurnaceFuel,
HelpString = "Shows how long the currently held item would burn in a furnace"
},
["/fill"] =
{
Permission = "debuggers",
Handler = HandleFill,
HelpString = "Fills all block entities in current chunk with junk"
},
["/fl"] =
{
Permission = "debuggers",
Handler = HandleFoodLevelCmd,
HelpString = "Sets the food level to the given value"
},
["/fr"] =
{
Permission = "debuggers",
Handler = HandleFurnaceRecipe,
HelpString = "Shows the furnace recipe for the currently held item"
},
["/fs"] =
{
Permission = "debuggers",
Handler = HandleFoodStatsCmd,
HelpString = "Turns regular foodstats message on or off"
},
["/gc"] =
{
Permission = "debuggers",
Handler = HandleGCCmd,
HelpString = "Activates the Lua garbage collector"
},
["/genrails"] =
{
Permission = "debuggers",
Handler = HandleGenRailsCmd,
HelpString = "Generates rail blocks with all metas from current block towards X+",
},
["/getcustomname"] =
{
Permission = "debuggers",
Handler = HandleGetCustomNameCmd,
HelpString = "Displays the exact custom name of currently held item (including non-printables)",
},
["/getlore"] =
{
Permission = "debuggers",
Handler = HandleGetLoreCmd,
HelpString = "Displays the exact Lore of currently held item (including non-printables)",
},
["/getprop"] =
{
Permission = "debuggers",
Handler = HandleGetPropCmd,
HelpString = "Displays the custom cItem property of the currently held item",
},
["/hunger"] =
{
Permission = "debuggers",
Handler = HandleHungerCmd,
HelpString = "Lists the current hunger-related variables"
},
["/ke"] =
{
Permission = "debuggers",
Handler = HandleKillEntitiesCmd,
HelpString = "Kills all the loaded entities"
},
["/le"] =
{
Permission = "debuggers",
Handler = HandleListEntitiesCmd,
HelpString = "Shows a list of all the loaded entities"
},
["/nick"] =
{
Permission = "debuggers",
Handler = HandleNickCmd,
HelpString = "Gives you a custom name",
},
["/pickups"] =
{
Permission = "debuggers",
Handler = HandlePickups,
HelpString = "Spawns random pickups around you"
},
["/plugmsg"] =
{
Permission = "debuggers",
Handler = HandlePlugMsg,
HelpString = "Sends a test plugin message to the client",
},
["/poison"] =
{
Permission = "debuggers",
Handler = HandlePoisonCmd,
HelpString = "Sets food-poisoning for 15 seconds"
},
["/poof"] =
{
Permission = "debuggers",
Handler = HandlePoof,
HelpString = "Nudges pickups close to you away from you"
},
["/rmitem"] =
{
Permission = "debuggers",
Handler = HandleRMItem,
HelpString = "Remove the specified item from the inventory."
},
["/sb"] =
{
Permission = "debuggers",
Handler = HandleSetBiome,
HelpString = "Sets the biome around you to the specified one"
},
["/sched"] =
{
Permission = "debuggers",
Handler = HandleSched,
HelpString = "Schedules a simple countdown using cWorld:ScheduleTask()"
},
["/setcustomname"] =
{
Permission = "debuggers",
Handler = HandleSetCustomNameCmd,
HelpString = "Sets the custom name for the item currently in hand",
},
["/setlore"] =
{
Permission = "debuggers",
Handler = HandleSetLoreCmd,
HelpString = "Sets the lore for the item currently in hand",
},
["/setprop"] =
{
Permission = "debuggers",
Handler = HandleSetPropCmd,
HelpString = "Sets the custom property for the item currently in hand",
},
["/spidey"] =
{
Permission = "debuggers",
Handler = HandleSpideyCmd,
HelpString = "Shoots a line of web blocks until it hits non-air"
},
["/starve"] =
{
Permission = "debuggers",
Handler = HandleStarveCmd,
HelpString = "Sets the food level to zero"
},
["/teams"] =
{
Permission = "debuggers",
Handler = HandleTeamsCmd,
HelpString = "List the teams"
},
["/testwnd"] =
{
Permission = "debuggers",
Handler = HandleTestWndCmd,
HelpString = "Opens up a window using plugin API"
},
["/vector"] =
{
Permission = "debuggers",
Handler = HandleVectorCmd,
HelpString = "Tests the Vector3 API",
},
["/wesel"] =
{
Permission = "debuggers",
Handler = HandleWESel,
HelpString = "Expands the current WE selection by 1 block in X/Z"
},
["/wool"] =
{
Permission = "debuggers",
Handler = HandleWoolCmd,
HelpString = "Sets all your armor to blue wool"
},
["/xpa"] =
{
Permission = "debuggers",
Handler = HandleAddExperience,
HelpString = "Adds 200 experience to the player"
},
["/xpr"] =
{
Permission = "debuggers",
Handler = HandleRemoveXp,
HelpString = "Remove all xp"
},
}, -- Commands
ConsoleCommands =
{
["bbox"] =
{
Handler = HandleConsoleBBox,
HelpString = "Performs cBoundingBox API tests",
},
["deadlock"] =
{
Handler = HandleConsoleDeadlock,
HelpString = "Simulates a deadlock, either on the command execution thread, or on a world tick thread",
},
["download"] =
{
Handler = HandleConsoleDownload,
HelpString = "Downloads a file from a specified URL",
},
["hash"] =
{
Handler = HandleConsoleHash,
HelpString = "Tests the crypto hashing functions",
},
["hittrace"] =
{
Handler = HandleConsoleHitTrace,
HelpString = "Tests the FirstSolidHit trace",
},
["inh"] =
{
Handler = HandleConsoleInh,
HelpString = "Tests the bindings of the cEntity inheritance",
},
["loadchunk"] =
{
Handler = HandleConsoleLoadChunk,
HelpString = "Loads the specified chunk into memory",
},
["lostrace"] =
{
Handler = HandleConsoleLosTrace,
HelpString = "Tests a LineOfSight trace",
},
["pluginstats"] =
{
Handler = HandleConsolePluginStats,
HelpString = "Shows the stats for each plugin",
},
["preparechunk"] =
{
Handler = HandleConsolePrepareChunk,
HelpString = "Prepares the specified chunk completely (load / gen / light)",
},
["sched"] =
{
Handler = HandleConsoleSchedule,
HelpString = "Tests the world scheduling",
},
["testbbox"] =
{
Handler = HandleConsoleTestBbox,
HelpString = "Tests cBoundingBox API"
},
["testcall"] =
{
Handler = HandleConsoleTestCall,
HelpString = "Tests inter-plugin calls with various values"
},
["testerr"] =
{
Handler = HandleConsoleTestErr,
HelpString = "Tests the server's ability to recover from errors in callbacks (GH #3733)",
},
["testjson"] =
{
Handler = HandleConsoleTestJson,
HelpString = "Tests the cJson parser and serializer",
},
["testtracer"] =
{
Handler = HandleConsoleTestTracer,
HelpString = "Tests the cLineBlockTracer",
},
["testtracerdeprecated"] =
{
Handler = HandleConsoleTestTracerDeprecated,
HelpString = "Tests the cLineBlockTracer's deprecated API",
},
["testurlclient"] =
{
Handler = HandleConsoleTestUrlClient,
HelpString = "Tests the cUrlClient",
},
["testurlparser"] =
{
Handler = HandleConsoleTestUrlParser,
HelpString = "Tests the cUrlParser",
},
["uuid"] =
{
Handler = HandleConsoleUuid,
HelpString = "Queries the cMojangAPI for a player's UUID",
}
}, -- ConsoleCommands
} -- g_PluginInfo
================================================
FILE: Server/Plugins/Debuggers/Inject.lua
================================================
-- Inject.lua
-- This file gets injected into the Core plugin when testing the inter-plugin calls with the "testcall" command
-- However, since this is a .lua file, it also gets loaded into the Debuggers plugin, so we need to distinguish the two
--- Prints the specified table to the log, using the specified indent
-- Assumes there are no cycles in the table and all keys and values can be turned to strings
local function printTable(a_Table, a_Indent)
for k, v in pairs(a_Table) do
LOG(a_Indent .. "k = " .. tostring(k))
if (type(k) == "table") then
printTable(k, a_Indent .. " ")
end
LOG(a_Indent .. "v = " .. tostring(v))
if (type(v) == "table") then
printTable(v, a_Indent .. " ")
end
end
end
local function printParams(...)
LOG("printParams:")
for idx, param in ipairs({...}) do
LOG(" param" .. idx .. ": " .. tostring(param))
if (type(param) == "table") then
printTable(param, " ")
end
end
LOG("done")
return true
end
local pluginName = cPluginManager:Get():GetCurrentPlugin():GetName()
if (pluginName ~= "Debuggers") then
-- We're in the destination plugin
LOG("Loaded Inject.lua into " .. pluginName)
injectedPrintParams = printParams
return true
else
-- We're in the Debuggers plugin, do nothing
end
================================================
FILE: Server/Plugins/DumpInfo/Init.lua
================================================
function Initialize(a_Plugin)
a_Plugin:SetName("DumpInfo")
a_Plugin:SetVersion(1)
-- Check if the infodump file exists.
if (not cFile:IsFile("Plugins/InfoDump.lua")) then
LOGWARN("InfoDump.lua was not found.")
return false
end
-- Add the webtab.
a_Plugin:AddWebTab("DumpPlugin", HandleDumpPluginRequest)
return true
end
function HandleDumpPluginRequest(a_Request)
local Content = ""
-- Check if it already was requested to dump a plugin.
if (a_Request.PostParams["DumpInfo"] ~= nil) then
local F = loadfile("Plugins/InfoDump.lua")
F("Plugins/" .. cPluginManager:Get():GetPluginFolderName(a_Request.PostParams["DumpInfo"]))
end
Content = Content .. [[
DumpInfo
]]
-- Loop through each plugin that is found.
cPluginManager:Get():ForEachPlugin(
function(a_Plugin)
-- Check if there is a file called 'Info.lua'
if (cFile:IsFile(a_Plugin:GetLocalFolder() .. "/Info.lua")) then
Content = Content .. "\n
\n"
Content = Content .. "\t
" .. a_Plugin:GetName() .. "
\n"
Content = Content .. "\t
\n"
Content = Content .. "
\n"
end
end
)
Content = Content .. [[
]]
return Content
end
================================================
FILE: Server/Plugins/HookNotify/HookNotify.lua
================================================
-- HookNotify.lua
--[[
Implements the entire plugin
NOTE: This plugin is not meant for production servers. It is used mainly by developers to verify that things
are working properly when implementing Cuberite features. Do not enable this plugin on production servers!
This plugin logs a notification for each hook that is being called by the server.
The TICK and WORLD_TICK hooks are disabled because they produce too much output.
--]]
function Initialize(a_Plugin)
-- Notify the admin that HookNotify is installed, this is not meant for production servers
LOGINFO("HookNotify plugin is installed, beware, the log output may be quite large!");
LOGINFO("You want this plugin enabled only when developing another plugin, not for regular gameplay.");
-- These hooks will not be notified:
local hooksToIgnore =
{
["HOOK_TICK"] = true, -- Too much spam
["HOOK_WORLD_TICK"] = true, -- Too much spam
["HOOK_TAKE_DAMAGE"] = true, -- Has a separate handler with more info logged
["HOOK_MAX"] = true, -- No such hook, placeholder only
["HOOK_NUM_HOOKS"] = true, -- No such hook, placeholder only
}
-- Add all hooks:
for n, v in pairs(cPluginManager) do
if (n:match("HOOK_.*")) then
if not(hooksToIgnore[n]) then
LOG("Adding notification for hook " .. n .. " (" .. v .. ").")
cPluginManager.AddHook(v,
function (...)
LOG(n .. "(")
for i, param in ipairs(arg) do
LOG(" " .. i .. ": " .. tolua.type(param) .. ": " .. tostring(param))
end
LOG(")");
end -- hook handler
) -- AddHook
end -- not (ignore)
end -- n matches "HOOK"
end -- for cPluginManager{}
-- OnTakeDamage has a special handler listing the details of the damage dealt:
cPluginManager.AddHook(cPluginManager.HOOK_TAKE_DAMAGE,
function (a_Receiver, a_TDI)
-- a_Receiver is cPawn
-- a_TDI is TakeDamageInfo
LOG("OnTakeDamage(): " .. a_Receiver:GetClass() .. " was dealt RawDamage " .. a_TDI.RawDamage .. ", FinalDamage " .. a_TDI.FinalDamage .. " (that is, " .. (a_TDI.RawDamage - a_TDI.FinalDamage) .. " HPs covered by armor)");
end
)
return true
end
================================================
FILE: Server/Plugins/InfoDump.lua
================================================
#!/usr/bin/lua
-- InfoDump.lua
--[[
Loads plugins' Info.lua and dumps its g_PluginInfo (or gPluginInfo) into various text formats
This is used for generating plugin documentation for the forum and for GitHub's INFO.md files
This script can be used in two ways:
Executing "lua InfoDump.lua" will go through all subfolders and dump each Info.lua file it can find
Note that this mode of operation requires LuaRocks with LFS installed; instructions are printed
when the prerequisites are not met.
Executing "lua InfoDump.lua PluginName" will load the Info.lua file from PluginName's folder and dump
only that one plugin's documentation. This mode of operation doesn't require LuaRocks
--]]
-- If this file is called using the loadfile function the arg variable isn't filled. We have to do it manualy then.
local arg = arg or {...}
-- Check Lua version. We use 5.1-specific construct when loading the plugin info, 5.2 is not compatible!
if (_VERSION ~= "Lua 5.1") then
print("Unsupported Lua version. This script requires Lua version 5.1, this Lua is version " .. (_VERSION or ""))
return
end
--- Removes any whitespace at the beginning and end of the string
local function TrimString(a_Str)
return (string.match(a_Str, "^%s*(.-)%s*$"))
end
--- Replaces generic formatting with forum-specific formatting
-- Also removes the single line-ends
local function ForumizeString(a_Str)
assert(type(a_Str) == "string")
-- Remove the indentation, unless in the code tag:
-- Only one code or /code tag per line is supported!
local IsInCode = false
local function RemoveIndentIfNotInCode(s)
if (IsInCode) then
-- we're in code section, check if this line terminates it
IsInCode = (s:find("{%%/code}") ~= nil)
return s .. "\n"
else
-- we're not in code section, check if this line starts it
IsInCode = (s:find("{%%code}") ~= nil)
return s:gsub("^%s*", "") .. "\n"
end
end
a_Str = a_Str:gsub("(.-)\n", RemoveIndentIfNotInCode)
-- Replace multiple line ends with {%p} and single line ends with a space,
-- so that manual word-wrap in the Info.lua file doesn't wrap in the forum.
a_Str = a_Str:gsub("\n\n", "{%%p}")
a_Str = a_Str:gsub("\n", " ")
-- Replace the generic formatting:
a_Str = a_Str:gsub("{%%p}", "\n\n")
a_Str = a_Str:gsub("{%%b}", "[b]"):gsub("{%%/b}", "[/b]")
a_Str = a_Str:gsub("{%%i}", "[i]"):gsub("{%%/i}", "[/i]")
a_Str = a_Str:gsub("{%%list}", "\n[list]"):gsub("{%%/list}", "[/list]")
a_Str = a_Str:gsub("{%%li}", "\n[*]"):gsub("{%%/li}", "\n")
-- Process links: {%a LinkDestination}LinkText{%/a}
a_Str = a_Str:gsub("{%%a%s([^}]*)}([^{]*){%%/a}", "[url=%1]%2[/url]")
-- TODO: Other formatting
return a_Str
end
--- Replaces generic formatting with forum-specific formatting
-- Also removes the single line-ends
local function GithubizeString(a_Str)
assert(type(a_Str) == "string")
-- Remove the indentation, unless in the code tag:
-- Only one code or /code tag per line is supported!
local IsInCode = false
local function RemoveIndentIfNotInCode(s)
if (IsInCode) then
-- we're in code section, check if this line terminates it
IsInCode = (s:find("{%%/code}") ~= nil)
return s .. "\n"
else
-- we're not in code section, check if this line starts it
IsInCode = (s:find("{%%code}") ~= nil)
return s:gsub("^%s*", "") .. "\n"
end
end
a_Str = a_Str:gsub("(.-)\n", RemoveIndentIfNotInCode)
-- Replace multiple line ends with {%p} and single line ends with a space,
-- so that manual word-wrap in the Info.lua file doesn't wrap in the forum.
a_Str = a_Str:gsub("\n\n", "{%%p}")
a_Str = a_Str:gsub("\n", " ")
-- Replace the generic formatting:
a_Str = a_Str:gsub("{%%p}", "\n\n")
a_Str = a_Str:gsub("{%%b}", "**"):gsub("{%%/b}", "**")
a_Str = a_Str:gsub("{%%i}", "*"):gsub("{%%/i}", "*")
a_Str = a_Str:gsub("{%%list}", "\n"):gsub("{%%/list}", "\n")
a_Str = a_Str:gsub("{%%li}", "\n - "):gsub("{%%/li}", "")
-- Process links: {%a LinkDestination}LinkText{%/a}
a_Str = a_Str:gsub("{%%a%s([^}]*)}([^{]*){%%/a}", "[%2](%1)")
-- TODO: Other formatting
return a_Str
end
--- Builds an array of categories, each containing all the commands belonging to the category,
-- and the category description, if available.
-- Returns the array table, each item has the following format:
-- { Name = "CategoryName", Description = "CategoryDescription", Commands = {{CommandString = "/cmd verb", Info = {...}}, ...}}
local function BuildCategories(a_PluginInfo)
-- The returned result
-- This will contain both an array and a dict of the categories, to allow fast search
local res = {}
-- For each command add a reference to it into all of its categories:
local function AddCommands(a_CmdPrefix, a_Commands)
for cmd, info in pairs(a_Commands or {}) do
local NewCmd =
{
CommandString = a_CmdPrefix .. cmd,
Info = info,
}
if ((info.HelpString ~= nil) and (info.HelpString ~= "")) then
-- Add to each specified category:
local Category = info.Category
if (type(Category) == "string") then
Category = {Category}
end
for idx, cat in ipairs(Category or {""}) do
local CatEntry = res[cat]
if (CatEntry == nil) then
-- First time we came across this category, create it:
local NewCat = {Name = cat, Description = "", Commands = {NewCmd}}
table.insert(res, NewCat)
res[cat] = NewCat
else
-- We already have this category, just add the command to its list of commands:
table.insert(CatEntry.Commands, NewCmd)
end
end -- for idx, cat - Category[]
end -- if (HelpString valid)
-- Recurse all subcommands:
if (info.Subcommands ~= nil) then
AddCommands(a_CmdPrefix .. cmd .. " ", info.Subcommands)
end
end -- for cmd, info - a_Commands[]
end -- AddCommands()
AddCommands("", a_PluginInfo.Commands)
-- Assign descriptions to categories:
for name, desc in pairs(a_PluginInfo.Categories or {}) do
local CatEntry = res[name]
if (CatEntry ~= nil) then
-- The result has this category, add the description:
CatEntry.Description = desc.Description
end
end
-- Alpha-sort each category's command list:
for idx, cat in ipairs(res) do
table.sort(cat.Commands,
function (cmd1, cmd2)
return (string.lower(cmd1.CommandString) < string.lower(cmd2.CommandString))
end
)
end
return res
end
--- Returns a string specifying the command.
-- If a_Command is a simple string, returns a_Command colorized to blue
-- If a_Command is a table, expects members Name (full command name) and Params (command parameters),
-- colorizes command name blue and params green
local function GetCommandRefForum(a_Command)
if (type(a_Command) == "string") then
return "[color=blue]" .. a_Command .. "[/color]"
end
return "[color=blue]" .. a_Command.Name .. "[/color] [color=green]" .. (a_Command.Params or "") .. "[/color]"
end
--- Returns a string specifying the command.
-- If a_CommandParams is nil, returns a_CommandName apostrophed
-- If a_CommandParams is a string, apostrophes a_CommandName with a_CommandParams
local function GetCommandRefGithub(a_CommandName, a_CommandParams)
assert(type(a_CommandName) == "string")
if (a_CommandParams == nil) then
return "`" .. a_CommandName .. "`"
end
assert(type(a_CommandParams) == "table")
if ((a_CommandParams.Params == nil) or (a_CommandParams.Params == "")) then
return "`" .. a_CommandName .. "`"
end
assert(type(a_CommandParams.Params) == "string")
return "`" .. a_CommandName .. " " .. a_CommandParams.Params .. "`"
end
--- Writes the specified command detailed help array to the output file, in the forum dump format
local function WriteCommandParameterCombinationsForum(a_CmdString, a_ParameterCombinations, f)
assert(type(a_CmdString) == "string")
assert(type(a_ParameterCombinations) == "table")
assert(f ~= nil)
if (#a_ParameterCombinations == 0) then
-- No explicit parameter combinations to write
return
end
f:write("The following parameter combinations are recognized:\n")
for idx, combination in ipairs(a_ParameterCombinations) do
f:write("[color=blue]", a_CmdString, "[/color] [color=green]", combination.Params or "", "[/color]")
if (combination.Help ~= nil) then
f:write(" - ", ForumizeString(combination.Help))
end
if (combination.Permission ~= nil) then
f:write(" (Requires permission '[color=red]", combination.Permission, "[/color]')")
end
f:write("\n")
end
end
--- Writes the specified command detailed help array to the output file, in the forum dump format
local function WriteCommandParameterCombinationsGithub(a_CmdString, a_ParameterCombinations, f)
assert(type(a_CmdString) == "string")
assert(type(a_ParameterCombinations) == "table")
assert(f ~= nil)
if (#a_ParameterCombinations == 0) then
-- No explicit parameter combinations to write
return
end
f:write("The following parameter combinations are recognized:\n\n")
for idx, combination in ipairs(a_ParameterCombinations) do
f:write(GetCommandRefGithub(a_CmdString, combination))
if (combination.Help ~= nil) then
f:write(" - ", GithubizeString(combination.Help))
end
if (combination.Permission ~= nil) then
f:write(" (Requires permission '**", combination.Permission, "**')")
end
f:write("\n")
end
end
--- Writes all commands in the specified category to the output file, in the forum dump format
local function WriteCommandsCategoryForum(a_Category, f)
-- Write category name:
local CategoryName = a_Category.Name
if (CategoryName == "") then
CategoryName = "General"
end
f:write("\n[size=large]", ForumizeString(a_Category.DisplayName or CategoryName), "[/size]\n")
-- Write description:
if (a_Category.Description ~= "") then
f:write(ForumizeString(a_Category.Description), "\n")
end
-- Write commands:
f:write("\n[list]")
for idx2, cmd in ipairs(a_Category.Commands) do
f:write("\n[b]", cmd.CommandString, "[/b] - ", ForumizeString(cmd.Info.HelpString or "UNDOCUMENTED"), "\n")
if (cmd.Info.Permission ~= nil) then
f:write("Permission required: [color=red]", cmd.Info.Permission, "[/color]\n")
end
if (cmd.Info.DetailedDescription ~= nil) then
f:write(ForumizeString(cmd.Info.DetailedDescription))
end
if (cmd.Info.ParameterCombinations ~= nil) then
WriteCommandParameterCombinationsForum(cmd.CommandString, cmd.Info.ParameterCombinations, f)
end
end
f:write("[/list]\n\n")
end
--- Writes all commands in the specified category to the output file, in the Github dump format
local function WriteCommandsCategoryGithub(a_Category, f)
-- Write category name:
local CategoryName = a_Category.Name
if (CategoryName == "") then
CategoryName = "General"
end
f:write("\n### ", GithubizeString(a_Category.DisplayName or CategoryName), "\n")
-- Write description:
if (a_Category.Description ~= "") then
f:write(GithubizeString(a_Category.Description), "\n\n")
end
f:write("| Command | Permission | Description |\n")
f:write("| ------- | ---------- | ----------- |\n")
-- Write commands:
for idx2, cmd in ipairs(a_Category.Commands) do
f:write("|", cmd.CommandString, " | ", cmd.Info.Permission or "", " | ", GithubizeString(cmd.Info.HelpString or "UNDOCUMENTED"), "|\n")
end
f:write("\n\n")
end
local function DumpCommandsForum(a_PluginInfo, f)
-- Copy all Categories from a dictionary into an array:
local Categories = BuildCategories(a_PluginInfo)
-- Sort the categories by name:
table.sort(Categories,
function(cat1, cat2)
return (string.lower(cat1.Name) < string.lower(cat2.Name))
end
)
if (#Categories == 0) then
return
end
f:write("\n[size=x-large]Commands[/size]\n")
-- Dump per-category commands:
for idx, cat in ipairs(Categories) do
WriteCommandsCategoryForum(cat, f)
end
end
local function DumpCommandsGithub(a_PluginInfo, f)
-- Copy all Categories from a dictionary into an array:
local Categories = BuildCategories(a_PluginInfo)
-- Sort the categories by name:
table.sort(Categories,
function(cat1, cat2)
return (string.lower(cat1.Name) < string.lower(cat2.Name))
end
)
if (#Categories == 0) then
return
end
f:write("\n# Commands\n")
-- Dump per-category commands:
for idx, cat in ipairs(Categories) do
WriteCommandsCategoryGithub(cat, f)
end
end
local function DumpAdditionalInfoForum(a_PluginInfo, f)
local AInfo = a_PluginInfo.AdditionalInfo
if (type(AInfo) ~= "table") then
-- There is no AdditionalInfo in a_PluginInfo
return
end
for idx, info in ipairs(a_PluginInfo.AdditionalInfo) do
if ((info.Title ~= nil) and (info.Contents ~= nil)) then
f:write("\n[size=x-large]", ForumizeString(info.Title), "[/size]\n")
f:write(ForumizeString(info.Contents), "\n")
end
end
end
local function DumpAdditionalInfoGithub(a_PluginInfo, f)
local AInfo = a_PluginInfo.AdditionalInfo
if (type(AInfo) ~= "table") then
-- There is no AdditionalInfo in a_PluginInfo
return
end
for idx, info in ipairs(a_PluginInfo.AdditionalInfo) do
if ((info.Title ~= nil) and (info.Contents ~= nil)) then
f:write("\n# ", GithubizeString(info.Title), "\n")
f:write(GithubizeString(info.Contents), "\n")
end
end
end
--- Collects all permissions mentioned in the info, returns them as a sorted array
-- Each array item is {Name = "PermissionName", Info = { PermissionInfo }}
local function BuildPermissions(a_PluginInfo)
-- Collect all used permissions from Commands, reference the commands that use the permission:
local Permissions = a_PluginInfo.Permissions or {}
local function CollectPermissions(a_CmdPrefix, a_Commands)
for cmd, info in pairs(a_Commands or {}) do
CommandString = a_CmdPrefix .. cmd
if ((info.Permission ~= nil) and (info.Permission ~= "")) then
-- Add the permission to the list of permissions:
local Permission = Permissions[info.Permission] or {}
Permissions[info.Permission] = Permission
-- Add the command to the list of commands using this permission:
Permission.CommandsAffected = Permission.CommandsAffected or {}
-- First, make sure that we don't already have this command in the list,
-- it may have already been present in a_PluginInfo
local NewCommand = true
for _, existCmd in ipairs(Permission.CommandsAffected) do
if CommandString == existCmd then
NewCommand = false
break
end
end
if NewCommand then
table.insert(Permission.CommandsAffected, CommandString)
end
end
-- Process the command param combinations for permissions:
local ParamCombinations = info.ParameterCombinations or {}
for idx, comb in ipairs(ParamCombinations) do
if ((comb.Permission ~= nil) and (comb.Permission ~= "")) then
-- Add the permission to the list of permissions:
local Permission = Permissions[comb.Permission] or {}
Permissions[info.Permission] = Permission
-- Add the command to the list of commands using this permission:
Permission.CommandsAffected = Permission.CommandsAffected or {}
table.insert(Permission.CommandsAffected, {Name = CommandString, Params = comb.Params})
end
end
-- Process subcommands:
if (info.Subcommands ~= nil) then
CollectPermissions(CommandString .. " ", info.Subcommands)
end
end
end
CollectPermissions("", a_PluginInfo.Commands)
-- Copy the list of permissions to an array:
local PermArray = {}
for name, perm in pairs(Permissions) do
table.insert(PermArray, {Name = name, Info = perm})
end
-- Sort the permissions array:
table.sort(PermArray,
function(p1, p2)
return (p1.Name < p2.Name)
end
)
return PermArray
end
local function DumpPermissionsForum(a_PluginInfo, f)
-- Get the processed sorted array of permissions:
local Permissions = BuildPermissions(a_PluginInfo)
if ((Permissions == nil) or (#Permissions <= 0)) then
return
end
-- Dump the permissions:
f:write("\n[size=x-large]Permissions[/size]\n[list]\n")
for idx, perm in ipairs(Permissions) do
f:write(" - [color=red]", perm.Name, "[/color] - ")
f:write(ForumizeString(perm.Info.Description or ""))
local CommandsAffected = perm.Info.CommandsAffected or {}
if (#CommandsAffected > 0) then
f:write("\n[list] Commands affected:\n- ")
local Affects = {}
for idx2, cmd in ipairs(CommandsAffected) do
table.insert(Affects, GetCommandRefForum(cmd))
end
f:write(table.concat(Affects, "\n - "))
f:write("\n[/list]")
end
if (perm.Info.RecommendedGroups ~= nil) then
f:write("\n[list] Recommended groups: ", perm.Info.RecommendedGroups, "[/list]")
end
f:write("\n")
end
f:write("[/list]")
end
local function DumpPermissionsGithub(a_PluginInfo, f)
-- Get the processed sorted array of permissions:
local Permissions = BuildPermissions(a_PluginInfo)
if ((Permissions == nil) or (#Permissions <= 0)) then
return
end
-- Dump the permissions:
f:write("\n# Permissions\n")
f:write("| Permissions | Description | Commands | Recommended groups |\n")
f:write("| ----------- | ----------- | -------- | ------------------ |\n")
for idx, perm in ipairs(Permissions) do
f:write("| ", perm.Name, " | ")
f:write(GithubizeString(perm.Info.Description or ""), " | ")
local CommandsAffected = perm.Info.CommandsAffected or {}
if (#CommandsAffected > 0) then
local Affects = {}
for idx2, cmd in ipairs(CommandsAffected) do
if (type(cmd) == "string") then
table.insert(Affects, GetCommandRefGithub(cmd))
else
table.insert(Affects, GetCommandRefGithub(cmd.Name, cmd))
end
end
f:write(table.concat(Affects, ", "))
end
f:write(" | ")
if (perm.Info.RecommendedGroups ~= nil) then
f:write(perm.Info.RecommendedGroups)
end
f:write(" |\n")
end
end
local function DumpDependenciesForum(a_PluginInfo, f)
if (not a_PluginInfo.Dependencies) then
return
end
f:write("\n[size=x-large]Dependencies[/size]\n[list]")
for idx, dependency in ipairs(a_PluginInfo.Dependencies) do
f:write("\n\n [*] [b]", dependency.Name, "[/b]", dependency.Optional == true and " (Optional)" or " (Required)")
if (dependency.Description) then
f:write("\nDescription: ", ForumizeString(dependency.Description))
end
if (dependency.Type) then
f:write("\nType: ", dependency.Type)
end
if (dependency.Url) then
f:write("\nUrl: ", dependency.Url)
end
end
f:write("\n[/list]")
end
local function DumpDependenciesGithub(a_PluginInfo, f)
if (not a_PluginInfo.Dependencies) then
return
end
f:write("\n# Dependencies\n")
for idx, dependency in ipairs(a_PluginInfo.Dependencies) do
f:write("\n\n * **", dependency.Name, "** ", dependency.Optional == true and "(Optional)" or "(Required)")
if (dependency.Description) then
f:write(" \nDescription: ", GithubizeString(dependency.Description))
end
if (dependency.Type) then
f:write(" \nType: ", dependency.Type)
end
if (dependency.Url) then
f:write(" \nUrl: [", dependency.Url, "](", dependency.Url , ")")
end
end
end
--- Dumps the forum-format info for the plugin
-- Returns true on success, nil and error message on failure
local function DumpPluginInfoForum(a_PluginFolder, a_PluginInfo)
-- Open the output file:
local f, msg = io.open(a_PluginFolder .. "/forum_info.txt", "w")
if (f == nil) then
return nil, msg
end
-- Write the description:
f:write(ForumizeString(a_PluginInfo.Description), "\n")
DumpAdditionalInfoForum(a_PluginInfo, f)
DumpCommandsForum(a_PluginInfo, f)
DumpPermissionsForum(a_PluginInfo, f)
DumpDependenciesForum(a_PluginInfo, f)
if (a_PluginInfo.SourceLocation ~= nil) then
f:write("\n[b]Source[/b]: ", a_PluginInfo.SourceLocation, "\n")
end
if (a_PluginInfo.DownloadLocation ~= nil) then
f:write("[b]Download[/b]: ", a_PluginInfo.DownloadLocation)
end
f:close()
return true
end
--- Dumps the README.md file into the plugin's folder with the GitHub Markdown format
-- Returns true on success, nil and error message on failure
local function DumpPluginInfoGithub(a_PluginFolder, a_PluginInfo)
-- Check the params:
assert(type(a_PluginFolder) == "string")
assert(type(a_PluginInfo) == "table")
-- Open the output file:
local f, msg = io.open(a_PluginFolder .. "/README.md", "w")
if (f == nil) then
print("\tCannot dump github info for plugin " .. a_PluginFolder .. ": " .. msg)
return nil, msg
end
-- Write the description:
f:write(TrimString(GithubizeString(a_PluginInfo.Description)), "\n")
DumpAdditionalInfoGithub(a_PluginInfo, f)
DumpCommandsGithub(a_PluginInfo, f)
DumpPermissionsGithub(a_PluginInfo, f)
DumpDependenciesGithub(a_PluginInfo, f)
f:close()
return true
end
--- Tries to load the g_PluginInfo or gPluginInfo from the plugin's Info.lua file
-- Returns the plugin info table on success, or nil and error message on failure
local function LoadPluginInfo(a_FolderName)
-- Load and compile the Info file:
local cfg, err = loadfile(a_FolderName .. "/Info.lua")
if (cfg == nil) then
return nil, "Cannot open 'Info.lua': " .. err
end
-- Execute the loaded file in a sandbox:
-- This is Lua-5.1-specific and won't work in Lua 5.2!
local Sandbox = {}
setfenv(cfg, Sandbox)
local isSuccess, errMsg = pcall(cfg)
if not(isSuccess) then
return nil, "Cannot load Info.lua: " .. (errMsg or "")
end
if (Sandbox.g_PluginInfo) then
return Sandbox.g_PluginInfo
elseif (Sandbox.gPluginInfo) then
return Sandbox.gPluginInfo
end
return nil, "Info.lua doesn't contain the g_PluginInfo declaration"
end
--- Processes the info for one plugin
-- Returns true on success, nil and error message on failure
local function ProcessPluginFolder(a_FolderName)
-- Load the plugin info:
local PluginInfo, Msg = LoadPluginInfo(a_FolderName)
if (PluginInfo == nil) then
return nil, "Cannot load info for plugin " .. a_FolderName .. ": " .. (Msg or "")
end
-- Dump the forum format:
local isSuccess
isSuccess, Msg = DumpPluginInfoForum(a_FolderName, PluginInfo)
if not(isSuccess) then
return nil, "Cannot dump forum info for plugin " .. a_FolderName .. ": " .. (Msg or "")
end
-- Dump the GitHub format:
isSuccess, Msg = DumpPluginInfoGithub(a_FolderName, PluginInfo)
if not(isSuccess) then
return nil, "Cannot dump GitHub info for plugin " .. a_FolderName .. ": " .. (Msg or "")
end
-- All OK, return success
return true
end
--- Tries to load LFS through LuaRocks, returns the LFS instance, or nil on error
local function LoadLFS()
-- Try to load lfs, do not abort if not found ...
local lfs, err = pcall(
function()
return require("lfs")
end
)
-- ... rather, print a nice message with instructions:
if not(lfs) then
print([[
Cannot load LuaFileSystem
Install it through luarocks by executing the following command:
luarocks install luafilesystem (Windows)
sudo luarocks install luafilesystem (*nix)
If you don't have luarocks installed, you need to install them using your OS's package manager, usually:
sudo apt-get install luarocks (Ubuntu / Debian)
On windows, a binary distribution can be downloaded from the LuaRocks homepage, https://github.com/luarocks/luarocks/wiki/Download
]])
print("Original error text: ", err)
return nil
end
-- We now know that LFS is present, get it normally:
return require("lfs")
end
local Arg1 = arg[1]
if ((Arg1 ~= nil) and (Arg1 ~= "")) then
-- Called with a plugin folder name, export only that one
local isSuccess, msg = ProcessPluginFolder(Arg1)
if not(isSuccess) then
print(msg or "")
end
else
-- Called without any arguments, process all subfolders:
local lfs = LoadLFS()
if (lfs == nil) then
-- LFS not loaded, error has already been printed, just bail out
return
end
print("Processing plugin subfolders:")
for fnam in lfs.dir(".") do
if ((fnam ~= ".") and (fnam ~= "..")) then
local Attributes = lfs.attributes(fnam)
if (Attributes ~= nil) then
if (Attributes.mode == "directory") then
print(fnam)
local isSuccess, msg = ProcessPluginFolder(fnam)
if not(isSuccess) then
print(" " .. (msg or ""))
end
end
end
end
end
end
print("Done.")
================================================
FILE: Server/Plugins/InfoReg.lua
================================================
-- InfoReg.lua
--[[
Implements functions that process the standard PluginInfo description and register command handlers.
The description is either given as a parameter to the registration functions, or read from the standard
names gPluginInfo or g_PluginInfo.
--]]
--- Lists all the subcommands that the player has permissions for
local function ListSubcommands(a_Player, a_Subcommands, a_CmdString)
if (a_Player == nil) then
LOGINFO("The " .. a_CmdString .. " command requires another verb:")
else
a_Player:SendMessage("The " .. a_CmdString .. " command requires another verb:")
end
-- Enum all the subcommands:
local Verbs = {}
for cmd, info in pairs(a_Subcommands) do
if ((a_Player == nil) or (a_Player:HasPermission(info.Permission or ""))) then
table.insert(Verbs, a_CmdString .. " " .. cmd)
end
end
table.sort(Verbs)
-- Send the list:
if (a_Player == nil) then
for idx, verb in ipairs(Verbs) do
LOGINFO(" " .. verb)
end
else
for idx, verb in ipairs(Verbs) do
a_Player:SendMessage(cCompositeChat(" ", mtInfo):AddSuggestCommandPart(verb, verb))
end
end
end
--- This is a generic command callback used for handling multicommands' parent commands
-- For example, if there are "/gal save" and "/gal load" commands, this callback handles the "/gal" command
-- It is used for both console and in-game commands; the console version has a_Player set to nil
local function MultiCommandHandler(a_Split, a_Player, a_CmdString, a_CmdInfo, a_Level, a_EntireCommand)
local Verb = a_Split[a_Level + 1]
if (Verb == nil) then
-- No verb was specified. If there is a handler for the upper level command, call it:
if (a_CmdInfo.Handler ~= nil) then
return a_CmdInfo.Handler(a_Split, a_Player, a_EntireCommand)
end
-- Let the player know they need to give a subcommand:
assert(type(a_CmdInfo.Subcommands) == "table", "Info.lua error: There is no handler for command \"" .. a_CmdString .. "\" and there are no subcommands defined at level " .. a_Level)
ListSubcommands(a_Player, a_CmdInfo.Subcommands, a_CmdString)
return true
end
-- A verb was specified, look it up in the subcommands table:
local Subcommand = a_CmdInfo.Subcommands[Verb]
if (Subcommand == nil) then
if (a_Level + 1 > 1) then
-- This is a true subcommand, display the message and make MCS think the command was handled
-- Otherwise we get weird behavior: for "/cmd verb" we get "unknown command /cmd" although "/cmd" is valid
if (a_Player == nil) then
LOGWARNING("The " .. a_CmdString .. " command doesn't support verb " .. Verb)
else
a_Player:SendMessage("The " .. a_CmdString .. " command doesn't support verb " .. Verb)
end
return true
end
-- This is a top-level command, let MCS handle the unknown message
return false;
end
-- Check the permission:
if (a_Player ~= nil) then
if not(a_Player:HasPermission(Subcommand.Permission or "")) then
a_Player:SendMessage("You don't have permission to execute this command")
return true
end
end
-- First check if the subcommand has subcommands
if (Subcommand.Subcommands ~= nil) then
-- Next sublevel
return MultiCommandHandler(a_Split, a_Player, a_CmdString .. " " .. Verb, Subcommand, a_Level + 1, a_EntireCommand)
elseif (Subcommand.Handler == nil) then
-- Subcommand has no subcommands and the handler is not found, report error
LOGWARNING("Cannot find handler for command " .. a_CmdString .. " " .. Verb)
return false
end
-- Execute:
return Subcommand.Handler(a_Split, a_Player, a_EntireCommand)
end
--- Registers all commands specified in the aPluginInfo.Commands
-- If aPluginInfo is not given, gPluginInfo or g_PluginInfo is used
function RegisterPluginInfoCommands(aPluginInfo)
-- If no info given, assume the default name for the global variable
aPluginInfo = aPluginInfo or g_PluginInfo or gPluginInfo
-- A sub-function that registers all subcommands of a single command, using the command's Subcommands table
-- The a_Prefix param already contains the space after the previous command
-- a_Level is the depth of the subcommands being registered, with 1 being the top level command
local function RegisterSubcommands(a_Prefix, a_Subcommands, a_Level)
assert(a_Subcommands ~= nil)
-- A table that will hold aliases to subcommands temporarily, during subcommand iteration
local AliasTable = {}
-- Iterate through the subcommands, register them, and accumulate aliases:
for cmd, info in pairs(a_Subcommands) do
local CmdName = a_Prefix .. cmd
local Handler = info.Handler
-- Provide a special handler for multicommands:
if (info.Subcommands ~= nil) then
Handler = function(a_Split, a_Player, a_EntireCommand)
return MultiCommandHandler(a_Split, a_Player, CmdName, info, a_Level, a_EntireCommand)
end
end
if (Handler == nil) then
LOGWARNING(aPluginInfo.Name .. ": Invalid handler for command " .. CmdName .. ", command will not be registered.")
else
local HelpString
if (info.HelpString ~= nil) then
HelpString = " - " .. info.HelpString
else
HelpString = ""
end
cPluginManager:BindCommand(CmdName, info.Permission or "", Handler, HelpString)
-- Register all aliases for the command:
if (info.Alias ~= nil) then
if (type(info.Alias) == "string") then
info.Alias = {info.Alias}
end
for idx, alias in ipairs(info.Alias) do
cPluginManager:BindCommand(a_Prefix .. alias, info.Permission or "", Handler, HelpString)
-- Also copy the alias's info table as a separate subcommand,
-- so that MultiCommandHandler() handles it properly. Need to off-load into a separate table
-- than the one we're currently iterating and join after the iterating.
AliasTable[alias] = info
end
end
end -- else (if Handler == nil)
-- Recursively register any subcommands:
if (info.Subcommands ~= nil) then
RegisterSubcommands(a_Prefix .. cmd .. " ", info.Subcommands, a_Level + 1)
end
end -- for cmd, info - a_Subcommands[]
-- Add the subcommand aliases that were off-loaded during registration:
for alias, info in pairs(AliasTable) do
a_Subcommands[alias] = info
end
AliasTable = {}
end
-- Loop through all commands in the plugin info, register each:
if (aPluginInfo.Commands) then
RegisterSubcommands("", aPluginInfo.Commands, 1)
end
end
--- Registers all console commands specified in the aPluginInfo.ConsoleCommands
-- If aPluginInfo is not given, gPluginInfo or g_PluginInfo is used
function RegisterPluginInfoConsoleCommands(aPluginInfo)
-- If no info given, assume the default name for the global variable
aPluginInfo = aPluginInfo or g_PluginInfo or gPluginInfo
-- A sub-function that registers all subcommands of a single command, using the command's Subcommands table
-- The a_Prefix param already contains the space after the previous command
local function RegisterSubcommands(a_Prefix, a_Subcommands, a_Level)
assert(a_Subcommands ~= nil)
for cmd, info in pairs(a_Subcommands) do
local CmdName = a_Prefix .. cmd
local Handler = info.Handler
if (Handler == nil) then
Handler = function(a_Split, a_EntireCommand)
return MultiCommandHandler(a_Split, nil, CmdName, info, a_Level, a_EntireCommand)
end
end
cPluginManager:BindConsoleCommand(CmdName, Handler, info.HelpString or "")
-- Recursively register any subcommands:
if (info.Subcommands ~= nil) then
RegisterSubcommands(a_Prefix .. cmd .. " ", info.Subcommands, a_Level + 1)
end
end
end
-- Loop through all commands in the plugin info, register each:
if (aPluginInfo.ConsoleCommands) then
RegisterSubcommands("", aPluginInfo.ConsoleCommands, 1)
end
end
================================================
FILE: Server/Plugins/NetworkTest/Info.lua
================================================
-- Info.lua
-- Implements the g_PluginInfo standard plugin description
g_PluginInfo =
{
Name = "NetworkTest",
Version = "1",
Date = "2015-01-28",
Description = [[Implements test code (and examples) for the cNetwork API]],
Commands =
{
},
ConsoleCommands =
{
net =
{
Subcommands =
{
client =
{
HelpString = "Connects, as a client, to a specified webpage (google.com by default) and downloads its front page using HTTP",
Handler = HandleConsoleNetClient,
ParameterCombinations =
{
{
Params = "",
Help = "Connects, as a client, to google.com and downloads its front page using HTTP",
},
{
Params = "host [port]",
Help = "Connects, as a client, to the specified host and downloads its front page using HTTP",
},
}, -- ParameterCombinations
}, -- client
close =
{
HelpString = "Close a listening socket",
Handler = HandleConsoleNetClose,
ParameterCombinations =
{
{
Params = "[Port]",
Help = "Closes a socket listening on the specified port [1024]",
},
}, -- ParameterCombinations
}, -- close
ips =
{
HelpString = "Prints all locally available IP addresses",
Handler = HandleConsoleNetIps,
}, -- ips
listen =
{
HelpString = "Creates a new listening socket on the specified port with the specified service attached to it",
Handler = HandleConsoleNetListen,
ParameterCombinations =
{
{
Params = "[Port] [Service]",
Help = "Starts listening on the specified port [1024] providing the specified service [echo]",
},
}, -- ParameterCombinations
}, -- listen
lookup =
{
HelpString = "Looks up the IP addresses corresponding to the given hostname (google.com by default)",
Handler = HandleConsoleNetLookup,
ParameterCombinations =
{
{
Params = "",
Help = "Looks up the IP addresses of google.com.",
},
{
Params = "Hostname",
Help = "Looks up the IP addresses of the specified hostname.",
},
{
Params = "IP",
Help = "Looks up the canonical name of the specified IP.",
},
},
}, -- lookup
sclient =
{
HelpString = "Connects, as an SSL client, to a specified webpage (github.com by default) and downloads its front page using HTTPS",
Handler = HandleConsoleNetSClient,
ParameterCombinations =
{
{
Params = "",
Help = "Connects, as an SSL client, to github.com and downloads its front page using HTTPS",
},
{
Params = "host [port]",
Help = "Connects, as an SSL client, to the specified host and downloads its front page using HTTPS",
},
}, -- ParameterCombinations
}, -- sclient
udp =
{
Subcommands =
{
close =
{
Handler = HandleConsoleNetUdpClose,
ParameterCombinations =
{
{
Params = "[Port]",
Help = "Closes the UDP endpoint on the specified port [1024].",
}
},
}, -- close
listen =
{
Handler = HandleConsoleNetUdpListen,
ParameterCombinations =
{
{
Params = "[Port]",
Help = "Listens on the specified UDP port [1024], dumping the incoming datagrams into log",
},
},
}, -- listen
send =
{
Handler = HandleConsoleNetUdpSend,
ParameterCombinations =
{
{
Params = "[Host] [Port] [Message]",
Help = "Sends the message [\"hello\"] through UDP to the specified host [localhost] and port [1024]",
},
},
} -- send
}, -- Subcommands ("net udp")
}, -- udp
wasc =
{
HelpString = "Requests the webadmin homepage using https",
Handler = HandleConsoleNetWasc,
}, -- wasc
}, -- Subcommands
}, -- net
},
}
================================================
FILE: Server/Plugins/NetworkTest/NetworkTest.lua
================================================
-- NetworkTest.lua
-- Implements a few tests for the cNetwork API
--- Map of all servers currently open
-- g_Servers[PortNum] = cServerHandle
local g_Servers = {}
--- Map of all UDP endpoints currently open
-- g_UDPEndpoints[PortNum] = cUDPEndpoint
local g_UDPEndpoints = {}
--- List of fortune messages for the fortune server
-- A random message is chosen for each incoming connection
-- The contents are loaded from the splashes.txt file on plugin startup
local g_Fortunes =
{
"Empty splashes.txt",
}
-- HTTPS certificate to be used for the SSL server:
local g_HTTPSCert = [[
-----BEGIN CERTIFICATE-----
MIIDfzCCAmegAwIBAgIJAOBHN+qOWodcMA0GCSqGSIb3DQEBBQUAMFYxCzAJBgNV
BAYTAmN6MQswCQYDVQQIDAJjejEMMAoGA1UEBwwDbG9jMQswCQYDVQQKDAJfWDEL
MAkGA1UECwwCT1UxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNTAxMjQwODQ2MzFa
Fw0yNTAxMjEwODQ2MzFaMFYxCzAJBgNVBAYTAmN6MQswCQYDVQQIDAJjejEMMAoG
A1UEBwwDbG9jMQswCQYDVQQKDAJfWDELMAkGA1UECwwCT1UxEjAQBgNVBAMMCWxv
Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJkFYSElu/jw
nxqjimmj246DejKJK8uy/l9QQibb/Z4kO/3s0gVPOYo0mKv32xUFP7wYIE3XWT61
zyfvK+1jpnlQTCtM8T5xw/7CULKgLmuIzlQx5Dhy7d+tW46kOjFKwQajS9YzwqWu
KBOPnFamQWz6vIzuM05+7aIMXbzamInvW/1x3klIrpGQgALwSB1N+oUzTInTBRKK
21pecUE9t3qrU40Cs5bN0fQBnBjLwbgmnTh6LEplfQZHG5wLvj0IeERVU9vH7luM
e9/IxuEZluCiu5ViF3jqLPpjYOrkX7JDSKme64CCmNIf0KkrwtFjF104Qylike60
YD3+kw8Q+DECAwEAAaNQME4wHQYDVR0OBBYEFHHIDTc7mrLDXftjQ5ejU9Udfdyo
MB8GA1UdIwQYMBaAFHHIDTc7mrLDXftjQ5ejU9UdfdyoMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBAHxCJxZPmH9tvx8GKiDV3rgGY++sMItzrW5Uhf0/
bl3DPbVz51CYF8nXiWvSJJzxhH61hKpZiqvRlpyMuovV415dYQ+Xc2d2IrTX6e+d
Z4Pmwfb4yaX+kYqIygjXMoyNxOJyhTnCbJzycV3v5tvncBWN9Wqez6ZonWDdFdAm
J+Moty+atc4afT02sUg1xz+CDr1uMbt62tHwKYCdxXCwT//bOs6W21+mQJ5bEAyA
YrHQPgX76uo8ed8rPf6y8Qj//lzq/+33EIWqf9pnbklQgIPXJU07h+5L+Y63RF4A
ComLkzas+qnQLcEN28Dg8QElXop6hfiD0xq3K0ac2bDnjoU=
-----END CERTIFICATE-----
]]
local g_HTTPSPrivKey = [[
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCZBWEhJbv48J8a
o4ppo9uOg3oyiSvLsv5fUEIm2/2eJDv97NIFTzmKNJir99sVBT+8GCBN11k+tc8n
7yvtY6Z5UEwrTPE+ccP+wlCyoC5riM5UMeQ4cu3frVuOpDoxSsEGo0vWM8KlrigT
j5xWpkFs+ryM7jNOfu2iDF282piJ71v9cd5JSK6RkIAC8EgdTfqFM0yJ0wUSitta
XnFBPbd6q1ONArOWzdH0AZwYy8G4Jp04eixKZX0GRxucC749CHhEVVPbx+5bjHvf
yMbhGZbgoruVYhd46iz6Y2Dq5F+yQ0ipnuuAgpjSH9CpK8LRYxddOEMpYpHutGA9
/pMPEPgxAgMBAAECggEAWxQ4m+I54BJYoSJ2YCqHpGvdb/b1emkvvsumlDqc2mP2
0U0ENOTS+tATj0gXvotBRFOX5r0nAYx1oO9a1hFaJRsGOz+w19ofLqO6JJfzCU6E
gNixXmgJ7fjhZiWZ/XzhJ3JK0VQ9px/h+sKf63NJvfQABmJBZ5dlGe8CXEZARNin
03TnE3RUIEK+jEgwShN2OrGjwK9fjcnXMHwEnKZtCBiYEfD2N+pQmS20gIm13L1t
+ZmObIC24NqllXxl4I821qzBdhmcT7+rGmKR0OT5YKbt6wFA5FPKD9dqlzXzlKck
r2VAh+JlCtFKxcScmWtQOnVDtf5+mcKFbP4ck724AQKBgQDLk+RDhvE5ykin5R+B
dehUQZgHb2pPL7N1DAZShfzwSmyZSOPQDFr7c0CMijn6G0Pw9VX6Vrln0crfTQYz
Hli+zxlmcMAD/WC6VImM1LCUzouNRy37rSCnuPtngZyHdsyzfheGnjORH7HlPjtY
JCTLaekg0ckQvt//HpRV3DCdaQKBgQDAbLmIOTyGfne74HLswWnY/kCOfFt6eO+E
lZ724MWmVPWkxq+9rltC2CDx2i8jjdkm90dsgR5OG2EaLnUWldUpkE0zH0ATrZSV
ezJWD9SsxTm8ksbThD+pJKAVPxDAboejF7kPvpaO2wY+bf0AbO3M24rJ2tccpMv8
AcfXBICDiQKBgQCSxp81/I3hf7HgszaC7ZLDZMOK4M6CJz847aGFUCtsyAwCfGYb
8zyJvK/WZDam14+lpA0IQAzPCJg/ZVZJ9uA/OivzCum2NrHNxfOiQRrLPxuokaBa
q5k2tA02tGE53fJ6mze1DEzbnkFxqeu5gd2xdzvpOLfBxgzT8KU8PlQiuQKBgGn5
NvCj/QZhDhYFVaW4G1ArLmiKamL3yYluUV7LiW7CaYp29gBzzsTwfKxVqhJdo5NH
KinCrmr7vy2JGmj22a+LTkjyU/rCZQsyDxXAoDMKZ3LILwH8WocPqa4pzlL8TGzw
urXGE+rXCwhE0Mp0Mz7YRgZHJKMcy06duG5dh11pAoGBALHbsBIDihgHPyp2eKMP
K1f42MdKrTBiIXV80hv2OnvWVRCYvnhrqpeRMzCR1pmVbh+QhnwIMAdWq9PAVTTn
ypusoEsG8Y5fx8xhgjs0D2yMcrmi0L0kCgHIFNoym+4pI+sv6GgxpemfrmaPNcMx
DXi9JpaquFRJLGJ7jMCDgotL
-----END PRIVATE KEY-----
]]
--- Map of all services that can be run as servers
-- g_Services[ServiceName] = function() -> accept-callbacks
local g_Services =
{
-- Echo service: each connection echoes back what has been sent to it
echo = function (a_Port)
return
{
-- A new connection has come, give it new link-callbacks:
OnIncomingConnection = function (a_RemoteIP, a_RemotePort)
return
{
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
LOG("EchoServer(" .. a_Port .. ": Connection to " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
-- Echo the received data back to the link:
a_Link:Send(a_Data)
end,
OnRemoteClosed = function (a_Link)
end
} -- Link callbacks
end, -- OnIncomingConnection()
-- Send a welcome message to newly accepted connections:
OnAccepted = function (a_Link)
a_Link:Send("Hello, " .. a_Link:GetRemoteIP() .. ", welcome to the echo server @ Cuberite-Lua\r\n")
end, -- OnAccepted()
-- There was an error listening on the port:
OnError = function (a_ErrorCode, a_ErrorMsg)
LOGINFO("EchoServer(" .. a_Port .. ": Cannot listen: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end, -- OnError()
} -- Listen callbacks
end, -- echo
-- Fortune service: each incoming connection gets a welcome message plus a random fortune text; all communication is ignored afterwards
fortune = function (a_Port)
return
{
-- A new connection has come, give it new link-callbacks:
OnIncomingConnection = function (a_RemoteIP, a_RemotePort)
return
{
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
LOG("FortuneServer(" .. a_Port .. "): Connection to " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
-- Ignore any received data
end,
OnRemoteClosed = function (a_Link)
end
} -- Link callbacks
end, -- OnIncomingConnection()
-- Send a welcome message and the fortune to newly accepted connections:
OnAccepted = function (a_Link)
a_Link:Send("Hello, " .. a_Link:GetRemoteIP() .. ", welcome to the fortune server @ Cuberite-Lua\r\n\r\nYour fortune:\r\n")
a_Link:Send(g_Fortunes[math.random(#g_Fortunes)] .. "\r\n")
end, -- OnAccepted()
-- There was an error listening on the port:
OnError = function (a_ErrorCode, a_ErrorMsg)
LOGINFO("FortuneServer(" .. a_Port .. "): Cannot listen: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end, -- OnError()
} -- Listen callbacks
end, -- fortune
-- HTTPS time - serves current time for each https request received
httpstime = function (a_Port)
return
{
-- A new connection has come, give it new link-callbacks:
OnIncomingConnection = function (a_RemoteIP, a_RemotePort)
local IncomingData = "" -- accumulator for the incoming data, until processed by the http
return
{
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
LOG("https-time server(" .. a_Port .. "): Connection to " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
IncomingData = IncomingData .. a_Data
if (IncomingData:find("\r\n\r\n")) then
-- We have received the entire request headers, just send the response and shutdown the link:
local Content = os.date()
a_Link:Send("HTTP/1.0 200 OK\r\nContent-type: text/plain\r\nContent-length: " .. #Content .. "\r\n\r\n" .. Content)
a_Link:Shutdown()
end
end,
OnRemoteClosed = function (a_Link)
LOG("httpstime: link closed by remote")
end
} -- Link callbacks
end, -- OnIncomingConnection()
-- Start TLS on the new link:
OnAccepted = function (a_Link)
local res, msg = a_Link:StartTLSServer(g_HTTPSCert, g_HTTPSPrivKey, "")
if not(res) then
LOG("https-time server(" .. a_Port .. "): Cannot start TLS server: " .. msg)
a_Link:Close()
end
end, -- OnAccepted()
-- There was an error listening on the port:
OnError = function (a_ErrorCode, a_ErrorMsg)
LOGINFO("https-time server(" .. a_Port .. "): Cannot listen: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end, -- OnError()
} -- Listen callbacks
end, -- httpstime
-- TODO: Other services (daytime, ...)
}
function Initialize(a_Plugin)
-- Load the splashes.txt file into g_Fortunes, overwriting current content:
local idx = 1
for line in io.lines(a_Plugin:GetLocalFolder() .. "/splashes.txt") do
g_Fortunes[idx] = line
idx = idx + 1
end
-- Use the InfoReg shared library to process the Info.lua file:
dofile(cPluginManager:GetPluginsPath() .. "/InfoReg.lua")
RegisterPluginInfoCommands()
RegisterPluginInfoConsoleCommands()
-- Seed the random generator:
math.randomseed(os.time())
return true
end
function HandleConsoleNetClient(a_Split)
-- Get the address to connect to:
local Host = a_Split[3] or "google.com"
local Port = a_Split[4] or 80
-- Create the callbacks "personalised" for the address:
local Callbacks =
{
OnConnected = function (a_Link)
LOG("Connected to " .. Host .. ":" .. Port .. ".")
LOG("Connection stats: Remote address: " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. ", Local address: " .. a_Link:GetLocalIP() .. ":" .. a_Link:GetLocalPort())
LOG("Sending HTTP request for front page.")
a_Link:Send("GET / HTTP/1.0\r\nHost: " .. Host .. "\r\n\r\n")
end,
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
LOG("Connection to " .. Host .. ":" .. Port .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
LOG("Received data from " .. Host .. ":" .. Port .. ":\r\n" .. a_Data)
end,
OnRemoteClosed = function (a_Link)
LOG("Connection to " .. Host .. ":" .. Port .. " was closed by the remote peer.")
end
}
-- Queue a connect request:
local res = cNetwork:Connect(Host, Port, Callbacks)
if not(res) then
LOGWARNING("cNetwork:Connect call failed immediately")
return true
end
return true, "Client connection request queued."
end
function HandleConsoleNetClose(a_Split)
-- Get the port to close:
local Port = tonumber(a_Split[3] or 1024)
if not(Port) then
return true, "Bad port number: \"" .. a_Split[3] .. "\"."
end
-- Close the server, if there is one:
if not(g_Servers[Port]) then
return true, "There is no server currently listening on port " .. Port .. "."
end
g_Servers[Port]:Close()
g_Servers[Port] = nil
return true, "Port " .. Port .. " closed."
end
function HandleConsoleNetIps(a_Split)
local Addresses = cNetwork:EnumLocalIPAddresses()
LOG("IP addresses enumerated, " .. #Addresses .. " found")
for idx, addr in ipairs(Addresses) do
LOG(" IP #" .. idx .. ": " .. addr)
end
return true
end
function HandleConsoleNetLookup(a_Split)
-- Get the name to look up:
local Addr = a_Split[3] or "google.com"
-- Create the callbacks "personalised" for the host:
local Callbacks =
{
OnNameResolved = function (a_Hostname, a_IP)
LOG(a_Hostname .. " resolves to " .. a_IP)
end,
OnError = function (a_Query, a_ErrorCode, a_ErrorMsg)
LOG("Failed to retrieve information for " .. a_Query .. ": " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
assert(a_Query == Addr)
end,
OnFinished = function (a_Query)
LOG("Resolving " .. a_Query .. " has finished.")
assert(a_Query == Addr)
end,
}
-- Queue both name and IP DNS queries;
-- we don't distinguish between an IP and a hostname in this command so we don't know which one to use:
local res = cNetwork:HostnameToIP(Addr, Callbacks)
if not(res) then
LOGWARNING("cNetwork:HostnameToIP call failed immediately")
return true
end
res = cNetwork:IPToHostname(Addr, Callbacks)
if not(res) then
LOGWARNING("cNetwork:IPToHostname call failed immediately")
return true
end
return true, "DNS query has been queued."
end
function HandleConsoleNetListen(a_Split)
-- Get the params:
local Port = tonumber(a_Split[3] or 1024)
if not(Port) then
return true, "Invalid port: \"" .. a_Split[3] .. "\"."
end
local Service = string.lower(a_Split[4] or "echo")
-- Create the callbacks specific for the service:
if (g_Services[Service] == nil) then
return true, "No such service: " .. Service
end
local Callbacks = g_Services[Service](Port)
-- Start the server:
local srv = cNetwork:Listen(Port, Callbacks)
if not(srv:IsListening()) then
-- The error message has already been printed in the Callbacks.OnError()
return true
end
g_Servers[Port] = srv
return true, Service .. " server started on port " .. Port
end
function HandleConsoleNetSClient(a_Split)
-- Get the address to connect to:
local Host = a_Split[3] or "github.com"
local Port = a_Split[4] or 443
-- Create the callbacks "personalised" for the address:
local Callbacks =
{
OnConnected = function (a_Link)
LOG("Connected to " .. Host .. ":" .. Port .. ".")
LOG("Connection stats: Remote address: " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. ", Local address: " .. a_Link:GetLocalIP() .. ":" .. a_Link:GetLocalPort())
LOG("Sending HTTP request for front page.")
a_Link:StartTLSClient()
a_Link:Send("GET / HTTP/1.0\r\nHost: " .. Host .. "\r\n\r\n")
end,
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
LOG("Connection to " .. Host .. ":" .. Port .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
LOG("Received data from " .. Host .. ":" .. Port .. ":\r\n" .. a_Data)
end,
OnRemoteClosed = function (a_Link)
LOG("Connection to " .. Host .. ":" .. Port .. " was closed by the remote peer.")
end
}
-- Queue a connect request:
local res = cNetwork:Connect(Host, Port, Callbacks)
if not(res) then
LOGWARNING("cNetwork:Connect call failed immediately")
return true
end
return true, "SSL Client connection request queued."
end
function HandleConsoleNetUdpClose(a_Split)
-- Get the port to close:
local Port = tonumber(a_Split[4] or 1024)
if not(Port) then
return true, "Bad port number: \"" .. a_Split[4] .. "\"."
end
-- Close the server, if there is one:
if not(g_UDPEndpoints[Port]) then
return true, "There is no UDP endpoint currently listening on port " .. Port .. "."
end
g_UDPEndpoints[Port]:Close()
g_UDPEndpoints[Port] = nil
return true, "UDP Port " .. Port .. " closed."
end
function HandleConsoleNetUdpListen(a_Split)
-- Get the params:
local Port = tonumber(a_Split[4] or 1024)
if not(Port) then
return true, "Invalid port: \"" .. a_Split[4] .. "\"."
end
local Callbacks =
{
OnReceivedData = function (a_Endpoint, a_Data, a_RemotePeer, a_RemotePort)
LOG("Incoming UDP datagram from " .. a_RemotePeer .. " port " .. a_RemotePort .. ":\r\n" .. a_Data)
end,
OnError = function (a_Endpoint, a_ErrorCode, a_ErrorMsg)
LOG("Error in UDP endpoint: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
}
g_UDPEndpoints[Port] = cNetwork:CreateUDPEndpoint(Port, Callbacks)
return true, "UDP listener on port " .. Port .. " started."
end
function HandleConsoleNetUdpSend(a_Split)
-- Get the params:
local Host = a_Split[4] or "localhost"
local Port = tonumber(a_Split[5] or 1024)
if not(Port) then
return true, "Invalid port: \"" .. a_Split[5] .. "\"."
end
local Message
if (a_Split[6]) then
Message = table.concat(a_Split, " ", 6)
else
Message = "hello"
end
-- Define minimum callbacks for the UDP endpoint:
local Callbacks =
{
OnError = function (a_Endpoint, a_ErrorCode, a_ErrorMsg)
LOG("Error in UDP datagram sending: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function ()
-- ignore
end,
}
-- Send the data:
local Endpoint = cNetwork:CreateUDPEndpoint(0, Callbacks)
Endpoint:EnableBroadcasts()
if not(Endpoint:Send(Message, Host, Port)) then
Endpoint:Close()
return true, "Sending UDP datagram failed"
end
Endpoint:Close()
return true, "UDP datagram sent"
end
function HandleConsoleNetWasc(a_Split)
local Callbacks =
{
OnConnected = function (a_Link)
LOG("Connected to webadmin, starting TLS...")
local res, msg = a_Link:StartTLSClient("", "", "")
if not(res) then
LOG("Failed to start TLS client: " .. msg)
return
end
-- We need to send a keep-alive due to #1737
a_Link:Send("GET / HTTP/1.0\r\nHost: localhost\r\nConnection: keep-alive\r\n\r\n")
end,
OnError = function (a_Link, a_ErrorCode, a_ErrorMsg)
LOG("Connection to webadmin failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")")
end,
OnReceivedData = function (a_Link, a_Data)
LOG("Received data from webadmin:\r\n" .. a_Data)
-- Close the link once all the data is received:
if (a_Data == "0\r\n\r\n") then -- Poor man's end-of-data detection; works on localhost
-- TODO: The Close() method is not yet exported to Lua
-- a_Link:Close()
end
end,
OnRemoteClosed = function (a_Link)
LOG("Connection to webadmin was closed")
end,
}
if not(cNetwork:Connect("localhost", "8080", Callbacks)) then
LOG("Canot connect to webadmin")
end
return true
end
================================================
FILE: Server/Plugins/NetworkTest/splashes.txt
================================================
As seen on TV!
Awesome!
100% pure!
May contain nuts!
Better than Prey!
More polygons!
Sexy!
Limited edition!
Flashing letters!
Made by Notch!
It's here!
Best in class!
It's finished!
Kind of dragon free!
Excitement!
More than 500 sold!
One of a kind!
Heaps of hits on YouTube!
Indev!
Spiders everywhere!
Check it out!
Holy cow, man!
It's a game!
Made in Sweden!
Uses LWJGL!
Reticulating splines!
Minecraft!
Yaaay!
Singleplayer!
Keyboard compatible!
Undocumented!
Ingots!
Exploding creepers!
That's no moon!
l33t!
Create!
Survive!
Dungeon!
Exclusive!
The bee's knees!
Down with O.P.P.!
Closed source!
Classy!
Wow!
Not on steam!
Oh man!
Awesome community!
Pixels!
Teetsuuuuoooo!
Kaaneeeedaaaa!
Now with difficulty!
Enhanced!
90% bug free!
Pretty!
12 herbs and spices!
Fat free!
Absolutely no memes!
Free dental!
Ask your doctor!
Minors welcome!
Cloud computing!
Legal in Finland!
Hard to label!
Technically good!
Bringing home the bacon!
Indie!
GOTY!
Ceci n'est pas une title screen!
Euclidian!
Now in 3D!
Inspirational!
Herregud!
Complex cellular automata!
Yes, sir!
Played by cowboys!
OpenGL 2.1 (if supported)!
Thousands of colors!
Try it!
Age of Wonders is better!
Try the mushroom stew!
Sensational!
Hot tamale, hot hot tamale!
Play him off, keyboard cat!
Guaranteed!
Macroscopic!
Bring it on!
Random splash!
Call your mother!
Monster infighting!
Loved by millions!
Ultimate edition!
Freaky!
You've got a brand new key!
Water proof!
Uninflammable!
Whoa, dude!
All inclusive!
Tell your friends!
NP is not in P!
Notch <3 ez!
Music by C418!
Livestreamed!
Haunted!
Polynomial!
Terrestrial!
All is full of love!
Full of stars!
Scientific!
Cooler than Spock!
Collaborate and listen!
Never dig down!
Take frequent breaks!
Not linear!
Han shot first!
Nice to meet you!
Buckets of lava!
Ride the pig!
Larger than Earth!
sqrt(-1) love you!
Phobos anomaly!
Punching wood!
Falling off cliffs!
0% sugar!
150% hyperbole!
Synecdoche!
Let's danec!
Seecret Friday update!
Reference implementation!
Lewd with two dudes with food!
Kiss the sky!
20 GOTO 10!
Verlet intregration!
Peter Griffin!
Do not distribute!
Cogito ergo sum!
4815162342 lines of code!
A skeleton popped out!
The Work of Notch!
The sum of its parts!
BTAF used to be good!
I miss ADOM!
umop-apisdn!
OICU812!
Bring me Ray Cokes!
Finger-licking!
Thematic!
Pneumatic!
Sublime!
Octagonal!
Une baguette!
Gargamel plays it!
Rita is the new top dog!
SWM forever!
Representing Edsbyn!
Matt Damon!
Supercalifragilisticexpialidocious!
Consummate V's!
Cow Tools!
Double buffered!
Fan fiction!
Flaxkikare!
Jason! Jason! Jason!
Hotter than the sun!
Internet enabled!
Autonomous!
Engage!
Fantasy!
DRR! DRR! DRR!
Kick it root down!
Regional resources!
Woo, facepunch!
Woo, somethingawful!
Woo, /v/!
Woo, tigsource!
Woo, minecraftforum!
Woo, worldofminecraft!
Woo, reddit!
Woo, 2pp!
Google anlyticsed!
Now supports åäö!
Give us Gordon!
Tip your waiter!
Very fun!
12345 is a bad password!
Vote for net neutrality!
Lives in a pineapple under the sea!
MAP11 has two names!
Omnipotent!
Gasp!
...!
Bees, bees, bees, bees!
Jag känner en bot!
This text is hard to read if you play the game at the default resolution, but at 1080p it's fine!
Haha, LOL!
Hampsterdance!
Switches and ores!
Menger sponge!
idspispopd!
Eple (original edit)!
So fresh, so clean!
Slow acting portals!
Try the Nether!
Don't look directly at the bugs!
Oh, ok, Pigmen!
Finally with ladders!
Scary!
Play Minecraft, Watch Topgear, Get Pig!
Twittered about!
Jump up, jump up, and get down!
Joel is neat!
A riddle, wrapped in a mystery!
Huge tracts of land!
Welcome to your Doom!
Stay a while, stay forever!
Stay a while and listen!
Treatment for your rash!
"Autological" is!
Information wants to be free!
"Almost never" is an interesting concept!
Lots of truthiness!
The creeper is a spy!
Turing complete!
It's groundbreaking!
Let our battle's begin!
The sky is the limit!
Jeb has amazing hair!
Ryan also has amazing hair!
Casual gaming!
Undefeated!
Kinda like Lemmings!
Follow the train, CJ!
Leveraging synergy!
This message will never appear on the splash screen, isn't that weird?
DungeonQuest is unfair!
110813!
90210!
Check out the far lands!
Tyrion would love it!
Also try VVVVVV!
Also try Super Meat Boy!
Also try Terraria!
Also try Mount And Blade!
Also try Project Zomboid!
Also try World of Goo!
Also try Limbo!
Also try Pixeljunk Shooter!
Also try Braid!
That's super!
Bread is pain!
Read more books!
Khaaaaaaaaan!
Less addictive than TV Tropes!
More addictive than lemonade!
Bigger than a bread box!
Millions of peaches!
Fnord!
This is my true form!
Totally forgot about Dre!
Don't bother with the clones!
Pumpkinhead!
Hobo humping slobo babe!
Made by Jeb!
Has an ending!
Finally complete!
Feature packed!
Boots with the fur!
Stop, hammertime!
Testificates!
Conventional!
Homeomorphic to a 3-sphere!
Doesn't avoid double negatives!
Place ALL the blocks!
Does barrel rolls!
Meeting expectations!
PC gaming since 1873!
Ghoughpteighbteau tchoghs!
Déjà vu!
Déjà vu!
Got your nose!
Haley loves Elan!
Afraid of the big, black bat!
Doesn't use the U-word!
Child's play!
See you next Friday or so!
From the streets of Södermalm!
150 bpm for 400000 minutes!
Technologic!
Funk soul brother!
Pumpa kungen!
日本ハロー!
한국 안녕하세요!
Helo Cymru!
Cześć Polsko!
你好中国!
Привет Россия!
Γεια σου Ελλάδα!
My life for Aiur!
Lennart lennart = new Lennart();
I see your vocabulary has improved!
Who put it there?
You can't explain that!
if not ok then return end
§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac
§kFUNKY LOL
SOPA means LOSER in Swedish!
Big Pointy Teeth!
Bekarton guards the gate!
Mmmph, mmph!
Don't feed avocados to parrots!
Swords for everyone!
Plz reply to my tweet!
.party()!
Take her pillow!
Put that cookie down!
Pretty scary!
I have a suggestion.
Now with extra hugs!
Now Java 6!
Woah.
HURNERJSGER?
What's up, Doc?
Now contains 32 random daily cats!
That's Numberwang!
pls rt
Do you want to join my server?
Put a little fence around it!
Throw a blanket over it!
One day, somewhere in the future, my work will be quoted!
Now with additional stuff!
Extra things!
Yay, puppies for everyone!
So sweet, like a nice bon bon!
Popping tags!
Very influential in its circle!
Now With Multiplayer!
Rise from your grave!
Warning! A huge battleship "STEVE" is approaching fast!
Blue warrior shot the food!
Run, coward! I hunger!
Flavor with no seasoning!
Strange, but not a stranger!
Tougher than diamonds, rich like cream!
Getting ready to show!
Getting ready to know!
Getting ready to drop!
Getting ready to shock!
Getting ready to freak!
Getting ready to speak!
It swings, it jives!
Cruising streets for gold!
Take an eggbeater and beat it against a skillet!
Make me a table, a funky table!
Take the elevator to the mezzanine!
Stop being reasonable, this is the Internet!
/give @a hugs 64
This is good for Realms.
Any computer is a laptop if you're brave enough!
================================================
FILE: Server/Plugins/TestLuaRocks/TestLuaRocks.lua
================================================
-- TestLuaRocks.lua
-- This is a mockup plugin that does a quick test of LuaRocks capability in Cuberite
-- "Success" is when the plugin loads, downloads the forum webpage and displays the headers and length and then displays both libs as loaded.
-- "Failure" usually manifests as one of the "require" lines failing, although you have the luarock installed.
-- Note that the plugin deliberately never fully loads, so that it can be reloaded fast by pressing its Enable button in the webadmin's plugin list.
local log30 = require("30log");
local socket = require("socket");
local http = require("socket.http");
LOGINFO("Trying to download a webpage...")
local body, code, headers = http.request('https://forum.cuberite.org/')
LOG("code: " .. tostring(code))
LOG("headers: ")
for k, v in pairs(headers or {}) do
LOG(" " .. k .. ": " .. v)
end
LOG("body length: " .. string.len(body))
function Initialize(a_Plugin)
if (socket == nil) then
LOGWARNING("LuaSocket not found")
else
LOG("LuaSocket loaded")
end
if (log30 == nil) then
LOGWARNING("30log not found")
else
LOG("30log loaded")
end
LOGINFO("Reload plugin from console or webadmin to rerun tests.")
return false
end
================================================
FILE: Server/Prefabs/PieceStructures/NetherFort.cubeset
================================================
-- NetherFort.cubeset
-- Defines the prefabs in the group NetherFort
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-30 13:45:43",
["GridSizeX"] = "512",
["GridSizeZ"] = "512",
["IntendedUse"] = "PieceStructures",
["MaxDepth"] = "12",
["MaxOffsetX"] = "128",
["MaxOffsetZ"] = "128",
["MaxStructureSizeX"] = "384",
["MaxStructureSizeZ"] = "384",
},
Pieces =
{
{
OriginData =
{
ExportName = "BridgeFunnelDown",
Name = "Nether 0",
GalleryName = "Nether",
GalleryIndex = "0",
ID = "2",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 12,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 21,
MaxZ = 11,
},
Connectors =
{
{
Type = 0,
RelX = 7,
RelY = 4,
RelZ = 11,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 0,
RelY = 9,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 9,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "5",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 6", -- netherbrickstairs
"c:114: 4", -- netherbrickstairs
"d:114: 5", -- netherbrickstairs
"e: 44:14", -- stone_slab
"f:114: 7", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmaaammmmmm", -- 9
"mmmmmmaaammmmmm", -- 10
"mmmmmmaaammmmmm", -- 11
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmaaammmmmm", -- 9
"mmmmmmaaammmmmm", -- 10
"mmmmmmaaammmmmm", -- 11
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmcaaadmmmmm", -- 8
"mmmmmcaaadmmmmm", -- 9
"mmmmmcaaadmmmmm", -- 10
"mmmmmcaaadmmmmm", -- 11
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmaaaaammmmm", -- 7
"mmmmmaaaaammmmm", -- 8
"mmmmmaaaaammmmm", -- 9
"mmmmmaaaaammmmm", -- 10
"mmmmmaaaaammmmm", -- 11
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmcbbbbbdmmmm", -- 6
"mmmmaaaaaaammmm", -- 7
"mmmma.....ammmm", -- 8
"mmmmaa...aammmm", -- 9
"mmmmma...ammmmm", -- 10
"mmmmma...ammmmm", -- 11
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"aadmmmmmmmmmcaa", -- 1
"aadmmmmmmmmmcaa", -- 2
"aadmmmmmmmmmcaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmcbbbbbbbdmmm", -- 5
"mmmaaaaaaaaaamm", -- 6
"mmma.......ammm", -- 7
"mmmaa.....aammm", -- 8
"mmmmam...mammmm", -- 9
"mmmmmm...mmmmmm", -- 10
"mmmmmm...mmmmmm", -- 11
-- Level 6
"mmmmmmmmmmmmmmm", -- 0
"aaademmmmmecaaa", -- 1
"aaademmmmmecaaa", -- 2
"aaademmmmmecaaa", -- 3
"mmaaabbbbbaaaam", -- 4
"mmaaaaaaaaaaaam", -- 5
"mma.........amm", -- 6
"mmaa.......aamm", -- 7
"mmmam.....mammm", -- 8
"mmmmmm...mmmmmm", -- 9
"mmmmmm...mmmmmm", -- 10
"mmmmmm...mmmmmm", -- 11
-- Level 7
"bbbbbbbbbbbbbbb", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"faaaaaaaaaaaaaa", -- 4
"ma...........am", -- 5
"maa.........aam", -- 6
"mmam.......mamm", -- 7
"mmmmm.....mmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 8
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"a.............a", -- 4
"aa...........aa", -- 5
"mam.........mam", -- 6
"mmmm.......mmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 9
"aaaaaaaaaaaaaaa", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"a.............a", -- 4
"am............a", -- 5
"mmm.........mmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"m.............m", -- 4
"mm............m", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"m.............m", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
},
}, -- BridgeFunnelDown
{
OriginData =
{
ExportName = "DarkCorridor",
Name = "Nether 3",
GalleryName = "Nether",
GalleryIndex = "3",
ID = "30",
CreatorName = "STR_Warrior",
},
Size =
{
x = 14,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 13,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 13,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 2", -- netherbrickstairs
"d:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaa", -- 4
-- Level 1
"aaaaaaaaaaaaaa", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"aaaaaaaaaaaaaa", -- 4
-- Level 2
"aabaaaaaaaabaa", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"aabaaaaaaaabaa", -- 4
-- Level 3
"aabaaaaaaaabaa", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"aabaaaaaaaabaa", -- 4
-- Level 4
"aabaaaaaaaabaa", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"aabaaaaaaaabaa", -- 4
-- Level 5
"cccccccccccccc", -- 0
"aaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaa", -- 3
"dddddddddddddd", -- 4
},
}, -- DarkCorridor
{
OriginData =
{
ExportName = "Turret",
Name = "Nether 7",
GalleryName = "Nether",
GalleryIndex = "7",
ID = "34",
CreatorName = "xoft",
},
Size =
{
x = 7,
y = 7,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 16,
MaxZ = 6,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "-99",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"aa...aa", -- 0
"a.....a", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"a.....a", -- 5
"aa...aa", -- 6
-- Level 2
"aa...aa", -- 0
"a.....a", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"a.....a", -- 5
"aa...aa", -- 6
-- Level 3
"aa...aa", -- 0
"a.....a", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"a.....a", -- 5
"aa...aa", -- 6
-- Level 4
"aabbbaa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"b.....b", -- 3
"b.....b", -- 4
"a.....a", -- 5
"aabbbaa", -- 6
-- Level 5
"aaaaaaa", -- 0
"a.....a", -- 1
"a.....a", -- 2
"a.....a", -- 3
"a.....a", -- 4
"a.....a", -- 5
"aaaaaaa", -- 6
-- Level 6
".......", -- 0
".......", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
".......", -- 5
".......", -- 6
},
}, -- Turret
{
OriginData =
{
ExportName = "StairsToOpen2",
Name = "Nether 8",
GalleryName = "Nether",
GalleryIndex = "8",
ID = "35",
CreatorName = "xoft",
},
Size =
{
x = 7,
y = 10,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 19,
MaxZ = 6,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:0|3:0|5:0|7:0|9:0|11:0|13:0|15:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"aa...aa", -- 0
"a.....a", -- 1
"a.....a", -- 2
"a.....a", -- 3
"a.....a", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 2
"aa...aa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"a.....a", -- 3
"b.....b", -- 4
"a.aaaaa", -- 5
"aabaaba", -- 6
-- Level 3
"aa...aa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"a.....a", -- 3
"b.....b", -- 4
"a..aaaa", -- 5
"aabaaba", -- 6
-- Level 4
"aabbbaa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"a.....a", -- 3
"b.....b", -- 4
"a...aaa", -- 5
"aabaaba", -- 6
-- Level 5
"aaaaaaa", -- 0
"a.....a", -- 1
"a.....a", -- 2
"a.....a", -- 3
"a.....a", -- 4
"a....aa", -- 5
"aaaaaaa", -- 6
-- Level 6
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"a.....a", -- 5
"aaaaaaa", -- 6
-- Level 7
"aaaaaaa", -- 0
"a.....a", -- 1
"......a", -- 2
"......a", -- 3
"......a", -- 4
"a.....a", -- 5
"aaaaaaa", -- 6
-- Level 8
"mmmmmmm", -- 0
"m.....m", -- 1
"......m", -- 2
"......m", -- 3
"......m", -- 4
"m.....m", -- 5
"mmmmmmm", -- 6
-- Level 9
"mmmmmmm", -- 0
"m.....m", -- 1
"......m", -- 2
"......m", -- 3
"......m", -- 4
"m.....m", -- 5
"mmmmmmm", -- 6
},
}, -- StairsToOpen2
{
OriginData =
{
ExportName = "CorridorCorner5",
Name = "Nether 10",
GalleryName = "Nether",
GalleryIndex = "10",
ID = "40",
CreatorName = "xoft",
},
Size =
{
x = 11,
y = 6,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 5,
MaxZ = 10,
},
Connectors =
{
{
Type = 1,
RelX = 2,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 10,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 10,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 2", -- netherbrickstairs
"d:114: 0", -- netherbrickstairs
"e:114: 3", -- netherbrickstairs
"f:114: 1", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaa", -- 0
"aaaaaaaaaaa", -- 1
"aaaaaaaaaaa", -- 2
"aaaaaaaaaaa", -- 3
"aaaaaaaaaaa", -- 4
"aaaaammmmmm", -- 5
"aaaaammmmmm", -- 6
"aaaaammmmmm", -- 7
"aaaaammmmmm", -- 8
"aaaaammmmmm", -- 9
"aaaaammmmmm", -- 10
-- Level 1
"aaaaaaaaaaa", -- 0
"a..........", -- 1
"a..........", -- 2
"a..........", -- 3
"a...aaaaaaa", -- 4
"a...ammmmmm", -- 5
"a...ammmmmm", -- 6
"a...ammmmmm", -- 7
"a...ammmmmm", -- 8
"a...ammmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 2
"abababababa", -- 0
"b..........", -- 1
"a..........", -- 2
"b..........", -- 3
"a...abababa", -- 4
"b...bmmmmmm", -- 5
"a...ammmmmm", -- 6
"b...bmmmmmm", -- 7
"a...ammmmmm", -- 8
"b...bmmmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 3
"abababababa", -- 0
"b..........", -- 1
"a..........", -- 2
"b..........", -- 3
"a...abababa", -- 4
"b...bmmmmmm", -- 5
"a...ammmmmm", -- 6
"b...bmmmmmm", -- 7
"a...ammmmmm", -- 8
"b...bmmmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 4
"abababababa", -- 0
"b..........", -- 1
"a..........", -- 2
"b..........", -- 3
"a...abababa", -- 4
"b...bmmmmmm", -- 5
"a...ammmmmm", -- 6
"b...bmmmmmm", -- 7
"a...ammmmmm", -- 8
"b...bmmmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 5
"ccccccccccc", -- 0
"daaaaaaaaaa", -- 1
"daaaaaaaaaa", -- 2
"daaaaaaaaaa", -- 3
"daaaeeeeeee", -- 4
"daaafmmmmmm", -- 5
"daaafmmmmmm", -- 6
"daaafmmmmmm", -- 7
"daaafmmmmmm", -- 8
"daaafmmmmmm", -- 9
"daaafmmmmmm", -- 10
},
}, -- CorridorCorner5
{
OriginData =
{
ExportName = "CorridorStairs",
Name = "Nether 12",
GalleryName = "Nether",
GalleryIndex = "12",
ID = "42",
CreatorName = "xoft",
},
Size =
{
x = 9,
y = 13,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 8,
MaxY = 12,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 8,
RelY = 8,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 8,
RelY = 8,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "1000",
["DepthWeight"] = "0:0|2:0|4:0|6:0|8:0|10:0|12:0|14:0|16:0|18:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 0", -- netherbrickstairs
"c:113: 0", -- netherbrickfence
"d:114: 2", -- netherbrickstairs
"e:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaa", -- 0
"aaaaaaaaa", -- 1
"aaaaaaaaa", -- 2
"aaaaaaaaa", -- 3
"aaaaaaaaa", -- 4
-- Level 1
"aaaaaaaaa", -- 0
".baaaaaaa", -- 1
".baaaaaaa", -- 2
".baaaaaaa", -- 3
"aaaaaaaaa", -- 4
-- Level 2
"acaaaaaaa", -- 0
"..baaaaaa", -- 1
"..baaaaaa", -- 2
"..baaaaaa", -- 3
"acaaaaaaa", -- 4
-- Level 3
"acaaaaaaa", -- 0
"...baaaaa", -- 1
"...baaaaa", -- 2
"...baaaaa", -- 3
"acaaaaaaa", -- 4
-- Level 4
"acacaaaaa", -- 0
"....baaaa", -- 1
"....baaaa", -- 2
"....baaaa", -- 3
"acacaaaaa", -- 4
-- Level 5
"aaacaaaaa", -- 0
".....baaa", -- 1
".....baaa", -- 2
".....baaa", -- 3
"aaacaaaaa", -- 4
-- Level 6
"daacacaaa", -- 0
"a.....baa", -- 1
"a.....baa", -- 2
"a.....baa", -- 3
"eaacacaaa", -- 4
-- Level 7
"mdaaacaaa", -- 0
"ma.....ba", -- 1
"ma.....ba", -- 2
"ma.....ba", -- 3
"meaaacaaa", -- 4
-- Level 8
"mmdaacaca", -- 0
"mma......", -- 1
"mma......", -- 2
"mma......", -- 3
"mmeaacaca", -- 4
-- Level 9
"mmmdaaaca", -- 0
"mmma.....", -- 1
"mmma.....", -- 2
"mmma.....", -- 3
"mmmeaaaca", -- 4
-- Level 10
"mmmmdaaca", -- 0
"mmmma....", -- 1
"mmmma....", -- 2
"mmmma....", -- 3
"mmmmeaaca", -- 4
-- Level 11
"mmmmmdaaa", -- 0
"mmmmma...", -- 1
"mmmmma...", -- 2
"mmmmma...", -- 3
"mmmmmeaaa", -- 4
-- Level 12
"mmmmmmddd", -- 0
"mmmmmmaaa", -- 1
"mmmmmmaaa", -- 2
"mmmmmmaaa", -- 3
"mmmmmmeee", -- 4
},
}, -- CorridorStairs
{
OriginData =
{
ExportName = "BridgeSegment",
Name = "Nether 16",
GalleryName = "Nether",
GalleryIndex = "16",
ID = "158",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 8,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 17,
MaxZ = 4,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 5,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "1000",
["AllowedRotations"] = "7",
["DefaultWeight"] = "500",
["DepthWeight"] = "4:-3000|8:-3000|12:-3000|16:-3000|20:-3000",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c:114: 4", -- netherbrickstairs
"d: 44:14", -- stone_slab
"e:114: 6", -- netherbrickstairs
"f:114: 7", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"aabmmmmmmmmmcaa", -- 1
"aabmmmmmmmmmcaa", -- 2
"aabmmmmmmmmmcaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"aaabdmmmmmdcaaa", -- 1
"aaabdmmmmmdcaaa", -- 2
"aaabdmmmmmdcaaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
-- Level 3
"eeeeeeeeeeeeeee", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"fffffffffffffff", -- 4
-- Level 4
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaa", -- 4
-- Level 5
"aaaaaaaaaaaaaaa", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"aaaaaaaaaaaaaaa", -- 4
-- Level 6
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"mmmmmmmmmmmmmmm", -- 4
-- Level 7
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"mmmmmmmmmmmmmmm", -- 4
},
}, -- BridgeSegment
{
OriginData =
{
ExportName = "BridgeCrossing",
Name = "Nether 17",
GalleryName = "Nether",
GalleryIndex = "17",
ID = "159",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 8,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 17,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 5,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 7,
RelY = 5,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 14,
RelY = 5,
RelZ = 7,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "1:1000",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 7", -- netherbrickstairs
"c:114: 5", -- netherbrickstairs
"d:114: 4", -- netherbrickstairs
"e:114: 6", -- netherbrickstairs
"f: 44:14", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmaaammmmmm", -- 0
"mmmmmmaaammmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"aammmmmmmmmmmaa", -- 6
"aammmmmmmmmmmaa", -- 7
"aammmmmmmmmmmaa", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmaaammmmmm", -- 13
"mmmmmmaaammmmmm", -- 14
-- Level 1
"mmmmmmaaammmmmm", -- 0
"mmmmmmaaammmmmm", -- 1
"mmmmmmbbbmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"aacmmmmmmmmmdaa", -- 6
"aacmmmmmmmmmdaa", -- 7
"aacmmmmmmmmmdaa", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmeeemmmmmm", -- 12
"mmmmmmaaammmmmm", -- 13
"mmmmmmaaammmmmm", -- 14
-- Level 2
"mmmmmmaaammmmmm", -- 0
"mmmmmmaaammmmmm", -- 1
"mmmmmmaaammmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmmfffmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"aaacfmmmmmfdaaa", -- 6
"aaacfmmmmmfdaaa", -- 7
"aaacfmmmmmfdaaa", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmfffmmmmmm", -- 10
"mmmmmmeeemmmmmm", -- 11
"mmmmmmaaammmmmm", -- 12
"mmmmmmaaammmmmm", -- 13
"mmmmmmaaammmmmm", -- 14
-- Level 3
"mmmmmdaaacmmmmm", -- 0
"mmmmmdaaacmmmmm", -- 1
"mmmmmdaaacmmmmm", -- 2
"mmmmmdaaacmmmmm", -- 3
"mmmmmdaaacmmmmm", -- 4
"eeeeeeaaaeeeeee", -- 5
"aaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaa", -- 8
"bbbbbdaaacbbbbb", -- 9
"mmmmmdaaacmmmmm", -- 10
"mmmmmdaaacmmmmm", -- 11
"mmmmmdaaacmmmmm", -- 12
"mmmmmdaaacmmmmm", -- 13
"mmmmmdaaacmmmmm", -- 14
-- Level 4
"mmmmmaaaaammmmm", -- 0
"mmmmmaaaaammmmm", -- 1
"mmmmmaaaaammmmm", -- 2
"mmmmmaaaaammmmm", -- 3
"mmmmmaaaaammmmm", -- 4
"aaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaa", -- 9
"mmmmmaaaaammmmm", -- 10
"mmmmmaaaaammmmm", -- 11
"mmmmmaaaaammmmm", -- 12
"mmmmmaaaaammmmm", -- 13
"mmmmmaaaaammmmm", -- 14
-- Level 5
"mmmmma...ammmmm", -- 0
"mmmmma...ammmmm", -- 1
"mmmmma...ammmmm", -- 2
"mmmmma...ammmmm", -- 3
"mmmmma...ammmmm", -- 4
"aaaaaa...aaaaaa", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"aaaaaa...aaaaaa", -- 9
"mmmmma...ammmmm", -- 10
"mmmmma...ammmmm", -- 11
"mmmmma...ammmmm", -- 12
"mmmmma...ammmmm", -- 13
"mmmmma...ammmmm", -- 14
-- Level 6
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmmmm...mmmmmm", -- 3
"mmmmmm...mmmmmm", -- 4
"mmmmmm...mmmmmm", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"mmmmmm...mmmmmm", -- 9
"mmmmmm...mmmmmm", -- 10
"mmmmmm...mmmmmm", -- 11
"mmmmmm...mmmmmm", -- 12
"mmmmmm...mmmmmm", -- 13
"mmmmmm...mmmmmm", -- 14
-- Level 7
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmmmm...mmmmmm", -- 3
"mmmmmm...mmmmmm", -- 4
"mmmmmm...mmmmmm", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"mmmmmm...mmmmmm", -- 9
"mmmmmm...mmmmmm", -- 10
"mmmmmm...mmmmmm", -- 11
"mmmmmm...mmmmmm", -- 12
"mmmmmm...mmmmmm", -- 13
"mmmmmm...mmmmmm", -- 14
},
}, -- BridgeCrossing
{
OriginData =
{
ExportName = "BridgeCrumble2",
Name = "Nether 18",
GalleryName = "Nether",
GalleryIndex = "18",
ID = "160",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 15,
MaxZ = 4,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:0|2:0|3:0|4:0|5:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c: 44:14", -- stone_slab
"d:114: 6", -- netherbrickstairs
"e:114: 7", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmm", -- 0
"aammmmmmmmmmm", -- 1
"aammmmmmmmmmm", -- 2
"aammmmmmmmmmm", -- 3
"mmmmmmmmmmmmm", -- 4
-- Level 1
"mmmmmmmmmmmmm", -- 0
"aabmmmmmmmmmm", -- 1
"aabmmmmmmmmmm", -- 2
"aabmmmmmmmmmm", -- 3
"mmmmmmmmmmmmm", -- 4
-- Level 2
"mmmmmmmmmmmmm", -- 0
"aaabcmmmmmmmm", -- 1
"aaabcmmmmmmmm", -- 2
"aaabcmmmmmmmm", -- 3
"mmmmmmmmmmmmm", -- 4
-- Level 3
"dddddddddmmmm", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaammmm", -- 2
"aaaaaaaaaaaam", -- 3
"eeeeeeeeemmmm", -- 4
-- Level 4
"aaaaaaaaaaaam", -- 0
"aaaaaaaaaammm", -- 1
"aaaaaaaaaaamm", -- 2
"aaaaaaaaammmm", -- 3
"aaaaaaaaaaaaa", -- 4
-- Level 5
"aaaaaaaaammmm", -- 0
"mmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmm", -- 3
"aaaaaaaaaammm", -- 4
},
}, -- BridgeCrumble2
{
OriginData =
{
ExportName = "BridgeCrumble1",
Name = "Nether 19",
GalleryName = "Nether",
GalleryIndex = "19",
ID = "161",
CreatorName = "Aloe_vera",
},
Size =
{
x = 9,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 8,
MaxY = 15,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:0|2:0|3:0|4:0|5:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c: 44:14", -- stone_slab
"d:114: 6", -- netherbrickstairs
"e:114: 7", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmm", -- 0
"aammmmmmm", -- 1
"aammmmmmm", -- 2
"aammmmmmm", -- 3
"mmmmmmmmm", -- 4
-- Level 1
"mmmmmmmmm", -- 0
"aabmmmmmm", -- 1
"aabmmmmmm", -- 2
"aabmmmmmm", -- 3
"mmmmmmmmm", -- 4
-- Level 2
"mmmmmmmmm", -- 0
"aaabcmmmm", -- 1
"aaabcmmmm", -- 2
"aaabcmmmm", -- 3
"mmmmmmmmm", -- 4
-- Level 3
"dddddddmm", -- 0
"aaaaaaaam", -- 1
"aaaaaaaaa", -- 2
"aaaaaaamm", -- 3
"eeeeemmmm", -- 4
-- Level 4
"aaaaaaaaa", -- 0
"aaaaammmm", -- 1
"aaaaaammm", -- 2
"aaaaaammm", -- 3
"aaaaaaaam", -- 4
-- Level 5
"aaaaaammm", -- 0
"mmmmmmmmm", -- 1
"mmmmmmmmm", -- 2
"mmmmmmmmm", -- 3
"aaaaaaamm", -- 4
},
}, -- BridgeCrumble1
{
OriginData =
{
ExportName = "BlazePlatformOverhang",
Name = "Nether 20",
GalleryName = "Nether",
GalleryIndex = "20",
ID = "162",
CreatorName = "STR_Warrior",
},
Size =
{
x = 14,
y = 11,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 20,
MaxZ = 6,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 3,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:0|2:0|3:0|4:0|5:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c: 44:14", -- stone_slab
"d:114: 6", -- netherbrickstairs
"e:114: 7", -- netherbrickstairs
"f:114: 0", -- netherbrickstairs
"g:114: 4", -- netherbrickstairs
"h:113: 0", -- netherbrickfence
"i: 52: 0", -- mobspawner
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"aammmmmmmmmmmm", -- 2
"aammmmmmmmmmmm", -- 3
"aammmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmm", -- 6
-- Level 1
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"aabcmmmmmmmmmm", -- 2
"aabcmmmmmmmmmm", -- 3
"aabcmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmm", -- 6
-- Level 2
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"aaaaabmmmmmmmm", -- 2
"aaaaabmmmmmmmm", -- 3
"aaaaabmmmmmmmm", -- 4
"mmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmm", -- 6
-- Level 3
"mmmmmmmmmmmmmm", -- 0
"dddddddmmmmmmm", -- 1
"aaaaaabmmmmmmm", -- 2
"aaaaaabmmmmmmm", -- 3
"aaaaaabmmmmmmm", -- 4
"eeeeeeemmmmmmm", -- 5
"mmmmmmmmmmmmmm", -- 6
-- Level 4
"mmmmmmmmmmmmmm", -- 0
"aaaaaaadmmmmmm", -- 1
"aaaaaaabmmmmmm", -- 2
"aaaaaaabmmmmmm", -- 3
"aaaaaaabmmmmmm", -- 4
"aaaaaaaemmmmmm", -- 5
"mmmmmmmmmmmmmm", -- 6
-- Level 5
"mmmmmmmmmmmmmm", -- 0
"aaaaaaaabddddm", -- 1
"......faaaaabm", -- 2
"......faaaaabm", -- 3
"......faaaaabm", -- 4
"aaaaaaaaabeebm", -- 5
"mmmmmmmmmmmmmm", -- 6
-- Level 6
"mmmmmmmmgdddbm", -- 0
"mmmmmmaaaaaaad", -- 1
".......faaaaab", -- 2
".......faaaaab", -- 3
".......faaaaab", -- 4
"mmmmmmaaaaaaae", -- 5
"mmmmmmmmgeeebm", -- 6
-- Level 7
"mmmmmmmmaaaaam", -- 0
"mmmmmmhaa...aa", -- 1
".............a", -- 2
"..........i..a", -- 3
".............a", -- 4
"mmmmmmhaa...aa", -- 5
"mmmmmmmmaaaaam", -- 6
-- Level 8
"mmmmmmmmhhhhhm", -- 0
"mmmmmmhhh...hh", -- 1
"mm...........h", -- 2
"mm...........h", -- 3
"mm...........h", -- 4
"mmmmmmhhh...hh", -- 5
"mmmmmmmmhhhhhm", -- 6
-- Level 9
"mmmmmmmm.....m", -- 0
"mmmmmm........", -- 1
"mmmm..........", -- 2
"mmmm..........", -- 3
"mmmm..........", -- 4
"mmmmmm........", -- 5
"mmmmmmmm.....m", -- 6
-- Level 10
"mmmmmmmm.....m", -- 0
"mmmmmm........", -- 1
"mmmmmm........", -- 2
"mmmmmm........", -- 3
"mmmmmm........", -- 4
"mmmmmm........", -- 5
"mmmmmmmm.....m", -- 6
},
}, -- BlazePlatformOverhang
{
OriginData =
{
ExportName = "CentralRoom",
Name = "Nether 22",
GalleryName = "Nether",
GalleryIndex = "22",
ID = "164",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 9,
z = 13,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 8,
MaxZ = 12,
},
Connectors =
{
{
Type = 0,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 12,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 12,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "Range|40|100",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b: 10: 0", -- lava
"c:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 1
"aaaaa...aaaaa", -- 0
"aaaaa...aaaaa", -- 1
"aa.........aa", -- 2
"aa.........aa", -- 3
"aa.........aa", -- 4
"aa...aaa...aa", -- 5
"aa...aba...aa", -- 6
"aa...aaa...aa", -- 7
"aa.........aa", -- 8
"aa.........aa", -- 9
"aa.........aa", -- 10
"aaaaa...aaaaa", -- 11
"aaaaa...aaaaa", -- 12
-- Level 2
"aaaaa...aaaaa", -- 0
"aaaca...acaaa", -- 1
"aa.........aa", -- 2
"ac.........ca", -- 3
"aa.........aa", -- 4
"ac.........ca", -- 5
"aa.........aa", -- 6
"ac.........ca", -- 7
"aa.........aa", -- 8
"ac.........ca", -- 9
"aa.........aa", -- 10
"aaaca...acaaa", -- 11
"aaaaa...aaaaa", -- 12
-- Level 3
"aaaaa...aaaaa", -- 0
"aaaca...acaaa", -- 1
"aa.........aa", -- 2
"ac.........ca", -- 3
"aa.........aa", -- 4
"ac.........ca", -- 5
"aa.........aa", -- 6
"ac.........ca", -- 7
"aa.........aa", -- 8
"ac.........ca", -- 9
"aa.........aa", -- 10
"aaaca...acaaa", -- 11
"aaaaa...aaaaa", -- 12
-- Level 4
"acacacccacaca", -- 0
"caaaa...aaaac", -- 1
"aa.........aa", -- 2
"ca.........ac", -- 3
"aa.........aa", -- 4
"ca.........ac", -- 5
"aa.........aa", -- 6
"ca.........ac", -- 7
"aa.........aa", -- 8
"ca.........ac", -- 9
"aa.........aa", -- 10
"caaaa...aaaac", -- 11
"acaca...acaca", -- 12
-- Level 5
"acacaaaaacaca", -- 0
"caaaaaaaaaaac", -- 1
"aa.........aa", -- 2
"ca.........ac", -- 3
"aa.........aa", -- 4
"ca.........ac", -- 5
"aa.........aa", -- 6
"ca.........ac", -- 7
"aa.........aa", -- 8
"ca.........ac", -- 9
"aa.........aa", -- 10
"caaaaaaaaaaac", -- 11
"acacaaaaacaca", -- 12
-- Level 6
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 7
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 8
"cacacacacacac", -- 0
"a...........a", -- 1
"c...........c", -- 2
"a...........a", -- 3
"c...........c", -- 4
"a...........a", -- 5
"c...........c", -- 6
"a...........a", -- 7
"c...........c", -- 8
"a...........a", -- 9
"c...........c", -- 10
"a...........a", -- 11
"cacacacacacac", -- 12
},
}, -- CentralRoom
{
OriginData =
{
ExportName = "MidStaircase",
Name = "Nether 23",
GalleryName = "Nether",
GalleryIndex = "23",
ID = "165",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 8,
z = 13,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 7,
MaxZ = 12,
},
Connectors =
{
{
Type = 1,
RelX = 12,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 6,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 12,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 6,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "-1000",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b: 88: 0", -- soulsand
"c:115: 3", -- 115
"d:114: 3", -- netherbrickstairs
"e:114: 0", -- netherbrickstairs
"f:114: 1", -- netherbrickstairs
"g:114: 2", -- netherbrickstairs
"h: 10: 0", -- lava
"i:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaabbbbbaaaa", -- 3
"aaaabbbbbaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaabbbbbaaaa", -- 8
"aaaabbbbbaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 1
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaacccccaaaa", -- 3
"addecccccfdda", -- 4
"...eaaaaad...", -- 5
"...eaaaaa....", -- 6
"...eaaaaag...", -- 7
"agggcccccfgga", -- 8
"aaaacccccaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 2
"aaaaaaaaaaaaa", -- 0
"aha.......aha", -- 1
"aaa.......aaa", -- 2
"a...........a", -- 3
"a...........a", -- 4
"....eaaaa....", -- 5
"....eaaaa....", -- 6
"....eaaaa....", -- 7
"a...........a", -- 8
"a...........a", -- 9
"aaa.......aaa", -- 10
"aha.......aha", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 3
"aaaiiaaaiiaaa", -- 0
"a...........a", -- 1
"a...........a", -- 2
"a...........a", -- 3
"a...........a", -- 4
".....eaaa....", -- 5
".....eaaa....", -- 6
".....eaaa....", -- 7
"a...........a", -- 8
"a...........a", -- 9
"a...........a", -- 10
"a...........a", -- 11
"aaaiiaaaiiaaa", -- 12
-- Level 4
"aaaiiaaaiiaaa", -- 0
"a...........a", -- 1
"a...........a", -- 2
"a...........a", -- 3
"a...........a", -- 4
"......eaa....", -- 5
"......eaa....", -- 6
"......eaa....", -- 7
"a...........a", -- 8
"a...........a", -- 9
"a...........a", -- 10
"a...........a", -- 11
"aaaiiaaaiiaaa", -- 12
-- Level 5
"aaaaaaaaaaaaa", -- 0
"a...........a", -- 1
"a...........a", -- 2
"a...........a", -- 3
"a...........a", -- 4
"a......ea...a", -- 5
"a......ea...a", -- 6
"a......ea...a", -- 7
"a...........a", -- 8
"a...........a", -- 9
"a...........a", -- 10
"a...........a", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 6
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaa....eaaaa", -- 5
"aaaa....eaaaa", -- 6
"aaaa....eaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
-- Level 7
"iaiaiaiaiaiai", -- 0
"a...........a", -- 1
"i...........i", -- 2
"a...........a", -- 3
"i...........i", -- 4
"a...........a", -- 5
"i...........i", -- 6
"a...........a", -- 7
"i...........i", -- 8
"a...........a", -- 9
"i...........i", -- 10
"a...........a", -- 11
"iaiaiaiaiaiai", -- 12
},
}, -- MidStaircase
{
OriginData =
{
ExportName = "BlazePlatform",
Name = "Nether 26",
GalleryName = "Nether",
GalleryIndex = "26",
ID = "276",
CreatorName = "tonibm1999",
},
Size =
{
x = 10,
y = 7,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 6,
MaxZ = 6,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:0|2:0|3:0|4:0|5:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b: 52: 0", -- mobspawner
"c:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmm", -- 0
"aaaaaaaaaa", -- 1
"aaaaaaaaaa", -- 2
"aaaaaaaaaa", -- 3
"aaaaaaaaaa", -- 4
"aaaaaaaaaa", -- 5
"mmmmmmmmmm", -- 6
-- Level 1
"mmmmmmmmmm", -- 0
"aaaaaaaaaa", -- 1
"..aaaaaaaa", -- 2
"..aaaaaaaa", -- 3
"..aaaaaaaa", -- 4
"aaaaaaaaaa", -- 5
"mmmmmmmmmm", -- 6
-- Level 2
"mmmmaaaaaa", -- 0
"aaaaaaaaaa", -- 1
"...aaaaaaa", -- 2
"...aaaaaaa", -- 3
"...aaaaaaa", -- 4
"aaaaaaaaaa", -- 5
"mmmmaaaaaa", -- 6
-- Level 3
"mmmmaaaaaa", -- 0
"mmaaa....a", -- 1
".........a", -- 2
"......b..a", -- 3
".........a", -- 4
"mmaaa....a", -- 5
"mmmmaaaaaa", -- 6
-- Level 4
"mmmmcccccc", -- 0
"mmmcc....c", -- 1
".........c", -- 2
".........c", -- 3
".........c", -- 4
"mmmcc....c", -- 5
"mmmmcccccc", -- 6
-- Level 5
"mmmmmmmmmm", -- 0
"mmmmm....c", -- 1
"m........c", -- 2
"m........c", -- 3
"m........c", -- 4
"mmmmm....c", -- 5
"mmmmmmmmmm", -- 6
-- Level 6
"mmmmmmmmmm", -- 0
"mmmmm....m", -- 1
"mm.......c", -- 2
"mm.......c", -- 3
"mm.......c", -- 4
"mmmmm....m", -- 5
"mmmmmmmmmm", -- 6
},
}, -- BlazePlatform
{
OriginData =
{
ExportName = "StairsToOpen1",
Name = "Nether 27",
GalleryName = "Nether",
GalleryIndex = "27",
ID = "277",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 10,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 19,
MaxZ = 6,
},
Connectors =
{
{
Type = 0,
RelX = 6,
RelY = 7,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:0|3:0|5:0|7:0|9:0|11:0|13:0|15:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"aa...aa", -- 0
"a.....a", -- 1
"a.....a", -- 2
"a.....a", -- 3
"a.....a", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 2
"aa...aa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"a.....a", -- 3
"b.....b", -- 4
"a.aaaaa", -- 5
"aabaaba", -- 6
-- Level 3
"aa...aa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"a.....a", -- 3
"b.....b", -- 4
"a..aaaa", -- 5
"aabaaba", -- 6
-- Level 4
"aabbbaa", -- 0
"a.....a", -- 1
"b.....b", -- 2
"a.....a", -- 3
"b.....b", -- 4
"a...aaa", -- 5
"aabaaba", -- 6
-- Level 5
"aaaaaaa", -- 0
"a.....a", -- 1
"a.....a", -- 2
"a.....a", -- 3
"a.....a", -- 4
"a....aa", -- 5
"aaaaaaa", -- 6
-- Level 6
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"a.....a", -- 5
"aaaaaaa", -- 6
-- Level 7
"aaaaaaa", -- 0
"a.....a", -- 1
"a......", -- 2
"a......", -- 3
"a......", -- 4
"a.....a", -- 5
"aaaaaaa", -- 6
-- Level 8
"mmmmmmm", -- 0
"m.....m", -- 1
"m......", -- 2
"m......", -- 3
"m......", -- 4
"m.....m", -- 5
"mmmmmmm", -- 6
-- Level 9
"mmmmmmm", -- 0
"m.....m", -- 1
"m......", -- 2
"m......", -- 3
"m......", -- 4
"m.....m", -- 5
"mmmmmmm", -- 6
},
}, -- StairsToOpen1
{
OriginData =
{
ExportName = "LavaStaircase",
Name = "Nether 28",
GalleryName = "Nether",
GalleryIndex = "28",
ID = "278",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 11,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 10,
MaxZ = 14,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 6,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 9,
RelY = 1,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 9,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 0,
RelY = 6,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c: 10: 0", -- lava
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaa", -- 14
-- Level 1
"aaaaaaaa...aaaa", -- 0
"aaaaa.........a", -- 1
"aaaaa.........a", -- 2
"aaaaab........a", -- 3
"accca...aaaa..a", -- 4
"accca...acca..a", -- 5
"acccaaaaacca..a", -- 6
"acccccccccca..a", -- 7
"acccaaaaacca..a", -- 8
"accca...acca..a", -- 9
"accca...aaaa..a", -- 10
"aaaaab........a", -- 11
"aaaaa.........a", -- 12
"aaaaa.........a", -- 13
"aaaaaaaa...aaaa", -- 14
-- Level 2
"aaaaaaaa...aaaa", -- 0
"aaaa..........a", -- 1
"aaaa..........a", -- 2
"aaaabb........a", -- 3
"aaaa..........a", -- 4
"a.............a", -- 5
"a.............a", -- 6
"a.............a", -- 7
"a.............a", -- 8
"a.............a", -- 9
"aaaa..........a", -- 10
"aaaabb........a", -- 11
"aaaa..........a", -- 12
"aaaa..........a", -- 13
"aaaaaaaa...aaaa", -- 14
-- Level 3
"aaaaaaaa...aaaa", -- 0
"a.............a", -- 1
"a.............a", -- 2
"a..bb.........a", -- 3
"aaaa..........a", -- 4
"aaaa..........a", -- 5
"a.............a", -- 6
"a.............a", -- 7
"a.............a", -- 8
"aaaa..........a", -- 9
"aaaa..........a", -- 10
"a..bb.........a", -- 11
"a.............a", -- 12
"a.............a", -- 13
"aaaaaaaa...aaaa", -- 14
-- Level 4
"aaaaaaaa...aaaa", -- 0
"a.............a", -- 1
"a.............a", -- 2
"a..b..........a", -- 3
"a..b..........a", -- 4
"aaaa..........a", -- 5
"aaaa..........a", -- 6
"a.............a", -- 7
"aaaa..........a", -- 8
"aaaa..........a", -- 9
"a..b..........a", -- 10
"a..b..........a", -- 11
"a.............a", -- 12
"a.............a", -- 13
"aaaaaaaa...aaaa", -- 14
-- Level 5
"aaaaaaaaaaaaaaa", -- 0
"a.............a", -- 1
"a.............a", -- 2
"a.............a", -- 3
"a..b..........a", -- 4
"a..b..........a", -- 5
"aaaa..........a", -- 6
"aaaa..........a", -- 7
"aaaa..........a", -- 8
"a..b..........a", -- 9
"a..b..........a", -- 10
"a.............a", -- 11
"a.............a", -- 12
"a.............a", -- 13
"aaaaaaaaaaaaaaa", -- 14
-- Level 6
"aaaaaaaaaaaaaaa", -- 0
"a.............a", -- 1
"a.............a", -- 2
"a.............a", -- 3
"a.............a", -- 4
"a..b..........a", -- 5
"...b..........a", -- 6
"...b..........a", -- 7
"...b..........a", -- 8
"a..b..........a", -- 9
"a.............a", -- 10
"a.............a", -- 11
"a.............a", -- 12
"a.............a", -- 13
"aaaaaaaaaaaaaaa", -- 14
-- Level 7
"aababababababaa", -- 0
"a.............a", -- 1
"b.............b", -- 2
"a.............a", -- 3
"b.............b", -- 4
"a.............a", -- 5
"..............b", -- 6
"..............a", -- 7
"..............b", -- 8
"a.............a", -- 9
"b.............b", -- 10
"a.............a", -- 11
"b.............b", -- 12
"a.............a", -- 13
"aababababababaa", -- 14
-- Level 8
"aababababababaa", -- 0
"a.............a", -- 1
"b.............b", -- 2
"a.............a", -- 3
"b.............b", -- 4
"a.............a", -- 5
"..............b", -- 6
"..............a", -- 7
"..............b", -- 8
"a.............a", -- 9
"b.............b", -- 10
"a.............a", -- 11
"b.............b", -- 12
"a.............a", -- 13
"aababababababaa", -- 14
-- Level 9
"aababababababaa", -- 0
"a.............a", -- 1
"b.............b", -- 2
"a.............a", -- 3
"b.............b", -- 4
"a.............a", -- 5
"..............b", -- 6
"..............a", -- 7
"..............b", -- 8
"a.............a", -- 9
"b.............b", -- 10
"a.............a", -- 11
"b.............b", -- 12
"a.............a", -- 13
"aababababababaa", -- 14
-- Level 10
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaa", -- 14
},
}, -- LavaStaircase
{
OriginData =
{
ExportName = "LavaStairsBridge",
Name = "Nether 30",
GalleryName = "Nether",
GalleryIndex = "30",
ID = "281",
CreatorName = "STR_Warrior",
},
Size =
{
x = 16,
y = 12,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 11,
MaxZ = 14,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 6,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 6,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 9,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 9,
RelY = 1,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 14,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c: 10: 0", -- lava
"d:114: 2", -- netherbrickstairs
"e:114: 3", -- netherbrickstairs
"f:114: 7", -- netherbrickstairs
"g: 44:14", -- stone_slab
"h:114: 6", -- netherbrickstairs
"i: 44: 6", -- stone_slab
"j:114: 0", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 1
"aaaaaaaa...aaaaa", -- 0
"aaaaa..........a", -- 1
"aaaaa..........a", -- 2
"aaaaab.........a", -- 3
"accca...ddd.aaaa", -- 4
"accca...aaa.acca", -- 5
"acccaaaaaaaaacca", -- 6
"acccccccccccccca", -- 7
"acccaaaaaaaaacca", -- 8
"accca...aaa.acca", -- 9
"accca...eee.aaaa", -- 10
"aaaaab.........a", -- 11
"aaaaa..........a", -- 12
"aaaaa..........a", -- 13
"aaaaaaaa...aaaaa", -- 14
-- Level 2
"aaaaaaaa...aaaaa", -- 0
"aaaa...........a", -- 1
"aaaa...........a", -- 2
"aaaabb.........a", -- 3
"aaaa........b..a", -- 4
"a.......ddd....a", -- 5
"a.......fff....a", -- 6
"a.......ggg....a", -- 7
"a.......hhh....a", -- 8
"a.......eee....a", -- 9
"aaaa........b..a", -- 10
"aaaabb.........a", -- 11
"aaaa...........a", -- 12
"aaaa...........a", -- 13
"aaaaaaaa...aaaaa", -- 14
-- Level 3
"aaaaaaaa...aaaaa", -- 0
"a..............a", -- 1
"a..............a", -- 2
"a..bb..........a", -- 3
"aaaa........b..a", -- 4
"aaaa...........a", -- 5
"a..............a", -- 6
"a..............a", -- 7
"a..............a", -- 8
"aaaa...........a", -- 9
"aaaa........b..a", -- 10
"a..bb..........a", -- 11
"a..............a", -- 12
"a..............a", -- 13
"aaaaaaaa...aaaaa", -- 14
-- Level 4
"aaaaaaaabbbaaaaa", -- 0
"a..............a", -- 1
"a..............a", -- 2
"a..b...........a", -- 3
"a..b........b..a", -- 4
"aaaa...........a", -- 5
"aaaa...........a", -- 6
"a..............a", -- 7
"aaaa...........a", -- 8
"aaaa...........a", -- 9
"a..b........b..a", -- 10
"a..b...........a", -- 11
"a..............a", -- 12
"a..............a", -- 13
"aaaaaaaabbbaaaaa", -- 14
-- Level 5
"aaaaaaaaaaaaaaaa", -- 0
"a..............a", -- 1
"a..............a", -- 2
"a...........ggga", -- 3
"a..b........iija", -- 4
"a..b........iija", -- 5
"aaaa........iija", -- 6
"aaaa........iija", -- 7
"aaaa........iija", -- 8
"a..b........iija", -- 9
"a..b........iija", -- 10
"a...........ggga", -- 11
"a..............a", -- 12
"a..............a", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 6
"aaaaaaaaaaaaaaaa", -- 0
"a.............ga", -- 1
"a............iia", -- 2
"a..............a", -- 3
"a..............a", -- 4
"a..b...........a", -- 5
"...b...........a", -- 6
"...b...........a", -- 7
"...b...........a", -- 8
"a..b...........a", -- 9
"a..............a", -- 10
"a..............a", -- 11
"a............iia", -- 12
"a.............ga", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 7
"aaaaaaaaaaaaaaaa", -- 0
"a..............a", -- 1
"a..............a", -- 2
"a..............a", -- 3
"a..............a", -- 4
"a..............a", -- 5
"...............a", -- 6
"...............a", -- 7
"...............a", -- 8
"a..............a", -- 9
"a..............a", -- 10
"a..............a", -- 11
"a..............a", -- 12
"a..............a", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 8
"aaaaaaaaaaaaaaaa", -- 0
"a..............a", -- 1
"a..............a", -- 2
"a..............a", -- 3
"a..............a", -- 4
"a..............a", -- 5
"...............a", -- 6
"...............a", -- 7
"...............a", -- 8
"a..............a", -- 9
"a..............a", -- 10
"a..............a", -- 11
"a..............a", -- 12
"a..............a", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 9
"aaaaaaaaaaaaaaaa", -- 0
"a..............a", -- 1
"a..............a", -- 2
"a..............a", -- 3
"a..............a", -- 4
"a..............a", -- 5
"a..............a", -- 6
"a..............a", -- 7
"a..............a", -- 8
"a..............a", -- 9
"a..............a", -- 10
"a..............a", -- 11
"a..............a", -- 12
"a..............a", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 10
"aaaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaaa", -- 14
-- Level 11
"abbaabbaabbaabba", -- 0
"b..............b", -- 1
"a..............a", -- 2
"b..............b", -- 3
"a..............a", -- 4
"b..............b", -- 5
"a..............a", -- 6
"b..............b", -- 7
"a..............a", -- 8
"b..............b", -- 9
"a..............a", -- 10
"b..............b", -- 11
"a..............a", -- 12
"b..............b", -- 13
"abbaabbaabbaabba", -- 14
},
}, -- LavaStairsBridge
{
OriginData =
{
ExportName = "LavaStaircaseBig",
Name = "Nether 31",
GalleryName = "Nether",
GalleryIndex = "31",
ID = "282",
CreatorName = "STR_Warrior",
},
Size =
{
x = 12,
y = 15,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 14,
MaxZ = 14,
},
Connectors =
{
{
Type = 1,
RelX = 11,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 0,
RelY = 9,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 11,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 9,
RelZ = 7,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "-1000",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b: 10: 0", -- lava
"c:113: 0", -- netherbrickfence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaa", -- 0
"aaaaaaaaaaaa", -- 1
"aaaaaaaaaaaa", -- 2
"aaaaaaaaaaaa", -- 3
"aaaaaaaaaaaa", -- 4
"aaaaaaaaaaaa", -- 5
"aaaaaaaaaaaa", -- 6
"aaaaaaaaaaaa", -- 7
"aaaaaaaaaaaa", -- 8
"aaaaaaaaaaaa", -- 9
"aaaaaaaaaaaa", -- 10
"aaaaaaaaaaaa", -- 11
"aaaaaaaaaaaa", -- 12
"aaaaaaaaaaaa", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 1
"aaaaaaaaaaaa", -- 0
"aaaaaaaaaaaa", -- 1
"aaaaaaaaaaaa", -- 2
"aaaaaaaaaaaa", -- 3
"abbbbbaaaaaa", -- 4
"abbbbbbaaaaa", -- 5
"abbbbbba....", -- 6
"abbbbbba....", -- 7
"abbbbbba....", -- 8
"abbbbbbaaaaa", -- 9
"abbbbb.aaaaa", -- 10
"aaaaaaaaaaaa", -- 11
"aaaaaaaaaaaa", -- 12
"aaaaaaaaaaaa", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 2
"aaaaaaaaaaaa", -- 0
"aaaaaaaaaaaa", -- 1
"aaaaaaaaaaaa", -- 2
"aaaaaaaaaaaa", -- 3
"abbbbbaaaaaa", -- 4
"abbbbbba...a", -- 5
"abbbbbba....", -- 6
"abbbbbba....", -- 7
"abbbbbba....", -- 8
"abbbbbba...a", -- 9
"abbbbb.aaaaa", -- 10
"aaaaaaaaaaaa", -- 11
"aaaaaaaaaaaa", -- 12
"aaaaaaaaaaaa", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 3
"aaaaaaaaaaaa", -- 0
"aaaaaaaaaaaa", -- 1
"aaaaaaaaaaaa", -- 2
"aaaaaaaaaaaa", -- 3
"abbbbbaa...a", -- 4
"abbbbbba...a", -- 5
"abbbbbba....", -- 6
"abbbbbba....", -- 7
"abbbbbba....", -- 8
"abbbbbba...a", -- 9
"abbbbbaa...a", -- 10
"aaaaaaaaaaaa", -- 11
"aaaaaaaaaaaa", -- 12
"aaaaaaaaaaaa", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 4
"aaaaaaaaaaaa", -- 0
"aaaaa......a", -- 1
"aaaaa......a", -- 2
"aaaaacc....a", -- 3
"a.....cc...a", -- 4
"a......c...a", -- 5
"a......c...a", -- 6
"a......c...a", -- 7
"a......c...a", -- 8
"a......c...a", -- 9
"a.....cc...a", -- 10
"aaaaacc....a", -- 11
"aaaaa......a", -- 12
"aaaaa......a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 5
"aaaaaaaaaaaa", -- 0
"aaaa.......a", -- 1
"aaaa.......a", -- 2
"aaaacc.....a", -- 3
"aaaa.......a", -- 4
"a..........a", -- 5
"a..........a", -- 6
"a..........a", -- 7
"a..........a", -- 8
"a..........a", -- 9
"aaaa.......a", -- 10
"aaaacc.....a", -- 11
"aaaa.......a", -- 12
"aaaa.......a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 6
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..cc......a", -- 3
"aaaa.......a", -- 4
"aaaa.......a", -- 5
"a..........a", -- 6
"a..........a", -- 7
"a..........a", -- 8
"aaaa.......a", -- 9
"aaaa.......a", -- 10
"a..cc......a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 7
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..c.......a", -- 3
"a..c.......a", -- 4
"aaaa.......a", -- 5
"aaaa.......a", -- 6
"a..........a", -- 7
"aaaa.......a", -- 8
"aaaa.......a", -- 9
"a..c.......a", -- 10
"a..c.......a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 8
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..........a", -- 3
"a..c.......a", -- 4
"a..c.......a", -- 5
"aaaa.......a", -- 6
"aaaa.......a", -- 7
"aaaa.......a", -- 8
"a..c.......a", -- 9
"a..c.......a", -- 10
"a..........a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 9
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..........a", -- 3
"a..........a", -- 4
"a..c.......a", -- 5
"...c.......a", -- 6
"...c.......a", -- 7
"...c.......a", -- 8
"a..c.......a", -- 9
"a..........a", -- 10
"a..........a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 10
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..........a", -- 3
"a..........a", -- 4
"a..........a", -- 5
"...........a", -- 6
"...........a", -- 7
"...........a", -- 8
"a..........a", -- 9
"a..........a", -- 10
"a..........a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 11
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..........a", -- 3
"a..........a", -- 4
"a..........a", -- 5
"...........a", -- 6
"...........a", -- 7
"...........a", -- 8
"a..........a", -- 9
"a..........a", -- 10
"a..........a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 12
"aaaaaaaaaaaa", -- 0
"a..........a", -- 1
"a..........a", -- 2
"a..........a", -- 3
"a..........a", -- 4
"a..........a", -- 5
"a..........a", -- 6
"a..........a", -- 7
"a..........a", -- 8
"a..........a", -- 9
"a..........a", -- 10
"a..........a", -- 11
"a..........a", -- 12
"a..........a", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 13
"aaaaaaaaaaaa", -- 0
"aaaaaaaaaaaa", -- 1
"aaaaaaaaaaaa", -- 2
"aaaaaaaaaaaa", -- 3
"aaaaaaaaaaaa", -- 4
"aaaaaaaaaaaa", -- 5
"aaaaaaaaaaaa", -- 6
"aaaaaaaaaaaa", -- 7
"aaaaaaaaaaaa", -- 8
"aaaaaaaaaaaa", -- 9
"aaaaaaaaaaaa", -- 10
"aaaaaaaaaaaa", -- 11
"aaaaaaaaaaaa", -- 12
"aaaaaaaaaaaa", -- 13
"aaaaaaaaaaaa", -- 14
-- Level 14
"aaaaaaaaaaaa", -- 0
"abbbbbbbbbba", -- 1
"abbbbbbbbbba", -- 2
"abbbbbbbbbba", -- 3
"abbbbbbbbbba", -- 4
"abbbbbbbbbba", -- 5
"abbbbbbbbbba", -- 6
"abbbbbbbbbba", -- 7
"abbbbbbbbbba", -- 8
"abbbbbbbbbba", -- 9
"abbbbbbbbbba", -- 10
"abbbbbbbbbba", -- 11
"abbbbbbbbbba", -- 12
"abbbbbbbbbba", -- 13
"aaaaaaaaaaaa", -- 14
},
}, -- LavaStaircaseBig
{
OriginData =
{
ExportName = "Corridor13",
Name = "Nether 35",
GalleryName = "Nether",
GalleryIndex = "35",
ID = "286",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 12,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 12,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "300",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 2", -- netherbrickstairs
"d:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
-- Level 1
"aaaaaaaaaaaaa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"aaaaaaaaaaaaa", -- 4
-- Level 2
"ababababababa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"ababababababa", -- 4
-- Level 3
"ababababababa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"ababababababa", -- 4
-- Level 4
"ababababababa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"ababababababa", -- 4
-- Level 5
"ccccccccccccc", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"ddddddddddddd", -- 4
},
}, -- Corridor13
{
OriginData =
{
ExportName = "Corridor11",
Name = "Nether 36",
GalleryName = "Nether",
GalleryIndex = "36",
ID = "287",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 10,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 10,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "300",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 2", -- netherbrickstairs
"d:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaa", -- 0
"aaaaaaaaaaa", -- 1
"aaaaaaaaaaa", -- 2
"aaaaaaaaaaa", -- 3
"aaaaaaaaaaa", -- 4
-- Level 1
"aaaaaaaaaaa", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"aaaaaaaaaaa", -- 4
-- Level 2
"abababababa", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"abababababa", -- 4
-- Level 3
"abababababa", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"abababababa", -- 4
-- Level 4
"abababababa", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"abababababa", -- 4
-- Level 5
"ccccccccccc", -- 0
"aaaaaaaaaaa", -- 1
"aaaaaaaaaaa", -- 2
"aaaaaaaaaaa", -- 3
"ddddddddddd", -- 4
},
}, -- Corridor11
{
OriginData =
{
ExportName = "BalconyCorridor",
Name = "Nether 37",
GalleryName = "Nether",
GalleryIndex = "37",
ID = "288",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 7,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 6,
MaxZ = 8,
},
Connectors =
{
{
Type = 1,
RelX = 12,
RelY = 2,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 0,
RelY = 2,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 12,
RelY = 2,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 2,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 4", -- netherbrickstairs
"c:114: 7", -- netherbrickstairs
"d:114: 5", -- netherbrickstairs
"e: 44: 6", -- stone_slab
"f:113: 0", -- netherbrickfence
"g:114: 2", -- netherbrickstairs
"h:114: 3", -- netherbrickstairs
"i:114: 0", -- netherbrickstairs
"j:114: 1", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"mmmmaaaaammmm", -- 5
"mmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmm", -- 8
-- Level 1
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaa.aaa.aaaa", -- 4
"mmbcaaaaacdmm", -- 5
"mmmbcccccdmmm", -- 6
"mmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmm", -- 8
-- Level 2
"aaaaaaaaaaaaa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"aaaa.eee.aaaa", -- 4
"mmaaaaaaaaamm", -- 5
"mmaaaaaaaaamm", -- 6
"mmaaaaaaaaamm", -- 7
"mmaaaaaaaaamm", -- 8
-- Level 3
"afafafafafafa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"afaa.....aafa", -- 4
"mmaaa...aaamm", -- 5
"mmf.......fmm", -- 6
"mmf.......fmm", -- 7
"mmfffffffffmm", -- 8
-- Level 4
"afafafafafafa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"afaa.....aafa", -- 4
"mmaaa...aaamm", -- 5
"mm.........mm", -- 6
"mm.........mm", -- 7
"mm.........mm", -- 8
-- Level 5
"afafafafafafa", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"afaa.....aafa", -- 4
"mmaaa...aaamm", -- 5
"mm.........mm", -- 6
"mm.........mm", -- 7
"mm.........mm", -- 8
-- Level 6
"ggggggggggggg", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"hhiaaaaaaahhh", -- 4
"mmihhhhhhhjmm", -- 5
"mmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmm", -- 8
},
}, -- BalconyCorridor
{
OriginData =
{
ExportName = "BalconyTee2",
Name = "Nether 38",
GalleryName = "Nether",
GalleryIndex = "38",
ID = "289",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 7,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 6,
MaxZ = 10,
},
Connectors =
{
{
Type = 1,
RelX = 12,
RelY = 2,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 0,
RelY = 2,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 12,
RelY = 2,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 0,
RelY = 2,
RelZ = 4,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 4", -- netherbrickstairs
"c:114: 7", -- netherbrickstairs
"d:114: 5", -- netherbrickstairs
"e: 44: 6", -- stone_slab
"f:113: 0", -- netherbrickfence
"g:114: 0", -- netherbrickstairs
"h:114: 1", -- netherbrickstairs
"i:114: 2", -- netherbrickstairs
"j:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaaaammmm", -- 0
"mmmmaaaaammmm", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"mmmmaaaaammmm", -- 7
"mmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmm", -- 10
-- Level 1
"mmmmaaaaammmm", -- 0
"mmmmaaaaammmm", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaa.aaa.aaaa", -- 6
"mmbcaaaaacdmm", -- 7
"mmmbcccccdmmm", -- 8
"mmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmm", -- 10
-- Level 2
"mmmma...ammmm", -- 0
"mmmma...ammmm", -- 1
"aaaaa...aaaaa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"aaaa.eee.aaaa", -- 6
"mmaaaaaaaaamm", -- 7
"mmaaaaaaaaamm", -- 8
"mmaaaaaaaaamm", -- 9
"mmaaaaaaaaamm", -- 10
-- Level 3
"mmmma...ammmm", -- 0
"mmmmf...fmmmm", -- 1
"afafa...afafa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"afaa.....aafa", -- 6
"mmaaa...aaamm", -- 7
"mmf.......fmm", -- 8
"mmf.......fmm", -- 9
"mmfffffffffmm", -- 10
-- Level 4
"mmmma...ammmm", -- 0
"mmmmf...fmmmm", -- 1
"afafa...afafa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"afaa.....aafa", -- 6
"mmaaa...aaamm", -- 7
"mm.........mm", -- 8
"mm.........mm", -- 9
"mm.........mm", -- 10
-- Level 5
"mmmma...ammmm", -- 0
"mmmmf...fmmmm", -- 1
"afafa...afafa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"afaa.....aafa", -- 6
"mmaaa...aaamm", -- 7
"mm.........mm", -- 8
"mm.........mm", -- 9
"mm.........mm", -- 10
-- Level 6
"mmmmgaaahmmmm", -- 0
"mmmmgaaahmmmm", -- 1
"iiiiiaaaiiiii", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"jjgaaaaaaajjj", -- 6
"mmgjjjjjjjhmm", -- 7
"mmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmm", -- 10
},
}, -- BalconyTee2
{
OriginData =
{
ExportName = "BridgeTee",
Name = "Nether 39",
GalleryName = "Nether",
GalleryIndex = "39",
ID = "290",
CreatorName = "STR_Warrior",
},
Size =
{
x = 15,
y = 8,
z = 10,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 17,
MaxZ = 9,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 5,
RelZ = 9,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 14,
RelY = 5,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "1:500",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c:114: 4", -- netherbrickstairs
"d:114: 6", -- netherbrickstairs
"e: 44:14", -- stone_slab
"f:114: 7", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmaa", -- 1
"aammmmmmmmmmmaa", -- 2
"aammmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmaaammmmmm", -- 9
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"aabmmmmmmmmmcaa", -- 1
"aabmmmmmmmmmcaa", -- 2
"aabmmmmmmmmmcaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmdddmmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmaaammmmmm", -- 9
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"aaabemmmmmecaaa", -- 1
"aaabemmmmmecaaa", -- 2
"aaabemmmmmecaaa", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmeeemmmmmm", -- 5
"mmmmmmdddmmmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmaaammmmmm", -- 9
-- Level 3
"ddddddddddddddd", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"fffffcaaabfffff", -- 4
"mmmmmcaaabmmmmm", -- 5
"mmmmmcaaabmmmmm", -- 6
"mmmmmcaaabmmmmm", -- 7
"mmmmmcaaabmmmmm", -- 8
"mmmmmcaaabmmmmm", -- 9
-- Level 4
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaa", -- 4
"mmmmmaaaaammmmm", -- 5
"mmmmmaaaaammmmm", -- 6
"mmmmmaaaaammmmm", -- 7
"mmmmmaaaaammmmm", -- 8
"mmmmmaaaaammmmm", -- 9
-- Level 5
"aaaaaaaaaaaaaaa", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"aaaaaa...aaaaaa", -- 4
"mmmmma...ammmmm", -- 5
"mmmmma...ammmmm", -- 6
"mmmmma...ammmmm", -- 7
"mmmmma...ammmmm", -- 8
"mmmmma...ammmmm", -- 9
-- Level 6
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"mmmmmm...mmmmmm", -- 4
"mmmmmm...mmmmmm", -- 5
"mmmmmm...mmmmmm", -- 6
"mmmmmm...mmmmmm", -- 7
"mmmmmm...mmmmmm", -- 8
"mmmmmm...mmmmmm", -- 9
-- Level 7
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"mmmmmm...mmmmmm", -- 4
"mmmmmm...mmmmmm", -- 5
"mmmmmm...mmmmmm", -- 6
"mmmmmm...mmmmmm", -- 7
"mmmmmm...mmmmmm", -- 8
"mmmmmm...mmmmmm", -- 9
},
}, -- BridgeTee
{
OriginData =
{
ExportName = "Tee2x4",
Name = "Nether 40",
GalleryName = "Nether",
GalleryIndex = "40",
ID = "291",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 6,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 5,
MaxZ = 6,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 12,
RelY = 1,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 12,
RelY = 1,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 0", -- netherbrickstairs
"d:114: 1", -- netherbrickstairs
"e:114: 2", -- netherbrickstairs
"f:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaaaammmm", -- 0
"mmmmaaaaammmm", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
-- Level 1
"mmmma...ammmm", -- 0
"mmmma...ammmm", -- 1
"aaaaa...aaaaa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"aaaaaaaaaaaaa", -- 6
-- Level 2
"mmmma...ammmm", -- 0
"mmmmb...bmmmm", -- 1
"ababa...ababa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"ababababababa", -- 6
-- Level 3
"mmmma...ammmm", -- 0
"mmmmb...bmmmm", -- 1
"ababa...ababa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"ababababababa", -- 6
-- Level 4
"mmmma...ammmm", -- 0
"mmmmb...bmmmm", -- 1
"ababa...ababa", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
"ababababababa", -- 6
-- Level 5
"mmmmcaaadmmmm", -- 0
"mmmmcaaadmmmm", -- 1
"eeeecaaadeeee", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"fffffffffffff", -- 6
},
}, -- Tee2x4
{
OriginData =
{
ExportName = "Tee4x4",
Name = "Nether 41",
GalleryName = "Nether",
GalleryIndex = "41",
ID = "292",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 6,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 5,
MaxZ = 8,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 6,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 12,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 6,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 12,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 0", -- netherbrickstairs
"d:114: 1", -- netherbrickstairs
"e:114: 2", -- netherbrickstairs
"f:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaaaammmm", -- 0
"mmmmaaaaammmm", -- 1
"mmmmaaaaammmm", -- 2
"mmmmaaaaammmm", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
-- Level 1
"mmmma...ammmm", -- 0
"mmmma...ammmm", -- 1
"mmmma...ammmm", -- 2
"mmmma...ammmm", -- 3
"aaaaa...aaaaa", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
"aaaaaaaaaaaaa", -- 8
-- Level 2
"mmmma...ammmm", -- 0
"mmmmb...bmmmm", -- 1
"mmmma...ammmm", -- 2
"mmmmb...bmmmm", -- 3
"ababa...ababa", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
"ababababababa", -- 8
-- Level 3
"mmmma...ammmm", -- 0
"mmmmb...bmmmm", -- 1
"mmmma...ammmm", -- 2
"mmmmb...bmmmm", -- 3
"ababa...ababa", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
"ababababababa", -- 8
-- Level 4
"mmmma...ammmm", -- 0
"mmmmb...bmmmm", -- 1
"mmmma...ammmm", -- 2
"mmmmb...bmmmm", -- 3
"ababa...ababa", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
"ababababababa", -- 8
-- Level 5
"mmmmcaaadmmmm", -- 0
"mmmmcaaadmmmm", -- 1
"mmmmcaaadmmmm", -- 2
"mmmmcaaadmmmm", -- 3
"eeeecaaadeeee", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"fffffffffffff", -- 8
},
}, -- Tee4x4
{
OriginData =
{
ExportName = "CorridorCornerChest5",
Name = "Nether 42",
GalleryName = "Nether",
GalleryIndex = "42",
ID = "293",
CreatorName = "STR_Warrior",
},
Size =
{
x = 11,
y = 6,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 5,
MaxZ = 10,
},
Connectors =
{
{
Type = 1,
RelX = 10,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 2,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 10,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b: 54: 5", -- chest
"c:113: 0", -- netherbrickfence
"d:114: 0", -- netherbrickstairs
"e:114: 2", -- netherbrickstairs
"f:114: 1", -- netherbrickstairs
"g:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaa", -- 0
"aaaaaaaaaaa", -- 1
"aaaaaaaaaaa", -- 2
"aaaaaaaaaaa", -- 3
"aaaaaaaaaaa", -- 4
"aaaaammmmmm", -- 5
"aaaaammmmmm", -- 6
"aaaaammmmmm", -- 7
"aaaaammmmmm", -- 8
"aaaaammmmmm", -- 9
"aaaaammmmmm", -- 10
-- Level 1
"aaaaaaaaaaa", -- 0
"ab.........", -- 1
"a..........", -- 2
"a..........", -- 3
"a...aaaaaaa", -- 4
"a...ammmmmm", -- 5
"a...ammmmmm", -- 6
"a...ammmmmm", -- 7
"a...ammmmmm", -- 8
"a...ammmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 2
"acacacacaca", -- 0
"c..........", -- 1
"a..........", -- 2
"c..........", -- 3
"a...acacaca", -- 4
"c...cmmmmmm", -- 5
"a...ammmmmm", -- 6
"c...cmmmmmm", -- 7
"a...ammmmmm", -- 8
"c...cmmmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 3
"acacacacaca", -- 0
"c..........", -- 1
"a..........", -- 2
"c..........", -- 3
"a...acacaca", -- 4
"c...cmmmmmm", -- 5
"a...ammmmmm", -- 6
"c...cmmmmmm", -- 7
"a...ammmmmm", -- 8
"c...cmmmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 4
"acacacacaca", -- 0
"c..........", -- 1
"a..........", -- 2
"c..........", -- 3
"a...acacaca", -- 4
"c...cmmmmmm", -- 5
"a...ammmmmm", -- 6
"c...cmmmmmm", -- 7
"a...ammmmmm", -- 8
"c...cmmmmmm", -- 9
"a...ammmmmm", -- 10
-- Level 5
"deeeeeeeeee", -- 0
"daaaaaaaaaa", -- 1
"daaaaaaaaaa", -- 2
"daaaaaaaaaa", -- 3
"daaafgggggg", -- 4
"daaafmmmmmm", -- 5
"daaafmmmmmm", -- 6
"daaafmmmmmm", -- 7
"daaafmmmmmm", -- 8
"daaafmmmmmm", -- 9
"daaafmmmmmm", -- 10
},
}, -- CorridorCornerChest5
{
OriginData =
{
ExportName = "BridgeDoubleCrumble",
Name = "Nether 46",
GalleryName = "Nether",
GalleryIndex = "46",
ID = "305",
CreatorName = "STR_Warrior",
},
Size =
{
x = 5,
y = 7,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 16,
MaxZ = 15,
},
Connectors =
{
{
Type = 0,
RelX = 2,
RelY = 4,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 2,
RelY = 4,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "1000",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 7", -- netherbrickstairs
"c:114: 6", -- netherbrickstairs
"d:114: 4", -- netherbrickstairs
"e:114: 5", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"maaam", -- 0
"maaam", -- 1
"mmmmm", -- 2
"mmmmm", -- 3
"mmmmm", -- 4
"mmmmm", -- 5
"mmmmm", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmmm", -- 10
"mmmmm", -- 11
"mmmmm", -- 12
"mmmmm", -- 13
"maaam", -- 14
"maaam", -- 15
-- Level 1
"maaam", -- 0
"maaam", -- 1
"mbbbm", -- 2
"mmmmm", -- 3
"mmmmm", -- 4
"mmmmm", -- 5
"mmmmm", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmmm", -- 10
"mmmmm", -- 11
"mmmmm", -- 12
"mcccm", -- 13
"maaam", -- 14
"maaam", -- 15
-- Level 2
"daaae", -- 0
"daaae", -- 1
"daaae", -- 2
"daaae", -- 3
"daaae", -- 4
"mamae", -- 5
"mmmam", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmae", -- 10
"dmaae", -- 11
"daaae", -- 12
"daaae", -- 13
"daaae", -- 14
"daaae", -- 15
-- Level 3
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaama", -- 3
"mamaa", -- 4
"mmmmm", -- 5
"mmmmm", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmma", -- 10
"mmmaa", -- 11
"amaaa", -- 12
"aaaaa", -- 13
"aaaaa", -- 14
"aaaaa", -- 15
-- Level 4
"ammma", -- 0
"ammma", -- 1
"ammma", -- 2
"mmmma", -- 3
"mmmmm", -- 4
"mmmmm", -- 5
"mmmmm", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmmm", -- 10
"mmmma", -- 11
"mmmmm", -- 12
"ammma", -- 13
"ammma", -- 14
"ammma", -- 15
-- Level 5
"mmmmm", -- 0
"mmmmm", -- 1
"mmmmm", -- 2
"mmmmm", -- 3
"mmmmm", -- 4
"mmmmm", -- 5
"mmmmm", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmmm", -- 10
"mmmmm", -- 11
"mmmmm", -- 12
"mmmmm", -- 13
"mmmmm", -- 14
"mmmmm", -- 15
-- Level 6
"mmmmm", -- 0
"mmmmm", -- 1
"mmmmm", -- 2
"mmmmm", -- 3
"mmmmm", -- 4
"mmmmm", -- 5
"mmmmm", -- 6
"mmmmm", -- 7
"mmmmm", -- 8
"mmmmm", -- 9
"mmmmm", -- 10
"mmmmm", -- 11
"mmmmm", -- 12
"mmmmm", -- 13
"mmmmm", -- 14
"mmmmm", -- 15
},
}, -- BridgeDoubleCrumble
{
OriginData =
{
ExportName = "BridgeCircleCrossing",
Name = "Nether 49",
GalleryName = "Nether",
GalleryIndex = "49",
ID = "308",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 8,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 17,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 5,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 14,
RelY = 5,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 7,
RelY = 5,
RelZ = 14,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "-1000",
["AllowedRotations"] = "7",
["DefaultWeight"] = "5",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 7", -- netherbrickstairs
"c:114: 5", -- netherbrickstairs
"d:114: 4", -- netherbrickstairs
"e:114: 6", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmaaammmmmm", -- 0
"mmmmmmaaammmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"aammmmmmmmmmmaa", -- 6
"aammmmmmmmmmmaa", -- 7
"aammmmmmmmmmmaa", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmaaammmmmm", -- 13
"mmmmmmaaammmmmm", -- 14
-- Level 1
"mmmmmmaaammmmmm", -- 0
"mmmmmmaaammmmmm", -- 1
"mmmmmmbbbmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"aacmmmmmmmmmdaa", -- 6
"aacmmmmmmmmmdaa", -- 7
"aacmmmmmmmmmdaa", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmeeemmmmmm", -- 12
"mmmmmmaaammmmmm", -- 13
"mmmmmmaaammmmmm", -- 14
-- Level 2
"mmmmmmaaammmmmm", -- 0
"mmmmmeaaammmmmm", -- 1
"mmmmmdaaammmmmm", -- 2
"mmmmmdbbbmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mdeemmmmmmmeecm", -- 5
"aaacmmmmmmmdaaa", -- 6
"aaacmmmmmmmdaaa", -- 7
"aaacmmmmmmmdaaa", -- 8
"mdbcmmmmmmmbbcm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmdeeecmmmmm", -- 11
"mmmmmdaaacmmmmm", -- 12
"mmmmmbaaabmmmmm", -- 13
"mmmmmmaaammmmmm", -- 14
-- Level 3
"deeeedaaaceeeec", -- 0
"daaaaaaaaaaaaac", -- 1
"daaaaaaaaaaaaac", -- 2
"daaaaaaaaaaaaac", -- 3
"daaacbbaabdaaac", -- 4
"eaaacmmmmmdaaae", -- 5
"aaaacmmmmmdaaaa", -- 6
"aaaacmmmmmdaaaa", -- 7
"aaaacmmmmmdaaaa", -- 8
"baaacmmmmmdaaab", -- 9
"daaaceeeeedaaac", -- 10
"daaaaaaaaaaaaac", -- 11
"daaaaaaaaaaaaac", -- 12
"daaaaaaaaaaaaac", -- 13
"dbbbbdaaacbbbbb", -- 14
-- Level 4
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaa", -- 4
"aaaaammmmmaaaaa", -- 5
"aaaaammmmmaaaaa", -- 6
"aaaaammmmmaaaaa", -- 7
"aaaaammmmmaaaaa", -- 8
"aaaaammmmmaaaaa", -- 9
"aaaaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaa", -- 14
-- Level 5
"aaaaaa...aaaaaa", -- 0
"a.............a", -- 1
"a.............a", -- 2
"a.............a", -- 3
"a...aaaaaaa...a", -- 4
"a...ammmmma...a", -- 5
"....ammmmma....", -- 6
"....ammmmma....", -- 7
"....ammmmma....", -- 8
"a...ammmmma...a", -- 9
"a...aaaaaaa...a", -- 10
"a.............a", -- 11
"a.............a", -- 12
"a.............a", -- 13
"aaaaaa...aaaaaa", -- 14
-- Level 6
"mmmmmm...mmmmmm", -- 0
"m.............m", -- 1
"m.............m", -- 2
"m.............m", -- 3
"m.............m", -- 4
"m....mmmmm....m", -- 5
".....mmmmm.....", -- 6
".....mmmmm.....", -- 7
".....mmmmm.....", -- 8
"m....mmmmm....m", -- 9
"m.............m", -- 10
"m.............m", -- 11
"m.............m", -- 12
"m.............m", -- 13
"mmmmmm...mmmmmm", -- 14
-- Level 7
"mmmmmm...mmmmmm", -- 0
"m.............m", -- 1
"m.............m", -- 2
"m.............m", -- 3
"m.............m", -- 4
"m....mmmmm....m", -- 5
".....mmmmm.....", -- 6
".....mmmmm.....", -- 7
".....mmmmm.....", -- 8
"m....mmmmm....m", -- 9
"m.............m", -- 10
"m.............m", -- 11
"m.............m", -- 12
"m.............m", -- 13
"mmmmmm...mmmmmm", -- 14
},
}, -- BridgeCircleCrossing
{
OriginData =
{
ExportName = "BridgeLevelCrossing",
Name = "Nether 61",
GalleryName = "Nether",
GalleryIndex = "61",
ID = "321",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 14,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 23,
MaxZ = 15,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 15,
RelY = 5,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 13,
RelY = 11,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 13,
RelY = 11,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c:114: 4", -- netherbrickstairs
"d: 44:14", -- stone_slab
"e:114: 6", -- netherbrickstairs
"f:114: 7", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmmaa", -- 1
"aammmmmmmmmmmmaa", -- 2
"aammmmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 1
"mmmmmmmmmmmmmmmm", -- 0
"aabmmmmmmmmmmcaa", -- 1
"aabmmmmmmmmmmcaa", -- 2
"aabmmmmmmmmmmcaa", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 2
"mmmmmmmmmmmmmmmm", -- 0
"aaabdmmmmmmdcaaa", -- 1
"aaabdmmmmmmdcaaa", -- 2
"aaabdmmmmmmdcaaa", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 3
"eeeeeeeeeeeeeeee", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"ffffffffffffffff", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 4
"aaaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"faaabmmmmmmmmmmm", -- 5
"caaabmmmmmmmmmmm", -- 6
"caaabmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 5
"aaaaaaaaaaaaaaaa", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"a...aaaaaaaaaaaa", -- 4
"a...ammmmmmmmmmm", -- 5
"aaaaammmmmmmmmmm", -- 6
"aaaaammmmmmmmmmm", -- 7
"caaabmmmmmmmmmmm", -- 8
"caaabmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 6
"mmmmmmmmmmmmaaam", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"m...mmmmmmmmaaam", -- 4
"a...ammmmmmmmmmm", -- 5
"a...ammmmmmmmmmm", -- 6
"a...ammmmmmmmmmm", -- 7
"aaaaammmmmmmmmmm", -- 8
"aaaaammmmmmmmmmm", -- 9
"caaabmmmmmmmmmmm", -- 10
"caaabmmmmmmmmmmm", -- 11
"maaabmmmmmmmmmmm", -- 12
"maaabmmmmmmmmmmm", -- 13
"maaafmmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 7
"mmmmmmmmmmmmaaam", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"m...mmmmmmmmaaam", -- 4
"m...mmmmmmmmmmmm", -- 5
"m...mmmmmmmmmmmm", -- 6
"a...ammmmmmmmmmm", -- 7
"a...ammmmmmmmmmm", -- 8
"a...ammmmmmmmmmm", -- 9
"aaaaammmmmmmmmmm", -- 10
"aaaaaeemmmmmmmmm", -- 11
"caaaaaammmmmmmmm", -- 12
"caaaaaammmmmmmmm", -- 13
"caaaaaammmmmaaam", -- 14
"fffffffmmmmmaaam", -- 15
-- Level 8
"mmmmmmmmmmmmaaam", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"m...mmmmmmmmaaam", -- 4
"m...mmmmmmmmmmmm", -- 5
"m...mmmmmmmmmmmm", -- 6
"m...mmmmmmmmmmmm", -- 7
"m...mmmmmmmmmmmm", -- 8
"a...ammmmmmmmmmm", -- 9
"a...ammmmmmmmmmm", -- 10
"a...aaaeemmmmmmm", -- 11
"a.....aaammmmmmm", -- 12
"a.....aaammmmmmm", -- 13
"a.....aaammmaaam", -- 14
"aaaaaaaffmmmaaam", -- 15
-- Level 9
"mmmmmmmmmmmcaaab", -- 0
"mmmmmmmmmmmcaaab", -- 1
"mmmmmmmmmmmcaaab", -- 2
"mmmmmmmmmmmcaaab", -- 3
"mmmmmmmmmmmcaaab", -- 4
"mmmmmmmmmmmcaaab", -- 5
"m...mmmmmmmcaaab", -- 6
"m...mmmmmmmcaaab", -- 7
"m...mmmmmmmcaaab", -- 8
"m...mmmmmmmcaaab", -- 9
"m...mmmmmmmcaaab", -- 10
"m...maaaaeecaaab", -- 11
"m.......aaaaaaab", -- 12
"m.......aaaaaaab", -- 13
"m.......aaaaaaab", -- 14
"mmmmmaaaafffaaab", -- 15
-- Level 10
"mmmmmmmmmmmaaaaa", -- 0
"mmmmmmmmmmmaaaaa", -- 1
"mmmmmmmmmmmaaaaa", -- 2
"mmmmmmmmmmmaaaaa", -- 3
"mmmmmmmmmmmaaaaa", -- 4
"mmmmmmmmmmmaaaaa", -- 5
"mmmmmmmmmmmaaaaa", -- 6
"mmmmmmmmmmmaaaaa", -- 7
"m...mmmmmmmaaaaa", -- 8
"m...mmmmmmmaaaaa", -- 9
"m...mmmmmmmaaaaa", -- 10
"m...mmmaaaaaaaaa", -- 11
"m.........aaaaaa", -- 12
"m.........aaaaaa", -- 13
"m.........aaaaaa", -- 14
"mmmmmmmaaaaaaaaa", -- 15
-- Level 11
"mmmmmmmmmmma...a", -- 0
"mmmmmmmmmmma...a", -- 1
"mmmmmmmmmmma...a", -- 2
"mmmmmmmmmmma...a", -- 3
"mmmmmmmmmmma...a", -- 4
"mmmmmmmmmmma...a", -- 5
"mmmmmmmmmmma...a", -- 6
"mmmmmmmmmmma...a", -- 7
"mmmmmmmmmmma...a", -- 8
"mmmmmmmmmmma...a", -- 9
"mmmmmmmmmmma...a", -- 10
"mmmmmmmmmaaa...a", -- 11
"mmmm...........a", -- 12
"mmmm...........a", -- 13
"mmmm...........a", -- 14
"mmmmmmmmmaaa...a", -- 15
-- Level 12
"mmmmmmmmmmmm...m", -- 0
"mmmmmmmmmmmm...m", -- 1
"mmmmmmmmmmmm...m", -- 2
"mmmmmmmmmmmm...m", -- 3
"mmmmmmmmmmmm...m", -- 4
"mmmmmmmmmmmm...m", -- 5
"mmmmmmmmmmmm...m", -- 6
"mmmmmmmmmmmm...m", -- 7
"mmmmmmmmmmmm...m", -- 8
"mmmmmmmmmmmm...m", -- 9
"mmmmmmmmmmmm...m", -- 10
"mmmmmmmmmmmm...m", -- 11
"mmmmmm.........m", -- 12
"mmmmmm.........m", -- 13
"mmmmmm.........m", -- 14
"mmmmmmmmmmmm...m", -- 15
-- Level 13
"mmmmmmmmmmmm...m", -- 0
"mmmmmmmmmmmm...m", -- 1
"mmmmmmmmmmmm...m", -- 2
"mmmmmmmmmmmm...m", -- 3
"mmmmmmmmmmmm...m", -- 4
"mmmmmmmmmmmm...m", -- 5
"mmmmmmmmmmmm...m", -- 6
"mmmmmmmmmmmm...m", -- 7
"mmmmmmmmmmmm...m", -- 8
"mmmmmmmmmmmm...m", -- 9
"mmmmmmmmmmmm...m", -- 10
"mmmmmmmmmmmm...m", -- 11
"mmmmmmmm.......m", -- 12
"mmmmmmmm.......m", -- 13
"mmmmmmmm.......m", -- 14
"mmmmmmmmmmmm...m", -- 15
},
}, -- BridgeLevelCrossing
{
OriginData =
{
ExportName = "CorridorCrossing",
Name = "Nether 63",
GalleryName = "Nether",
GalleryIndex = "63",
ID = "328",
CreatorName = "xoft",
},
Size =
{
x = 9,
y = 6,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 8,
MaxY = 5,
MaxZ = 8,
},
Connectors =
{
{
Type = 1,
RelX = 8,
RelY = 1,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 4,
RelY = 1,
RelZ = 8,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 8,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "-50",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 0", -- netherbrickstairs
"d:114: 1", -- netherbrickstairs
"e:114: 2", -- netherbrickstairs
"f:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmaaaaamm", -- 0
"mmaaaaamm", -- 1
"aaaaaaaaa", -- 2
"aaaaaaaaa", -- 3
"aaaaaaaaa", -- 4
"aaaaaaaaa", -- 5
"aaaaaaaaa", -- 6
"mmaaaaamm", -- 7
"mmaaaaamm", -- 8
-- Level 1
"mma...amm", -- 0
"mma...amm", -- 1
"aaa...aaa", -- 2
".........", -- 3
".........", -- 4
".........", -- 5
"aaa...aaa", -- 6
"mma...amm", -- 7
"mma...amm", -- 8
-- Level 2
"mma...amm", -- 0
"mmb...bmm", -- 1
"aba...aba", -- 2
".........", -- 3
".........", -- 4
".........", -- 5
"aba...aba", -- 6
"mmb...bmm", -- 7
"mma...amm", -- 8
-- Level 3
"mma...amm", -- 0
"mmb...bmm", -- 1
"aba...aba", -- 2
".........", -- 3
".........", -- 4
".........", -- 5
"aba...aba", -- 6
"mmb...bmm", -- 7
"mma...amm", -- 8
-- Level 4
"mma...amm", -- 0
"mmb...bmm", -- 1
"aba...aba", -- 2
".........", -- 3
".........", -- 4
".........", -- 5
"aba...aba", -- 6
"mmb...bmm", -- 7
"mma...amm", -- 8
-- Level 5
"mmcaaadmm", -- 0
"mmcaaadmm", -- 1
"eeeaaaeee", -- 2
"aaaaaaaaa", -- 3
"aaaaaaaaa", -- 4
"aaaaaaaaa", -- 5
"ffcaaadff", -- 6
"mmcaaadmm", -- 7
"mmcaaadmm", -- 8
},
}, -- CorridorCrossing
{
OriginData =
{
ExportName = "TinyCorridorCrossing",
Name = "Nether 64",
GalleryName = "Nether",
GalleryIndex = "64",
ID = "329",
CreatorName = "xoft",
},
Size =
{
x = 5,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 2,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "-50",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "1:200|2:400|3:0|4:500",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 2", -- netherbrickstairs
"c:114: 0", -- netherbrickstairs
"d:114: 1", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"a...a", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"a...a", -- 4
-- Level 2
"a...a", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"a...a", -- 4
-- Level 3
"a...a", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"a...a", -- 4
-- Level 4
"a...a", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"a...a", -- 4
-- Level 5
"baaab", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"caaad", -- 4
},
}, -- TinyCorridorCrossing
{
OriginData =
{
ExportName = "Corridor5",
Name = "Nether 65",
GalleryName = "Nether",
GalleryIndex = "65",
ID = "330",
CreatorName = "xoft",
},
Size =
{
x = 5,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "500",
["AllowedRotations"] = "7",
["DefaultWeight"] = "500",
["DepthWeight"] = "6:0|12:0|18:0",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 2", -- netherbrickstairs
"d:114: 3", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"aaaaa", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"aaaaa", -- 4
-- Level 2
"ababa", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"ababa", -- 4
-- Level 3
"ababa", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"ababa", -- 4
-- Level 4
"ababa", -- 0
".....", -- 1
".....", -- 2
".....", -- 3
"ababa", -- 4
-- Level 5
"ccccc", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"ddddd", -- 4
},
}, -- Corridor5
{
OriginData =
{
ExportName = "TinyCorridorCorner",
Name = "Nether 66",
GalleryName = "Nether",
GalleryIndex = "66",
ID = "331",
CreatorName = "xoft",
},
Size =
{
x = 5,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "-50",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:113: 0", -- netherbrickfence
"c:114: 2", -- netherbrickstairs
"d:114: 1", -- netherbrickstairs
"e:114: 0", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"aaaaa", -- 0
"....a", -- 1
"....a", -- 2
"....a", -- 3
"a...a", -- 4
-- Level 2
"ababa", -- 0
"....b", -- 1
"....a", -- 2
"....b", -- 3
"a...a", -- 4
-- Level 3
"ababa", -- 0
"....b", -- 1
"....a", -- 2
"....b", -- 3
"a...a", -- 4
-- Level 4
"ababa", -- 0
"....b", -- 1
"....a", -- 2
"....b", -- 3
"a...a", -- 4
-- Level 5
"ccccc", -- 0
"aaaad", -- 1
"aaaad", -- 2
"aaaad", -- 3
"eaaad", -- 4
},
}, -- TinyCorridorCorner
{
OriginData =
{
ExportName = "TinyCorridorCornerChest",
Name = "Nether 67",
GalleryName = "Nether",
GalleryIndex = "67",
ID = "332",
CreatorName = "Aloe_vera",
},
Size =
{
x = 5,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
{
Type = 1,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b: 54: 4", -- chest
"c:113: 0", -- netherbrickfence
"d:114: 2", -- netherbrickstairs
"e:114: 1", -- netherbrickstairs
"f:114: 0", -- netherbrickstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"aaaaa", -- 0
"....a", -- 1
"...ba", -- 2
"....a", -- 3
"a...a", -- 4
-- Level 2
"acaca", -- 0
"....c", -- 1
"....a", -- 2
"....c", -- 3
"a...a", -- 4
-- Level 3
"acaca", -- 0
"....c", -- 1
"....a", -- 2
"....c", -- 3
"a...a", -- 4
-- Level 4
"acaca", -- 0
"....c", -- 1
"....a", -- 2
"....c", -- 3
"a...a", -- 4
-- Level 5
"ddddd", -- 0
"aaaae", -- 1
"aaaae", -- 2
"aaaae", -- 3
"faaae", -- 4
},
}, -- TinyCorridorCornerChest
{
OriginData =
{
ExportName = "BridgeDoubleStairs",
Name = "Nether 115",
GalleryName = "Nether",
GalleryIndex = "115",
ID = "810",
CreatorName = "STR_Warrior",
},
Size =
{
x = 15,
y = 16,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 15,
MaxZ = 15,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 13,
RelZ = 13,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 13,
RelZ = 13,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 0,
RelY = 13,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 13,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 12,
RelY = 7,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 12,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 7", -- netherbrickstairs
"c:114: 6", -- netherbrickstairs
"d:114: 4", -- netherbrickstairs
"e:114: 5", -- netherbrickstairs
"f:114: 2", -- netherbrickstairs
"g:114: 3", -- netherbrickstairs
"h:114: 1", -- netherbrickstairs
"i: 44:14", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmaaam", -- 0
"aammmmmmmmmaaaa", -- 1
"aammmmmmmmmmmma", -- 2
"aammmmmmmmmmmma", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"aammmmmmmmmmmma", -- 12
"aammmmmmmmmmmma", -- 13
"aammmmmmmmmaaaa", -- 14
"mmmmmmmmmmmaaam", -- 15
-- Level 1
"mmmmmmmmmmmaaam", -- 0
"aammmmmmmmmaaaa", -- 1
"aammmmmmmmmmmma", -- 2
"aammmmmmmmmmmma", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"aammmmmmmmmmmma", -- 12
"aammmmmmmmmmmma", -- 13
"aammmmmmmmmaaaa", -- 14
"mmmmmmmmmmmaaam", -- 15
-- Level 2
"mmmmmmmmmmmaaam", -- 0
"aammmmmmmmmaaaa", -- 1
"aammmmmmmmmmmma", -- 2
"aammmmmmmmmmmma", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"aammmmmmmmmmmma", -- 12
"aammmmmmmmmmmma", -- 13
"aammmmmmmmmaaaa", -- 14
"mmmmmmmmmmmaaam", -- 15
-- Level 3
"mmmmmmmmmmmaaam", -- 0
"aammmmmmmmmaaaa", -- 1
"aammmmmmmmmbbba", -- 2
"aammmmmmmmmmmma", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"aammmmmmmmmmmma", -- 12
"aammmmmmmmmccca", -- 13
"aammmmmmmmmaaaa", -- 14
"mmmmmmmmmmmaaam", -- 15
-- Level 4
"mmmmmmmmmmmaaam", -- 0
"aammmmmmmmmaaaa", -- 1
"aammmmmmmmmaaaa", -- 2
"aammmmmmmmmbbba", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"aammmmmmmmmccca", -- 12
"aammmmmmmmmaaaa", -- 13
"aammmmmmmmmaaaa", -- 14
"mmmmmmmmmmmaaam", -- 15
-- Level 5
"mmmmmmmmmmdaaae", -- 0
"aammmmmmmmdaaaa", -- 1
"aammmmmmmmdaaaa", -- 2
"aammmmmmmmdaaaa", -- 3
"mmmmmmmmmmdaaae", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmdaaae", -- 11
"aammmmmmmmdaaaa", -- 12
"aammmmmmmmdaaaa", -- 13
"aammmmmmmmdaaaa", -- 14
"mmmmmmmmmmdaaae", -- 15
-- Level 6
"mmmmmmmmmmaaaaa", -- 0
"aammmmmmmmaaaaa", -- 1
"aammmmmmmmaaaaa", -- 2
"aammmmmmmmaaaaa", -- 3
"mmmmmmmmmmaaaaa", -- 4
"mmmmmmmmmmdaaae", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmdaaae", -- 10
"mmmmmmmmmmaaaaa", -- 11
"aammmmmmmmaaaaa", -- 12
"aammmmmmmmaaaaa", -- 13
"aammmmmmmmaaaaa", -- 14
"mmmmmmmmmmaaaaa", -- 15
-- Level 7
"mmmmmmmmmma...a", -- 0
"aammmmmmmma...a", -- 1
"aammmmmmmma...a", -- 2
"aammmmmmmma...a", -- 3
"mmmmmmmmmmafffa", -- 4
"mmmmmmmmmaaaaaa", -- 5
"mmmmmmmmmaaaaae", -- 6
"mmmmmmmmmaaaaae", -- 7
"mmmmmmmmmaaaaae", -- 8
"mmmmmmmmmaaaaae", -- 9
"mmmmmmmmmaaaaaa", -- 10
"mmmmmmmmmmaggga", -- 11
"aammmmmmmma...a", -- 12
"aammmmmmmma...a", -- 13
"aammmmmmmma...a", -- 14
"mmmmmmmmmma...a", -- 15
-- Level 8
"mmmmmmmmmmm...m", -- 0
"aammmmmmmma...a", -- 1
"aammmmmmmma...a", -- 2
"aammmmmmmma...a", -- 3
"mmmmmmmmmma...a", -- 4
"mmmmmmmmmaafffa", -- 5
"mmmmmmmmaaaaaaa", -- 6
"mmmmmmmmaaaaaaa", -- 7
"mmmmmmmmaaaaaaa", -- 8
"mmmmmmmmaaaaaaa", -- 9
"mmmmmmmmmaaggga", -- 10
"mmmmmmmmmma...a", -- 11
"aammmmmmmma...a", -- 12
"aammmmmmmma...a", -- 13
"aammmmmmmma...a", -- 14
"mmmmmmmmmmm...m", -- 15
-- Level 9
"mmmmmmmmmmm...m", -- 0
"aaemmmmmmma...a", -- 1
"aaemmmmmmma...a", -- 2
"aaemmmmmmma...a", -- 3
"mmmmmmmmmma...a", -- 4
"mmmmmmmmmaa...a", -- 5
"mmmmaaaaah....a", -- 6
"mmmmaaaaah....a", -- 7
"mmmmaaaaah....a", -- 8
"mmmmaaaaah....a", -- 9
"mmmmmmmmmaa...a", -- 10
"mmmmmmmmmma...a", -- 11
"aaemmmmmmma...a", -- 12
"aaemmmmmmma...a", -- 13
"aaemmmmmmma...a", -- 14
"mmmmmmmmmmm...m", -- 15
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"aaaeimmmmmammma", -- 1
"aaaeimmmmmammma", -- 2
"aaaeimmmmma...a", -- 3
"mmmmmmmmmmm...m", -- 4
"mmmmaaaaaam...m", -- 5
"mmmmaaaah.....m", -- 6
"mmmmaaaah.....m", -- 7
"mmmmaaaah.....m", -- 8
"mmmmaaaah.....m", -- 9
"mmmmaaaaaam...m", -- 10
"mmmmmmmmmmm...m", -- 11
"aaaeimmmmma...a", -- 12
"aaaeimmmmmammma", -- 13
"aaaeimmmmmammma", -- 14
"mmmmmmmmmmmmmmm", -- 15
-- Level 11
"ccccccccccccccc", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"bbbbaaaaabbbbbb", -- 4
"mmmmagggamm...m", -- 5
"mmmma.........m", -- 6
"mmmma.........m", -- 7
"mmmma.........m", -- 8
"mmmma.........m", -- 9
"mmmmafffamm...m", -- 10
"ccccaaaahcccccc", -- 11
"aaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaa", -- 14
"bbbbbbbbbbbbbbb", -- 15
-- Level 12
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaa", -- 3
"aaaaagggaaaaaaa", -- 4
"mmmma...ammmmmm", -- 5
"mmmma.........m", -- 6
"mmmmm.........m", -- 7
"mmmmm.........m", -- 8
"mmmma.........m", -- 9
"mmmma...ammmmmm", -- 10
"aaaaafffaaaaaaa", -- 11
"aaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaa", -- 14
"aaaaaaaaaaaaaaa", -- 15
-- Level 13
"aaaaaaaaaaaaaaa", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"aaaaa...aaaaaaa", -- 4
"mmmma...ammmmmm", -- 5
"mmmmm.....mmmmm", -- 6
"mmmmm.....mmmmm", -- 7
"mmmmm.....mmmmm", -- 8
"mmmmm.....mmmmm", -- 9
"mmmma...ammmmmm", -- 10
"aaaaa...aaaaaaa", -- 11
"...............", -- 12
"...............", -- 13
"...............", -- 14
"aaaaaaaaaaaaaaa", -- 15
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"mmmmm...mmmmmmm", -- 4
"mmmmm...mmmmmmm", -- 5
"mmmmm...mmmmmmm", -- 6
"mmmmm...mmmmmmm", -- 7
"mmmmm...mmmmmmm", -- 8
"mmmmm...mmmmmmm", -- 9
"mmmmm...mmmmmmm", -- 10
"mmmmm...mmmmmmm", -- 11
"...............", -- 12
"...............", -- 13
"...............", -- 14
"mmmmmmmmmmmmmmm", -- 15
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"mmmmm...mmmmmmm", -- 4
"mmmmm...mmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmm...mmmmmmm", -- 10
"mmmmm...mmmmmmm", -- 11
"...............", -- 12
"...............", -- 13
"...............", -- 14
"mmmmmmmmmmmmmmm", -- 15
},
}, -- BridgeDoubleStairs
{
OriginData =
{
ExportName = "SlabbedBridgeStairs",
Name = "Nether 116",
GalleryName = "Nether",
GalleryIndex = "116",
ID = "811",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 14,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 13,
MaxZ = 15,
},
Connectors =
{
{
Type = 0,
RelX = 13,
RelY = 11,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 13,
RelY = 11,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 15,
RelY = 5,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:112: 0", -- netherbrickblock
"b:114: 5", -- netherbrickstairs
"c:114: 4", -- netherbrickstairs
"d: 44:14", -- stone_slab
"e:114: 6", -- netherbrickstairs
"f:114: 7", -- netherbrickstairs
"g: 44: 6", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmmm", -- 0
"aammmmmmmmmmmmaa", -- 1
"aammmmmmmmmmmmaa", -- 2
"aammmmmmmmmmmmaa", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 1
"mmmmmmmmmmmmmmmm", -- 0
"aabmmmmmmmmmmcaa", -- 1
"aabmmmmmmmmmmcaa", -- 2
"aabmmmmmmmmmmcaa", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 2
"mmmmmmmmmmmmmmmm", -- 0
"aaabdmmmmmmdcaaa", -- 1
"aaabdmmmmmmdcaaa", -- 2
"aaabdmmmmmmdcaaa", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 3
"eeeeeeeeeeeeeeee", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"ffffffffffffffff", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 4
"aaaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"faaabmmmmmmmmmmm", -- 5
"caaabmmmmmmmmmmm", -- 6
"caaabmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 5
"aaaaaaaaaaaaaaaa", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"a...aaaaaaaaaaaa", -- 4
"agggammmmmmmmmmm", -- 5
"aaaaammmmmmmmmmm", -- 6
"aaaaammmmmmmmmmm", -- 7
"caaabmmmmmmmmmmm", -- 8
"caaabmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"maaammmmmmmmmmmm", -- 12
"maaammmmmmmmmmmm", -- 13
"maaammmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 6
"mmmmmmmmmmmmaaam", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"m...mmmmmmmmaaam", -- 4
"a...ammmmmmmmmmm", -- 5
"a...ammmmmmmmmmm", -- 6
"agggammmmmmmmmmm", -- 7
"aaaaammmmmmmmmmm", -- 8
"aaaaammmmmmmmmmm", -- 9
"caaabmmmmmmmmmmm", -- 10
"caaabmmmmmmmmmmm", -- 11
"maaabmmmmmmmmmmm", -- 12
"maaabmmmmmmmmmmm", -- 13
"maaafmmmmmmmaaam", -- 14
"mmmmmmmmmmmmaaam", -- 15
-- Level 7
"mmmmmmmmmmmmaaam", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"m...mmmmmmmmaaam", -- 4
"m...mmmmmmmmmmmm", -- 5
"m...mmmmmmmmmmmm", -- 6
"a...ammmmmmmmmmm", -- 7
"a...ammmmmmmmmmm", -- 8
"agggammmmmmmmmmm", -- 9
"aaaaammmmmmmmmmm", -- 10
"aaaaaeemmmmmmmmm", -- 11
"caaaaaammmmmmmmm", -- 12
"caaaaaammmmmmmmm", -- 13
"caaaaaammmmmaaam", -- 14
"fffffffmmmmmaaam", -- 15
-- Level 8
"mmmmmmmmmmmmaaam", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"m...mmmmmmmmaaam", -- 4
"m...mmmmmmmmmmmm", -- 5
"m...mmmmmmmmmmmm", -- 6
"m...mmmmmmmmmmmm", -- 7
"m...mmmmmmmmmmmm", -- 8
"a...ammmmmmmmmmm", -- 9
"a...ammmmmmmmmmm", -- 10
"a...aaaeemmmmmmm", -- 11
"a....gaaammmmmmm", -- 12
"a....gaaammmmmmm", -- 13
"a....gaaammmaaam", -- 14
"aaaaaaaffmmmaaam", -- 15
-- Level 9
"mmmmmmmmmmmcaaab", -- 0
"mmmmmmmmmmmcaaab", -- 1
"mmmmmmmmmmmcaaab", -- 2
"mmmmmmmmmmmcaaab", -- 3
"mmmmmmmmmmmcaaab", -- 4
"mmmmmmmmmmmcaaab", -- 5
"m...mmmmmmmcaaab", -- 6
"m...mmmmmmmcaaab", -- 7
"m...mmmmmmmcaaab", -- 8
"m...mmmmmmmcaaab", -- 9
"m...mmmmmmmcaaab", -- 10
"m...maaaaeecaaab", -- 11
"m......gaaaaaaab", -- 12
"m......gaaaaaaab", -- 13
"m......gaaaaaaab", -- 14
"mmmmmaaaafffaaab", -- 15
-- Level 10
"mmmmmmmmmmmaaaaa", -- 0
"mmmmmmmmmmmaaaaa", -- 1
"mmmmmmmmmmmaaaaa", -- 2
"mmmmmmmmmmmaaaaa", -- 3
"mmmmmmmmmmmaaaaa", -- 4
"mmmmmmmmmmmaaaaa", -- 5
"mmmmmmmmmmmaaaaa", -- 6
"mmmmmmmmmmmaaaaa", -- 7
"m...mmmmmmmaaaaa", -- 8
"m...mmmmmmmaaaaa", -- 9
"m...mmmmmmmaaaaa", -- 10
"m...mmmaaaaaaaaa", -- 11
"m........gaaaaaa", -- 12
"m........gaaaaaa", -- 13
"m........gaaaaaa", -- 14
"mmmmmmmaaaaaaaaa", -- 15
-- Level 11
"mmmmmmmmmmma...a", -- 0
"mmmmmmmmmmma...a", -- 1
"mmmmmmmmmmma...a", -- 2
"mmmmmmmmmmma...a", -- 3
"mmmmmmmmmmma...a", -- 4
"mmmmmmmmmmma...a", -- 5
"mmmmmmmmmmma...a", -- 6
"mmmmmmmmmmma...a", -- 7
"mmmmmmmmmmma...a", -- 8
"mmmmmmmmmmma...a", -- 9
"mmmmmmmmmmma...a", -- 10
"mmmmmmmmmaaa...a", -- 11
"mmmm...........a", -- 12
"mmmm...........a", -- 13
"mmmm...........a", -- 14
"mmmmmmmmmaaa...a", -- 15
-- Level 12
"mmmmmmmmmmmm...m", -- 0
"mmmmmmmmmmmm...m", -- 1
"mmmmmmmmmmmm...m", -- 2
"mmmmmmmmmmmm...m", -- 3
"mmmmmmmmmmmm...m", -- 4
"mmmmmmmmmmmm...m", -- 5
"mmmmmmmmmmmm...m", -- 6
"mmmmmmmmmmmm...m", -- 7
"mmmmmmmmmmmm...m", -- 8
"mmmmmmmmmmmm...m", -- 9
"mmmmmmmmmmmm...m", -- 10
"mmmmmmmmmmmm...m", -- 11
"mmmmmm.........m", -- 12
"mmmmmm.........m", -- 13
"mmmmmm.........m", -- 14
"mmmmmmmmmmmm...m", -- 15
-- Level 13
"mmmmmmmmmmmm...m", -- 0
"mmmmmmmmmmmm...m", -- 1
"mmmmmmmmmmmm...m", -- 2
"mmmmmmmmmmmm...m", -- 3
"mmmmmmmmmmmm...m", -- 4
"mmmmmmmmmmmm...m", -- 5
"mmmmmmmmmmmm...m", -- 6
"mmmmmmmmmmmm...m", -- 7
"mmmmmmmmmmmm...m", -- 8
"mmmmmmmmmmmm...m", -- 9
"mmmmmmmmmmmm...m", -- 10
"mmmmmmmmmmmm...m", -- 11
"mmmmmmmm.......m", -- 12
"mmmmmmmm.......m", -- 13
"mmmmmmmm.......m", -- 14
"mmmmmmmmmmmm...m", -- 15
},
}, -- SlabbedBridgeStairs
}, -- Pieces
}
================================================
FILE: Server/Prefabs/PieceStructures/RainbowRoad.cubeset
================================================
-- RainbowRoad.cubeset
-- Defines the prefabs in the group RainbowRoad
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-23 15:08:00",
["GridSizeX"] = "512",
["GridSizeZ"] = "512",
["IntendedUse"] = "PieceStructures",
["MaxDepth"] = "30",
["MaxOffsetX"] = "256",
["MaxOffsetZ"] = "256",
["MaxStructureSizeX"] = "256",
["MaxStructureSizeZ"] = "256",
},
Pieces =
{
{
OriginData =
{
ExportName = "StraightSingle",
Name = "Cube 83",
GalleryName = "Cube",
GalleryIndex = "83",
ID = "461",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 1,
z = 6,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 15,
MaxY = 2,
MaxZ = 5,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "500",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "Range|120|140",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 1", -- wool
"c: 35: 4", -- wool
"d: 35: 5", -- wool
"e: 35: 3", -- wool
"f: 35:11", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaaaaa", -- 0
"bbbbbbbbbbbbbbbb", -- 1
"cccccccccccccccc", -- 2
"dddddddddddddddd", -- 3
"eeeeeeeeeeeeeeee", -- 4
"ffffffffffffffff", -- 5
},
}, -- StraightSingle
{
OriginData =
{
ExportName = "CurveSingle",
Name = "Cube 84",
GalleryName = "Cube",
GalleryIndex = "84",
ID = "462",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 1,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 10,
MaxY = 2,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 5,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 1", -- wool
"c: 35: 4", -- wool
"d: 35: 5", -- wool
"e: 35: 3", -- wool
"f: 35:11", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaa.....", -- 0
"bbbbbbaa...", -- 1
"cccccbbaa..", -- 2
"ddddcccbaa.", -- 3
"eeedddccba.", -- 4
"ffeeeddcbba", -- 5
".fffeedccba", -- 6
"...ffeddcba", -- 7
"....feedcba", -- 8
"....ffedcba", -- 9
".....fedcba", -- 10
},
}, -- CurveSingle
{
OriginData =
{
ExportName = "SlopeUpSingle",
Name = "Cube 85",
GalleryName = "Cube",
GalleryIndex = "85",
ID = "463",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 8,
z = 6,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 15,
MaxY = 9,
MaxZ = 5,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 15,
RelY = 8,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "-1000",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 1", -- wool
"c: 35: 4", -- wool
"d: 35: 5", -- wool
"e: 35: 3", -- wool
"f: 35:11", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aa..............", -- 0
"bb..............", -- 1
"cc..............", -- 2
"dd..............", -- 3
"ee..............", -- 4
"ff..............", -- 5
-- Level 1
"..aa............", -- 0
"..bb............", -- 1
"..cc............", -- 2
"..dd............", -- 3
"..ee............", -- 4
"..ff............", -- 5
-- Level 2
"....aa..........", -- 0
"....bb..........", -- 1
"....cc..........", -- 2
"....dd..........", -- 3
"....ee..........", -- 4
"....ff..........", -- 5
-- Level 3
"......aa........", -- 0
"......bb........", -- 1
"......cc........", -- 2
"......dd........", -- 3
"......ee........", -- 4
"......ff........", -- 5
-- Level 4
"........aa......", -- 0
"........bb......", -- 1
"........cc......", -- 2
"........dd......", -- 3
"........ee......", -- 4
"........ff......", -- 5
-- Level 5
"..........aa....", -- 0
"..........bb....", -- 1
"..........cc....", -- 2
"..........dd....", -- 3
"..........ee....", -- 4
"..........ff....", -- 5
-- Level 6
"............aa..", -- 0
"............bb..", -- 1
"............cc..", -- 2
"............dd..", -- 3
"............ee..", -- 4
"............ff..", -- 5
-- Level 7
"..............aa", -- 0
"..............bb", -- 1
"..............cc", -- 2
"..............dd", -- 3
"..............ee", -- 4
"..............ff", -- 5
},
}, -- SlopeUpSingle
{
OriginData =
{
ExportName = "CurveUpSingle",
Name = "Cube 87",
GalleryName = "Cube",
GalleryIndex = "87",
ID = "465",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 8,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 10,
MaxY = 9,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 5,
RelY = 8,
RelZ = 10,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 1", -- wool
"c: 35: 4", -- wool
"d: 35: 5", -- wool
"e: 35: 3", -- wool
"f: 35:11", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaa........", -- 0
"bb.........", -- 1
"cc.........", -- 2
"dd.........", -- 3
"ee.........", -- 4
"f..........", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 1
"...aaa.....", -- 0
"..bbb......", -- 1
".cc........", -- 2
".dd........", -- 3
".ee........", -- 4
".f.........", -- 5
".ff........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 2
"...........", -- 0
".....baa...", -- 1
"...ccb.....", -- 2
"...dc......", -- 3
"...d.......", -- 4
"..ee.......", -- 5
"..ff.......", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 3
"...........", -- 0
"...........", -- 1
"......baa..", -- 2
".....ccb...", -- 3
"....dd.....", -- 4
"....e......", -- 5
"...fe......", -- 6
"...ff......", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 4
"...........", -- 0
"...........", -- 1
"...........", -- 2
"........aa.", -- 3
"......ccb..", -- 4
".....dd....", -- 5
".....e.....", -- 6
"....fe.....", -- 7
"....f......", -- 8
"...........", -- 9
"...........", -- 10
-- Level 5
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
".........a.", -- 4
".......cbba", -- 5
"......dc...", -- 6
"......d....", -- 7
".....ee....", -- 8
"....ff.....", -- 9
"...........", -- 10
-- Level 6
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"........cba", -- 6
".......dcba", -- 7
".......dcb.", -- 8
".....fe....", -- 9
".....f.....", -- 10
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
"...........", -- 7
"..........a", -- 8
".......dcba", -- 9
".....fedcba", -- 10
},
}, -- CurveUpSingle
{
OriginData =
{
ExportName = "StraightDouble",
Name = "Cube 88",
GalleryName = "Cube",
GalleryIndex = "88",
ID = "466",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 1,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 15,
MaxY = 2,
MaxZ = 11,
},
Connectors =
{
{
Type = -2,
RelX = 0,
RelY = 1,
RelZ = 11,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 0,
RelY = 1,
RelZ = 0,
Direction = 4, -- X-
},
{
Type = -2,
RelX = 15,
RelY = 1,
RelZ = 0,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 15,
RelY = 1,
RelZ = 11,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:11", -- wool
"b: 35: 3", -- wool
"c: 35: 5", -- wool
"d: 35: 4", -- wool
"e: 35: 1", -- wool
"f: 35:14", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaaaaa", -- 0
"bbbbbbbbbbbbbbbb", -- 1
"cccccccccccccccc", -- 2
"dddddddddddddddd", -- 3
"eeeeeeeeeeeeeeee", -- 4
"ffffffffffffffff", -- 5
"ffffffffffffffff", -- 6
"eeeeeeeeeeeeeeee", -- 7
"dddddddddddddddd", -- 8
"cccccccccccccccc", -- 9
"bbbbbbbbbbbbbbbb", -- 10
"aaaaaaaaaaaaaaaa", -- 11
},
}, -- StraightDouble
{
OriginData =
{
ExportName = "CurveDouble",
Name = "Cube 89",
GalleryName = "Cube",
GalleryIndex = "89",
ID = "467",
CreatorName = "Aloe_vera",
},
Size =
{
x = 14,
y = 1,
z = 14,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 13,
MaxY = 2,
MaxZ = 13,
},
Connectors =
{
{
Type = 2,
RelX = 2,
RelY = 1,
RelZ = 13,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 0,
RelY = 1,
RelZ = 0,
Direction = 4, -- X-
},
{
Type = -2,
RelX = 0,
RelY = 1,
RelZ = 11,
Direction = 4, -- X-
},
{
Type = -2,
RelX = 13,
RelY = 1,
RelZ = 13,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:11", -- wool
"b: 35: 3", -- wool
"c: 35: 5", -- wool
"d: 35: 4", -- wool
"e: 35: 1", -- wool
"f: 35:14", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaa........", -- 0
"bbbbbba.......", -- 1
"cccccbbaaa....", -- 2
"dddddccbbaa...", -- 3
"eeeeeddccbaa..", -- 4
"fffffeddccba..", -- 5
"ffffffeedcbaa.", -- 6
"eeeefffeddcba.", -- 7
"dddeefffedcbba", -- 8
"cccddefffedcba", -- 9
"bbccdeeffedcba", -- 10
"abbccdeffedcba", -- 11
".abbcdeffedcba", -- 12
"..abcdeffedcba", -- 13
},
}, -- CurveDouble
{
OriginData =
{
ExportName = "SlopeUpDouble",
Name = "Cube 90",
GalleryName = "Cube",
GalleryIndex = "90",
ID = "468",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 8,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 15,
MaxY = 9,
MaxZ = 11,
},
Connectors =
{
{
Type = -2,
RelX = 0,
RelY = 1,
RelZ = 11,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 0,
RelY = 1,
RelZ = 0,
Direction = 4, -- X-
},
{
Type = -2,
RelX = 15,
RelY = 8,
RelZ = 0,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 15,
RelY = 8,
RelZ = 11,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:11", -- wool
"b: 35: 3", -- wool
"c: 35: 5", -- wool
"d: 35: 4", -- wool
"e: 35: 1", -- wool
"f: 35:14", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aa..............", -- 0
"bb..............", -- 1
"cc..............", -- 2
"dd..............", -- 3
"ee..............", -- 4
"ff..............", -- 5
"ff..............", -- 6
"ee..............", -- 7
"dd..............", -- 8
"cc..............", -- 9
"bb..............", -- 10
"aa..............", -- 11
-- Level 1
"..aa............", -- 0
"..bb............", -- 1
"..cc............", -- 2
"..dd............", -- 3
"..ee............", -- 4
"..ff............", -- 5
"..ff............", -- 6
"..ee............", -- 7
"..dd............", -- 8
"..cc............", -- 9
"..bb............", -- 10
"..aa............", -- 11
-- Level 2
"....aa..........", -- 0
"....bb..........", -- 1
"....cc..........", -- 2
"....dd..........", -- 3
"....ee..........", -- 4
"....ff..........", -- 5
"....ff..........", -- 6
"....ee..........", -- 7
"....dd..........", -- 8
"....cc..........", -- 9
"....bb..........", -- 10
"....aa..........", -- 11
-- Level 3
"......aa........", -- 0
"......bb........", -- 1
"......cc........", -- 2
"......dd........", -- 3
"......ee........", -- 4
"......ff........", -- 5
"......ff........", -- 6
"......ee........", -- 7
"......dd........", -- 8
"......cc........", -- 9
"......bb........", -- 10
"......aa........", -- 11
-- Level 4
"........aa......", -- 0
"........bb......", -- 1
"........cc......", -- 2
"........dd......", -- 3
"........ee......", -- 4
"........ff......", -- 5
"........ff......", -- 6
"........ee......", -- 7
"........dd......", -- 8
"........cc......", -- 9
"........bb......", -- 10
"........aa......", -- 11
-- Level 5
"..........aa....", -- 0
"..........bb....", -- 1
"..........cc....", -- 2
"..........dd....", -- 3
"..........ee....", -- 4
"..........ff....", -- 5
"..........ff....", -- 6
"..........ee....", -- 7
"..........dd....", -- 8
"..........cc....", -- 9
"..........bb....", -- 10
"..........aa....", -- 11
-- Level 6
"............aa..", -- 0
"............bb..", -- 1
"............cc..", -- 2
"............dd..", -- 3
"............ee..", -- 4
"............ff..", -- 5
"............ff..", -- 6
"............ee..", -- 7
"............dd..", -- 8
"............cc..", -- 9
"............bb..", -- 10
"............aa..", -- 11
-- Level 7
"..............aa", -- 0
"..............bb", -- 1
"..............cc", -- 2
"..............dd", -- 3
"..............ee", -- 4
"..............ff", -- 5
"..............ff", -- 6
"..............ee", -- 7
"..............dd", -- 8
"..............cc", -- 9
"..............bb", -- 10
"..............aa", -- 11
},
}, -- SlopeUpDouble
{
OriginData =
{
ExportName = "CurveUpDouble",
Name = "Cube 92",
GalleryName = "Cube",
GalleryIndex = "92",
ID = "470",
CreatorName = "Aloe_vera",
},
Size =
{
x = 14,
y = 8,
z = 14,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 13,
MaxY = 9,
MaxZ = 13,
},
Connectors =
{
{
Type = -2,
RelX = 0,
RelY = 1,
RelZ = 11,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 0,
RelY = 1,
RelZ = 0,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 2,
RelY = 8,
RelZ = 13,
Direction = 3, -- Z+
},
{
Type = -2,
RelX = 13,
RelY = 8,
RelZ = 13,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:11", -- wool
"b: 35: 3", -- wool
"c: 35: 5", -- wool
"d: 35: 4", -- wool
"e: 35: 1", -- wool
"f: 35:14", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"a.............", -- 0
"b.............", -- 1
"c.............", -- 2
"d.............", -- 3
"e.............", -- 4
"f.............", -- 5
"f.............", -- 6
"e.............", -- 7
"d.............", -- 8
"c.............", -- 9
"b.............", -- 10
"a.............", -- 11
"..............", -- 12
"..............", -- 13
-- Level 1
".aa...........", -- 0
".bb...........", -- 1
".cc...........", -- 2
".dd...........", -- 3
".ee...........", -- 4
".f............", -- 5
".f............", -- 6
".e............", -- 7
".d............", -- 8
".c............", -- 9
".b............", -- 10
".b............", -- 11
"..............", -- 12
"..............", -- 13
-- Level 2
"...aaa........", -- 0
"...bb.........", -- 1
"...cc.........", -- 2
"...dd.........", -- 3
"...ee.........", -- 4
"..ff..........", -- 5
"..ff..........", -- 6
"..ee..........", -- 7
"..de..........", -- 8
"..c...........", -- 9
".b............", -- 10
".b............", -- 11
"..............", -- 12
"..............", -- 13
-- Level 3
"..............", -- 0
".....baa......", -- 1
".....bbaaa....", -- 2
"....dccbba....", -- 3
"....eddcc.....", -- 4
"....fedd......", -- 5
"....ffee......", -- 6
"....ff........", -- 7
"....e.........", -- 8
"...dd.........", -- 9
"..cc..........", -- 10
"..b...........", -- 11
".a............", -- 12
"..............", -- 13
-- Level 4
"..............", -- 0
"..............", -- 1
"..............", -- 2
"..........a...", -- 3
".........ba...", -- 4
"........cc....", -- 5
".......edc....", -- 6
"......fedd....", -- 7
".....ff.......", -- 8
"....de........", -- 9
"...cde........", -- 10
"..b...........", -- 11
".a............", -- 12
"..............", -- 13
-- Level 5
"..............", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"...........a..", -- 4
"..........ba..", -- 5
"..........baa.", -- 6
"..........cba.", -- 7
".......fedcb..", -- 8
"......fffed...", -- 9
".....eef......", -- 10
"...ccd........", -- 11
"..b...........", -- 12
"..............", -- 13
-- Level 6
"..............", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"..............", -- 4
"..............", -- 5
"..............", -- 6
"..............", -- 7
"............ba", -- 8
"...........cba", -- 9
"........fedcba", -- 10
"......effedc..", -- 11
"..bbcdef......", -- 12
"..a...........", -- 13
-- Level 7
"..............", -- 0
"..............", -- 1
"..............", -- 2
"..............", -- 3
"..............", -- 4
"..............", -- 5
"..............", -- 6
"..............", -- 7
"..............", -- 8
"..............", -- 9
"..............", -- 10
"............ba", -- 11
"........fedcba", -- 12
"..abcdeffedcba", -- 13
},
}, -- CurveUpDouble
{
OriginData =
{
ExportName = "SplitTee",
Name = "Cube 93",
GalleryName = "Cube",
GalleryIndex = "93",
ID = "471",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 1,
z = 14,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 15,
MaxY = 2,
MaxZ = 13,
},
Connectors =
{
{
Type = -2,
RelX = 0,
RelY = 1,
RelZ = 11,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 0,
RelY = 1,
RelZ = 0,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 5,
RelY = 1,
RelZ = 13,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:11", -- wool
"b: 35: 3", -- wool
"c: 35: 5", -- wool
"d: 35: 4", -- wool
"e: 35: 1", -- wool
"f: 35:14", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaa..........", -- 0
"bbbbbbaaa.......", -- 1
"ccccccbbbaaa....", -- 2
"ddddddcccbbbaaaa", -- 3
"eeeeeedddcccbbbb", -- 4
"ffffffeeedddcccc", -- 5
"fffffffffeeedddd", -- 6
"eeeeff...fffeeee", -- 7
"dddeeff.....ffff", -- 8
"cccddeff........", -- 9
"bbbccdeef.......", -- 10
"aaabbcddef......", -- 11
"...aabcddef.....", -- 12
".....abcdef.....", -- 13
},
}, -- SplitTee
{
OriginData =
{
ExportName = "CurveSingleLeft",
Name = "Cube 97",
GalleryName = "Cube",
GalleryIndex = "97",
ID = "475",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 1,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 10,
MaxY = 2,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 10,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 10,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 1", -- wool
"c: 35: 4", -- wool
"d: 35: 5", -- wool
"e: 35: 3", -- wool
"f: 35:11", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
".....abcdef", -- 0
"....aabcdef", -- 1
"....abbcdef", -- 2
"...aabccdef", -- 3
".aaabbcddef", -- 4
"aabbbccdeef", -- 5
"bbbcccddef.", -- 6
"ccccdddeff.", -- 7
"dddddeeff..", -- 8
"eeeeeeff...", -- 9
"ffffff.....", -- 10
},
}, -- CurveSingleLeft
{
OriginData =
{
ExportName = "SlopeDownFromTopSingle",
Name = "Cube 98",
GalleryName = "Cube",
GalleryIndex = "98",
ID = "476",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 8,
z = 6,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 15,
MaxY = 9,
MaxZ = 5,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 8,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 1", -- wool
"c: 35: 4", -- wool
"d: 35: 5", -- wool
"e: 35: 3", -- wool
"f: 35:11", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"..............aa", -- 0
"..............bb", -- 1
"..............cc", -- 2
"..............dd", -- 3
"..............ee", -- 4
"..............ff", -- 5
-- Level 1
"............aa..", -- 0
"............bb..", -- 1
"............cc..", -- 2
"............dd..", -- 3
"............ee..", -- 4
"............ff..", -- 5
-- Level 2
"..........aa....", -- 0
"..........bb....", -- 1
"..........cc....", -- 2
"..........dd....", -- 3
"..........ee....", -- 4
"..........ff....", -- 5
-- Level 3
"........aa......", -- 0
"........bb......", -- 1
"........cc......", -- 2
"........dd......", -- 3
"........ee......", -- 4
"........ff......", -- 5
-- Level 4
"......aa........", -- 0
"......bb........", -- 1
"......cc........", -- 2
"......dd........", -- 3
"......ee........", -- 4
"......ff........", -- 5
-- Level 5
"....aa..........", -- 0
"....bb..........", -- 1
"....cc..........", -- 2
"....dd..........", -- 3
"....ee..........", -- 4
"....ff..........", -- 5
-- Level 6
"..aa............", -- 0
"..bb............", -- 1
"..cc............", -- 2
"..dd............", -- 3
"..ee............", -- 4
"..ff............", -- 5
-- Level 7
"aa..............", -- 0
"bb..............", -- 1
"cc..............", -- 2
"dd..............", -- 3
"ee..............", -- 4
"ff..............", -- 5
},
}, -- SlopeDownFromTopSingle
{
OriginData =
{
ExportName = "CurveDownFromTopSingle",
Name = "Cube 100",
GalleryName = "Cube",
GalleryIndex = "100",
ID = "478",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 8,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = -2,
MinZ = 0,
MaxX = 10,
MaxY = 9,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 8,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 5,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 35:14", -- wool
"b: 35: 5", -- wool
"c: 35: 4", -- wool
"d: 35: 1", -- wool
"e: 35:11", -- wool
"f: 35: 3", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
"...........", -- 7
"..........a", -- 8
".......bcda", -- 9
".....efbcda", -- 10
-- Level 1
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"........cda", -- 6
".......bcda", -- 7
".......bcd.", -- 8
".....ef....", -- 9
"...........", -- 10
-- Level 2
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
".........a.", -- 4
".......cdda", -- 5
"......bc...", -- 6
"......b....", -- 7
".....ff....", -- 8
"....ee.....", -- 9
"...........", -- 10
-- Level 3
"...........", -- 0
"...........", -- 1
"...........", -- 2
"........aa.", -- 3
"......ccd..", -- 4
".....bb....", -- 5
".....f.....", -- 6
"....ef.....", -- 7
"....e......", -- 8
"...........", -- 9
"...........", -- 10
-- Level 4
"...........", -- 0
"...........", -- 1
"......daa..", -- 2
".....ccd...", -- 3
"....bb.....", -- 4
"....f......", -- 5
"...ef......", -- 6
"...ee......", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 5
"...........", -- 0
".....daa...", -- 1
"...ccd.....", -- 2
"...bc......", -- 3
"...b.......", -- 4
"..ff.......", -- 5
"..ee.......", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 6
"...aaa.....", -- 0
"..ddd......", -- 1
".cc........", -- 2
".bb........", -- 3
".ff........", -- 4
".e.........", -- 5
".ee........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 7
"aaa........", -- 0
"dd.........", -- 1
"cc.........", -- 2
"bb.........", -- 3
"ff.........", -- 4
"e..........", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
},
}, -- CurveDownFromTopSingle
}, -- Pieces
}
================================================
FILE: Server/Prefabs/PieceStructures/TestRails.cubeset
================================================
-- TestRails.cubeset
-- Defines the prefabs in the group TestRails
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-12-03 15:53:05",
["GridSizeX"] = "10",
["GridSizeZ"] = "10",
["IntendedUse"] = "PieceStructures",
["MaxDepth"] = "0",
["MaxOffsetX"] = "1",
["MaxOffsetZ"] = "1",
["MaxStructureSizeX"] = "20",
["MaxStructureSizeZ"] = "20",
},
Pieces =
{
{
OriginData =
{
ExportName = "RegularRail",
Name = "Plains 247",
GalleryName = "Plains",
GalleryIndex = "247",
ID = "742",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 3,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 2,
MaxZ = 6,
},
Connectors =
{
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 5: 0", -- planks
"c: 66: 6", -- tracks
"d: 66: 2", -- tracks
"e: 66: 3", -- tracks
"f: 66: 7", -- tracks
"g: 66: 5", -- tracks
"h: 50: 5", -- torch
"i: 66: 4", -- tracks
"j: 66: 9", -- tracks
"k: 66: 8", -- tracks
"l: 66: 1", -- tracks
"m: 19: 0", -- sponge
"n: 66: 0", -- tracks
},
BlockData =
{
-- Level 0
"aaab...", -- 0
"abbbbb.", -- 1
"abbb.b.", -- 2
"bbbb.bb", -- 3
".b...b.", -- 4
".bbbbb.", -- 5
"...b...", -- 6
-- Level 1
".......", -- 0
".cdbef.", -- 1
".gh..g.", -- 2
".b.h.b.", -- 3
".i...i.", -- 4
".jdbek.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
"...l...", -- 1
".......", -- 2
".n...n.", -- 3
".......", -- 4
"...l...", -- 5
".......", -- 6
},
}, -- RegularRail
{
OriginData =
{
ExportName = "PowerRail",
Name = "Plains 248",
GalleryName = "Plains",
GalleryIndex = "248",
ID = "743",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 3,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 2,
MaxZ = 6,
},
Connectors =
{
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 5: 0", -- planks
"c: 27: 0", -- poweredrail
"d: 27: 2", -- poweredrail
"e: 27: 3", -- poweredrail
"f: 27: 5", -- poweredrail
"g: 50: 5", -- torch
"h: 66: 0", -- tracks
"i: 66: 1", -- tracks
"j: 66: 8", -- tracks
"k: 27: 4", -- poweredrail
"l: 27: 1", -- poweredrail
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaab...", -- 0
"abbbbb.", -- 1
"abbb.b.", -- 2
"bbbb.bb", -- 3
".b...b.", -- 4
".bbbbb.", -- 5
"...b...", -- 6
-- Level 1
".......", -- 0
".cdbec.", -- 1
".fgh.f.", -- 2
".bij.b.", -- 3
".k...k.", -- 4
".cdbec.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
"...l...", -- 1
".......", -- 2
".c...c.", -- 3
".......", -- 4
"...l...", -- 5
".......", -- 6
},
}, -- PowerRail
{
OriginData =
{
ExportName = "CentralPiece",
Name = "Plains 249",
GalleryName = "Plains",
GalleryIndex = "249",
ID = "744",
CreatorName = "Aloe_vera",
},
Size =
{
x = 6,
y = 3,
z = 6,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 5,
MaxY = 2,
MaxZ = 5,
},
Connectors =
{
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillNonAir",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "TerrainOrOceanTop|1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 5: 0", -- planks
"c: 66: 6", -- tracks
"d: 66: 2", -- tracks
"e: 66: 3", -- tracks
"f: 66: 7", -- tracks
"g: 66: 5", -- tracks
"h: 50: 5", -- torch
"i: 66: 0", -- tracks
"j: 66: 1", -- tracks
"k: 66: 8", -- tracks
"l: 66: 4", -- tracks
"m: 19: 0", -- sponge
"n: 66: 9", -- tracks
},
BlockData =
{
-- Level 0
"aaab..", -- 0
"abbbbb", -- 1
"abbb.b", -- 2
"bbbb.b", -- 3
".b...b", -- 4
".bbbbb", -- 5
-- Level 1
"......", -- 0
".cdbef", -- 1
".ghi.g", -- 2
".bjk.b", -- 3
".l...l", -- 4
".ndbek", -- 5
-- Level 2
"......", -- 0
"...j..", -- 1
"......", -- 2
".i...i", -- 3
"......", -- 4
"...j..", -- 5
},
}, -- CentralPiece
{
OriginData =
{
ExportName = "DetectorRail",
Name = "Plains 250",
GalleryName = "Plains",
GalleryIndex = "250",
ID = "745",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 3,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 2,
MaxZ = 6,
},
Connectors =
{
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 5: 0", -- planks
"c: 28: 0", -- detectorrail
"d: 28: 2", -- detectorrail
"e: 28: 3", -- detectorrail
"f: 28: 5", -- detectorrail
"g: 50: 5", -- torch
"h: 66: 0", -- tracks
"i: 66: 1", -- tracks
"j: 66: 8", -- tracks
"k: 28: 4", -- detectorrail
"l: 28: 1", -- detectorrail
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaab...", -- 0
"abbbbb.", -- 1
"abbb.b.", -- 2
"bbbb.bb", -- 3
".b...b.", -- 4
".bbbbb.", -- 5
"...b...", -- 6
-- Level 1
".......", -- 0
".cdbec.", -- 1
".fgh.f.", -- 2
".bij.b.", -- 3
".k...k.", -- 4
".cdbec.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
"...l...", -- 1
".......", -- 2
".c...c.", -- 3
".......", -- 4
"...l...", -- 5
".......", -- 6
},
}, -- DetectorRail
{
OriginData =
{
ExportName = "ActivatorRail",
Name = "Plains 251",
GalleryName = "Plains",
GalleryIndex = "251",
ID = "746",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 3,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 2,
MaxZ = 6,
},
Connectors =
{
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 5: 0", -- planks
"c:157: 0", -- activatorrail
"d:157: 2", -- activatorrail
"e:157: 3", -- activatorrail
"f:157: 5", -- activatorrail
"g: 50: 5", -- torch
"h: 66: 0", -- tracks
"i: 66: 1", -- tracks
"j: 66: 8", -- tracks
"k:157: 4", -- activatorrail
"l:157: 1", -- activatorrail
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaab...", -- 0
"abbbbb.", -- 1
"abbb.b.", -- 2
"bbbb.bb", -- 3
".b...b.", -- 4
".bbbbb.", -- 5
"...b...", -- 6
-- Level 1
".......", -- 0
".cdbec.", -- 1
".fgh.f.", -- 2
".bij.b.", -- 3
".k...k.", -- 4
".cdbec.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
"...l...", -- 1
".......", -- 2
".c...c.", -- 3
".......", -- 4
"...l...", -- 5
".......", -- 6
},
}, -- ActivatorRail
}, -- Pieces
}
================================================
FILE: Server/Prefabs/PieceStructures/TreePaths.cubeset
================================================
-- TreePaths.cubeset
-- Defines the prefabs in the group TreePaths
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-23 15:08:10",
["AllowedBiomes"] = "Jungle, JungleM, JungleHills, JungleEdge, JungleEdgeM",
["GridSizeX"] = "256",
["GridSizeZ"] = "256",
["IntendedUse"] = "PieceStructures",
["MaxDepth"] = "10",
["MaxOffsetX"] = "128",
["MaxOffsetZ"] = "128",
["MaxStructureSizeX"] = "256",
["MaxStructureSizeZ"] = "256",
},
Pieces =
{
{
OriginData =
{
ExportName = "CrossNoTop",
Name = "Cube 140",
GalleryName = "Cube",
GalleryIndex = "140",
ID = "1185",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 16,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 15,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 14,
RelY = 7,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = -2,
RelX = 7,
RelY = 15,
RelZ = 7,
Direction = 1, -- Y+
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 7,
Direction = 0, -- Y-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "2",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 6
"mmmmmmfffmmmmmm", -- 0
"mmmmmmfffmmmmmm", -- 1
"mmmmmmfffmmmmmm", -- 2
"mmmmfffffffmmmm", -- 3
"mmmfffffffffmmm", -- 4
"mmmffffaffffmmm", -- 5
"ffffffbbbffffff", -- 6
"fffffcbbbdfffff", -- 7
"ffffffbbbffffff", -- 8
"mmmffffeffffmmm", -- 9
"mmmfffffffffmmm", -- 10
"mmmmfffffffmmmm", -- 11
"mmmmmmfffmmmmmm", -- 12
"mmmmmmfffmmmmmm", -- 13
"mmmmmmfffmmmmmm", -- 14
-- Level 7
"mmmmmmg.gmmmmmm", -- 0
"mmmmmmg.gmmmmmm", -- 1
"mmmmmmg.gmmmmmm", -- 2
"mmmmggg.gggmmmm", -- 3
"mmmgg.....ggmmm", -- 4
"mmmg.......gmmm", -- 5
"gggg..bbb..gggg", -- 6
"......bbb......", -- 7
"gggg..bbb..gggg", -- 8
"mmmg.......gmmm", -- 9
"mmmgg.....ggmmm", -- 10
"mmmmggg.gggmmmm", -- 11
"mmmmmmg.gmmmmmm", -- 12
"mmmmmmg.gmmmmmm", -- 13
"mmmmmmg.gmmmmmm", -- 14
-- Level 8
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmm..h.h..mmmm", -- 3
"mmm.h.....h.mmm", -- 4
"mmm...i.i...mmm", -- 5
"...h.jbbbk.h...", -- 6
"......bbb......", -- 7
"...h.jbbbk.h...", -- 8
"mmm...l.l...mmm", -- 9
"mmm.h.....h.mmm", -- 10
"mmmm..h.h..mmmm", -- 11
"mmmmmm...mmmmmm", -- 12
"mmmmmm...mmmmmm", -- 13
"mmmmmm...mmmmmm", -- 14
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 12
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 13
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
},
}, -- CrossNoTop
{
OriginData =
{
ExportName = "Tee",
Name = "Cube 141",
GalleryName = "Cube",
GalleryIndex = "141",
ID = "1186",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 16,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 15,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 14,
RelY = 7,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 7,
Direction = 0, -- Y-
},
{
Type = -1,
RelX = 7,
RelY = 15,
RelZ = 7,
Direction = 1, -- Y+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "4",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 6
"mmmmmmfffmmmmmm", -- 0
"mmmmmmfffmmmmmm", -- 1
"mmmmmmfffmmmmmm", -- 2
"mmmmfffffffmmmm", -- 3
"mmmfffffffffmmm", -- 4
"mmmffffaffffmmm", -- 5
"ffffffbbbffffff", -- 6
"fffffcbbbdfffff", -- 7
"ffffffbbbffffff", -- 8
"mmmffffeffffmmm", -- 9
"mmmfffffffffmmm", -- 10
"mmmmfffffffmmmm", -- 11
-- Level 7
"mmmmmmg.gmmmmmm", -- 0
"mmmmmmg.gmmmmmm", -- 1
"mmmmmmg.gmmmmmm", -- 2
"mmmmggg.gggmmmm", -- 3
"mmmgg.....ggmmm", -- 4
"mmmg...a...gmmm", -- 5
"gggg..bbb..gggg", -- 6
".....cbbbd.....", -- 7
"gggg..bbb..gggg", -- 8
"mmmg...e...gmmm", -- 9
"mmmgg.....ggmmm", -- 10
"mmmmgggggggmmmm", -- 11
-- Level 8
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmm..h.h..mmmm", -- 3
"mmm.h.....h.mmm", -- 4
"mmm...iai...mmm", -- 5
"...h.jbbbk.h...", -- 6
".....cbbbd.....", -- 7
"...h.jbbbk.h...", -- 8
"mmm...lel...mmm", -- 9
"mmm.h.....h.mmm", -- 10
"mmmm..h.h..mmmm", -- 11
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 12
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 13
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
},
}, -- Tee
{
OriginData =
{
ExportName = "Corner",
Name = "Cube 142",
GalleryName = "Cube",
GalleryIndex = "142",
ID = "1187",
CreatorName = "xoft2",
},
Size =
{
x = 12,
y = 16,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 15,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 7,
RelY = 15,
RelZ = 7,
Direction = 1, -- Y+
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 7,
Direction = 0, -- Y-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 1
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 2
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 3
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 4
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 5
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 6
"mmmmmmfffmmm", -- 0
"mmmmmmfffmmm", -- 1
"mmmmmmfffmmm", -- 2
"mmmmfffffffm", -- 3
"mmmfffffffff", -- 4
"mmmffffaffff", -- 5
"ffffffbbbfff", -- 6
"fffffcbbbdff", -- 7
"ffffffbbbfff", -- 8
"mmmffffeffff", -- 9
"mmmfffffffff", -- 10
"mmmmfffffffm", -- 11
-- Level 7
"mmmmmmg.gmmm", -- 0
"mmmmmmg.gmmm", -- 1
"mmmmmmg.gmmm", -- 2
"mmmmggg.gggm", -- 3
"mmmgg.....gg", -- 4
"mmmg...a...g", -- 5
"gggg..bbb..g", -- 6
".....cbbbd.g", -- 7
"gggg..bbb..g", -- 8
"mmmg...e...g", -- 9
"mmmgg.....gg", -- 10
"mmmmgggggggm", -- 11
-- Level 8
"mmmmmm...mmm", -- 0
"mmmmmm...mmm", -- 1
"mmmmmm...mmm", -- 2
"mmmm..h.h..m", -- 3
"mmm.h.....h.", -- 4
"mmm...iai...", -- 5
"...h.jbbbk.h", -- 6
".....cbbbd..", -- 7
"...h.jbbbk.h", -- 8
"mmm...lel...", -- 9
"mmm.h.....h.", -- 10
"mmmm..h.h..m", -- 11
-- Level 9
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 10
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 11
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 12
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 13
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 14
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
-- Level 15
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmammmm", -- 5
"mmmmmmbbbmmm", -- 6
"mmmmmcbbbdmm", -- 7
"mmmmmmbbbmmm", -- 8
"mmmmmmmemmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
},
}, -- Corner
{
OriginData =
{
ExportName = "TreeEnd",
Name = "Cube 143",
GalleryName = "Cube",
GalleryIndex = "143",
ID = "1188",
CreatorName = "xoft2",
},
Size =
{
x = 12,
y = 16,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = -3,
MaxX = 14,
MaxY = 15,
MaxZ = 11,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 4,
Direction = 0, -- Y-
},
{
Type = -1,
RelX = 7,
RelY = 15,
RelZ = 4,
Direction = 1, -- Y+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "8:10000|9:10000",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|10|70",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 1
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 2
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 3
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 4
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 5
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 6
"mmmmfffffffm", -- 0
"mmmfffffffff", -- 1
"mmmffffaffff", -- 2
"ffffffbbbfff", -- 3
"fffffcbbbdff", -- 4
"ffffffbbbfff", -- 5
"mmmffffeffff", -- 6
"mmmfffffffff", -- 7
"mmmmfffffffm", -- 8
-- Level 7
"mmmmgggggggm", -- 0
"mmmgg.....gg", -- 1
"mmmg...a...g", -- 2
"gggg..bbb..g", -- 3
".....cbbbd.g", -- 4
"gggg..bbb..g", -- 5
"mmmg...e...g", -- 6
"mmmgg.....gg", -- 7
"mmmmgggggggm", -- 8
-- Level 8
"mmmm..h.h..m", -- 0
"mmm.h.....h.", -- 1
"mmm...iai...", -- 2
"...h.jbbbk.h", -- 3
".....cbbbd..", -- 4
"...h.jbbbk.h", -- 5
"mmm...lel...", -- 6
"mmm.h.....h.", -- 7
"mmmm..h.h..m", -- 8
-- Level 9
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 10
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 11
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 12
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 13
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 14
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 15
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmammmm", -- 2
"mmmmmmbbbmmm", -- 3
"mmmmmcbbbdmm", -- 4
"mmmmmmbbbmmm", -- 5
"mmmmmmmemmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
},
}, -- TreeEnd
{
OriginData =
{
ExportName = "TreeStraight",
Name = "Cube 144",
GalleryName = "Cube",
GalleryIndex = "144",
ID = "1189",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 16,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = -3,
MaxX = 14,
MaxY = 15,
MaxZ = 11,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 4,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 7,
RelZ = 4,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 7,
RelY = 15,
RelZ = 4,
Direction = 1, -- Y+
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 4,
Direction = 0, -- Y-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 6
"mmmmfffffffmmmm", -- 0
"mmmfffffffffmmm", -- 1
"mmmffffaffffmmm", -- 2
"ffffffbbbffffff", -- 3
"fffffcbbbdfffff", -- 4
"ffffffbbbffffff", -- 5
"mmmffffeffffmmm", -- 6
"mmmfffffffffmmm", -- 7
"mmmmfffffffmmmm", -- 8
-- Level 7
"mmmmgggggggmmmm", -- 0
"mmmgg.....ggmmm", -- 1
"mmmg...a...gmmm", -- 2
"gggg..bbb..gggg", -- 3
".....cbbbd.....", -- 4
"gggg..bbb..gggg", -- 5
"mmmg...e...gmmm", -- 6
"mmmgg.....ggmmm", -- 7
"mmmmgggggggmmmm", -- 8
-- Level 8
"mmmm..h.h..mmmm", -- 0
"mmm.h.....h.mmm", -- 1
"mmm...iai...mmm", -- 2
"...h.jbbbk.h...", -- 3
".....cbbbd.....", -- 4
"...h.jbbbk.h...", -- 5
"mmm...lel...mmm", -- 6
"mmm.h.....h.mmm", -- 7
"mmmm..h.h..mmmm", -- 8
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 12
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 13
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmammmmmmm", -- 2
"mmmmmmbbbmmmmmm", -- 3
"mmmmmcbbbdmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmmmemmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
},
}, -- TreeStraight
{
OriginData =
{
ExportName = "TreePaths_1190",
Name = "Cube 145",
GalleryName = "Cube",
GalleryIndex = "145",
ID = "1190",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 4,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = -4,
MinZ = -3,
MaxX = 14,
MaxY = 7,
MaxZ = 5,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 2,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 2,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 3", -- planks
"b:190: 0", -- junglefence
"c: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
-- Level 1
"aaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaa", -- 2
-- Level 2
"bbbbbbbbbbbbbbb", -- 0
"...............", -- 1
"bbbbbbbbbbbbbbb", -- 2
-- Level 3
"...c...c...c...", -- 0
"...............", -- 1
"...c...c...c...", -- 2
},
}, -- TreePaths_1190
{
OriginData =
{
ExportName = "StartingCross",
Name = "Cube 146",
GalleryName = "Cube",
GalleryIndex = "146",
ID = "1191",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 16,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 15,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 14,
RelY = 7,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 7,
Direction = 0, -- Y-
},
{
Type = -1,
RelX = 7,
RelY = 15,
RelZ = 7,
Direction = 1, -- Y+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "TerrainOrOceanTop|30|40",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 6
"mmmmmmfffmmmmmm", -- 0
"mmmmmmfffmmmmmm", -- 1
"mmmmmmfffmmmmmm", -- 2
"mmmmfffffffmmmm", -- 3
"mmmfffffffffmmm", -- 4
"mmmffffaffffmmm", -- 5
"ffffffbbbffffff", -- 6
"fffffcbbbdfffff", -- 7
"ffffffbbbffffff", -- 8
"mmmffffeffffmmm", -- 9
"mmmfffffffffmmm", -- 10
"mmmmfffffffmmmm", -- 11
"mmmmmmfffmmmmmm", -- 12
"mmmmmmfffmmmmmm", -- 13
"mmmmmmfffmmmmmm", -- 14
-- Level 7
"mmmmmmg.gmmmmmm", -- 0
"mmmmmmg.gmmmmmm", -- 1
"mmmmmmg.gmmmmmm", -- 2
"mmmmggg.gggmmmm", -- 3
"mmmgg.....ggmmm", -- 4
"mmmg...a...gmmm", -- 5
"gggg..bbb..gggg", -- 6
".....cbbbd.....", -- 7
"gggg..bbb..gggg", -- 8
"mmmg...e...gmmm", -- 9
"mmmgg.....ggmmm", -- 10
"mmmmggg.gggmmmm", -- 11
"mmmmmmg.gmmmmmm", -- 12
"mmmmmmg.gmmmmmm", -- 13
"mmmmmmg.gmmmmmm", -- 14
-- Level 8
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmm..h.h..mmmm", -- 3
"mmm.h.....h.mmm", -- 4
"mmm...iai...mmm", -- 5
"...h.jbbbk.h...", -- 6
".....cbbbd.....", -- 7
"...h.jbbbk.h...", -- 8
"mmm...lel...mmm", -- 9
"mmm.h.....h.mmm", -- 10
"mmmm..h.h..mmmm", -- 11
"mmmmmm...mmmmmm", -- 12
"mmmmmm...mmmmmm", -- 13
"mmmmmm...mmmmmm", -- 14
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 12
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 13
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
},
}, -- StartingCross
{
OriginData =
{
ExportName = "CrossNoBottom",
Name = "Cube 147",
GalleryName = "Cube",
GalleryIndex = "147",
ID = "1192",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 16,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 15,
MaxZ = 14,
},
Connectors =
{
{
Type = 2,
RelX = 7,
RelY = 0,
RelZ = 7,
Direction = 0, -- Y-
},
{
Type = -1,
RelX = 7,
RelY = 15,
RelZ = 7,
Direction = 1, -- Y+
},
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 14,
RelY = 7,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "5",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 17: 3", -- tree
"b: 5: 3", -- planks
"c:190: 0", -- junglefence
"d: 65: 2", -- ladder
"e: 65: 4", -- ladder
"f: 65: 5", -- ladder
"g: 65: 3", -- ladder
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 6
"mmmmmmbbbmmmmmm", -- 0
"mmmmmmbbbmmmmmm", -- 1
"mmmmmmbbbmmmmmm", -- 2
"mmmmbbbbbbbmmmm", -- 3
"mmmbbbbbbbbbmmm", -- 4
"mmmbbbbbbbbbmmm", -- 5
"bbbbbbaaabbbbbb", -- 6
"bbbbbbaaabbbbbb", -- 7
"bbbbbbaaabbbbbb", -- 8
"mmmbbbbbbbbbmmm", -- 9
"mmmbbbbbbbbbmmm", -- 10
"mmmmbbbbbbbmmmm", -- 11
"mmmmmmbbbmmmmmm", -- 12
"mmmmmmbbbmmmmmm", -- 13
"mmmmmmbbbmmmmmm", -- 14
-- Level 7
"mmmmmmc.cmmmmmm", -- 0
"mmmmmmc.cmmmmmm", -- 1
"mmmmmmc.cmmmmmm", -- 2
"mmmmccc.cccmmmm", -- 3
"mmmcc.....ccmmm", -- 4
"mmmc...d...cmmm", -- 5
"cccc..aaa..cccc", -- 6
".....eaaaf.....", -- 7
"cccc..aaa..cccc", -- 8
"mmmc...g...cmmm", -- 9
"mmmcc.....ccmmm", -- 10
"mmmmccc.cccmmmm", -- 11
"mmmmmmc.cmmmmmm", -- 12
"mmmmmmc.cmmmmmm", -- 13
"mmmmmmc.cmmmmmm", -- 14
-- Level 8
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmm..h.h..mmmm", -- 3
"mmm.h.....h.mmm", -- 4
"mmm...idi...mmm", -- 5
"...h.jaaak.h...", -- 6
".....eaaaf.....", -- 7
"...h.jaaak.h...", -- 8
"mmm...lgl...mmm", -- 9
"mmm.h.....h.mmm", -- 10
"mmmm..h.h..mmmm", -- 11
"mmmmmm...mmmmmm", -- 12
"mmmmmm...mmmmmm", -- 13
"mmmmmm...mmmmmm", -- 14
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 12
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 13
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmdmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmeaaafmmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmgmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
},
}, -- CrossNoBottom
{
OriginData =
{
ExportName = "TreePaths_1193",
Name = "Cube 148",
GalleryName = "Cube",
GalleryIndex = "148",
ID = "1193",
CreatorName = "xoft2",
},
Size =
{
x = 11,
y = 4,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = -4,
MinZ = -3,
MaxX = 10,
MaxY = 7,
MaxZ = 5,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 2,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 10,
RelY = 2,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "500",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 3", -- planks
"b:190: 0", -- junglefence
"c: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
-- Level 1
"aaaaaaaaaaa", -- 0
"aaaaaaaaaaa", -- 1
"aaaaaaaaaaa", -- 2
-- Level 2
"bbbbbbbbbbb", -- 0
"...........", -- 1
"bbbbbbbbbbb", -- 2
-- Level 3
"...c...c...", -- 0
"...........", -- 1
"...c...c...", -- 2
},
}, -- TreePaths_1193
{
OriginData =
{
ExportName = "TreePaths_1194",
Name = "Cube 149",
GalleryName = "Cube",
GalleryIndex = "149",
ID = "1194",
CreatorName = "xoft2",
},
Size =
{
x = 7,
y = 4,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = -4,
MinZ = -3,
MaxX = 6,
MaxY = 7,
MaxZ = 5,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 2,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 6,
RelY = 2,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 3", -- planks
"b:190: 0", -- junglefence
"c: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"mmmmmmm", -- 2
-- Level 1
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
-- Level 2
"bbbbbbb", -- 0
".......", -- 1
"bbbbbbb", -- 2
-- Level 3
"...c...", -- 0
".......", -- 1
"...c...", -- 2
},
}, -- TreePaths_1194
{
OriginData =
{
ExportName = "Curve",
Name = "Cube 150",
GalleryName = "Cube",
GalleryIndex = "150",
ID = "1195",
CreatorName = "xoft2",
},
Size =
{
x = 16,
y = 4,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = -4,
MinZ = 0,
MaxX = 15,
MaxY = 7,
MaxZ = 15,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 2,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 2,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 3", -- planks
"b:190: 0", -- junglefence
"c: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 1
"aaaammmmmmmmmmmm", -- 0
"aaaaaammmmmmmmmm", -- 1
"aaaaaaaammmmmmmm", -- 2
"maaaaaaaammmmmmm", -- 3
"mmmaaaaaaammmmmm", -- 4
"mmmmmaaaaaammmmm", -- 5
"mmmmmmaaaaaammmm", -- 6
"mmmmmmmaaaaaammm", -- 7
"mmmmmmmmaaaaaamm", -- 8
"mmmmmmmmmaaaaamm", -- 9
"mmmmmmmmmmaaaaam", -- 10
"mmmmmmmmmmmaaaam", -- 11
"mmmmmmmmmmmaaaaa", -- 12
"mmmmmmmmmmmmaaaa", -- 13
"mmmmmmmmmmmmaaaa", -- 14
"mmmmmmmmmmmmmaaa", -- 15
-- Level 2
"bbbbmmmmmmmmmmmm", -- 0
"...bbbmmmmmmmmmm", -- 1
"bb...bbbmmmmmmmm", -- 2
"mbbb...bbmmmmmmm", -- 3
"mmmbbb..bbmmmmmm", -- 4
"mmmmmbb..bbmmmmm", -- 5
"mmmmmmbb..bbmmmm", -- 6
"mmmmmmmbb..bbmmm", -- 7
"mmmmmmmmbb..bbmm", -- 8
"mmmmmmmmmbb..bmm", -- 9
"mmmmmmmmmmbb.bbm", -- 10
"mmmmmmmmmmmb..bm", -- 11
"mmmmmmmmmmmbb.bb", -- 12
"mmmmmmmmmmmmb..b", -- 13
"mmmmmmmmmmmmbb.b", -- 14
"mmmmmmmmmmmmmb.b", -- 15
-- Level 3
"...cmmmmmmmmmmmm", -- 0
".....cmmmmmmmmmm", -- 1
"........mmmmmmmm", -- 2
"mc......cmmmmmmm", -- 3
"mmmc......mmmmmm", -- 4
"mmmmmc...c.mmmmm", -- 5
"mmmmmm.....cmmmm", -- 6
"mmmmmmmc.....mmm", -- 7
"mmmmmmmm.....cmm", -- 8
"mmmmmmmmmc....mm", -- 9
"mmmmmmmmmm.....m", -- 10
"mmmmmmmmmmm....m", -- 11
"mmmmmmmmmmmc...c", -- 12
"mmmmmmmmmmmm....", -- 13
"mmmmmmmmmmmmc...", -- 14
"mmmmmmmmmmmmm...", -- 15
},
}, -- Curve
{
OriginData =
{
ExportName = "TreePaths_1196",
Name = "Cube 151",
GalleryName = "Cube",
GalleryIndex = "151",
ID = "1196",
CreatorName = "xoft2",
},
Size =
{
x = 6,
y = 6,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = -4,
MinZ = -3,
MaxX = 5,
MaxY = 9,
MaxZ = 5,
},
Connectors =
{
{
Type = 0,
RelX = 5,
RelY = 4,
RelZ = 1,
Direction = 5, -- X+
},
{
Type = 0,
RelX = 0,
RelY = 2,
RelZ = 1,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 3", -- planks
"b:190: 0", -- junglefence
"c: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmm", -- 0
"mmmmmm", -- 1
"mmmmmm", -- 2
-- Level 1
"aaammm", -- 0
"aaammm", -- 1
"aaammm", -- 2
-- Level 2
"bbaaam", -- 0
"..aaam", -- 1
"bbaaam", -- 2
-- Level 3
".bbbaa", -- 0
"....aa", -- 1
".bbbaa", -- 2
-- Level 4
".c.bbb", -- 0
"......", -- 1
".c.bbb", -- 2
-- Level 5
"...c..", -- 0
"......", -- 1
"...c..", -- 2
},
}, -- TreePaths_1196
{
OriginData =
{
ExportName = "TreePaths_1197",
Name = "Cube 152",
GalleryName = "Cube",
GalleryIndex = "152",
ID = "1197",
CreatorName = "xoft2",
},
Size =
{
x = 8,
y = 7,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = -4,
MinZ = -2,
MaxX = 7,
MaxY = 10,
MaxZ = 4,
},
Connectors =
{
{
Type = 0,
RelX = 0,
RelY = 2,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 7,
RelY = 5,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalLimit"] = "AboveTerrainAndOcean|20|60",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 3", -- planks
"b:190: 0", -- junglefence
"c: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmm", -- 0
"mmmmmmmm", -- 1
"mmmmmmmm", -- 2
-- Level 1
"aaammmmm", -- 0
"aaammmmm", -- 1
"aaammmmm", -- 2
-- Level 2
"bbaaammm", -- 0
"..aaammm", -- 1
"bbaaammm", -- 2
-- Level 3
".bbbaaam", -- 0
"....aaam", -- 1
".bbbaaam", -- 2
-- Level 4
".c.bbbaa", -- 0
"......aa", -- 1
".c.bbbaa", -- 2
-- Level 5
"...c.bbb", -- 0
"........", -- 1
"...c.bbb", -- 2
-- Level 6
".....c..", -- 0
"........", -- 1
".....c..", -- 2
},
}, -- TreePaths_1197
{
OriginData =
{
ExportName = "CrossTreetop",
Name = "Cube 153",
GalleryName = "Cube",
GalleryIndex = "153",
ID = "1198",
CreatorName = "xoft2",
},
Size =
{
x = 15,
y = 19,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 18,
MaxZ = 14,
},
Connectors =
{
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 0,
RelX = 7,
RelY = 7,
RelZ = 14,
Direction = 3, -- Z+
},
{
Type = 0,
RelX = 0,
RelY = 7,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = 0,
RelX = 14,
RelY = 7,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 7,
RelY = 0,
RelZ = 7,
Direction = 0, -- Y-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "2",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 5: 3", -- planks
"g:190: 0", -- junglefence
"h: 50: 5", -- torch
"i: 50: 4", -- torch
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n: 18: 7", -- leaves
"o: 18: 3", -- leaves
"p: 18:11", -- leaves
"q: 17:11", -- tree
"r: 17: 7", -- tree
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmammmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmcbbbdmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmemmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 6
"mmmmmmfffmmmmmm", -- 0
"mmmmmmfffmmmmmm", -- 1
"mmmmmmfffmmmmmm", -- 2
"mmmmfffffffmmmm", -- 3
"mmmfffffffffmmm", -- 4
"mmmffffaffffmmm", -- 5
"ffffffbbbffffff", -- 6
"fffffcbbbdfffff", -- 7
"ffffffbbbffffff", -- 8
"mmmffffeffffmmm", -- 9
"mmmfffffffffmmm", -- 10
"mmmmfffffffmmmm", -- 11
"mmmmmmfffmmmmmm", -- 12
"mmmmmmfffmmmmmm", -- 13
"mmmmmmfffmmmmmm", -- 14
-- Level 7
"mmmmmmg.gmmmmmm", -- 0
"mmmmmmg.gmmmmmm", -- 1
"mmmmmmg.gmmmmmm", -- 2
"mmmmggg.gggmmmm", -- 3
"mmmgg.....ggmmm", -- 4
"mmmg.......gmmm", -- 5
"gggg..bbb..gggg", -- 6
"......bbb......", -- 7
"gggg..bbb..gggg", -- 8
"mmmg.......gmmm", -- 9
"mmmgg.....ggmmm", -- 10
"mmmmggg.gggmmmm", -- 11
"mmmmmmg.gmmmmmm", -- 12
"mmmmmmg.gmmmmmm", -- 13
"mmmmmmg.gmmmmmm", -- 14
-- Level 8
"mmmmmm...mmmmmm", -- 0
"mmmmmm...mmmmmm", -- 1
"mmmmmm...mmmmmm", -- 2
"mmmm..h.h..mmmm", -- 3
"mmm.h.....h.mmm", -- 4
"mmm...i.i...mmm", -- 5
"...h.jbbbk.h...", -- 6
"......bbb......", -- 7
"...h.jbbbk.h...", -- 8
"mmm...l.l...mmm", -- 9
"mmm.h.....h.mmm", -- 10
"mmmm..h.h..mmmm", -- 11
"mmmmmm...mmmmmm", -- 12
"mmmmmm...mmmmmm", -- 13
"mmmmmm...mmmmmm", -- 14
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmnnnmmmmmm", -- 3
"mmmmnooooonmmmm", -- 4
"mmmmooooooommmm", -- 5
"mmmnoobbboonmmm", -- 6
"mmmnoobbboonmmm", -- 7
"mmmnoobbboonmmm", -- 8
"mmmmoopoooommmm", -- 9
"mmmmnoooopnmmmm", -- 10
"mmmmmmnnnmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmm.poo.mmmmm", -- 2
"mmmmnpooponmmmm", -- 3
"mmmnnopqoonnmmm", -- 4
"mm.ooooqoooo.mm", -- 5
"mmooopbbboooomm", -- 6
"mmoorrbbbrropmm", -- 7
"mmpoopbbboooomm", -- 8
"mm.poooqoooo.mm", -- 9
"mmmnnooqopnnmmm", -- 10
"mmmmnoopoonmmmm", -- 11
"mmmmm.ooo.mmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 11
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmm.ooo.mmmmm", -- 2
"mmm.ooooooo.mmm", -- 3
"mmmpooopooopmmm", -- 4
"mm.oobooobop.mm", -- 5
"mmooooobopopomm", -- 6
"mmpooobbboooomm", -- 7
"mmooopobooooomm", -- 8
"mm.ooboooboo.mm", -- 9
"mmmooooooooommm", -- 10
"mmm.ooooooo.mmm", -- 11
"mmmmm.opp.mmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 12
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmm.opoooop.mmm", -- 3
"mmmopooooopommm", -- 4
"mmmppooooooommm", -- 5
"mmmoooobooopmmm", -- 6
"mmmpopbbbopommm", -- 7
"mmmoooobpooommm", -- 8
"mmmooooooooommm", -- 9
"mmmooooooooommm", -- 10
"mmm.ooooooo.mmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 13
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmooooommmmm", -- 4
"mmmmooooooommmm", -- 5
"mmmmooobooommmm", -- 6
"mmmmoobbbopmmmm", -- 7
"mmmmooobooommmm", -- 8
"mmmmopooooommmm", -- 9
"mmmmmooooommmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 14
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmm.ooo.mmmmm", -- 3
"mmmmmooooommmmm", -- 4
"mmm.ooobooo.mmm", -- 5
"mmmoooopoooommm", -- 6
"mmmoobpboboommm", -- 7
"mmmooooooooommm", -- 8
"mmm.opobooo.mmm", -- 9
"mmmmmopoppmmmmm", -- 10
"mmmmm.ooo.mmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 15
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmm.ooo.mmmmm", -- 3
"mmmmmooooommmmm", -- 4
"mmm.pooopoo.mmm", -- 5
"mmmoooopoooommm", -- 6
"mmmopooboooommm", -- 7
"mmmooooooooommm", -- 8
"mmm.oooopoo.mmm", -- 9
"mmmmmpoooommmmm", -- 10
"mmmmm.ooo.mmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 16
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmommmmmmm", -- 4
"mmmmm.ooo.mmmmm", -- 5
"mmmmmopopommmmm", -- 6
"mmmmooobooommmm", -- 7
"mmmmmpoooommmmm", -- 8
"mmmmm.opo.mmmmm", -- 9
"mmmmmmmommmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 17
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmm.ooo.mmmmm", -- 5
"mmmmmooooommmmm", -- 6
"mmmmmpoooommmmm", -- 7
"mmmmmooppommmmm", -- 8
"mmmmm.ooo.mmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 18
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmommmmmmm", -- 6
"mmmmmmooommmmmm", -- 7
"mmmmmmmommmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
},
}, -- CrossTreetop
{
OriginData =
{
ExportName = "LadderTreetop",
Name = "Cube 154",
GalleryName = "Cube",
GalleryIndex = "154",
ID = "1199",
CreatorName = "xoft2",
},
Size =
{
x = 11,
y = 19,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 18,
MaxZ = 10,
},
Connectors =
{
{
Type = 1,
RelX = 5,
RelY = 0,
RelZ = 5,
Direction = 0, -- Y-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10000",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 65: 2", -- ladder
"b: 17: 3", -- tree
"c: 65: 4", -- ladder
"d: 65: 5", -- ladder
"e: 65: 3", -- ladder
"f: 18: 7", -- leaves
"g: 18: 3", -- leaves
"h: 18:11", -- leaves
"i: 17:11", -- tree
"j: 17: 7", -- tree
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 1
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 2
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 3
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 4
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 5
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 6
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmammmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmcbbbdmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmemmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 7
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmmbbbmmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 8
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmbbbmmmm", -- 4
"mmmmbbbmmmm", -- 5
"mmmmbbbmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 9
"mmmmmmmmmmm", -- 0
"mmmmfffmmmm", -- 1
"mmfghhghfmm", -- 2
"mmghghhggmm", -- 3
"mfghbbbhhfm", -- 4
"mfghbbbhhfm", -- 5
"mfhhbbbhhfm", -- 6
"mmhgghhhgmm", -- 7
"mmfhhghhfmm", -- 8
"mmmmfffmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 10
"mmm.ghg.mmm", -- 0
"mmfhhhhgfmm", -- 1
"mffhgihgffm", -- 2
".ggggihhhh.", -- 3
"hhhhbbbhhhh", -- 4
"hhjjbbbjjgg", -- 5
"hhghbbbghhh", -- 6
".gghgighgh.", -- 7
"mffggihhffm", -- 8
"mmfgghhhfmm", -- 9
"mmm.hhh.mmm", -- 10
-- Level 11
"mmm.hhg.mmm", -- 0
"m.hhghhgg.m", -- 1
"mhghggghhhm", -- 2
".hgbgggbhh.", -- 3
"hghghbhghhh", -- 4
"ghhhbbbhhhh", -- 5
"hhhhhbhhghh", -- 6
".ggbhghbgh.", -- 7
"mhghhgghghm", -- 8
"m.hhhhghg.m", -- 9
"mmm.hhh.mmm", -- 10
-- Level 12
"mmmmmmmmmmm", -- 0
"m.ghghggg.m", -- 1
"mghhhgghhgm", -- 2
"mghhhghhhgm", -- 3
"mhghhbhghhm", -- 4
"mghgbbbghhm", -- 5
"mgghgbhhhhm", -- 6
"mhghhghhghm", -- 7
"mhghhhgghhm", -- 8
"m.gghghgh.m", -- 9
"mmmmmmmmmmm", -- 10
-- Level 13
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmhgghhmmm", -- 2
"mmggghhhgmm", -- 3
"mmghgbhghmm", -- 4
"mmggbbbghmm", -- 5
"mmgghbhhhmm", -- 6
"mmhghhhhhmm", -- 7
"mmmhhhhhmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 14
"mmmmmmmmmmm", -- 0
"mmm.ghh.mmm", -- 1
"mmmhhghhmmm", -- 2
"m.hggbhgh.m", -- 3
"mghhhghhhhm", -- 4
"mhhbgbhbggm", -- 5
"mhhhghghhgm", -- 6
"m.hghbghh.m", -- 7
"mmmhhhggmmm", -- 8
"mmm.hhg.mmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 15
"mmmmmmmmmmm", -- 0
"mmm.ggh.mmm", -- 1
"mmmghghgmmm", -- 2
"m.ghghghh.m", -- 3
"mhghhhghhhm", -- 4
"mgghhbhhghm", -- 5
"mhhghhghhhm", -- 6
"m.ghgghhh.m", -- 7
"mmmhhhhhmmm", -- 8
"mmm.hhh.mmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 16
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmgmmmmm", -- 2
"mmm.hhh.mmm", -- 3
"mmmhhhhhmmm", -- 4
"mmgghbhhhmm", -- 5
"mmmhhhghmmm", -- 6
"mmm.hhg.mmm", -- 7
"mmmmmhmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 17
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmm.hhg.mmm", -- 3
"mmmghghgmmm", -- 4
"mmmhhghgmmm", -- 5
"mmmhhghgmmm", -- 6
"mmm.hhh.mmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 18
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmhmmmmm", -- 4
"mmmmhggmmmm", -- 5
"mmmmmgmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
},
}, -- LadderTreetop
{
OriginData =
{
ExportName = "BareTreetop",
Name = "Cube 155",
GalleryName = "Cube",
GalleryIndex = "155",
ID = "1200",
CreatorName = "xoft2",
},
Size =
{
x = 11,
y = 19,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 18,
MaxZ = 10,
},
Connectors =
{
{
Type = 2,
RelX = 5,
RelY = 0,
RelZ = 5,
Direction = 0, -- Y-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10000",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 17: 3", -- tree
"b: 18: 7", -- leaves
"c: 18:11", -- leaves
"d: 18: 3", -- leaves
"e: 17:11", -- tree
"f: 17: 7", -- tree
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 1
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 2
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 3
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 4
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 5
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 6
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmm.mmmmm", -- 3
"mmmmaaammmm", -- 4
"mmm.aaa.mmm", -- 5
"mmmmaaammmm", -- 6
"mmmmm.mmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 7
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmaaammmm", -- 4
"mmmmaaammmm", -- 5
"mmmmaaammmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 8
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmaaammmm", -- 4
"mmmmaaammmm", -- 5
"mmmmaaammmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 9
"mmmmmmmmmmm", -- 0
"mmmmbbbmmmm", -- 1
"mmbcccccbmm", -- 2
"mmcccccccmm", -- 3
"mbdcaaacdbm", -- 4
"mbdcaaaccbm", -- 5
"mbccaaaccbm", -- 6
"mmccdcdccmm", -- 7
"mmbcdcdcbmm", -- 8
"mmmmbbbmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 10
"mmm.ccc.mmm", -- 0
"mmbccdccbmm", -- 1
"mbbcceccbbm", -- 2
".cdccecccc.", -- 3
"ccccaaacccc", -- 4
"ccffaaaffcc", -- 5
"cdccaaaccdc", -- 6
".ccccedccc.", -- 7
"mbbcceccbbm", -- 8
"mmbcccccbmm", -- 9
"mmm.ccd.mmm", -- 10
-- Level 11
"mmm.ccc.mmm", -- 0
"m.cccdccc.m", -- 1
"mccdccccccm", -- 2
".ccacccacd.", -- 3
"cccccaccccc", -- 4
"ccccaaacccc", -- 5
"dccccaccccc", -- 6
".dcacccacc.", -- 7
"mcdccdccccm", -- 8
"m.ccccccc.m", -- 9
"mmm.ccc.mmm", -- 10
-- Level 12
"mmmmmmmmmmm", -- 0
"m.ccccccd.m", -- 1
"mdcdccccccm", -- 2
"mcccccccccm", -- 3
"mccccaccccm", -- 4
"mdccaaacdcm", -- 5
"mccdcaccccm", -- 6
"mcccccccccm", -- 7
"mcdcccccccm", -- 8
"m.ccccccc.m", -- 9
"mmmmmmmmmmm", -- 10
-- Level 13
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmddccdmmm", -- 2
"mmccccccdmm", -- 3
"mmdccacccmm", -- 4
"mmccaaaccmm", -- 5
"mmcdcacccmm", -- 6
"mmcccccccmm", -- 7
"mmmcccccmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 14
"mmmmmmmmmmm", -- 0
"mmm.ccd.mmm", -- 1
"mmmcdcccmmm", -- 2
"m.cccaccc.m", -- 3
"mdcccccdccm", -- 4
"mcdadacaccm", -- 5
"mccccccccdm", -- 6
"m.ccdaccc.m", -- 7
"mmmcccccmmm", -- 8
"mmm.ccc.mmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 15
"mmmmmmmmmmm", -- 0
"mmm.dcc.mmm", -- 1
"mmmcccccmmm", -- 2
"m.ccccccc.m", -- 3
"mcdcdcccccm", -- 4
"mccccacccdm", -- 5
"mcccccccccm", -- 6
"m.dcccccc.m", -- 7
"mmmcccdcmmm", -- 8
"mmm.ccc.mmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 16
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmcmmmmm", -- 2
"mmm.ccc.mmm", -- 3
"mmmcccccmmm", -- 4
"mmccdacccmm", -- 5
"mmmcdcccmmm", -- 6
"mmm.ccc.mmm", -- 7
"mmmmmcmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 17
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmm.ccc.mmm", -- 3
"mmmcccccmmm", -- 4
"mmmcccdcmmm", -- 5
"mmmcccccmmm", -- 6
"mmm.ccc.mmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 18
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmcmmmmm", -- 4
"mmmmcccmmmm", -- 5
"mmmmmcmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
},
}, -- BareTreetop
}, -- Pieces
}
================================================
FILE: Server/Prefabs/PieceStructures/UnderwaterBase.cubeset
================================================
-- UnderwaterBase.cubeset
-- Defines the prefabs in the group UnderwaterBase
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-23 15:08:06",
["GridSizeX"] = "384",
["GridSizeZ"] = "384",
["IntendedUse"] = "PieceStructures",
["MaxDepth"] = "12",
["MaxOffsetX"] = "128",
["MaxOffsetZ"] = "128",
["MaxStructureSizeX"] = "128",
["MaxStructureSizeZ"] = "128",
},
Pieces =
{
{
OriginData =
{
ExportName = "CentralRoom",
Name = "Water 24",
GalleryName = "Water",
GalleryIndex = "24",
ID = "564",
CreatorName = "xoft",
},
Size =
{
x = 16,
y = 7,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 6,
MaxZ = 15,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 8,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 8,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 7,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "TerrainOrOceanTop|-11",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 20: 0", -- glass
"d: 64: 3", -- wooddoorblock
"e: 64: 2", -- wooddoorblock
"f: 64: 0", -- wooddoorblock
"g: 64: 1", -- wooddoorblock
"h: 64: 8", -- wooddoorblock
"i: 64: 9", -- wooddoorblock
"j: 76: 3", -- redstonetorchon
"k: 76: 1", -- redstonetorchon
"l: 76: 2", -- redstonetorchon
"m: 19: 0", -- sponge
"n: 76: 4", -- redstonetorchon
"o:125: 8", -- woodendoubleslab
},
BlockData =
{
-- Level 0
"mmmmmmmaammmmmmm", -- 0
"mmmmmmmbbmmmmmmm", -- 1
"mmmmmmmbbmmmmmmm", -- 2
"mmmmmmbbbbmmmmmm", -- 3
"mmmmmbbbbbbmmmmm", -- 4
"mmmmbbbccbbbmmmm", -- 5
"mmmbbbccccbbbmmm", -- 6
"abbbbccccccbbbba", -- 7
"abbbbccccccbbbba", -- 8
"mmmbbbccccbbbmmm", -- 9
"mmmmbbbccbbbmmmm", -- 10
"mmmmmbbbbbbmmmmm", -- 11
"mmmmmmbbbbmmmmmm", -- 12
"mmmmmmmbbmmmmmmm", -- 13
"mmmmmmmbbmmmmmmm", -- 14
"mmmmmmmaammmmmmm", -- 15
-- Level 1
"mmmmmmaddammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmb..bmmmmmm", -- 2
"mmmmmbb..bbmmmmm", -- 3
"mmmmbb....bbmmmm", -- 4
"mmmbb......bbmmm", -- 5
"abbb........bbba", -- 6
"e..............f", -- 7
"e..............f", -- 8
"abbb........bbba", -- 9
"mmmbb......bbmmm", -- 10
"mmmmbb....bbmmmm", -- 11
"mmmmmbb..bbmmmmm", -- 12
"mmmmmmb..bmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmaggammmmmm", -- 15
-- Level 2
"mmmmmmahiammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmb..bmmmmmm", -- 2
"mmmmmcc..ccmmmmm", -- 3
"mmmmcc....ccmmmm", -- 4
"mmmcc......ccmmm", -- 5
"abbc........cbba", -- 6
"i..............h", -- 7
"h..............i", -- 8
"abbc........cbba", -- 9
"mmmcc......ccmmm", -- 10
"mmmmcc....ccmmmm", -- 11
"mmmmmcc..ccmmmmm", -- 12
"mmmmmmb..bmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmaihammmmmm", -- 15
-- Level 3
"mmmmmmaaaammmmmm", -- 0
"mmmmmmbbbbmmmmmm", -- 1
"mmmmmmbbbbmmmmmm", -- 2
"mmmmmbb..bbmmmmm", -- 3
"mmmmbb....bbmmmm", -- 4
"mmmbb......bbmmm", -- 5
"abbb........bbba", -- 6
"abb..........bba", -- 7
"abb..........bba", -- 8
"abbb........bbba", -- 9
"mmmbb......bbmmm", -- 10
"mmmmbb....bbmmmm", -- 11
"mmmmmbb..bbmmmmm", -- 12
"mmmmmmbbbbmmmmmm", -- 13
"mmmmmmbbbbmmmmmm", -- 14
"mmmmmmaaaammmmmm", -- 15
-- Level 4
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmbbmmmmmmm", -- 3
"mmmmmmbjjbmmmmmm", -- 4
"mmmmmb....bmmmmm", -- 5
"mmmmb......bmmmm", -- 6
"mmmbk......lbmmm", -- 7
"mmmbk......lbmmm", -- 8
"mmmmb......bmmmm", -- 9
"mmmmmb....bmmmmm", -- 10
"mmmmmmbnnbmmmmmm", -- 11
"mmmmmmmbbmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 5
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmmmbbmmmmmmm", -- 4
"mmmmmmb..bmmmmmm", -- 5
"mmmmmb....bmmmmm", -- 6
"mmmmb......bmmmm", -- 7
"mmmmb......bmmmm", -- 8
"mmmmmb....bmmmmm", -- 9
"mmmmmmboobmmmmmm", -- 10
"mmmmmmmbbmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 6
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmbbmmmmmmm", -- 5
"mmmmmmbbbbmmmmmm", -- 6
"mmmmmbbccbbmmmmm", -- 7
"mmmmmbbccbbmmmmm", -- 8
"mmmmmmbbbbmmmmmm", -- 9
"mmmmmmmbbmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
},
}, -- CentralRoom
{
OriginData =
{
ExportName = "Corridor16",
Name = "Water 25",
GalleryName = "Water",
GalleryIndex = "25",
ID = "566",
CreatorName = "xoft",
},
Size =
{
x = 16,
y = 4,
z = 4,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 3,
MaxZ = 3,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "500",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 64: 2", -- wooddoorblock
"d: 64: 0", -- wooddoorblock
"e: 20: 0", -- glass
"f: 64: 9", -- wooddoorblock
"g: 76: 3", -- redstonetorchon
"h: 64: 8", -- wooddoorblock
"i: 76: 4", -- redstonetorchon
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmmm", -- 0
"abbbbbbbbbbbbbba", -- 1
"abbbbbbbbbbbbbba", -- 2
"mmmmmmmmmmmmmmmm", -- 3
-- Level 1
"abbbbbbbbbbbbbba", -- 0
"c..............d", -- 1
"c..............d", -- 2
"abbbbbbbbbbbbbba", -- 3
-- Level 2
"abeebbbeebbbeeba", -- 0
"f...g......g...h", -- 1
"h...i......i...f", -- 2
"abeebbbeebbbeeba", -- 3
-- Level 3
"abbbbbbbbbbbbbba", -- 0
"abbbbbbbbbbbbbba", -- 1
"abbbbbbbbbbbbbba", -- 2
"abbbbbbbbbbbbbba", -- 3
},
}, -- Corridor16
{
OriginData =
{
ExportName = "CorridorCorner",
Name = "Water 26",
GalleryName = "Water",
GalleryIndex = "26",
ID = "569",
CreatorName = "xoft",
},
Size =
{
x = 10,
y = 4,
z = 10,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 3,
MaxZ = 9,
},
Connectors =
{
{
Type = 1,
RelX = 7,
RelY = 1,
RelZ = 9,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 9,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "200",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 64: 2", -- wooddoorblock
"d: 64: 1", -- wooddoorblock
"e: 20: 0", -- glass
"f: 64: 9", -- wooddoorblock
"g: 76: 3", -- redstonetorchon
"h: 64: 8", -- wooddoorblock
"i: 76: 4", -- redstonetorchon
"j: 76: 2", -- redstonetorchon
"k: 76: 1", -- redstonetorchon
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmm", -- 0
"abbbbbmmmm", -- 1
"abbbbbbbmm", -- 2
"mmmbbbbbmm", -- 3
"mmmmmbbbbm", -- 4
"mmmmmmbbbm", -- 5
"mmmmmmbbbm", -- 6
"mmmmmmmbbm", -- 7
"mmmmmmmbbm", -- 8
"mmmmmmmaam", -- 9
-- Level 1
"abbbbbmmmm", -- 0
"c.....bbmm", -- 1
"c.......bm", -- 2
"abb.....bm", -- 3
"mmmbb....b", -- 4
"mmmmmb...b", -- 5
"mmmmmb...b", -- 6
"mmmmmmb..b", -- 7
"mmmmmmb..b", -- 8
"mmmmmmadda", -- 9
-- Level 2
"abeebbmmmm", -- 0
"f...g.bbmm", -- 1
"h.......bm", -- 2
"abbi....bm", -- 3
"mmmbb....b", -- 4
"mmmmmb..jb", -- 5
"mmmmmbk..e", -- 6
"mmmmmmb..e", -- 7
"mmmmmmb..b", -- 8
"mmmmmmafha", -- 9
-- Level 3
"abbbbbmmmm", -- 0
"abbbbbbbmm", -- 1
"abbbbbbbbm", -- 2
"abbbbbbbbm", -- 3
"mmmbbbbbbb", -- 4
"mmmmmbbbbb", -- 5
"mmmmmbbbbb", -- 6
"mmmmmmbbbb", -- 7
"mmmmmmbbbb", -- 8
"mmmmmmaaaa", -- 9
},
}, -- CorridorCorner
{
OriginData =
{
ExportName = "ViewingCorridor",
Name = "Water 27",
GalleryName = "Water",
GalleryIndex = "27",
ID = "571",
CreatorName = "LO1ZB",
},
Size =
{
x = 16,
y = 5,
z = 6,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 4,
MaxZ = 5,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 5: 5", -- planks
"c: 20: 0", -- glass
"d: 64: 2", -- wooddoorblock
"e: 64: 0", -- wooddoorblock
"f: 76: 3", -- redstonetorchon
"g: 64: 9", -- wooddoorblock
"h: 64: 8", -- wooddoorblock
"i: 76: 4", -- redstonetorchon
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmaaaaaaaaaaaamm", -- 0
"mmaaaaaaaaaaaamm", -- 1
"baaccccccccccaab", -- 2
"baaccccccccccaab", -- 3
"mmaaaaaaaaaaaamm", -- 4
"mmmaaaaaaaaaammm", -- 5
-- Level 1
"mmaccccccccccamm", -- 0
"ba............ab", -- 1
"d..............e", -- 2
"d..............e", -- 3
"ba............ab", -- 4
"mmaccccccccccamm", -- 5
-- Level 2
"mmaccccccccccamm", -- 0
"baf..........fab", -- 1
"g..............h", -- 2
"h..............g", -- 3
"bai..........iab", -- 4
"mmaccccccccccamm", -- 5
-- Level 3
"mmaccccccccccamm", -- 0
"ba............ab", -- 1
"ba............ab", -- 2
"ba............ab", -- 3
"ba............ab", -- 4
"mmaccccccccccamm", -- 5
-- Level 4
"mmmaaaaaaaaaammm", -- 0
"mmaaaaaaaaaaaamm", -- 1
"mmaccccccccccamm", -- 2
"mmaccccccccccamm", -- 3
"mmaaaaaaaaaaaamm", -- 4
"mmmaaaaaaaaaammm", -- 5
},
}, -- ViewingCorridor
{
OriginData =
{
ExportName = "CorridorTee",
Name = "Water 29",
GalleryName = "Water",
GalleryIndex = "29",
ID = "576",
CreatorName = "LO1ZB",
},
Size =
{
x = 16,
y = 4,
z = 10,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 3,
MaxZ = 9,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 8,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 8,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 64: 3", -- wooddoorblock
"d: 64: 2", -- wooddoorblock
"e: 64: 0", -- wooddoorblock
"f: 64: 8", -- wooddoorblock
"g: 64: 9", -- wooddoorblock
"h: 20: 0", -- glass
"i: 76: 1", -- redstonetorchon
"j: 76: 2", -- redstonetorchon
"k: 76: 3", -- redstonetorchon
"l: 76: 4", -- redstonetorchon
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmaammmmmmm", -- 0
"mmmmmmmbbmmmmmmm", -- 1
"mmmmmmmbbmmmmmmm", -- 2
"mmmmmmmbbmmmmmmm", -- 3
"mmmmmmmbbmmmmmmm", -- 4
"mmmmmmmbbmmmmmmm", -- 5
"mmmmmmmbbmmmmmmm", -- 6
"abbbbbbbbbbbbbba", -- 7
"abbbbbbbbbbbbbba", -- 8
"mmmmmmmmmmmmmmmm", -- 9
-- Level 1
"mmmmmmaccammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmb..bmmmmmm", -- 2
"mmmmmmb..bmmmmmm", -- 3
"mmmmmmb..bmmmmmm", -- 4
"mmmmmmb..bmmmmmm", -- 5
"abbbbbb..bbbbbba", -- 6
"d..............e", -- 7
"d..............e", -- 8
"abbbbbbbbbbbbbba", -- 9
-- Level 2
"mmmmmmafgammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmh..hmmmmmm", -- 2
"mmmmmmh..hmmmmmm", -- 3
"mmmmmmbijbmmmmmm", -- 4
"mmmmmmb..bmmmmmm", -- 5
"abhhbbb..bbbhhba", -- 6
"g...k......k...f", -- 7
"f...l......l...g", -- 8
"abhhbbbhhbbbhhba", -- 9
-- Level 3
"mmmmmmaaaammmmmm", -- 0
"mmmmmmbbbbmmmmmm", -- 1
"mmmmmmbbbbmmmmmm", -- 2
"mmmmmmbbbbmmmmmm", -- 3
"mmmmmmbbbbmmmmmm", -- 4
"mmmmmmbbbbmmmmmm", -- 5
"abbbbbbbbbbbbbba", -- 6
"abbbbbbbbbbbbbba", -- 7
"abbbbbbbbbbbbbba", -- 8
"abbbbbbbbbbbbbba", -- 9
},
}, -- CorridorTee
{
OriginData =
{
ExportName = "CorridorCrossing",
Name = "Water 31",
GalleryName = "Water",
GalleryIndex = "31",
ID = "581",
CreatorName = "LO1ZB",
},
Size =
{
x = 16,
y = 4,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 3,
MaxZ = 15,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 8,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 7,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = 1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 8,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 64: 3", -- wooddoorblock
"d: 64: 2", -- wooddoorblock
"e: 64: 0", -- wooddoorblock
"f: 64: 1", -- wooddoorblock
"g: 64: 8", -- wooddoorblock
"h: 64: 9", -- wooddoorblock
"i: 20: 0", -- glass
"j: 76: 1", -- redstonetorchon
"k: 76: 2", -- redstonetorchon
"l: 76: 3", -- redstonetorchon
"m: 19: 0", -- sponge
"n: 76: 4", -- redstonetorchon
},
BlockData =
{
-- Level 0
"mmmmmmmaammmmmmm", -- 0
"mmmmmmmbbmmmmmmm", -- 1
"mmmmmmmbbmmmmmmm", -- 2
"mmmmmmmbbmmmmmmm", -- 3
"mmmmmmmbbmmmmmmm", -- 4
"mmmmmmmbbmmmmmmm", -- 5
"mmmmmmmbbmmmmmmm", -- 6
"abbbbbbbbbbbbbba", -- 7
"abbbbbbbbbbbbbba", -- 8
"mmmmmmmbbmmmmmmm", -- 9
"mmmmmmmbbmmmmmmm", -- 10
"mmmmmmmbbmmmmmmm", -- 11
"mmmmmmmbbmmmmmmm", -- 12
"mmmmmmmbbmmmmmmm", -- 13
"mmmmmmmbbmmmmmmm", -- 14
"mmmmmmmaammmmmmm", -- 15
-- Level 1
"mmmmmmaccammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmb..bmmmmmm", -- 2
"mmmmmmb..bmmmmmm", -- 3
"mmmmmmb..bmmmmmm", -- 4
"mmmmmmb..bmmmmmm", -- 5
"abbbbbb..bbbbbba", -- 6
"d..............e", -- 7
"d..............e", -- 8
"abbbbbb..bbbbbba", -- 9
"mmmmmmb..bmmmmmm", -- 10
"mmmmmmb..bmmmmmm", -- 11
"mmmmmmb..bmmmmmm", -- 12
"mmmmmmb..bmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmaffammmmmm", -- 15
-- Level 2
"mmmmmmaghammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmi..immmmmm", -- 2
"mmmmmmi..immmmmm", -- 3
"mmmmmmbjkbmmmmmm", -- 4
"mmmmmmb..bmmmmmm", -- 5
"abiibbb..bbbiiba", -- 6
"h...l......l...g", -- 7
"g...n......n...h", -- 8
"abiibbb..bbbiiba", -- 9
"mmmmmmb..bmmmmmm", -- 10
"mmmmmmbjkbmmmmmm", -- 11
"mmmmmmi..immmmmm", -- 12
"mmmmmmi..immmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmahgammmmmm", -- 15
-- Level 3
"mmmmmmaaaammmmmm", -- 0
"mmmmmmbbbbmmmmmm", -- 1
"mmmmmmbbbbmmmmmm", -- 2
"mmmmmmbbbbmmmmmm", -- 3
"mmmmmmbbbbmmmmmm", -- 4
"mmmmmmbbbbmmmmmm", -- 5
"abbbbbbbbbbbbbba", -- 6
"abbbbbbbbbbbbbba", -- 7
"abbbbbbbbbbbbbba", -- 8
"abbbbbbbbbbbbbba", -- 9
"mmmmmmbbbbmmmmmm", -- 10
"mmmmmmbbbbmmmmmm", -- 11
"mmmmmmbbbbmmmmmm", -- 12
"mmmmmmbbbbmmmmmm", -- 13
"mmmmmmbbbbmmmmmm", -- 14
"mmmmmmaaaammmmmm", -- 15
},
}, -- CorridorCrossing
{
OriginData =
{
ExportName = "CorridorStairs",
Name = "Water 32",
GalleryName = "Water",
GalleryIndex = "32",
ID = "582",
CreatorName = "LO1ZB",
},
Size =
{
x = 16,
y = 9,
z = 4,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 8,
MaxZ = 3,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 15,
RelY = 6,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 6,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 64: 2", -- wooddoorblock
"d: 53: 0", -- woodstairs
"e: 20: 0", -- glass
"f: 64: 9", -- wooddoorblock
"g: 76: 3", -- redstonetorchon
"h: 64: 8", -- wooddoorblock
"i: 76: 4", -- redstonetorchon
"j: 64: 0", -- wooddoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmmm", -- 0
"abbbbbbbmmmmmmmm", -- 1
"abbbbbbbmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
-- Level 1
"abbbbbbbmmmmmmmm", -- 0
"c.....dbbmmmmmmm", -- 1
"c.....dbbmmmmmmm", -- 2
"abbbbbbbmmmmmmmm", -- 3
-- Level 2
"abeebbbbbmmmmmmm", -- 0
"f...g..dbbmmmmmm", -- 1
"h...i..dbbmmmmmm", -- 2
"abeebbbbbmmmmmmm", -- 3
-- Level 3
"abbbbbbbbbmmmmmm", -- 0
"abbbb...dbbmmmmm", -- 1
"abbbb...dbbmmmmm", -- 2
"abbbbbbbbbmmmmmm", -- 3
-- Level 4
"mmmmmbbbbbmmmmmm", -- 0
"mmmmmb...dbbmmmm", -- 1
"mmmmmb...dbbmmmm", -- 2
"mmmmmbbbbbmmmmmm", -- 3
-- Level 5
"mmmmmmbbbbbmmmmm", -- 0
"mmmmmmb...dbbbba", -- 1
"mmmmmmb...dbbbba", -- 2
"mmmmmmbbbbbmmmmm", -- 3
-- Level 6
"mmmmmmmbbbbbbbba", -- 0
"mmmmmmmb.......j", -- 1
"mmmmmmmb.......j", -- 2
"mmmmmmmbbbbbbbba", -- 3
-- Level 7
"mmmmmmmmbbbeebba", -- 0
"mmmmmmmmb.g....h", -- 1
"mmmmmmmmb.i....f", -- 2
"mmmmmmmmbbbeebba", -- 3
-- Level 8
"mmmmmmmmmbbbbbba", -- 0
"mmmmmmmmmbbbbbba", -- 1
"mmmmmmmmmbbbbbba", -- 2
"mmmmmmmmmbbbbbba", -- 3
},
}, -- CorridorStairs
{
OriginData =
{
ExportName = "ViewingCrossing",
Name = "Water 38",
GalleryName = "Water",
GalleryIndex = "38",
ID = "611",
CreatorName = "LO1ZB",
},
Size =
{
x = 16,
y = 7,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 6,
MaxZ = 15,
},
Connectors =
{
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 8,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 8,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 7,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "50",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 20: 0", -- glass
"d: 64: 3", -- wooddoorblock
"e: 76: 1", -- redstonetorchon
"f: 76: 2", -- redstonetorchon
"g: 64: 2", -- wooddoorblock
"h: 76: 3", -- redstonetorchon
"i: 64: 0", -- wooddoorblock
"j: 76: 4", -- redstonetorchon
"k: 64: 1", -- wooddoorblock
"l: 64: 8", -- wooddoorblock
"m: 19: 0", -- sponge
"n: 64: 9", -- wooddoorblock
},
BlockData =
{
-- Level 0
"mmmmmmmaammmmmmm", -- 0
"mmmmmmmbbmmmmmmm", -- 1
"mmmmmmmbbmmmmmmm", -- 2
"mmmmmmbbbbmmmmmm", -- 3
"mmmmmbbccbbmmmmm", -- 4
"mmmmbbccccbbmmmm", -- 5
"mmmbbccccccbbmmm", -- 6
"abbbccccccccbbba", -- 7
"abbbccccccccbbba", -- 8
"mmmbbccccccbbmmm", -- 9
"mmmmbbccccbbmmmm", -- 10
"mmmmmbbccbbmmmmm", -- 11
"mmmmmmbbbbmmmmmm", -- 12
"mmmmmmmbbmmmmmmm", -- 13
"mmmmmmmbbmmmmmmm", -- 14
"mmmmmmmaammmmmmm", -- 15
-- Level 1
"mmmmmmaddammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmb..bmmmmmm", -- 2
"mmmmmbbefbbmmmmm", -- 3
"mmmmbb....bbmmmm", -- 4
"mmmbb......bbmmm", -- 5
"abbb........bbba", -- 6
"g..h........h..i", -- 7
"g..j........j..i", -- 8
"abbb........bbba", -- 9
"mmmbb......bbmmm", -- 10
"mmmmbb....bbmmmm", -- 11
"mmmmmbbefbbmmmmm", -- 12
"mmmmmmb..bmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmakkammmmmm", -- 15
-- Level 2
"mmmmmmalnammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmc..cmmmmmm", -- 2
"mmmmmcc..ccmmmmm", -- 3
"mmmmcc....ccmmmm", -- 4
"mmmcc......ccmmm", -- 5
"abcc........ccba", -- 6
"n..............l", -- 7
"l..............n", -- 8
"abcc........ccba", -- 9
"mmmcc......ccmmm", -- 10
"mmmmcc....ccmmmm", -- 11
"mmmmmcc..ccmmmmm", -- 12
"mmmmmmc..cmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmanlammmmmm", -- 15
-- Level 3
"mmmmmmaaaammmmmm", -- 0
"mmmmmmbbbbmmmmmm", -- 1
"mmmmmmccccmmmmmm", -- 2
"mmmmmcc..ccmmmmm", -- 3
"mmmmcc....ccmmmm", -- 4
"mmmcc......ccmmm", -- 5
"abcc........ccba", -- 6
"abc..........cba", -- 7
"abc..........cba", -- 8
"abcc........ccba", -- 9
"mmmcc......ccmmm", -- 10
"mmmmcc....ccmmmm", -- 11
"mmmmmcc..ccmmmmm", -- 12
"mmmmmmccccmmmmmm", -- 13
"mmmmmmbbbbmmmmmm", -- 14
"mmmmmmaaaammmmmm", -- 15
-- Level 4
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmccmmmmmmm", -- 3
"mmmmmmc..cmmmmmm", -- 4
"mmmmmc....cmmmmm", -- 5
"mmmmc......cmmmm", -- 6
"mmmc........cmmm", -- 7
"mmmc........cmmm", -- 8
"mmmmc......cmmmm", -- 9
"mmmmmc....cmmmmm", -- 10
"mmmmmmc..cmmmmmm", -- 11
"mmmmmmmccmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 5
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmmmccmmmmmmm", -- 4
"mmmmmmc..cmmmmmm", -- 5
"mmmmmc....cmmmmm", -- 6
"mmmmc......cmmmm", -- 7
"mmmmc......cmmmm", -- 8
"mmmmmc....cmmmmm", -- 9
"mmmmmmc..cmmmmmm", -- 10
"mmmmmmmccmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 6
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmccmmmmmmm", -- 5
"mmmmmmccccmmmmmm", -- 6
"mmmmmccccccmmmmm", -- 7
"mmmmmccccccmmmmm", -- 8
"mmmmmmccccmmmmmm", -- 9
"mmmmmmmccmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
},
}, -- ViewingCrossing
{
OriginData =
{
ExportName = "ViewingTee",
Name = "Water 39",
GalleryName = "Water",
GalleryIndex = "39",
ID = "612",
CreatorName = "LO1ZB",
},
Size =
{
x = 14,
y = 7,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 6,
MaxZ = 15,
},
Connectors =
{
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 13,
RelY = 1,
RelZ = 8,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 13,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 5,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "75",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 20: 0", -- glass
"d: 64: 3", -- wooddoorblock
"e: 76: 1", -- redstonetorchon
"f: 76: 2", -- redstonetorchon
"g: 76: 3", -- redstonetorchon
"h: 64: 0", -- wooddoorblock
"i: 76: 4", -- redstonetorchon
"j: 64: 1", -- wooddoorblock
"k: 64: 8", -- wooddoorblock
"l: 64: 9", -- wooddoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmaammmmmmm", -- 0
"mmmmmbbmmmmmmm", -- 1
"mmmmmbbmmmmmmm", -- 2
"mmmmbbbbmmmmmm", -- 3
"mmmbbccbbmmmmm", -- 4
"mmbbccccbbmmmm", -- 5
"mbbccccccbbmmm", -- 6
"mbccccccccbbba", -- 7
"mbccccccccbbba", -- 8
"mbbccccccbbmmm", -- 9
"mmbbccccbbmmmm", -- 10
"mmmbbccbbmmmmm", -- 11
"mmmmbbbbmmmmmm", -- 12
"mmmmmbbmmmmmmm", -- 13
"mmmmmbbmmmmmmm", -- 14
"mmmmmaammmmmmm", -- 15
-- Level 1
"mmmmaddammmmmm", -- 0
"mmmmb..bmmmmmm", -- 1
"mmmmb..bmmmmmm", -- 2
"mmmbbefbbmmmmm", -- 3
"mmbb....bbmmmm", -- 4
"mbb......bbmmm", -- 5
"mb........bbba", -- 6
"be........g..h", -- 7
"be........i..h", -- 8
"mb........bbba", -- 9
"mbb......bbmmm", -- 10
"mmbb....bbmmmm", -- 11
"mmmbbefbbmmmmm", -- 12
"mmmmb..bmmmmmm", -- 13
"mmmmb..bmmmmmm", -- 14
"mmmmajjammmmmm", -- 15
-- Level 2
"mmmmaklammmmmm", -- 0
"mmmmb..bmmmmmm", -- 1
"mmmmc..cmmmmmm", -- 2
"mmmcc..ccmmmmm", -- 3
"mmcc....ccmmmm", -- 4
"mcc......ccmmm", -- 5
"mc........ccba", -- 6
"c............k", -- 7
"c............l", -- 8
"mc........ccba", -- 9
"mcc......ccmmm", -- 10
"mmcc....ccmmmm", -- 11
"mmmcc..ccmmmmm", -- 12
"mmmmc..cmmmmmm", -- 13
"mmmmb..bmmmmmm", -- 14
"mmmmalkammmmmm", -- 15
-- Level 3
"mmmmaaaammmmmm", -- 0
"mmmmbbbbmmmmmm", -- 1
"mmmmccccmmmmmm", -- 2
"mmmcc..ccmmmmm", -- 3
"mmcc....ccmmmm", -- 4
"mcc......ccmmm", -- 5
"mc........ccba", -- 6
"c..........cba", -- 7
"c..........cba", -- 8
"mc........ccba", -- 9
"mcc......ccmmm", -- 10
"mmcc....ccmmmm", -- 11
"mmmcc..ccmmmmm", -- 12
"mmmmccccmmmmmm", -- 13
"mmmmbbbbmmmmmm", -- 14
"mmmmaaaammmmmm", -- 15
-- Level 4
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmm", -- 2
"mmmmmccmmmmmmm", -- 3
"mmmmc..cmmmmmm", -- 4
"mmmc....cmmmmm", -- 5
"mmc......cmmmm", -- 6
"mc........cmmm", -- 7
"mc........cmmm", -- 8
"mmc......cmmmm", -- 9
"mmmc....cmmmmm", -- 10
"mmmmc..cmmmmmm", -- 11
"mmmmmccmmmmmmm", -- 12
"mmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmm", -- 15
-- Level 5
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmm", -- 3
"mmmmmccmmmmmmm", -- 4
"mmmmc..cmmmmmm", -- 5
"mmmc....cmmmmm", -- 6
"mmc......cmmmm", -- 7
"mmc......cmmmm", -- 8
"mmmc....cmmmmm", -- 9
"mmmmc..cmmmmmm", -- 10
"mmmmmccmmmmmmm", -- 11
"mmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmm", -- 15
-- Level 6
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmm", -- 4
"mmmmmccmmmmmmm", -- 5
"mmmmccccmmmmmm", -- 6
"mmmccccccmmmmm", -- 7
"mmmccccccmmmmm", -- 8
"mmmmccccmmmmmm", -- 9
"mmmmmccmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmm", -- 15
},
}, -- ViewingTee
{
OriginData =
{
ExportName = "ViewingCorner",
Name = "Water 40",
GalleryName = "Water",
GalleryIndex = "40",
ID = "613",
CreatorName = "LO1ZB",
},
Size =
{
x = 14,
y = 7,
z = 14,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 6,
MaxZ = 13,
},
Connectors =
{
{
Type = 1,
RelX = 13,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 13,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 5,
RelY = 1,
RelZ = 13,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 13,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 20: 0", -- glass
"c: 5: 5", -- planks
"d: 76: 3", -- redstonetorchon
"e: 76: 1", -- redstonetorchon
"f: 64: 0", -- wooddoorblock
"g: 76: 4", -- redstonetorchon
"h: 76: 2", -- redstonetorchon
"i: 64: 1", -- wooddoorblock
"j: 64: 8", -- wooddoorblock
"k: 64: 9", -- wooddoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmm", -- 0
"mmmmaaaammmmmm", -- 1
"mmmaabbaammmmm", -- 2
"mmaabbbbaammmm", -- 3
"maabbbbbbaammm", -- 4
"mabbbbbbbbaaac", -- 5
"mabbbbbbbbaaac", -- 6
"maabbbbbbaammm", -- 7
"mmaabbbbaammmm", -- 8
"mmmaabbaammmmm", -- 9
"mmmmaaaammmmmm", -- 10
"mmmmmaammmmmmm", -- 11
"mmmmmaammmmmmm", -- 12
"mmmmmccmmmmmmm", -- 13
-- Level 1
"mmmmmaammmmmmm", -- 0
"mmmaaddaammmmm", -- 1
"mmaa....aammmm", -- 2
"maa......aammm", -- 3
"ma........aaac", -- 4
"ae........d..f", -- 5
"ae........g..f", -- 6
"ma........aaac", -- 7
"maa......aammm", -- 8
"mmaa....aammmm", -- 9
"mmmaaehaammmmm", -- 10
"mmmma..ammmmmm", -- 11
"mmmma..ammmmmm", -- 12
"mmmmciicmmmmmm", -- 13
-- Level 2
"mmmmmbbmmmmmmm", -- 0
"mmmbb..bbmmmmm", -- 1
"mmbb....bbmmmm", -- 2
"mbb......bbmmm", -- 3
"mb........bbac", -- 4
"b............j", -- 5
"b............k", -- 6
"mb........bbac", -- 7
"mbb......bbmmm", -- 8
"mmbb....bbmmmm", -- 9
"mmmbb..bbmmmmm", -- 10
"mmmmb..bmmmmmm", -- 11
"mmmma..ammmmmm", -- 12
"mmmmckjcmmmmmm", -- 13
-- Level 3
"mmmmmbbmmmmmmm", -- 0
"mmmbb..bbmmmmm", -- 1
"mmbb....bbmmmm", -- 2
"mbb......bbmmm", -- 3
"mb........bbac", -- 4
"b..........bac", -- 5
"b..........bac", -- 6
"mb........bbac", -- 7
"mbb......bbmmm", -- 8
"mmbb....bbmmmm", -- 9
"mmmbb..bbmmmmm", -- 10
"mmmmbbbbmmmmmm", -- 11
"mmmmaaaammmmmm", -- 12
"mmmmccccmmmmmm", -- 13
-- Level 4
"mmmmmmmmmmmmmm", -- 0
"mmmmmbbmmmmmmm", -- 1
"mmmmb..bmmmmmm", -- 2
"mmmb....bmmmmm", -- 3
"mmb......bmmmm", -- 4
"mb........bmmm", -- 5
"mb........bmmm", -- 6
"mmb......bmmmm", -- 7
"mmmb....bmmmmm", -- 8
"mmmmb..bmmmmmm", -- 9
"mmmmmbbmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmm", -- 13
-- Level 5
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmbbmmmmmmm", -- 2
"mmmmb..bmmmmmm", -- 3
"mmmb....bmmmmm", -- 4
"mmb......bmmmm", -- 5
"mmb......bmmmm", -- 6
"mmmb....bmmmmm", -- 7
"mmmmb..bmmmmmm", -- 8
"mmmmmbbmmmmmmm", -- 9
"mmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmm", -- 13
-- Level 6
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmm", -- 2
"mmmmmbbmmmmmmm", -- 3
"mmmmbbbbmmmmmm", -- 4
"mmmbbbbbbmmmmm", -- 5
"mmmbbbbbbmmmmm", -- 6
"mmmmbbbbmmmmmm", -- 7
"mmmmmbbmmmmmmm", -- 8
"mmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmm", -- 13
},
}, -- ViewingCorner
{
OriginData =
{
ExportName = "ViewingEnd",
Name = "Water 41",
GalleryName = "Water",
GalleryIndex = "41",
ID = "614",
CreatorName = "LO1ZB",
},
Size =
{
x = 14,
y = 7,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 6,
MaxZ = 11,
},
Connectors =
{
{
Type = 1,
RelX = 13,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 13,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "200",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 20: 0", -- glass
"c: 5: 5", -- planks
"d: 76: 3", -- redstonetorchon
"e: 76: 1", -- redstonetorchon
"f: 64: 0", -- wooddoorblock
"g: 76: 4", -- redstonetorchon
"h: 64: 8", -- wooddoorblock
"i: 64: 9", -- wooddoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmm", -- 0
"mmmmaaaammmmmm", -- 1
"mmmaabbaammmmm", -- 2
"mmaabbbbaammmm", -- 3
"maabbbbbbaammm", -- 4
"mabbbbbbbbaaac", -- 5
"mabbbbbbbbaaac", -- 6
"maabbbbbbaammm", -- 7
"mmaabbbbaammmm", -- 8
"mmmaabbaammmmm", -- 9
"mmmmaaaammmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 1
"mmmmmaammmmmmm", -- 0
"mmmaaddaammmmm", -- 1
"mmaa....aammmm", -- 2
"maa......aammm", -- 3
"ma........aaac", -- 4
"ae........d..f", -- 5
"ae........g..f", -- 6
"ma........aaac", -- 7
"maa......aammm", -- 8
"mmaa....aammmm", -- 9
"mmmaaggaammmmm", -- 10
"mmmmmaammmmmmm", -- 11
-- Level 2
"mmmmmbbmmmmmmm", -- 0
"mmmbb..bbmmmmm", -- 1
"mmbb....bbmmmm", -- 2
"mbb......bbmmm", -- 3
"mb........bbac", -- 4
"b............h", -- 5
"b............i", -- 6
"mb........bbac", -- 7
"mbb......bbmmm", -- 8
"mmbb....bbmmmm", -- 9
"mmmbb..bbmmmmm", -- 10
"mmmmmbbmmmmmmm", -- 11
-- Level 3
"mmmmmbbmmmmmmm", -- 0
"mmmbb..bbmmmmm", -- 1
"mmbb....bbmmmm", -- 2
"mbb......bbmmm", -- 3
"mb........bbac", -- 4
"b..........bac", -- 5
"b..........bac", -- 6
"mb........bbac", -- 7
"mbb......bbmmm", -- 8
"mmbb....bbmmmm", -- 9
"mmmbb..bbmmmmm", -- 10
"mmmmmbbmmmmmmm", -- 11
-- Level 4
"mmmmmmmmmmmmmm", -- 0
"mmmmmbbmmmmmmm", -- 1
"mmmmb..bmmmmmm", -- 2
"mmmb....bmmmmm", -- 3
"mmb......bmmmm", -- 4
"mb........bmmm", -- 5
"mb........bmmm", -- 6
"mmb......bmmmm", -- 7
"mmmb....bmmmmm", -- 8
"mmmmb..bmmmmmm", -- 9
"mmmmmbbmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 5
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmbbmmmmmmm", -- 2
"mmmmb..bmmmmmm", -- 3
"mmmb....bmmmmm", -- 4
"mmb......bmmmm", -- 5
"mmb......bmmmm", -- 6
"mmmb....bmmmmm", -- 7
"mmmmb..bmmmmmm", -- 8
"mmmmmbbmmmmmmm", -- 9
"mmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 6
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmm", -- 2
"mmmmmbbmmmmmmm", -- 3
"mmmmbbbbmmmmmm", -- 4
"mmmbbbbbbmmmmm", -- 5
"mmmbbbbbbmmmmm", -- 6
"mmmmbbbbmmmmmm", -- 7
"mmmmmbbmmmmmmm", -- 8
"mmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
},
}, -- ViewingEnd
{
OriginData =
{
ExportName = "ViewingCorridorBulge",
Name = "Water 42",
GalleryName = "Water",
GalleryIndex = "42",
ID = "615",
CreatorName = "LO1ZB",
},
Size =
{
x = 12,
y = 8,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 7,
MaxZ = 15,
},
Connectors =
{
{
Type = 1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 5,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 20: 0", -- glass
"d: 64: 3", -- wooddoorblock
"e: 76: 1", -- redstonetorchon
"f: 76: 2", -- redstonetorchon
"g: 64: 1", -- wooddoorblock
"h: 64: 8", -- wooddoorblock
"i: 64: 9", -- wooddoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmaammmmm", -- 0
"mmmmmbbmmmmm", -- 1
"mmmmmbbmmmmm", -- 2
"mmmmbbbbmmmm", -- 3
"mmmbbccbbmmm", -- 4
"mmbbccccbbmm", -- 5
"mbbccccccbbm", -- 6
"mbccccccccbm", -- 7
"mbccccccccbm", -- 8
"mbbccccccbbm", -- 9
"mmbbccccbbmm", -- 10
"mmmbbccbbmmm", -- 11
"mmmmbbbbmmmm", -- 12
"mmmmmbbmmmmm", -- 13
"mmmmmbbmmmmm", -- 14
"mmmmmaammmmm", -- 15
-- Level 1
"mmmmaddammmm", -- 0
"mmmmb..bmmmm", -- 1
"mmmmb..bmmmm", -- 2
"mmmbbefbbmmm", -- 3
"mmbb....bbmm", -- 4
"mbb......bbm", -- 5
"mb........bm", -- 6
"be........fb", -- 7
"be........fb", -- 8
"mb........bm", -- 9
"mbb......bbm", -- 10
"mmbb....bbmm", -- 11
"mmmbbefbbmmm", -- 12
"mmmmb..bmmmm", -- 13
"mmmmb..bmmmm", -- 14
"mmmmaggammmm", -- 15
-- Level 2
"mmmmahiammmm", -- 0
"mmmmb..bmmmm", -- 1
"mmmmc..cmmmm", -- 2
"mmmcc..ccmmm", -- 3
"mmcc....ccmm", -- 4
"mcc......ccm", -- 5
"mc........cm", -- 6
"c..........c", -- 7
"c..........c", -- 8
"mc........cm", -- 9
"mcc......ccm", -- 10
"mmcc....ccmm", -- 11
"mmmcc..ccmmm", -- 12
"mmmmc..cmmmm", -- 13
"mmmmb..bmmmm", -- 14
"mmmmaihammmm", -- 15
-- Level 3
"mmmmaaaammmm", -- 0
"mmmmbbbbmmmm", -- 1
"mmmmccccmmmm", -- 2
"mmmcc..ccmmm", -- 3
"mmcc....ccmm", -- 4
"mcc......ccm", -- 5
"mc........cm", -- 6
"c..........c", -- 7
"c..........c", -- 8
"mc........cm", -- 9
"mcc......ccm", -- 10
"mmcc....ccmm", -- 11
"mmmcc..ccmmm", -- 12
"mmmmccccmmmm", -- 13
"mmmmbbbbmmmm", -- 14
"mmmmaaaammmm", -- 15
-- Level 4
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmccmmmmm", -- 3
"mmmmc..cmmmm", -- 4
"mmmc....cmmm", -- 5
"mmc......cmm", -- 6
"mc........cm", -- 7
"mc........cm", -- 8
"mmc......cmm", -- 9
"mmmc....cmmm", -- 10
"mmmmc..cmmmm", -- 11
"mmmmmccmmmmm", -- 12
"mmmmmmmmmmmm", -- 13
"mmmmmmmmmmmm", -- 14
"mmmmmmmmmmmm", -- 15
-- Level 5
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmccmmmmm", -- 4
"mmmmc..cmmmm", -- 5
"mmmc....cmmm", -- 6
"mmc......cmm", -- 7
"mmc......cmm", -- 8
"mmmc....cmmm", -- 9
"mmmmc..cmmmm", -- 10
"mmmmmccmmmmm", -- 11
"mmmmmmmmmmmm", -- 12
"mmmmmmmmmmmm", -- 13
"mmmmmmmmmmmm", -- 14
"mmmmmmmmmmmm", -- 15
-- Level 6
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmccmmmmm", -- 5
"mmmmccccmmmm", -- 6
"mmmccccccmmm", -- 7
"mmmccccccmmm", -- 8
"mmmmccccmmmm", -- 9
"mmmmmccmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
"mmmmmmmmmmmm", -- 12
"mmmmmmmmmmmm", -- 13
"mmmmmmmmmmmm", -- 14
"mmmmmmmmmmmm", -- 15
-- Level 7
"mmmmmmmmmmmm", -- 0
"mmmmmmmmmmmm", -- 1
"mmmmmmmmmmmm", -- 2
"mmmmmmmmmmmm", -- 3
"mmmmmmmmmmmm", -- 4
"mmmmmmmmmmmm", -- 5
"mmmmmmmmmmmm", -- 6
"mmmmmmmmmmmm", -- 7
"mmmmmmmmmmmm", -- 8
"mmmmmmmmmmmm", -- 9
"mmmmmmmmmmmm", -- 10
"mmmmmmmmmmmm", -- 11
"mmmmmmmmmmmm", -- 12
"mmmmmmmmmmmm", -- 13
"mmmmmmmmmmmm", -- 14
"mmmmmmmmmmmm", -- 15
},
}, -- ViewingCorridorBulge
{
OriginData =
{
ExportName = "BrokenRoom",
Name = "Water 49",
GalleryName = "Water",
GalleryIndex = "49",
ID = "680",
CreatorName = "STR_Warrior",
},
Size =
{
x = 14,
y = 7,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 6,
MaxZ = 11,
},
Connectors =
{
{
Type = 1,
RelX = 13,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 13,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 20: 0", -- glass
"c: 5: 5", -- planks
"d: 8: 0", -- water
"e: 64: 0", -- wooddoorblock
"f: 64: 8", -- wooddoorblock
"g: 64: 9", -- wooddoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmm", -- 0
"mmmmaaaammmmmm", -- 1
"mmmaabbaammmmm", -- 2
"mmaabbbbaammmm", -- 3
"maabbbbbbaammm", -- 4
"mabbbbbbbbaaac", -- 5
"mabbbbbbbbaaac", -- 6
"maabbbbbbaammm", -- 7
"mmaabbbbaammmm", -- 8
"mmmaabbaammmmm", -- 9
"mmmmaaaammmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 1
"mmmmmaammmmmmm", -- 0
"mmmaaddaammmmm", -- 1
"mmaaddddaammmm", -- 2
"maaddddddaammm", -- 3
"maddddddddaaac", -- 4
"adddddddddddde", -- 5
"adddddddddddde", -- 6
"maddddddddaaac", -- 7
"maaddddddaammm", -- 8
"mmaaddddaammmm", -- 9
"mmmaaddaammmmm", -- 10
"mmmmmaammmmmmm", -- 11
-- Level 2
"mmmmmbbmmmmmmm", -- 0
"mmmbb..bbmmmmm", -- 1
"mmbb....bbmmmm", -- 2
"mbb......bbmmm", -- 3
"mb........bbac", -- 4
"b............f", -- 5
"b............g", -- 6
"mb........bbac", -- 7
"mbb......bbmmm", -- 8
"mmbb....bbmmmm", -- 9
"mmmbb..bbmmmmm", -- 10
"mmmmmbbmmmmmmm", -- 11
-- Level 3
"mmmmmbbmmmmmmm", -- 0
"mmmbb..bbmmmmm", -- 1
"mmbb....bbmmmm", -- 2
"mbb......bbmmm", -- 3
"mb........bbac", -- 4
"b..........bac", -- 5
"b..........bac", -- 6
"mb........bbac", -- 7
"mbb......bbmmm", -- 8
"mmbb....bbmmmm", -- 9
"mmmbb..bbmmmmm", -- 10
"mmmmmbbmmmmmmm", -- 11
-- Level 4
"mmmmmmmmmmmmmm", -- 0
"mmmmm.bmmmmmmm", -- 1
"mmmmb..bmmmmmm", -- 2
"mmmb....bmmmmm", -- 3
"mmb......bmmmm", -- 4
"m.........bmmm", -- 5
"mb........bmmm", -- 6
"mmb......bmmmm", -- 7
"mmm.....bmmmmm", -- 8
"mmmmb..bmmmmmm", -- 9
"mmmmmbbmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 5
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmbbmmmmmmm", -- 2
"mmmm....mmmmmm", -- 3
"mmmb....bmmmmm", -- 4
"mmb......bmmmm", -- 5
"mmb......bmmmm", -- 6
"mmmb.....mmmmm", -- 7
"mmmmb..bmmmmmm", -- 8
"mmmmmbbmmmmmmm", -- 9
"mmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 6
"mmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmm", -- 2
"mmmmmbbmmmmmmm", -- 3
"mmmmbbbbmmmmmm", -- 4
"mmmbbbbbbmmmmm", -- 5
"mmmbb.bbbmmmmm", -- 6
"mmmmbbbbmmmmmm", -- 7
"mmmmmbbmmmmmmm", -- 8
"mmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmm", -- 11
},
}, -- BrokenRoom
{
OriginData =
{
ExportName = "WaterfallRoom",
Name = "Water 50",
GalleryName = "Water",
GalleryIndex = "50",
ID = "681",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 7,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 6,
MaxZ = 15,
},
Connectors =
{
{
Type = 1,
RelX = 15,
RelY = 1,
RelZ = 8,
Direction = 5, -- X+
},
{
Type = -1,
RelX = 15,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
{
Type = 1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 1,
RelX = 0,
RelY = 1,
RelZ = 7,
Direction = 4, -- X-
},
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 8,
Direction = 4, -- X-
},
{
Type = 1,
RelX = 7,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "5",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 5", -- planks
"b: 5: 0", -- planks
"c: 20: 0", -- glass
"d: 64: 3", -- wooddoorblock
"e: 76: 1", -- redstonetorchon
"f: 76: 2", -- redstonetorchon
"g: 64: 2", -- wooddoorblock
"h: 76: 3", -- redstonetorchon
"i: 64: 0", -- wooddoorblock
"j: 76: 4", -- redstonetorchon
"k: 64: 1", -- wooddoorblock
"l: 64: 8", -- wooddoorblock
"m: 19: 0", -- sponge
"n: 64: 9", -- wooddoorblock
},
BlockData =
{
-- Level 0
"mmmmmmmaammmmmmm", -- 0
"mmmmmmmbbmmmmmmm", -- 1
"mmmmmmmbbmmmmmmm", -- 2
"mmmmmmbbbbmmmmmm", -- 3
"mmmmmbbccbbmmmmm", -- 4
"mmmmbbccccbbmmmm", -- 5
"mmmbbccccccbbmmm", -- 6
"abbbcccmmcccbbba", -- 7
"abbbcccmmcccbbba", -- 8
"mmmbbccccccbbmmm", -- 9
"mmmmbbccccbbmmmm", -- 10
"mmmmmbbccbbmmmmm", -- 11
"mmmmmmbbbbmmmmmm", -- 12
"mmmmmmmbbmmmmmmm", -- 13
"mmmmmmmbbmmmmmmm", -- 14
"mmmmmmmaammmmmmm", -- 15
-- Level 1
"mmmmmmaddammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmb..bmmmmmm", -- 2
"mmmmmbbefbbmmmmm", -- 3
"mmmmbb....bbmmmm", -- 4
"mmmbb......bbmmm", -- 5
"abbb...cc...bbba", -- 6
"g..h..c..c..h..i", -- 7
"g..j..c..c..j..i", -- 8
"abbb...cc...bbba", -- 9
"mmmbb......bbmmm", -- 10
"mmmmbb....bbmmmm", -- 11
"mmmmmbbefbbmmmmm", -- 12
"mmmmmmb..bmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmakkammmmmm", -- 15
-- Level 2
"mmmmmmalnammmmmm", -- 0
"mmmmmmb..bmmmmmm", -- 1
"mmmmmmc..cmmmmmm", -- 2
"mmmmmcc..ccmmmmm", -- 3
"mmmmcc....ccmmmm", -- 4
"mmmcc......ccmmm", -- 5
"abcc........ccba", -- 6
"n..............l", -- 7
"l..............n", -- 8
"abcc........ccba", -- 9
"mmmcc......ccmmm", -- 10
"mmmmcc....ccmmmm", -- 11
"mmmmmcc..ccmmmmm", -- 12
"mmmmmmc..cmmmmmm", -- 13
"mmmmmmb..bmmmmmm", -- 14
"mmmmmmanlammmmmm", -- 15
-- Level 3
"mmmmmmaaaammmmmm", -- 0
"mmmmmmbbbbmmmmmm", -- 1
"mmmmmmccccmmmmmm", -- 2
"mmmmmcc..ccmmmmm", -- 3
"mmmmcc....ccmmmm", -- 4
"mmmcc......ccmmm", -- 5
"abcc........ccba", -- 6
"abc..........cba", -- 7
"abc..........cba", -- 8
"abcc........ccba", -- 9
"mmmcc......ccmmm", -- 10
"mmmmcc....ccmmmm", -- 11
"mmmmmcc..ccmmmmm", -- 12
"mmmmmmccccmmmmmm", -- 13
"mmmmmmbbbbmmmmmm", -- 14
"mmmmmmaaaammmmmm", -- 15
-- Level 4
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmccmmmmmmm", -- 3
"mmmmm.c..cmmmmmm", -- 4
"mmmmmc....cmmmmm", -- 5
"mmmmc......cmmmm", -- 6
"mmmc........cmmm", -- 7
"mmmc........cmmm", -- 8
"mmmmc......cmmmm", -- 9
"mmmmmc....cmmmmm", -- 10
"mmmmmmc..cmmmmmm", -- 11
"mmmmmmmccmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 5
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmm.ccmmmmmmm", -- 4
"mmmmmmc..cmmmmmm", -- 5
"mmmmmc....cmmmmm", -- 6
"mmmmc......cmmmm", -- 7
"mmmmc......cmmmm", -- 8
"mmmmmc....cmmmmm", -- 9
"mmmmmmc..cmmmmmm", -- 10
"mmmmmmmccmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 6
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmmm", -- 4
"mmmmmmmccmmmmmmm", -- 5
"mmmmmmccccmmmmmm", -- 6
"mmmmmcc..ccmmmmm", -- 7
"mmmmmcc..ccmmmmm", -- 8
"mmmmmmccccmmmmmm", -- 9
"mmmmmmmccmmmmmmm", -- 10
"mmmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmmm", -- 14
"mmmmmmmmmmmmmmmm", -- 15
},
}, -- WaterfallRoom
}, -- Pieces
}
================================================
FILE: Server/Prefabs/SinglePieceStructures/DesertPyramid.cubeset
================================================
-- DesertPyramid.cubeset
-- Defines the prefabs in the group DesertPyramid
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2020-08-27 10:42:17",
["AllowedBiomes"] = "Desert, DesertM, DesertHills",
["GridSizeX"] = "500",
["GridSizeZ"] = "500",
["IntendedUse"] = "SinglePieceStructures",
["MaxOffsetX"] = "100",
["MaxOffsetZ"] = "100",
["SeedOffset"] = "47260503",
},
Pieces =
{
{
OriginData =
{
ExportName = "DesertPyramid",
Name = "DesertPyramid",
GalleryName = "Desert",
GalleryIndex = "222",
ID = "1706",
CreatorName = "12xx12",
},
Size =
{
x = 15,
y = 23,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 22,
MaxZ = 14,
},
StructureBox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 22,
MaxZ = 14,
},
Connectors =
{
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "400",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillNonAir",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["ShouldExpandFloor"] = "1",
["VerticalStrategy"] = "Fixed|51",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 46: 0", -- tnt
"b: 24: 0", -- sandstone
"c: 24: 2", -- sandstone
"d: 24: 1", -- sandstone
"e: 54: 3", -- chest
"f: 54: 5", -- chest
"g: 70: 0", -- stonepressureplate
"h: 54: 4", -- chest
"i: 54: 2", -- chest
"j:128: 7", -- sandstonestairs
"k:128: 5", -- sandstonestairs
"l:128: 4", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:159: 1", -- whiteterracotta
"p:159:11", -- whiteterracotta
"q:128: 3", -- sandstonestairs
"r:128: 2", -- sandstonestairs
"s:128: 0", -- sandstonestairs
"t:128: 1", -- sandstonestairs
"u: 44: 9", -- stone_slab
"v: 44: 1", -- stone_slab
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmbmmmmmmm", -- 5
"mmmmmmcccmmmmmm", -- 6
"mmmmmbcbcbmmmmm", -- 7
"mmmmmmcccmmmmmm", -- 8
"mmmmmmmbmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmbmmmmmmm", -- 4
"mmmmmmdedmmmmmm", -- 5
"mmmmmd...dmmmmm", -- 6
"mmmmbf.g.hbmmmm", -- 7
"mmmmmd...dmmmmm", -- 8
"mmmmmmdidmmmmmm", -- 9
"mmmmmmmbmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmcjcmmmmmm", -- 5
"mmmmmc...cmmmmm", -- 6
"mmmmmk...lmmmmm", -- 7
"mmmmmc...cmmmmm", -- 8
"mmmmmmcncmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmdcdmmmmmm", -- 5
"mmmmmd...dmmmmm", -- 6
"mmmmmc...cmmmmm", -- 7
"mmmmmd...dmmmmm", -- 8
"mmmmmmdcdmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmcccmmmmmm", -- 5
"mmmmmc...cmmmmm", -- 6
"mmmmmc...cmmmmm", -- 7
"mmmmmc...cmmmmm", -- 8
"mmmmmmcccmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 6
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmcdcmmmmmm", -- 5
"mmmmmc...cmmmmm", -- 6
"mmmmmd...dmmmmm", -- 7
"mmmmmc...cmmmmm", -- 8
"mmmmmmcdcmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 7
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmdcdmmmmmm", -- 5
"mmmmmd...dmmmmm", -- 6
"mmmmmc...cmmmmm", -- 7
"mmmmmd...dmmmmm", -- 8
"mmmmmmdcdmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 8
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbbbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbbbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbbbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 11
"bbbbbbbbbbbbbbb", -- 0
"bbbbbbbbbbbbbbb", -- 1
"bbbbbbbbbbbbbbb", -- 2
"bbbbbbbbbbbbbbb", -- 3
"bbbbobobbbobbbb", -- 4
"bbbbbobbbobbbbb", -- 5
"bbbbbbobobbbbbb", -- 6
"bbbbbbbpbbbbbbb", -- 7
"bbbbbbobobbbbbb", -- 8
"bbbbbobbbobbbbb", -- 9
"bbbbobobbbobbbb", -- 10
"bbbbbbbbbbbbbbb", -- 11
"bbbbbbbbbbbbbbb", -- 12
"bbbbbbbbbbbbbbb", -- 13
"bbbbbbbbbbbbbbb", -- 14
-- Level 12
"bbbbbbbbbbbbbbb", -- 0
"b.........bbbbb", -- 1
"b.........bq.bb", -- 2
"b.........b..bb", -- 3
"b....r.....b.bb", -- 4
"b...sbt.......b", -- 5
"b....q........b", -- 6
"b..............", -- 7
"b....r........b", -- 8
"b...sbt.......b", -- 9
"b....q.....b.bb", -- 10
"b.........b..bb", -- 11
"b.........br.bb", -- 12
"b.........bbbbb", -- 13
"bbbbbbbbbbbbbbb", -- 14
-- Level 13
"bbbbbbbbbbbbbbb", -- 0
"b.........b.sbb", -- 1
"b.........b..bo", -- 2
"b.........b..bb", -- 3
"b..........b.bb", -- 4
"b....b........b", -- 5
"b.............b", -- 6
"b..............", -- 7
"b.............b", -- 8
"b....b........b", -- 9
"b..........b.bb", -- 10
"b.........b..bb", -- 11
"b.........b..bo", -- 12
"b.........b.sbb", -- 13
"bbbbbbbbbbbbbbb", -- 14
-- Level 14
"mmmmmmmmmmbbbbb", -- 0
"mbbbbbbbbbb...b", -- 1
"mbu......ub..ro", -- 2
"mb........b.ubb", -- 3
"mb.........bbbb", -- 4
"mb...b......ubv", -- 5
"mb..........ubb", -- 6
"mb...........ub", -- 7
"mb..........ubb", -- 8
"mb...b......ubv", -- 9
"mb.........bbbb", -- 10
"mb........b.ubb", -- 11
"mbu......ub..qo", -- 12
"mbbbbbbbbbb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 15
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmbbbbbbbbbb..o", -- 2
"mmbbbbbbbbbbt.b", -- 3
"mmbbbbbbbbbbbbb", -- 4
"mmbbbbbbbbbbbmm", -- 5
"mmbbbb...bbbbvm", -- 6
"mmbbbb...bbbbbv", -- 7
"mmbbbb...bbbbvm", -- 8
"mmbbbbbbbbbbbmm", -- 9
"mmbbbbbbbbbbbbb", -- 10
"mmbbbbbbbbbbt.b", -- 11
"mmbbbbbbbbbb..o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 16
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmm....o", -- 2
"mmmbbbb.bbb...b", -- 3
"mmmbu.....ubbbb", -- 4
"mmmb.b.....bmmm", -- 5
"mmmb.......bmmm", -- 6
"mmmb.......bvmm", -- 7
"mmmb.......bmmm", -- 8
"mmmb.b.....bmmm", -- 9
"mmmbu.....ubbbb", -- 10
"mmmbbbb.bbb...b", -- 11
"mmmmmmmmmm....o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 17
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmm....o", -- 2
"mmmmmmbmbmb...b", -- 3
"mmmmbbb.bbbbbbb", -- 4
"mmmmbb....bmmmm", -- 5
"mmmmb.....bmmmm", -- 6
"mmmmb.....bmmmm", -- 7
"mmmmb.....bmmmm", -- 8
"mmmmbb....bmmmm", -- 9
"mmmmbbb.bbbbbbb", -- 10
"mmmmmmbmbmb...b", -- 11
"mmmmmmmmmm....o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 18
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...o", -- 1
"mmmmmmmmmmb...o", -- 2
"mmmmmmmvmmb...o", -- 3
"mmmmmmvbvmbbbbb", -- 4
"mmmmmbbbbbmmmmm", -- 5
"mmmmmbu.ubmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmbu.ubmmmmm", -- 8
"mmmmmbbbbbmmmmm", -- 9
"mmmmmmvbvmbbbbb", -- 10
"mmmmmmmvmmb...o", -- 11
"mmmmmmmmmmb...o", -- 12
"mmmmmmmmmmb...o", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 19
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmmb...o", -- 2
"mmmmmmmmmmb...b", -- 3
"mmmmmmmmmmbbbbb", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmbbbmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmbbbbb", -- 10
"mmmmmmmmmmb...b", -- 11
"mmmmmmmmmmb...o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 20
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmmb...b", -- 2
"mmmmmmmmmmb...b", -- 3
"mmmmmmmmmmbbbbb", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmbmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmbbbbb", -- 10
"mmmmmmmmmmb...b", -- 11
"mmmmmmmmmmb...b", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 21
"mmmmmmmmmmvrvrv", -- 0
"mmmmmmmmmmsbbbt", -- 1
"mmmmmmmmmmvbbbv", -- 2
"mmmmmmmmmmsbbbt", -- 3
"mmmmmmmmmmvqvqv", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmvrvrv", -- 10
"mmmmmmmmmmsbbbt", -- 11
"mmmmmmmmmmvbbbv", -- 12
"mmmmmmmmmmsbbbt", -- 13
"mmmmmmmmmmvqvqv", -- 14
-- Level 22
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmvmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmvmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
},
}, -- DesertPyramid
{
OriginData =
{
ExportName = "SandyDesertPyramid",
Name = "SandyDesertPyramid",
GalleryName = "Desert",
GalleryIndex = "223",
ID = "1707",
CreatorName = "12xx12",
},
Size =
{
x = 15,
y = 23,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 22,
MaxZ = 14,
},
StructureBox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 22,
MaxZ = 14,
},
Connectors =
{
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillNonAir",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["ShouldExpandFloor"] = "1",
["VerticalStrategy"] = "Fixed|51",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 46: 0", -- tnt
"b: 24: 0", -- sandstone
"c: 24: 2", -- sandstone
"d: 54: 3", -- chest
"e: 54: 5", -- chest
"f: 70: 0", -- stonepressureplate
"g: 54: 4", -- chest
"h: 54: 2", -- chest
"i:128: 7", -- sandstonestairs
"j:128: 5", -- sandstonestairs
"k:128: 4", -- sandstonestairs
"l:128: 6", -- sandstonestairs
"m: 19: 0", -- sponge
"n: 24: 1", -- sandstone
"o:159: 1", -- whiteterracotta
"p:159:11", -- whiteterracotta
"q:128: 3", -- sandstonestairs
"r: 12: 0", -- sand
"s:128: 2", -- sandstonestairs
"t:128: 0", -- sandstonestairs
"u:128: 1", -- sandstonestairs
"v: 44: 9", -- stone_slab
"w: 44: 1", -- stone_slab
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmaaammmmmm", -- 6
"mmmmmmaaammmmmm", -- 7
"mmmmmmaaammmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 1
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmbmmmmmmm", -- 5
"mmmmmmcccmmmmmm", -- 6
"mmmmmbcbcbmmmmm", -- 7
"mmmmmmcccmmmmmm", -- 8
"mmmmmmmbmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 2
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmbmmmmmmm", -- 4
"mmmmmmbdbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmbe.f.gbmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbhbmmmmmm", -- 9
"mmmmmmmbmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 3
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbibmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmj...kmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmblbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 4
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmnbnmmmmmm", -- 5
"mmmmmn...nmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmn...nmmmmm", -- 8
"mmmmmmnbnmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 5
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmcccmmmmmm", -- 5
"mmmmmc...cmmmmm", -- 6
"mmmmmc...cmmmmm", -- 7
"mmmmmc...cmmmmm", -- 8
"mmmmmmcccmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 6
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmcncmmmmmm", -- 5
"mmmmmc...cmmmmm", -- 6
"mmmmmn...nmmmmm", -- 7
"mmmmmc...cmmmmm", -- 8
"mmmmmmcncmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 7
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmncnmmmmmm", -- 5
"mmmmmn...nmmmmm", -- 6
"mmmmmc...cmmmmm", -- 7
"mmmmmn...nmmmmm", -- 8
"mmmmmmncnmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 8
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbbbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 9
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbbbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 10
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmmmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmbbbmmmmmm", -- 5
"mmmmmb...bmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmb...bmmmmm", -- 8
"mmmmmmbbbmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
-- Level 11
"bbbbbbbbbbbbbbb", -- 0
"bbbbbbbbbbbbbbb", -- 1
"bbbbbbbbbbbbbbb", -- 2
"bbbbbbbbbbbbbbb", -- 3
"bbbbobobbbobbbb", -- 4
"bbbbbobbbobbbbb", -- 5
"bbbbbbobobbbbbb", -- 6
"bbbbbbbpbbbbbbb", -- 7
"bbbbbbobobbbbbb", -- 8
"bbbbbobbbobbbbb", -- 9
"bbbbobobbbobbbb", -- 10
"bbbbbbbbbbbbbbb", -- 11
"bbbbbbbbbbbbbbb", -- 12
"bbbbbbbbbbbbbbb", -- 13
"bbbbbbbbbbbbbbb", -- 14
-- Level 12
"bbbbbbbbbbbbbbb", -- 0
"b.........bbbbb", -- 1
"b.........bqrbb", -- 2
"b......rr.b..bb", -- 3
"b....s...r.b.bb", -- 4
"b...tburr.....b", -- 5
"b...rqrrrr..rrb", -- 6
"b....rrrrrr.rrr", -- 7
"b....srrrr..rrb", -- 8
"b...tbu.r.r...b", -- 9
"b....q.r...b.bb", -- 10
"b.........b..bb", -- 11
"b.........bsrbb", -- 12
"b.........bbbbb", -- 13
"bbbbbbbbbbbbbbb", -- 14
-- Level 13
"bbbbbbbbbbbbbbb", -- 0
"b.........brtbb", -- 1
"b.........b.rbo", -- 2
"b.........b..bb", -- 3
"b..........b.bb", -- 4
"b....b........b", -- 5
"b......rr....rb", -- 6
"b.....rrrr...rr", -- 7
"b......rr.....b", -- 8
"b....b........b", -- 9
"b..........b.bb", -- 10
"b.........b..bb", -- 11
"b.........b.rbo", -- 12
"b.........brtbb", -- 13
"bbbbbbbbbbbbbbb", -- 14
-- Level 14
"mmmmmmmmmmbbbbb", -- 0
"mbbbbbbbbbbrrrb", -- 1
"mbv......vb.rso", -- 2
"mb........b.vbb", -- 3
"mb.........bbbb", -- 4
"mb...b......vbw", -- 5
"mb......r...vbb", -- 6
"mb....r......vb", -- 7
"mb.....r....vbb", -- 8
"mb...b......vbw", -- 9
"mb.........bbbb", -- 10
"mb........b.vbb", -- 11
"mbv......vb.rqo", -- 12
"mbbbbbbbbbbrrrb", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 15
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmbr..b", -- 1
"mmbbbbbbbbbbr.o", -- 2
"mmbbbbbbbbbburb", -- 3
"mmbbbbbbbbbbbbb", -- 4
"mmbbbbbbbbbbbmm", -- 5
"mmbbbb..rbbbbwm", -- 6
"mmbbbbr..bbbbbw", -- 7
"mmbbbb.r.bbbbwm", -- 8
"mmbbbbbbbbbbbmm", -- 9
"mmbbbbbbbbbbbbb", -- 10
"mmbbbbbbbbbburb", -- 11
"mmbbbbbbbbbbrro", -- 12
"mmmmmmmmmmbrr.b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 16
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmrmmrr..o", -- 2
"mmmbbbbrbbbrr.b", -- 3
"mmmbvrrrrrvbbbb", -- 4
"mmmb.brrrr.bmmm", -- 5
"mmmb.r...rrbmmm", -- 6
"mmmbrr...rrbwmm", -- 7
"mmmbrr...rrbmmm", -- 8
"mmmb.brrrrrbmmm", -- 9
"mmmbv.rrrrvbbbb", -- 10
"mmmbbbbrbbbrr.b", -- 11
"mmmmmmmmmrrrr.o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 17
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmmrr..o", -- 2
"mmmmmmbrbrb...b", -- 3
"mmmmbbbrbbbbbbb", -- 4
"mmmmbb.r..bmmmm", -- 5
"mmmmb.....bmmmm", -- 6
"mmmmbr....bmmmm", -- 7
"mmmmb.....bmmmm", -- 8
"mmmmbb..r.bmmmm", -- 9
"mmmmbbbrbbbbbbb", -- 10
"mmmmmmbrbmb.r.b", -- 11
"mmmmmmmmmmrr..o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 18
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...o", -- 1
"mmmmmmmmmmb...o", -- 2
"mmmmmmmwmmb...o", -- 3
"mmmmmmwbwmbbbbb", -- 4
"mmmmmbbbbbmmmmm", -- 5
"mmmmmbv.vbmmmmm", -- 6
"mmmmmb...bmmmmm", -- 7
"mmmmmbv.vbmmmmm", -- 8
"mmmmmbbbbbmmmmm", -- 9
"mmmmmmwbwmbbbbb", -- 10
"mmmmmmmwmmb...o", -- 11
"mmmmmmmmmmb...o", -- 12
"mmmmmmmmmmb...o", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 19
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmmb...o", -- 2
"mmmmmmmmmmb...b", -- 3
"mmmmmmmmmmbbbbb", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmbbbmmmmmm", -- 6
"mmmmmmb.bmmmmmm", -- 7
"mmmmmmbbbmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmbbbbb", -- 10
"mmmmmmmmmmb...b", -- 11
"mmmmmmmmmmb...o", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 20
"mmmmmmmmmmbbbbb", -- 0
"mmmmmmmmmmb...b", -- 1
"mmmmmmmmmmb...b", -- 2
"mmmmmmmmmmb...b", -- 3
"mmmmmmmmmmbbbbb", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmbbbbb", -- 10
"mmmmmmmmmmb...b", -- 11
"mmmmmmmmmmb...b", -- 12
"mmmmmmmmmmb...b", -- 13
"mmmmmmmmmmbbbbb", -- 14
-- Level 21
"mmmmmmmmmmwswsw", -- 0
"mmmmmmmmmmtbbbu", -- 1
"mmmmmmmmmmwbbbw", -- 2
"mmmmmmmmmmtbbbu", -- 3
"mmmmmmmmmmwqwqw", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmwswsw", -- 10
"mmmmmmmmmmtbbbu", -- 11
"mmmmmmmmmmwbbbw", -- 12
"mmmmmmmmmmtbbbu", -- 13
"mmmmmmmmmmwqwqw", -- 14
-- Level 22
"mmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmm", -- 1
"mmmmmmmmmmmmwmm", -- 2
"mmmmmmmmmmmmmmm", -- 3
"mmmmmmmmmmmmmmm", -- 4
"mmmmmmmmmmmmmmm", -- 5
"mmmmmmmmmmmmmmm", -- 6
"mmmmmmmmmmmmmmm", -- 7
"mmmmmmmmmmmmmmm", -- 8
"mmmmmmmmmmmmmmm", -- 9
"mmmmmmmmmmmmmmm", -- 10
"mmmmmmmmmmmmmmm", -- 11
"mmmmmmmmmmmmwmm", -- 12
"mmmmmmmmmmmmmmm", -- 13
"mmmmmmmmmmmmmmm", -- 14
},
}, -- SandyDesertPyramid
}, -- Pieces
}
================================================
FILE: Server/Prefabs/SinglePieceStructures/DesertWell.cubeset
================================================
-- DesertWell.cubeset
-- Defines the prefabs in the group DesertWell
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2020-08-27 10:42:17",
["AllowedBiomes"] = "Desert, DesertM, DesertHills",
["GridSizeX"] = "750",
["GridSizeZ"] = "750",
["IntendedUse"] = "SinglePieceStructures",
["MaxOffsetX"] = "100",
["MaxOffsetZ"] = "100",
["SeedOffset"] = "58612835",
},
Pieces =
{
{
OriginData =
{
ExportName = "DesertWell",
Name = "DesertWell",
GalleryName = "Desert",
GalleryIndex = "221",
ID = "1702",
CreatorName = "12xx12",
},
Size =
{
x = 5,
y = 6,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 5,
MaxZ = 4,
},
StructureBox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 5,
MaxZ = 4,
},
Connectors =
{
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillNonAir",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "TerrainOrOceanTop|-3",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b: 8: 0", -- water
"c: 44: 1", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"aaaaa", -- 0
"aaaaa", -- 1
"aabaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 2
"aacaa", -- 0
"aa.aa", -- 1
"c...c", -- 2
"aa.aa", -- 3
"aacaa", -- 4
-- Level 3
"mmmmm", -- 0
"ma.am", -- 1
"m...m", -- 2
"ma.am", -- 3
"mmmmm", -- 4
-- Level 4
"mmmmm", -- 0
"ma.am", -- 1
"m...m", -- 2
"ma.am", -- 3
"mmmmm", -- 4
-- Level 5
"mmmmm", -- 0
"mcccm", -- 1
"mcacm", -- 2
"mcccm", -- 3
"mmmmm", -- 4
},
}, -- DesertWell
}, -- Pieces
}
================================================
FILE: Server/Prefabs/SinglePieceStructures/JungleTemple.cubeset
================================================
-- JungleTemple.cubeset
-- Defines the prefabs in the group JungleTemple
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2020-08-27 10:42:17",
["AllowedBiomes"] = "Jungle, JungleHills, BambooJungle, BambooJungleHills",
["GridSizeX"] = "750",
["GridSizeZ"] = "750",
["IntendedUse"] = "SinglePieceStructures",
["MaxOffsetX"] = "100",
["MaxOffsetZ"] = "100",
["SeedOffset"] = "64775119",
},
Pieces =
{
{
OriginData =
{
ExportName = "JungleTemple_1703",
Name = "JungleTemple",
GalleryName = "Cube",
GalleryIndex = "162",
ID = "1703",
CreatorName = "12xx12",
},
Size =
{
x = 12,
y = 14,
z = 15,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 13,
MaxZ = 14,
},
StructureBox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 13,
MaxZ = 14,
},
Connectors =
{
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillNonAir",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "TerrainOrOceanTop|-4",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 48: 0", -- mossycobblestone
"b: 4: 0", -- cobblestone
"c: 54: 3", -- chest
"d: 67: 2", -- stonestairs
"e:131: 3", -- tripwirehook
"f:132: 0", -- tripwire
"g:131: 1", -- tripwirehook
"h: 55: 0", -- redstonewire
"i:131: 0", -- tripwirehook
"j: 54: 5", -- chest
"k:131: 2", -- tripwirehook
"l: 69:12", -- lever
"m: 19: 0", -- sponge
"n: 98: 3", -- stonebricks
"o: 93: 2", -- unpoweredrepeater
"p: 29: 5", -- stickypiston
"q: 29: 1", -- stickypiston
"r: 23: 5", -- dispenser
"s: 23: 2", -- dispenser
"t: 67: 7", -- stonestairs
"u: 67: 3", -- stonestairs
},
BlockData =
{
-- Level 0
"aabbbbbaabaa", -- 0
"aaaaaaaaaaaa", -- 1
"babbbaaaaaab", -- 2
"baabaaababaa", -- 3
"aaabaabbbaaa", -- 4
"babaabbaabba", -- 5
"bbabaaabbaab", -- 6
"baabbbabaaaa", -- 7
"bbbaaaabaaaa", -- 8
"bbaabbaaaaab", -- 9
"abaaabababbb", -- 10
"bbaaaaabbaba", -- 11
"abaaababbaaa", -- 12
"aaaabaabbaab", -- 13
"aabaabaaaaab", -- 14
-- Level 1
"abaaaabbaabb", -- 0
"a.........ab", -- 1
"a..........b", -- 2
"aabab..a..aa", -- 3
"abcaa..a...a", -- 4
"aa.bbddb..ab", -- 5
"ba.aaabeffgb", -- 6
"ba.babhb..bb", -- 7
"bbhhaahb...a", -- 8
"aahaiaha..ab", -- 9
"aaa.f.h....b", -- 10
"abj.f.h...aa", -- 11
"baa.f.h....b", -- 12
"aa.akahha.ba", -- 13
"aababaaabaab", -- 14
-- Level 2
"abaaaabbabaa", -- 0
"b.........ab", -- 1
"alll.......b", -- 2
"bnnnb..a..bb", -- 3
"bo.hb..a...a", -- 4
"aa.hb..b..ba", -- 5
"apq.bdda..ab", -- 6
"baaaaabb..ba", -- 7
"aaaaba.a...a", -- 8
"ba..a.....ba", -- 9
"bbh........b", -- 10
"abr.......bb", -- 11
"ab.........b", -- 12
"babba.basbba", -- 13
"aaaaaaaaabaa", -- 14
-- Level 3
"baaaaaaaaaba", -- 0
"b..........b", -- 1
"a.......baaa", -- 2
"aaaba..a...a", -- 3
"b...a..aaaab", -- 4
"bh..b..a...b", -- 5
"ap..b..abaaa", -- 6
"aaaaadda...a", -- 7
"abbaatabbaaa", -- 8
"aaa.a.a....a", -- 9
"aab.....abbb", -- 10
"bba........a", -- 11
"aab.....baba", -- 12
"aab..b.....b", -- 13
"abaababbabaa", -- 14
-- Level 4
"baaabaaaaaaa", -- 0
"baabbbaabbaa", -- 1
"aaabbababaaa", -- 2
"aaaaababbaaa", -- 3
"aaabaabbabba", -- 4
"aabbb..bbaab", -- 5
"aabab..babba", -- 6
"aaabb..baaaa", -- 7
"babaaddababb", -- 8
"abaaabaabbbb", -- 9
"abaabaaaabaa", -- 10
"bbaabaaaaaaa", -- 11
"bbbbaabbbbaa", -- 12
"aaaaaaaaabab", -- 13
"bbaauuuuaaaa", -- 14
-- Level 5
"............", -- 0
"............", -- 1
"..bbabbbab..", -- 2
"..a......b..", -- 3
"..a.abab.b..", -- 4
"..a.a..b.b..", -- 5
"..a.u..u.a..", -- 6
"..a......b..", -- 7
"..b......a..", -- 8
"..b......b..", -- 9
"..a......a..", -- 10
"..a......b..", -- 11
"..aaa..baa..", -- 12
"............", -- 13
"............", -- 14
-- Level 6
"............", -- 0
"............", -- 1
"..bab..aaa..", -- 2
"..b......a..", -- 3
"..a......a..", -- 4
"..a......b..", -- 5
"..a......a..", -- 6
"..a......a..", -- 7
"..b......b..", -- 8
"..a......a..", -- 9
"..b......b..", -- 10
"..b......b..", -- 11
"..aaa..bbb..", -- 12
"............", -- 13
"............", -- 14
-- Level 7
"............", -- 0
".aababaabaa.", -- 1
".bbbabbaabb.", -- 2
".babbbaabbb.", -- 3
".baataataaa.", -- 4
".aab....aaa.", -- 5
".baa....aaa.", -- 6
".aaa....aab.", -- 7
".aab....aab.", -- 8
".aaabaabbab.", -- 9
".abbaababaa.", -- 10
".ababbaabba.", -- 11
".aabaaaabba.", -- 12
".babbbabaaa.", -- 13
"............", -- 14
-- Level 8
"..b.a..b.b..", -- 0
".bbaabaaabb.", -- 1
"bb........bb", -- 2
".a........b.", -- 3
"aa........ba", -- 4
".a........b.", -- 5
"bb........ab", -- 6
".b........a.", -- 7
"aa........ba", -- 8
".a..daad..a.", -- 9
"aa........ba", -- 10
".a........a.", -- 11
"ab........bb", -- 12
".baaababaab.", -- 13
"..a.a..b.a..", -- 14
-- Level 9
"..a.a..b.a..", -- 0
".bbba..aaaa.", -- 1
"bb........bb", -- 2
".a........a.", -- 3
"bb........aa", -- 4
"............", -- 5
"ab........bb", -- 6
".a........b.", -- 7
"bb........bb", -- 8
"............", -- 9
"ab........bb", -- 10
".a........a.", -- 11
"bb........bb", -- 12
".aaba..babb.", -- 13
"..b.a..a.a..", -- 14
-- Level 10
"............", -- 0
".bbabababab.", -- 1
".abaabbaaab.", -- 2
".aabbaaaabb.", -- 3
".aaaaaaabba.", -- 4
"abab....abaa", -- 5
".aab....aaa.", -- 6
".aba....baa.", -- 7
".baa....abb.", -- 8
"aabb....baab", -- 9
".baaababbaa.", -- 10
".ababaaaaaa.", -- 11
".ababaaaaba.", -- 12
".aaaabaabaa.", -- 13
".....ba.....", -- 14
-- Level 11
"............", -- 0
"............", -- 1
"..a......b..", -- 2
"...abbbab...", -- 3
"...aaaaab...", -- 4
"...bbaabb...", -- 5
"...aa..ba...", -- 6
"...ab..bb...", -- 7
"...aa..aa...", -- 8
"...aaaaaa...", -- 9
"...baaaba...", -- 10
"...ababaa...", -- 11
"..b......a..", -- 12
"............", -- 13
"............", -- 14
-- Level 12
"............", -- 0
"............", -- 1
"..a......a..", -- 2
"............", -- 3
"....abaa....", -- 4
"....baab....", -- 5
"....bbab....", -- 6
"....baab....", -- 7
"....bbaa....", -- 8
"....abaa....", -- 9
"....baba....", -- 10
"............", -- 11
"..b......a..", -- 12
"............", -- 13
"............", -- 14
-- Level 13
"............", -- 0
"............", -- 1
"..a......a..", -- 2
"............", -- 3
"....a..b....", -- 4
"............", -- 5
".....dd.....", -- 6
".....ab.....", -- 7
".....uu.....", -- 8
"............", -- 9
"....b..b....", -- 10
"............", -- 11
"..b......b..", -- 12
"............", -- 13
"............", -- 14
},
}, -- JungleTemple_1703
}, -- Pieces
}
================================================
FILE: Server/Prefabs/SinglePieceStructures/WitchHut.cubeset
================================================
-- WitchHut.cubeset
-- Defines the prefabs in the group WitchHut
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2020-08-27 10:42:17",
["AllowedBiomes"] = "Swampland, SwamplandM",
["GridSizeX"] = "750",
["GridSizeZ"] = "750",
["IntendedUse"] = "SinglePieceStructures",
["MaxOffsetX"] = "100",
["MaxOffsetZ"] = "100",
["SeedOffset"] = "4136893",
},
Pieces =
{
{
OriginData =
{
ExportName = "WitchHut",
Name = "WitchHut",
GalleryName = "Cube",
GalleryIndex = "161",
ID = "1704",
CreatorName = "12xx12",
},
Size =
{
x = 9,
y = 5,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 8,
MaxY = 4,
MaxZ = 6,
},
StructureBox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 8,
MaxY = 4,
MaxZ = 6,
},
Connectors =
{
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillNonAir",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
["VerticalStrategy"] = "TerrainOrOceanTop",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 17: 0", -- tree
"b: 5: 1", -- planks
"c: 85: 0", -- fence
"d:118: 0", -- cauldronblock
"e: 58: 0", -- workbench
"f:140: 0", -- flowerpotblock
"g:134: 2", -- sprucewoodstairs
"h:134: 0", -- sprucewoodstairs
"i:134: 1", -- sprucewoodstairs
"j:134: 3", -- sprucewoodstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
".........", -- 0
".a....a..", -- 1
".........", -- 2
".........", -- 3
".........", -- 4
".a....a..", -- 5
".........", -- 6
-- Level 1
".........", -- 0
".abbbbab.", -- 1
".bbbbbbbb", -- 2
".bbbbbbbb", -- 3
".bbbbbbbb", -- 4
".abbbbab.", -- 5
".........", -- 6
-- Level 2
".........", -- 0
".abbbbac.", -- 1
".bd......", -- 2
".be...b..", -- 3
".b....b..", -- 4
".abbbbac.", -- 5
".........", -- 6
-- Level 3
".........", -- 0
".ab..ba..", -- 1
".b.......", -- 2
".c....b..", -- 3
".b....c..", -- 4
".abf.ba..", -- 5
".........", -- 6
-- Level 4
"gggggggg.", -- 0
"hbbbbbbi.", -- 1
"hbbbbbbi.", -- 2
"hbbbbbbi.", -- 3
"hbbbbbbi.", -- 4
"hbbbbbbi.", -- 5
"hjjjjjjj.", -- 6
},
}, -- WitchHut
}, -- Pieces
}
================================================
FILE: Server/Prefabs/Villages/AlchemistVillage.cubeset
================================================
-- AlchemistVillage.cubeset
-- Defines the prefabs in the group AlchemistVillage
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-30 13:46:13",
["AllowedBiomes"] = "Desert, DesertM",
["IntendedUse"] = "Village",
},
Pieces =
{
{
OriginData =
{
ExportName = "LittleHouse",
Name = "Desert 65",
GalleryName = "Desert",
GalleryIndex = "65",
ID = "551",
CreatorName = "STR_Warrior",
},
Size =
{
x = 5,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 5,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 2,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 61: 2", -- furnace
"h: 65: 2", -- ladder
"i: 64: 9", -- woodendoorblock
"j:101: 0", -- ironbars
"k: 50: 4", -- torch
"l:128: 2", -- sandstonestairs
"m: 19: 0", -- sponge
"n:126: 8", -- woodenslab
"o:128: 4", -- sandstonestairs
"p:128: 5", -- sandstonestairs
"q:128: 7", -- sandstonestairs
"r: 44: 1", -- stone_slab
"s: 96: 2", -- trapdoor
},
BlockData =
{
-- Level 0
"abbba", -- 0
"mbbbm", -- 1
"accca", -- 2
"ccccc", -- 3
"ccccc", -- 4
"ccccc", -- 5
"accca", -- 6
-- Level 1
"addda", -- 0
"mdddm", -- 1
"aceca", -- 2
"ceeec", -- 3
"ceeec", -- 4
"ceeec", -- 5
"accca", -- 6
-- Level 2
"a...a", -- 0
".....", -- 1
"acfca", -- 2
"c...c", -- 3
"c...c", -- 4
"cg.hc", -- 5
"accca", -- 6
-- Level 3
"a...a", -- 0
".....", -- 1
"acica", -- 2
"c...c", -- 3
"j...j", -- 4
"ck.hc", -- 5
"acjca", -- 6
-- Level 4
"l...l", -- 0
"c...c", -- 1
"accca", -- 2
"cnnnc", -- 3
"onnnp", -- 4
"cnnhc", -- 5
"acqca", -- 6
-- Level 5
".....", -- 0
".....", -- 1
"crcrc", -- 2
"r...r", -- 3
"c...c", -- 4
"r..sr", -- 5
"crcrc", -- 6
},
}, -- LittleHouse
{
OriginData =
{
ExportName = "LittleHouse3",
Name = "Desert 66",
GalleryName = "Desert",
GalleryIndex = "66",
ID = "553",
CreatorName = "STR_Warrior",
},
Size =
{
x = 9,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 65: 2", -- ladder
"h: 64: 9", -- woodendoorblock
"i:101: 0", -- ironbars
"j: 50: 4", -- torch
"k:128: 2", -- sandstonestairs
"l:126: 8", -- woodenslab
"m: 19: 0", -- sponge
"n:128: 4", -- sandstonestairs
"o:128: 5", -- sandstonestairs
"p:128: 7", -- sandstonestairs
"q: 44: 1", -- stone_slab
"r: 96: 2", -- trapdoor
},
BlockData =
{
-- Level 0
"mmabbbamm", -- 0
"mmmbbbmmm", -- 1
"accccccca", -- 2
"ccccccccc", -- 3
"ccccccccc", -- 4
"ccccccccc", -- 5
"accccccca", -- 6
-- Level 1
"mmadddamm", -- 0
"mmmdddmmm", -- 1
"accceccca", -- 2
"ceeeeeeec", -- 3
"ceeeeeeec", -- 4
"ceeeeeeec", -- 5
"accccccca", -- 6
-- Level 2
"mma...amm", -- 0
"mm.....mm", -- 1
"acccfccca", -- 2
"c.......c", -- 3
"c.......c", -- 4
"c......gc", -- 5
"accccccca", -- 6
-- Level 3
"mma...amm", -- 0
"mm.....mm", -- 1
"accchccca", -- 2
"c.......c", -- 3
"i.......i", -- 4
"c.j....gc", -- 5
"acciiicca", -- 6
-- Level 4
"mmk...kmm", -- 0
"mmc...cmm", -- 1
"accccccca", -- 2
"clllllllc", -- 3
"nlllllllo", -- 4
"cllllllgc", -- 5
"accpppcca", -- 6
-- Level 5
"mm.....mm", -- 0
"mm.....mm", -- 1
"cqqqcqqqc", -- 2
"q.......q", -- 3
"c.......c", -- 4
"q......rq", -- 5
"cqqqcqqqc", -- 6
},
}, -- LittleHouse3
{
OriginData =
{
ExportName = "SmallHouse9",
Name = "Desert 67",
GalleryName = "Desert",
GalleryIndex = "67",
ID = "556",
CreatorName = "STR_Warrior",
},
Size =
{
x = 9,
y = 6,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 5,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 65: 2", -- ladder
"h: 64: 9", -- woodendoorblock
"i:101: 0", -- ironbars
"j: 50: 2", -- torch
"k: 50: 1", -- torch
"l:128: 2", -- sandstonestairs
"m: 19: 0", -- sponge
"n:126: 8", -- woodenslab
"o:128: 5", -- sandstonestairs
"p:128: 6", -- sandstonestairs
"q:128: 4", -- sandstonestairs
"r:128: 7", -- sandstonestairs
"s: 44: 1", -- stone_slab
"t: 96: 2", -- trapdoor
},
BlockData =
{
-- Level 0
"mmmmabbba", -- 0
"mmmmmbbbm", -- 1
"mmmmaccca", -- 2
"mmmmccccc", -- 3
"mmmmccccc", -- 4
"mmmmccccc", -- 5
"acccacccc", -- 6
"ccccccccc", -- 7
"ccccccccc", -- 8
"ccccccccc", -- 9
"accccccca", -- 10
-- Level 1
"mmmmaddda", -- 0
"mmmmmdddm", -- 1
"mmmmaceca", -- 2
"mmmmceeec", -- 3
"mmmmceeec", -- 4
"mmmmceeec", -- 5
"acccaeeec", -- 6
"ceeeeeeec", -- 7
"ceeeeeeec", -- 8
"ceeeeeeec", -- 9
"accccccca", -- 10
-- Level 2
"mmmma...a", -- 0
"mmmm.....", -- 1
"mmmmacfca", -- 2
"mmmmc...c", -- 3
"mmmmc...c", -- 4
"mmmmc...c", -- 5
"accca...c", -- 6
"c.......c", -- 7
"c.......c", -- 8
"c......gc", -- 9
"accccccca", -- 10
-- Level 3
"mmmma...a", -- 0
"mmmm.....", -- 1
"mmmmachca", -- 2
"mmmmc...c", -- 3
"mmmmc...c", -- 4
"mmmmc...i", -- 5
"acica...i", -- 6
"c.......i", -- 7
"i......jc", -- 8
"ck.....gc", -- 9
"acciiicca", -- 10
-- Level 4
"mmmml...l", -- 0
"mmmmc...c", -- 1
"mmmmaccca", -- 2
"mmmmcnnnc", -- 3
"mmmmcnnnc", -- 4
"mmmmcnnno", -- 5
"acpcannno", -- 6
"cnnnnnnno", -- 7
"qnnnnnnnc", -- 8
"cnnnnnngc", -- 9
"accrrrcca", -- 10
-- Level 5
"mmmm.....", -- 0
"mmmm.....", -- 1
"mmmmcscsc", -- 2
"mmmms...s", -- 3
"mmmms...s", -- 4
"mmmms...s", -- 5
"csssc...c", -- 6
"s.......s", -- 7
"s.......s", -- 8
"s......ts", -- 9
"cssscsssc", -- 10
},
}, -- SmallHouse9
{
OriginData =
{
ExportName = "LittleHouse5",
Name = "Desert 68",
GalleryName = "Desert",
GalleryIndex = "68",
ID = "558",
CreatorName = "STR_Warrior",
},
Size =
{
x = 9,
y = 6,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 5,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 65: 2", -- ladder
"h: 64: 9", -- woodendoorblock
"i:101: 0", -- ironbars
"j: 50: 1", -- torch
"k: 50: 4", -- torch
"l:128: 2", -- sandstonestairs
"m: 19: 0", -- sponge
"n:126: 8", -- woodenslab
"o:128: 6", -- sandstonestairs
"p:128: 5", -- sandstonestairs
"q:128: 4", -- sandstonestairs
"r:128: 7", -- sandstonestairs
"s: 44: 1", -- stone_slab
"t: 96: 2", -- trapdoor
},
BlockData =
{
-- Level 0
"mmmmabbba", -- 0
"mmmmmbbbm", -- 1
"mmmmaccca", -- 2
"mmmmccccc", -- 3
"acccacccc", -- 4
"ccccccccc", -- 5
"ccccccccc", -- 6
"ccccccccc", -- 7
"accccccca", -- 8
-- Level 1
"mmmmaddda", -- 0
"mmmmmdddm", -- 1
"mmmmaceca", -- 2
"mmmmceeec", -- 3
"acccaeeec", -- 4
"ceeeeeeec", -- 5
"ceeeeeeec", -- 6
"ceeeeeeec", -- 7
"accccccca", -- 8
-- Level 2
"mmmma...a", -- 0
"mmmm.....", -- 1
"mmmmacfca", -- 2
"mmmmc...c", -- 3
"accca...c", -- 4
"c.......c", -- 5
"c.......c", -- 6
"c......gc", -- 7
"accccccca", -- 8
-- Level 3
"mmmma...a", -- 0
"mmmm.....", -- 1
"mmmmachca", -- 2
"mmmmc...c", -- 3
"acica...i", -- 4
"c.......i", -- 5
"i.......i", -- 6
"cj....kgc", -- 7
"acciiicca", -- 8
-- Level 4
"mmmml...l", -- 0
"mmmmc...c", -- 1
"mmmmaccca", -- 2
"mmmmcnnnc", -- 3
"acocannnp", -- 4
"cnnnnnnnp", -- 5
"qnnnnnnnp", -- 6
"cnnnnnngc", -- 7
"accrrrcca", -- 8
-- Level 5
"mmmm.....", -- 0
"mmmm.....", -- 1
"mmmmcscsc", -- 2
"mmmms...s", -- 3
"csssc...c", -- 4
"s.......s", -- 5
"s.......s", -- 6
"s......ts", -- 7
"cssscsssc", -- 8
},
}, -- LittleHouse5
{
OriginData =
{
ExportName = "LittleHouse6",
Name = "Desert 69",
GalleryName = "Desert",
GalleryIndex = "69",
ID = "559",
CreatorName = "STR_Warrior",
},
Size =
{
x = 9,
y = 6,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 5,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A: 96: 2", -- trapdoor
"a: 12: 0", -- sand
"b: 24: 2", -- sandstone
"c: 4: 0", -- cobblestone
"d: 3: 0", -- dirt
"e: 24: 0", -- sandstone
"f: 13: 0", -- gravel
"g: 2: 0", -- grass
"h: 5: 0", -- planks
"i: 85: 0", -- fence
"j: 64: 3", -- woodendoorblock
"k: 38: 1", -- rose
"l: 38: 2", -- rose
"m: 19: 0", -- sponge
"n: 38: 5", -- rose
"o: 65: 2", -- ladder
"p: 64: 9", -- woodendoorblock
"q:101: 0", -- ironbars
"r: 50: 1", -- torch
"s: 50: 4", -- torch
"t:128: 2", -- sandstonestairs
"u:126: 8", -- woodenslab
"v:128: 6", -- sandstonestairs
"w:128: 5", -- sandstonestairs
"x:128: 4", -- sandstonestairs
"y:128: 7", -- sandstonestairs
"z: 44: 1", -- stone_slab
},
BlockData =
{
-- Level 0
"aaaabcccb", -- 0
"adddccccm", -- 1
"adddbeeeb", -- 2
"adddeeeee", -- 3
"beeebeeee", -- 4
"eeeeeeeee", -- 5
"eeeeeeeee", -- 6
"eeeeeeeee", -- 7
"beeeeeeeb", -- 8
-- Level 1
"aaaabfffb", -- 0
"agggffffm", -- 1
"agggbeheb", -- 2
"aggdehhhe", -- 3
"beeebhhhe", -- 4
"ehhhhhhhe", -- 5
"ehhhhhhhe", -- 6
"ehhhhhhhe", -- 7
"beeeeeeeb", -- 8
-- Level 2
"iiiib...b", -- 0
"i........", -- 1
"i...bejeb", -- 2
"iklne...e", -- 3
"beeeb...e", -- 4
"e.......e", -- 5
"e.......e", -- 6
"e......oe", -- 7
"beeeeeeeb", -- 8
-- Level 3
"....b...b", -- 0
".........", -- 1
"....bepeb", -- 2
"....e...e", -- 3
"beqeb...q", -- 4
"e.......q", -- 5
"q.......q", -- 6
"er....soe", -- 7
"beeqqqeeb", -- 8
-- Level 4
"....t...t", -- 0
"....e...e", -- 1
"....beeeb", -- 2
"....euuue", -- 3
"bevebuuuw", -- 4
"euuuuuuuw", -- 5
"xuuuuuuuw", -- 6
"euuuuuuoe", -- 7
"beeyyyeeb", -- 8
-- Level 5
".........", -- 0
".........", -- 1
"....ezeze", -- 2
"....z...z", -- 3
"ezzze...e", -- 4
"z.......z", -- 5
"z.......z", -- 6
"z......Az", -- 7
"ezzzezzze", -- 8
},
}, -- LittleHouse6
{
OriginData =
{
ExportName = "LittleHouse4",
Name = "Desert 70",
GalleryName = "Desert",
GalleryIndex = "70",
ID = "560",
CreatorName = "STR_Warrior",
},
Size =
{
x = 5,
y = 6,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 5,
MaxY = 5,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 2,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 65: 5", -- ladder
"h:134: 3", -- sprucewoodstairs
"i: 85: 0", -- fence
"j:134: 2", -- sprucewoodstairs
"k: 61: 2", -- furnace
"l:134: 6", -- sprucewoodstairs
"m: 19: 0", -- sponge
"n:134: 4", -- sprucewoodstairs
"o: 64: 9", -- woodendoorblock
"p: 50: 2", -- torch
"q:101: 0", -- ironbars
"r:171: 8", -- carpet
"s:128: 2", -- sandstonestairs
"t:126: 8", -- woodenslab
"u:128: 4", -- sandstonestairs
"v:128: 5", -- sandstonestairs
"w:128: 7", -- sandstonestairs
"x: 44: 1", -- stone_slab
"y: 96: 1", -- trapdoor
},
BlockData =
{
-- Level 0
"abbba", -- 0
"mbbbm", -- 1
"accca", -- 2
"ccccc", -- 3
"ccccc", -- 4
"ccccc", -- 5
"ccccc", -- 6
"ccccc", -- 7
"ccccc", -- 8
"ccccc", -- 9
"accca", -- 10
-- Level 1
"addda", -- 0
"mdddm", -- 1
"aceca", -- 2
"ceeec", -- 3
"ceeec", -- 4
"ceeec", -- 5
"ceeec", -- 6
"ceeec", -- 7
"ceeec", -- 8
"ceeec", -- 9
"accca", -- 10
-- Level 2
"a...a", -- 0
".....", -- 1
"acfca", -- 2
"cg..c", -- 3
"c...c", -- 4
"c..hc", -- 5
"c..ic", -- 6
"c..jc", -- 7
"c...c", -- 8
"cklnc", -- 9
"accca", -- 10
-- Level 3
"a...a", -- 0
".....", -- 1
"acoca", -- 2
"cg..c", -- 3
"c..pc", -- 4
"q...q", -- 5
"q..rq", -- 6
"q...q", -- 7
"c...c", -- 8
"c...c", -- 9
"acqca", -- 10
-- Level 4
"s...s", -- 0
"c...c", -- 1
"accca", -- 2
"cgttc", -- 3
"ctttc", -- 4
"utttv", -- 5
"utttv", -- 6
"utttv", -- 7
"ctttc", -- 8
"ctttc", -- 9
"acwca", -- 10
-- Level 5
".....", -- 0
".....", -- 1
"cxcxc", -- 2
"xy..x", -- 3
"x...x", -- 4
"x...x", -- 5
"c...c", -- 6
"x...x", -- 7
"x...x", -- 8
"x...x", -- 9
"cxcxc", -- 10
},
}, -- LittleHouse4
{
OriginData =
{
ExportName = "MediumHouse1",
Name = "Desert 71",
GalleryName = "Desert",
GalleryIndex = "71",
ID = "561",
CreatorName = "STR_Warrior",
},
Size =
{
x = 15,
y = 9,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 8,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "80",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 12: 0", -- sand
"g: 64: 3", -- woodendoorblock
"h: 85: 0", -- fence
"i: 64: 0", -- woodendoorblock
"j: 65: 5", -- ladder
"k: 64: 9", -- woodendoorblock
"l:101: 0", -- ironbars
"m: 19: 0", -- sponge
"n: 64: 8", -- woodendoorblock
"o: 50: 4", -- torch
"p:128: 2", -- sandstonestairs
"q:126: 8", -- woodenslab
"r:128: 4", -- sandstonestairs
"s:128: 7", -- sandstonestairs
"t: 44: 1", -- stone_slab
"u: 50: 3", -- torch
"v:128: 6", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmmabbbammmmmmm", -- 0
"mmmmbbbmmmmmmmm", -- 1
"acccccccccacccc", -- 2
"ccccccccccccccc", -- 3
"ccccccccccccccc", -- 4
"ccccccccccccccc", -- 5
"ccccccccccccccc", -- 6
"ccccccccccccccc", -- 7
"acccccccccacccc", -- 8
-- Level 1
"mmmadddammmmmmm", -- 0
"mmmmdddmmmmmmmm", -- 1
"acccceccccaffff", -- 2
"ceeeeeeeeecffff", -- 3
"ceeeeeeeeecffff", -- 4
"ceeeeeeeeeeffff", -- 5
"ceeeeeeeeecffff", -- 6
"ceeeeeeeeecffff", -- 7
"acccccccccaffff", -- 8
-- Level 2
"mmma...ammmmmmm", -- 0
"mmm.....mmmmmmm", -- 1
"accccgccccahhhh", -- 2
"c.........c...h", -- 3
"c.........c...h", -- 4
"c.........i...h", -- 5
"c.........c...h", -- 6
"c.........cj..h", -- 7
"acccccccccahhhh", -- 8
-- Level 3
"mmma...ammmmmmm", -- 0
"mmm.....mmmmmmm", -- 1
"acccckcccca....", -- 2
"c.........c....", -- 3
"l.........c....", -- 4
"l.........n....", -- 5
"l.........c....", -- 6
"c..o...o..cj...", -- 7
"accclllccca....", -- 8
-- Level 4
"mmmp...pmmmmmmm", -- 0
"mmmc...cmmmmmmm", -- 1
"accccccccca....", -- 2
"cqqqqqqqqqc....", -- 3
"rqqqqqqqqqc....", -- 4
"rqqqqqqqqqc....", -- 5
"rqqqqqqqqqc....", -- 6
"cqqqqqqqqqcj...", -- 7
"acccsssccca....", -- 8
-- Level 5
"mmm.....mmmmmmm", -- 0
"mmm.....mmmmmmm", -- 1
"cttttcttttc....", -- 2
"t..accca..t....", -- 3
"t..c...c..t....", -- 4
"c.........c....", -- 5
"t..c...c..t....", -- 6
"t..accca..t....", -- 7
"cttttcttttc....", -- 8
-- Level 6
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...aclca.......", -- 3
"...cu..c.......", -- 4
"...............", -- 5
"...c...c.......", -- 6
"...aclca.......", -- 7
"...............", -- 8
-- Level 7
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...acvca.......", -- 3
"...cqqqc.......", -- 4
"...cqqqc.......", -- 5
"...cqqqc.......", -- 6
"...acsca.......", -- 7
"...............", -- 8
-- Level 8
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...ctctc.......", -- 3
"...t...t.......", -- 4
"...c...c.......", -- 5
"...t...t.......", -- 6
"...ctctc.......", -- 7
"...............", -- 8
},
}, -- MediumHouse1
{
OriginData =
{
ExportName = "LittleHouse2",
Name = "Desert 72",
GalleryName = "Desert",
GalleryIndex = "72",
ID = "562",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 6,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 5,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 12: 0", -- sand
"e: 13: 0", -- gravel
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h: 65: 5", -- ladder
"i: 85: 0", -- fence
"j:101: 0", -- ironbars
"k: 64: 9", -- woodendoorblock
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n:128: 2", -- sandstonestairs
"o:128: 6", -- sandstonestairs
"p:126: 8", -- woodenslab
"q:128: 4", -- sandstonestairs
"r:128: 5", -- sandstonestairs
"s:128: 7", -- sandstonestairs
"t: 44: 1", -- stone_slab
"u: 96: 0", -- trapdoor
},
BlockData =
{
-- Level 0
"mabbbam", -- 0
"mmbbbmm", -- 1
"accccca", -- 2
"ccccccc", -- 3
"ccccccc", -- 4
"ccccccc", -- 5
"accccca", -- 6
"ddddddd", -- 7
"ddddddd", -- 8
"ddddddd", -- 9
"ddddddd", -- 10
-- Level 1
"maeeeam", -- 0
"mmeeemm", -- 1
"acccfca", -- 2
"cfffffc", -- 3
"cfffffc", -- 4
"cfffffc", -- 5
"acfccca", -- 6
"ddddddd", -- 7
"ddddddd", -- 8
"ddddddd", -- 9
"ddddddd", -- 10
-- Level 2
"ma...am", -- 0
"m.....m", -- 1
"acccgca", -- 2
"c.....c", -- 3
"c.....c", -- 4
"ch....c", -- 5
"ac.ccca", -- 6
"i.....i", -- 7
"i.....i", -- 8
"i.....i", -- 9
"iiiiiii", -- 10
-- Level 3
"ma...am", -- 0
"m.....m", -- 1
"acjckca", -- 2
"c..l..c", -- 3
"j.....j", -- 4
"ch....c", -- 5
"ac.cjca", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
-- Level 4
"mn...nm", -- 0
"mc...cm", -- 1
"acoccca", -- 2
"cpppppc", -- 3
"qpppppr", -- 4
"chppppc", -- 5
"acccsca", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
-- Level 5
"m.....m", -- 0
"m.....m", -- 1
"cttcttc", -- 2
"t.....t", -- 3
"c.....c", -- 4
"tu....t", -- 5
"cttcttc", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
},
}, -- LittleHouse2
{
OriginData =
{
ExportName = "LittleHouse7",
Name = "Desert 73",
GalleryName = "Desert",
GalleryIndex = "73",
ID = "563",
CreatorName = "xoft",
},
Size =
{
x = 9,
y = 6,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 5,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 65: 2", -- ladder
"h:101: 0", -- ironbars
"i: 64: 9", -- woodendoorblock
"j: 50: 1", -- torch
"k: 50: 2", -- torch
"l:128: 2", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:126: 8", -- woodenslab
"p:128: 4", -- sandstonestairs
"q:128: 5", -- sandstonestairs
"r:128: 7", -- sandstonestairs
"s: 44: 1", -- stone_slab
"t: 96: 2", -- trapdoor
},
BlockData =
{
-- Level 0
"mmmmabbba", -- 0
"mmmmmbbbm", -- 1
"accccccca", -- 2
"ccccccccc", -- 3
"ccccccccc", -- 4
"ccccccccc", -- 5
"acccacccc", -- 6
"mmmmccccc", -- 7
"mmmmccccc", -- 8
"mmmmccccc", -- 9
"mmmmaccca", -- 10
-- Level 1
"mmmmaddda", -- 0
"mmmmmdddm", -- 1
"accccceca", -- 2
"ceeeeeeec", -- 3
"ceeeeeeec", -- 4
"ceeeeeeec", -- 5
"acccaeeec", -- 6
"mmmmceeec", -- 7
"mmmmceeec", -- 8
"mmmmceeec", -- 9
"mmmmaccca", -- 10
-- Level 2
"mmmma...a", -- 0
"mmmm.....", -- 1
"acccccfca", -- 2
"c.......c", -- 3
"c.......c", -- 4
"c.......c", -- 5
"accca...c", -- 6
"mmmmc...c", -- 7
"mmmmc...c", -- 8
"mmmmc..gc", -- 9
"mmmmaccca", -- 10
-- Level 3
"mmmma...a", -- 0
"mmmm.....", -- 1
"achcccica", -- 2
"c.......c", -- 3
"h.......c", -- 4
"cj......h", -- 5
"achca...h", -- 6
"mmmmc...h", -- 7
"mmmmh..kc", -- 8
"mmmmc..gc", -- 9
"mmmmachca", -- 10
-- Level 4
"mmmml...l", -- 0
"mmmmc...c", -- 1
"acnccccca", -- 2
"coooooooc", -- 3
"poooooooc", -- 4
"coooooooq", -- 5
"acrcaoooq", -- 6
"mmmmcoooq", -- 7
"mmmmpoooc", -- 8
"mmmmcoogc", -- 9
"mmmmacrca", -- 10
-- Level 5
"mmmm.....", -- 0
"mmmm.....", -- 1
"cssscscsc", -- 2
"s.......s", -- 3
"s.......s", -- 4
"s.......s", -- 5
"csssc...c", -- 6
"mmmms...s", -- 7
"mmmms...s", -- 8
"mmmms..ts", -- 9
"mmmmcsssc", -- 10
},
}, -- LittleHouse7
{
OriginData =
{
ExportName = "MediumHouse2",
Name = "Desert 74",
GalleryName = "Desert",
GalleryIndex = "74",
ID = "573",
CreatorName = "STR_Warrior",
},
Size =
{
x = 11,
y = 10,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 9,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 8,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "80",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A:128: 7", -- sandstonestairs
"B: 44: 1", -- stone_slab
"C: 96: 3", -- trapdoor
"D: 96: 2", -- trapdoor
"E:128: 2", -- sandstonestairs
"F:128: 0", -- sandstonestairs
"G: 87: 0", -- netherstone
"H:128: 1", -- sandstonestairs
"I:128: 3", -- sandstonestairs
"J: 51: 0", -- fire
"K: 44: 9", -- stone_slab
"a: 24: 2", -- sandstone
"b: 24: 0", -- sandstone
"c: 4: 0", -- cobblestone
"d: 12: 0", -- sand
"e: 13: 0", -- gravel
"f: 5: 0", -- planks
"g: 65: 3", -- ladder
"h: 85: 0", -- fence
"i: 64: 3", -- woodendoorblock
"j:134: 1", -- sprucewoodstairs
"k:134: 2", -- sprucewoodstairs
"l: 61: 2", -- furnace
"m: 19: 0", -- sponge
"n:134: 6", -- sprucewoodstairs
"o:134: 4", -- sprucewoodstairs
"p: 65: 2", -- ladder
"q:101: 0", -- ironbars
"r: 50: 2", -- torch
"s: 47: 0", -- bookshelf
"t: 64: 9", -- woodendoorblock
"u: 50: 3", -- torch
"v:171: 8", -- carpet
"w:128: 6", -- sandstonestairs
"x:126: 8", -- woodenslab
"y:128: 5", -- sandstonestairs
"z:128: 4", -- sandstonestairs
},
BlockData =
{
-- Level 0
"abbbammmcmm", -- 0
"bbbbbdddcdm", -- 1
"bbbbbmmmcdm", -- 2
"bbbbbmmmcdm", -- 3
"bbbbabbbbba", -- 4
"bbbbbbbbbbb", -- 5
"bbbbbbbbbbb", -- 6
"bbbbbbbbbbb", -- 7
"abbbbbbbbba", -- 8
-- Level 1
"abbbammmemm", -- 0
"bfffbdddedm", -- 1
"bfffbmmmedm", -- 2
"bfffbmmmedm", -- 3
"bfffabbbfba", -- 4
"bfffffffffb", -- 5
"bfffffffffb", -- 6
"bfffffffffb", -- 7
"abbbbbbbbba", -- 8
-- Level 2
"abbba......", -- 0
"bg..bhhh.h.", -- 1
"b...b....h.", -- 2
"b...b....h.", -- 3
"b...abbbiba", -- 4
"b.........b", -- 5
"bjh.......b", -- 6
"bjk.lno..pb", -- 7
"abbbbbbbbba", -- 8
-- Level 3
"abqba......", -- 0
"bg..q......", -- 1
"b...q......", -- 2
"q..rb......", -- 3
"q...sbqbtba", -- 4
"q......u..b", -- 5
"b.v.......q", -- 6
"b........pb", -- 7
"abbbqqqbbba", -- 8
-- Level 4
"abwba......", -- 0
"bgxxy......", -- 1
"bxxxy......", -- 2
"zxxxb......", -- 3
"zxxxabwbbba", -- 4
"zxxxxxxxxxb", -- 5
"bxxxxxxxxxy", -- 6
"bxxxsssxxpb", -- 7
"abbbAAAbbba", -- 8
-- Level 5
"bBBBb......", -- 0
"BC..B......", -- 1
"B...B......", -- 2
"B...B......", -- 3
"b...bBBBBBb", -- 4
"Bbbb......B", -- 5
"Bbbb......B", -- 6
"Bbbb.....DB", -- 7
"bBBBBbBBBBb", -- 8
-- Level 6
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
".aEa.......", -- 5
".FGH.......", -- 6
".aIa.......", -- 7
"...........", -- 8
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
".a.a.......", -- 5
"..J........", -- 6
".a.a.......", -- 7
"...........", -- 8
-- Level 8
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
".bbb.......", -- 5
".bKb.......", -- 6
".bbb.......", -- 7
"...........", -- 8
-- Level 9
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
".B.B.......", -- 5
"...........", -- 6
".B.B.......", -- 7
"...........", -- 8
},
}, -- MediumHouse2
{
OriginData =
{
ExportName = "MediumHouse3",
Name = "Desert 76",
GalleryName = "Desert",
GalleryIndex = "76",
ID = "575",
CreatorName = "STR_Warrior",
},
Size =
{
x = 12,
y = 10,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 9,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 9,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "80",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 3: 0", -- dirt
"d: 24: 0", -- sandstone
"e: 13: 0", -- gravel
"f: 2: 0", -- grass
"g: 5: 0", -- planks
"h: 85: 0", -- fence
"i: 64: 3", -- woodendoorblock
"j: 64: 2", -- woodendoorblock
"k: 65: 4", -- ladder
"l: 65: 2", -- ladder
"m: 19: 0", -- sponge
"n: 50: 1", -- torch
"o: 50: 2", -- torch
"p:101: 0", -- ironbars
"q: 64: 9", -- woodendoorblock
"r:128: 2", -- sandstonestairs
"s:128: 6", -- sandstonestairs
"t:126: 8", -- woodenslab
"u:128: 5", -- sandstonestairs
"v:128: 7", -- sandstonestairs
"w: 44: 1", -- stone_slab
"x: 96: 0", -- trapdoor
"y:126: 0", -- woodenslab
"z:128: 4", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmmmmammbbba", -- 0
"mmmmmmmmbbbm", -- 1
"cccccaddddda", -- 2
"cccccddddddd", -- 3
"cccccddddddd", -- 4
"cccccddddddd", -- 5
"cccddddddddd", -- 6
"mmmddddddddd", -- 7
"mmmdddddddda", -- 8
"mmmdddddmmmm", -- 9
"mmmadddammmm", -- 10
-- Level 1
"mmmmmammeeea", -- 0
"mmmmmmmmeeem", -- 1
"fffffadddgda", -- 2
"fffffdgggggd", -- 3
"fffffggggggd", -- 4
"fffffdgggggd", -- 5
"fffddggggggd", -- 6
"mmmdgggggggd", -- 7
"mmmdggggddda", -- 8
"mmmdgggdmmmm", -- 9
"mmmadddammmm", -- 10
-- Level 2
"mmmmma.....a", -- 0
"mmmmm.......", -- 1
"hhhhhadddida", -- 2
"h....d.....d", -- 3
"h....j.....d", -- 4
"h....d.....d", -- 5
"hhhad......d", -- 6
"mmmd......kd", -- 7
"mmmd....ddda", -- 8
"mmmd..ldmmmm", -- 9
"mmmadddammmm", -- 10
-- Level 3
"mmmmman...oa", -- 0
"mmmmm.......", -- 1
".....appdqda", -- 2
".....d.....d", -- 3
".....q.....d", -- 4
".....d.....p", -- 5
"...hd......d", -- 6
"mmmd......kd", -- 7
"mmmd....dppa", -- 8
"mmmd..ldmmmm", -- 9
"mmmhdddhmmmm", -- 10
-- Level 4
"mmmmmr.....r", -- 0
"mmmmmd.....d", -- 1
".....assddda", -- 2
".....dtttttd", -- 3
".....dtttttd", -- 4
".....dtttttu", -- 5
"...hdatttttd", -- 6
"mmmdttttttkd", -- 7
"mmmdtttadvva", -- 8
"mmmdttldmmmm", -- 9
"mmmhdddhmmmm", -- 10
-- Level 5
"............", -- 0
"............", -- 1
".....dwwdwwd", -- 2
".....w.....w", -- 3
".....w.....w", -- 4
".....w.....d", -- 5
"...hdadh...w", -- 6
"mmmd...d..xw", -- 7
"mmmd...awwwd", -- 8
"mmmd..ldmmmm", -- 9
"mmmhdddhmmmm", -- 10
-- Level 6
"............", -- 0
"............", -- 1
"............", -- 2
"............", -- 3
"............", -- 4
"............", -- 5
"...hd.dh....", -- 6
"mmmd...d....", -- 7
"mmmp........", -- 8
"mmmd..ldmmmm", -- 9
"mmmhdpdhmmmm", -- 10
-- Level 7
"............", -- 0
"............", -- 1
"............", -- 2
"............", -- 3
"............", -- 4
"............", -- 5
"...hd.dh....", -- 6
"mmmd...d....", -- 7
"mmmp........", -- 8
"mmmdn.ldmmmm", -- 9
"mmmhdpdhmmmm", -- 10
-- Level 8
"............", -- 0
"............", -- 1
"............", -- 2
"............", -- 3
"............", -- 4
"............", -- 5
"...adsda....", -- 6
"mmmdyyyd....", -- 7
"mmmzyyyu....", -- 8
"mmmdyyldmmmm", -- 9
"mmmadvdammmm", -- 10
-- Level 9
"............", -- 0
"............", -- 1
"............", -- 2
"............", -- 3
"............", -- 4
"............", -- 5
"...w.w.w....", -- 6
"mmm.........", -- 7
"mmmw...w....", -- 8
"mmm.....mmmm", -- 9
"mmmw.w.wmmmm", -- 10
},
}, -- MediumHouse3
{
OriginData =
{
ExportName = "LargeHouse1",
Name = "Desert 77",
GalleryName = "Desert",
GalleryIndex = "77",
ID = "577",
CreatorName = "STR_Warrior",
},
Size =
{
x = 15,
y = 14,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 14,
MaxY = 13,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 14,
RelY = 2,
RelZ = 3,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "60",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A: 96:10", -- trapdoor
"B:128: 4", -- sandstonestairs
"C:128: 5", -- sandstonestairs
"D:128: 7", -- sandstonestairs
"E: 44: 1", -- stone_slab
"F:128: 2", -- sandstonestairs
"G:128: 0", -- sandstonestairs
"H: 87: 0", -- netherstone
"I:128: 3", -- sandstonestairs
"J: 51: 0", -- fire
"K: 44: 9", -- stone_slab
"a: 24: 2", -- sandstone
"b: 24: 0", -- sandstone
"c: 12: 0", -- sand
"d: 4: 0", -- cobblestone
"e: 5: 0", -- planks
"f: 13: 0", -- gravel
"g: 85: 0", -- fence
"h: 5: 1", -- planks
"i: 64: 2", -- woodendoorblock
"j: 64: 0", -- woodendoorblock
"k: 61: 2", -- furnace
"l:118: 0", -- cauldronblock
"m: 19: 0", -- sponge
"n:134: 4", -- sprucewoodstairs
"o: 65: 2", -- ladder
"p:101: 0", -- ironbars
"q: 50: 1", -- torch
"r:140: 0", -- flowerpotblock
"s: 64: 9", -- woodendoorblock
"t: 50: 3", -- torch
"u: 69:12", -- lever
"v: 50: 4", -- torch
"w:128: 6", -- sandstonestairs
"x: 44:10", -- stone_slab
"y:128: 1", -- sandstonestairs
"z: 47: 0", -- bookshelf
},
BlockData =
{
-- Level 0
"mmmmabbbbbbbamm", -- 0
"ccccbbbbbbbbbma", -- 1
"ccccbbbbbbbbbdd", -- 2
"ccccbbbbbbbbbdd", -- 3
"ccccbbbbbbbbbdd", -- 4
"ccccbbbbbbbbbma", -- 5
"ccccbbbbbbbbbmm", -- 6
"mmmmbbbbbbbbbmm", -- 7
"mmmmbbbbbbbbbmm", -- 8
"mmmmbbbbbbbbbmm", -- 9
"mmmmabbbbbbbamm", -- 10
-- Level 1
"mmmmabbbbbbbamm", -- 0
"ccccbeeeeeeebma", -- 1
"cccceeeeeeeebff", -- 2
"ccccbeeeeeeeeff", -- 3
"ccccbeeeeeeebff", -- 4
"ccccbeeeeeeebma", -- 5
"ccccbeeeeeeebmm", -- 6
"mmmmbeeeeeeebmm", -- 7
"mmmmbeeeeeeebmm", -- 8
"mmmmbeeeeeeebmm", -- 9
"mmmmabbbbbbbamm", -- 10
-- Level 2
"mmmmabbbbbbbamm", -- 0
"ggggb......hb.a", -- 1
"g...i.......b..", -- 2
"g...b.......j..", -- 3
"g...bkln..o.b..", -- 4
"g...bbbb.bbbb.a", -- 5
"ggggb.......bmm", -- 6
"mmmmb.......bmm", -- 7
"mmmmb.......bmm", -- 8
"mmmmb.......bmm", -- 9
"mmmmabbbbbbbamm", -- 10
-- Level 3
"mmmmabbpppbbamm", -- 0
"....bq.....rb.a", -- 1
"....s.......b.t", -- 2
"....b.......s..", -- 3
"....b.u...o.b.v", -- 4
"....bbbb.bbbb.a", -- 5
"....p..t.t..pmm", -- 6
"mmmmp.......pmm", -- 7
"mmmmp.......pmm", -- 8
"mmmmb.......bmm", -- 9
"mmmmabbpppbbamm", -- 10
-- Level 4
"mmmmabbwwwbbamm", -- 0
"....bxxxxxxxbby", -- 1
"....bxxxxxxxb..", -- 2
"....bxxxxxxxb..", -- 3
"....bzzzxxAxb..", -- 4
"....bbbbbbbbbby", -- 5
"....BxxxxxxxCmm", -- 6
"mmmmBxxxxxxxCmm", -- 7
"mmmmBxxxxxxxCmm", -- 8
"mmmmbxxxxxxxbmm", -- 9
"mmmmabbDDDbbamm", -- 10
-- Level 5
"mmmmbEEEbEEEbmm", -- 0
"....EabbbbbaE..", -- 1
"....Eb.....bE..", -- 2
"....Eb.....bE..", -- 3
"....Eb.....bE..", -- 4
"....babb.bbab..", -- 5
"....E.......Emm", -- 6
"mmmmE.......Emm", -- 7
"mmmmE.......Emm", -- 8
"mmmmE.......Emm", -- 9
"mmmmbEEEbEEEbmm", -- 10
-- Level 6
"...............", -- 0
".....abbpbba...", -- 1
".....p.....p...", -- 2
".....p.....p...", -- 3
".....p.....p...", -- 4
".....abb.bba...", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 7
"...............", -- 0
".....abbwbba...", -- 1
".....BxxxxxC...", -- 2
".....BxxxxxC...", -- 3
".....BxxxxxC...", -- 4
".....abbbbba...", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 8
"...............", -- 0
".....bEEbEEb...", -- 1
".....E.bbb.E...", -- 2
".....b.bbb.b...", -- 3
".....E.bbb.E...", -- 4
".....bEEbEEb...", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 9
"...............", -- 0
"...............", -- 1
".......aFa.....", -- 2
".......GHy.....", -- 3
".......aIa.....", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 10
"...............", -- 0
"...............", -- 1
".......a.a.....", -- 2
"........J......", -- 3
".......a.a.....", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 11
"...............", -- 0
"...............", -- 1
".......awa.....", -- 2
".......B.C.....", -- 3
".......aDa.....", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 12
"...............", -- 0
"...............", -- 1
".......bbb.....", -- 2
".......bKb.....", -- 3
".......bbb.....", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
-- Level 13
"...............", -- 0
"...............", -- 1
".......E.E.....", -- 2
"...............", -- 3
".......E.E.....", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
},
}, -- LargeHouse1
{
OriginData =
{
ExportName = "LittleTower",
Name = "Desert 79",
GalleryName = "Desert",
GalleryIndex = "79",
ID = "595",
CreatorName = "STR_Warrior",
},
Size =
{
x = 5,
y = 9,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 5,
MaxY = 8,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 2,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 65: 5", -- ladder
"h: 64: 9", -- woodendoorblock
"i:101: 0", -- ironbars
"j: 50: 4", -- torch
"k:128: 2", -- sandstonestairs
"l:126: 8", -- woodenslab
"m: 19: 0", -- sponge
"n:128: 4", -- sandstonestairs
"o:128: 5", -- sandstonestairs
"p:128: 7", -- sandstonestairs
"q:128: 6", -- sandstonestairs
"r: 44: 1", -- stone_slab
"s: 96: 1", -- trapdoor
},
BlockData =
{
-- Level 0
"abbba", -- 0
"mbbbm", -- 1
"accca", -- 2
"ccccc", -- 3
"ccccc", -- 4
"ccccc", -- 5
"accca", -- 6
-- Level 1
"addda", -- 0
"mdddm", -- 1
"aceca", -- 2
"ceeec", -- 3
"ceeec", -- 4
"ceeec", -- 5
"accca", -- 6
-- Level 2
"a...a", -- 0
".....", -- 1
"acfca", -- 2
"cg..c", -- 3
"c...c", -- 4
"c...c", -- 5
"accca", -- 6
-- Level 3
"a...a", -- 0
".....", -- 1
"achca", -- 2
"cg..c", -- 3
"i...i", -- 4
"c..jc", -- 5
"acica", -- 6
-- Level 4
"k...k", -- 0
"c...c", -- 1
"accca", -- 2
"cgllc", -- 3
"nlllo", -- 4
"clllc", -- 5
"acpca", -- 6
-- Level 5
".....", -- 0
".....", -- 1
"accca", -- 2
"cg..c", -- 3
"c...c", -- 4
"c...c", -- 5
"accca", -- 6
-- Level 6
".....", -- 0
".....", -- 1
"acica", -- 2
"cg..c", -- 3
"i...i", -- 4
"c..jc", -- 5
"acica", -- 6
-- Level 7
".....", -- 0
".....", -- 1
"acqca", -- 2
"cgllc", -- 3
"nlllo", -- 4
"clllc", -- 5
"acpca", -- 6
-- Level 8
".....", -- 0
".....", -- 1
"crcrc", -- 2
"rs..r", -- 3
"c...c", -- 4
"r...r", -- 5
"crcrc", -- 6
},
}, -- LittleTower
{
OriginData =
{
ExportName = "LargeTower",
Name = "Desert 80",
GalleryName = "Desert",
GalleryIndex = "80",
ID = "596",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 12,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 11,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b: 4: 0", -- cobblestone
"c: 12: 0", -- sand
"d: 5: 0", -- planks
"e: 13: 0", -- gravel
"f:128: 2", -- sandstonestairs
"g:128: 0", -- sandstonestairs
"h: 24: 2", -- sandstone
"i: 71: 3", -- irondoorblock
"j:128: 1", -- sandstonestairs
"k:128: 3", -- sandstonestairs
"l: 77: 4", -- stonebutton
"m: 19: 0", -- sponge
"n: 71: 9", -- irondoorblock
"o: 77: 3", -- stonebutton
"p:128: 6", -- sandstonestairs
"q:128: 4", -- sandstonestairs
"r:128: 5", -- sandstonestairs
"s: 50: 4", -- torch
"t:128: 7", -- sandstonestairs
"u: 85: 0", -- fence
"v: 24: 1", -- sandstone
"w: 44: 1", -- stone_slab
"x: 89: 0", -- lightstone
},
BlockData =
{
-- Level 0
"mabbbam", -- 0
"aacdcaa", -- 1
"madddam", -- 2
"madddam", -- 3
"madddam", -- 4
"aaaaaaa", -- 5
"mammmam", -- 6
-- Level 1
"maeeeam", -- 0
"aacdcaa", -- 1
"madddam", -- 2
"madddam", -- 3
"madddam", -- 4
"aaaaaaa", -- 5
"mammmam", -- 6
-- Level 2
"mf...fm", -- 0
"ghaiahj", -- 1
"ma...am", -- 2
"ma...am", -- 3
"ma...am", -- 4
"ghaaahj", -- 5
"mkmmmkm", -- 6
-- Level 3
"m.l...m", -- 0
".hanah.", -- 1
".ao..a.", -- 2
".a...a.", -- 3
".a...a.", -- 4
".haaah.", -- 5
"m.....m", -- 6
-- Level 4
".......", -- 0
"..pap..", -- 1
".q...r.", -- 2
".a...a.", -- 3
".q.s.r.", -- 4
"..tat..", -- 5
".......", -- 6
-- Level 5
".......", -- 0
"..aua..", -- 1
".a...a.", -- 2
".u...u.", -- 3
".a...a.", -- 4
"..aua..", -- 5
".......", -- 6
-- Level 6
".......", -- 0
"..aua..", -- 1
".a...a.", -- 2
".u...u.", -- 3
".a...a.", -- 4
"..aua..", -- 5
".......", -- 6
-- Level 7
".......", -- 0
"..aua..", -- 1
".a...a.", -- 2
".u...u.", -- 3
".a...a.", -- 4
"..aua..", -- 5
".......", -- 6
-- Level 8
".......", -- 0
"..faf..", -- 1
".g...j.", -- 2
".a...a.", -- 3
".g...j.", -- 4
"..kak..", -- 5
".......", -- 6
-- Level 9
".......", -- 0
".aavaa.", -- 1
".a...a.", -- 2
".v...v.", -- 3
".a...a.", -- 4
".aavaa.", -- 5
".......", -- 6
-- Level 10
"...p...", -- 0
".haaah.", -- 1
".awwwa.", -- 2
"qawawar", -- 3
".awwwa.", -- 4
".haaah.", -- 5
"...t...", -- 6
-- Level 11
"...w...", -- 0
".w...w.", -- 1
".......", -- 2
"w..x..w", -- 3
".......", -- 4
".w...w.", -- 5
"...w...", -- 6
},
}, -- LargeTower
{
OriginData =
{
ExportName = "BarWithoutBasement",
Name = "Desert 81",
GalleryName = "Desert",
GalleryIndex = "81",
ID = "597",
CreatorName = "STR_Warrior",
},
Size =
{
x = 11,
y = 9,
z = 10,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 8,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "80",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A:126: 8", -- woodenslab
"B:128: 7", -- sandstonestairs
"C: 44: 1", -- stone_slab
"D: 64: 3", -- woodendoorblock
"E:128: 6", -- sandstonestairs
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f:128: 5", -- sandstonestairs
"g:107: 0", -- fencegate
"h:128: 4", -- sandstonestairs
"i:134: 1", -- sprucewoodstairs
"j:134: 3", -- sprucewoodstairs
"k: 85: 0", -- fence
"l:134: 0", -- sprucewoodstairs
"m: 19: 0", -- sponge
"n:134: 5", -- sprucewoodstairs
"o:134: 7", -- sprucewoodstairs
"p:134: 4", -- sprucewoodstairs
"q:107: 3", -- fencegate
"r: 64: 1", -- woodendoorblock
"s: 65: 3", -- ladder
"t: 50: 3", -- torch
"u:171: 8", -- carpet
"v:101: 0", -- ironbars
"w: 64: 9", -- woodendoorblock
"x:128: 2", -- sandstonestairs
"y: 24: 1", -- sandstone
"z: 44: 9", -- stone_slab
},
BlockData =
{
-- Level 0
"mmmabbbammm", -- 0
"mmmmbbbmmmm", -- 1
"accccccccca", -- 2
"ccccccccccc", -- 3
"ccccccccccc", -- 4
"ccccccccccc", -- 5
"ccccccccccc", -- 6
"ccccccccccc", -- 7
"accccccccca", -- 8
"mmmmmmmmmmm", -- 9
-- Level 1
"mmmadddammm", -- 0
"mmmmdddmmmm", -- 1
"accceeeccca", -- 2
"ceeeeeeeeec", -- 3
"ceeeeeeeeec", -- 4
"ceeeeeeeeec", -- 5
"ceeeeeeeeec", -- 6
"ceeeeeeeeec", -- 7
"aecccccccca", -- 8
"mmmmmmmmmmm", -- 9
-- Level 2
"mmma...ammm", -- 0
"mmm.....mmm", -- 1
"acccfghccca", -- 2
"cij.....jjc", -- 3
"cik.....klc", -- 4
"c.........c", -- 5
"cnoop.....c", -- 6
"c...q..iklc", -- 7
"arcccccccca", -- 8
"mmsmmmmmmmm", -- 9
-- Level 3
"mmma...ammm", -- 0
"mmm.....mmm", -- 1
"accc...ccca", -- 2
"c..t...t..c", -- 3
"c.u.....u.c", -- 4
"v.........v", -- 5
"c.........c", -- 6
"c.......u.c", -- 7
"awccvvvccca", -- 8
"mmsmmmmmmmm", -- 9
-- Level 4
"mmmx...xmmm", -- 0
"mmmy...cmmm", -- 1
"acccfzhccca", -- 2
"cAAAAAAAAAc", -- 3
"cAAAAAAAAAc", -- 4
"hAAAAAAAAAf", -- 5
"cAAAAAAAAAc", -- 6
"cAAAAAAAAAc", -- 7
"acccBBBccca", -- 8
"mmsmmmmmmmm", -- 9
-- Level 5
"mmm.....mmm", -- 0
"mmm.....mmm", -- 1
"cCCCCcCCCCc", -- 2
"CacccccccaC", -- 3
"Cc.......cC", -- 4
"cc.......cc", -- 5
"Cc.......cC", -- 6
"CaDccccccaC", -- 7
"cC.CCcCCCCc", -- 8
"mmmmmmmmmmm", -- 9
-- Level 6
"...........", -- 0
"...........", -- 1
"...........", -- 2
".accvvvcca.", -- 3
".c.......c.", -- 4
".v.......v.", -- 5
".c.......c.", -- 6
".awcvvvcca.", -- 7
"...........", -- 8
"...........", -- 9
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
".accEEEcca.", -- 3
".cAAAAAAAc.", -- 4
".hAAAAAAAf.", -- 5
".cAAAAAAAc.", -- 6
".accBBBcca.", -- 7
"...........", -- 8
"...........", -- 9
-- Level 8
"...........", -- 0
"...........", -- 1
"...........", -- 2
".cCCCcCCCc.", -- 3
".C.......C.", -- 4
".c.......c.", -- 5
".C.......C.", -- 6
".cCCCcCCCc.", -- 7
"...........", -- 8
"...........", -- 9
},
}, -- BarWithoutBasement
{
OriginData =
{
ExportName = "BarWithBasement",
Name = "Desert 82",
GalleryName = "Desert",
GalleryIndex = "82",
ID = "598",
CreatorName = "STR_Warrior",
},
Size =
{
x = 11,
y = 12,
z = 10,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 11,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 5,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "70",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A: 65: 3", -- ladder
"B: 50: 3", -- torch
"C:171: 8", -- carpet
"D:101: 0", -- ironbars
"E: 64: 9", -- woodendoorblock
"F:128: 2", -- sandstonestairs
"G: 24: 1", -- sandstone
"H: 44: 9", -- stone_slab
"I:126: 8", -- woodenslab
"J:128: 7", -- sandstonestairs
"K: 44: 1", -- stone_slab
"L: 64: 3", -- woodendoorblock
"M:128: 6", -- sandstonestairs
"a: 24: 2", -- sandstone
"b: 1: 0", -- stone
"c: 24: 0", -- sandstone
"d: 12: 0", -- sand
"e:134: 4", -- sprucewoodstairs
"f: 5: 1", -- planks
"g:134: 5", -- sprucewoodstairs
"h: 65: 5", -- ladder
"i: 17: 3", -- tree
"j: 69:11", -- lever
"k: 4: 0", -- cobblestone
"l:134: 0", -- sprucewoodstairs
"m: 19: 0", -- sponge
"n:134: 1", -- sprucewoodstairs
"o: 50: 4", -- torch
"p: 13: 0", -- gravel
"q: 5: 0", -- planks
"r: 96: 8", -- trapdoor
"s:128: 5", -- sandstonestairs
"t:107: 2", -- fencegate
"u:128: 4", -- sandstonestairs
"v:134: 3", -- sprucewoodstairs
"w: 85: 0", -- fence
"x:134: 7", -- sprucewoodstairs
"y:107: 1", -- fencegate
"z: 64: 1", -- woodendoorblock
},
BlockData =
{
-- Level 0
"mmmabbbammm", -- 0
"mcccccccccm", -- 1
"abcccccccba", -- 2
"cbcccccccbc", -- 3
"cbcccccccbc", -- 4
"cbcccccccbc", -- 5
"cbcccccccbc", -- 6
"cbcccccccbc", -- 7
"abbbbbbbbba", -- 8
"mmmmmmmmmmm", -- 9
-- Level 1
"mmmadddammm", -- 0
"mcccccccccm", -- 1
"acefg.efgca", -- 2
"ccefg.efgcc", -- 3
"ccefg.efgcc", -- 4
"cc.......cc", -- 5
"cc.......cc", -- 6
"cch......cc", -- 7
"accccccccca", -- 8
"mmmmmmmmmmm", -- 9
-- Level 2
"mmmadddammm", -- 0
"mcccccccccm", -- 1
"acfff.fffca", -- 2
"ccfff.fffcc", -- 3
"ccfif.fifcc", -- 4
"cc.j...j.cc", -- 5
"cc.......cc", -- 6
"cch......cc", -- 7
"accccccccca", -- 8
"mmmmmmmmmmm", -- 9
-- Level 3
"mmmakkkammm", -- 0
"mcccccccccm", -- 1
"aclfn.lfnca", -- 2
"cclfn.lfncc", -- 3
"cclfn.lfncc", -- 4
"cc.......cc", -- 5
"cc.......cc", -- 6
"cch..o...cc", -- 7
"accccccccca", -- 8
"mmmmmmmmmmm", -- 9
-- Level 4
"mmmapppammm", -- 0
"mmmmpppmmmm", -- 1
"acccqqqccca", -- 2
"cqqqqqqqqqc", -- 3
"cqqqqqqqqqc", -- 4
"cqqqqqqqqqc", -- 5
"cqqqqqqqqqc", -- 6
"cqrqqqqqqqc", -- 7
"aqcccccccca", -- 8
"mmmmmmmmmmm", -- 9
-- Level 5
"mmma...ammm", -- 0
"mmm.....mmm", -- 1
"acccstuccca", -- 2
"cnv.....vvc", -- 3
"cnw.....wlc", -- 4
"c.........c", -- 5
"cgxxe.....c", -- 6
"c...y..nwlc", -- 7
"azcccccccca", -- 8
"mmAmmmmmmmm", -- 9
-- Level 6
"mmma...ammm", -- 0
"mmm.....mmm", -- 1
"accc...ccca", -- 2
"c..B...B..c", -- 3
"c.C.....C.c", -- 4
"D.........D", -- 5
"c.........c", -- 6
"c.......C.c", -- 7
"aEccDDDccca", -- 8
"mmAmmmmmmmm", -- 9
-- Level 7
"mmmF...Fmmm", -- 0
"mmmG...cmmm", -- 1
"acccsHuccca", -- 2
"cIIIIIIIIIc", -- 3
"cIIIIIIIIIc", -- 4
"uIIIIIIIIIs", -- 5
"cIIIIIIIIIc", -- 6
"cIIIIIIIIIc", -- 7
"acccJJJccca", -- 8
"mmAmmmmmmmm", -- 9
-- Level 8
"mmm.....mmm", -- 0
"mmm.....mmm", -- 1
"cKKKKcKKKKc", -- 2
"KacccccccaK", -- 3
"Kc.......cK", -- 4
"cc.......cc", -- 5
"Kc.......cK", -- 6
"KaLccccccaK", -- 7
"cK.KKcKKKKc", -- 8
"mmmmmmmmmmm", -- 9
-- Level 9
"...........", -- 0
"...........", -- 1
"...........", -- 2
".accDDDcca.", -- 3
".c.......c.", -- 4
".D.......D.", -- 5
".c.......c.", -- 6
".aEcDDDcca.", -- 7
"...........", -- 8
"...........", -- 9
-- Level 10
"...........", -- 0
"...........", -- 1
"...........", -- 2
".accMMMcca.", -- 3
".cIIIIIIIc.", -- 4
".uIIIIIIIs.", -- 5
".cIIIIIIIc.", -- 6
".accJJJcca.", -- 7
"...........", -- 8
"...........", -- 9
-- Level 11
"...........", -- 0
"...........", -- 1
"...........", -- 2
".cKKKcKKKc.", -- 3
".K.......K.", -- 4
".c.......c.", -- 5
".K.......K.", -- 6
".cKKKcKKKc.", -- 7
"...........", -- 8
"...........", -- 9
},
}, -- BarWithBasement
{
OriginData =
{
ExportName = "Temple",
Name = "Desert 83",
GalleryName = "Desert",
GalleryIndex = "83",
ID = "599",
CreatorName = "STR_Warrior",
},
Size =
{
x = 13,
y = 10,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 9,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "50",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A: 51: 0", -- fire
"B: 44: 9", -- stone_slab
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 3", -- woodendoorblock
"g: 17: 0", -- tree
"h:128: 5", -- sandstonestairs
"i:128: 4", -- sandstonestairs
"j:128: 7", -- sandstonestairs
"k:128: 6", -- sandstonestairs
"l:118: 3", -- cauldronblock
"m: 19: 0", -- sponge
"n:155: 1", -- quartzblock
"o: 64: 9", -- woodendoorblock
"p: 50: 3", -- torch
"q:101: 0", -- ironbars
"r:140: 0", -- flowerpotblock
"s: 24: 1", -- sandstone
"t:128: 2", -- sandstonestairs
"u:126: 8", -- woodenslab
"v: 44: 1", -- stone_slab
"w:128: 0", -- sandstonestairs
"x: 87: 0", -- netherstone
"y:128: 1", -- sandstonestairs
"z:128: 3", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmmmabbbammmm", -- 0
"mmmmmbbbmmmmm", -- 1
"accccccccccca", -- 2
"ccccccccccccc", -- 3
"ccccccccccccc", -- 4
"ccccccccccccc", -- 5
"ccccccccccccc", -- 6
"ccccccccccccc", -- 7
"accccccccccca", -- 8
-- Level 1
"mmmmadddammmm", -- 0
"mmmmmdddmmmmm", -- 1
"accccceccccca", -- 2
"ceeeeeeeeeeec", -- 3
"ceeeeeeeeeeec", -- 4
"ceeeeeeeeeeec", -- 5
"ceeeeeeeeeeec", -- 6
"ceeeeeeeeeeec", -- 7
"accccccccccca", -- 8
-- Level 2
"mmmma...ammmm", -- 0
"mmmm.....mmmm", -- 1
"acccccfccccca", -- 2
"cgh.......igc", -- 3
"cj.........jc", -- 4
"c...........c", -- 5
"ck.........kc", -- 6
"cgh.linhl.igc", -- 7
"accccccccccca", -- 8
-- Level 3
"mmmma...ammmm", -- 0
"mmmm.....mmmm", -- 1
"acccccoccccca", -- 2
"cg...p.p...gc", -- 3
"c...........c", -- 4
"q...........q", -- 5
"c...........c", -- 6
"cg...rsr...gc", -- 7
"acqqqcccqqqca", -- 8
-- Level 4
"mmmmt...tmmmm", -- 0
"mmmms...cmmmm", -- 1
"accccccccccca", -- 2
"cguuuuuuuuugc", -- 3
"cuuuuuuuuuuuc", -- 4
"iuuuuuuuuuuuh", -- 5
"cuuuuuuuuuuuc", -- 6
"cguuuuuuuuugc", -- 7
"acjjjcccjjjca", -- 8
-- Level 5
"mmmm.....mmmm", -- 0
"mmmm.....mmmm", -- 1
"cvvvvvcvvvvvc", -- 2
"v...........v", -- 3
"v.ccc...ccc.v", -- 4
"c.ccc...ccc.c", -- 5
"v.ccc...ccc.v", -- 6
"v...........v", -- 7
"cvvvvvcvvvvvc", -- 8
-- Level 6
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"..ata...ata..", -- 4
"..wxy...wxy..", -- 5
"..aza...aza..", -- 6
".............", -- 7
".............", -- 8
-- Level 7
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"..a.a...a.a..", -- 4
"...A.....A...", -- 5
"..a.a...a.a..", -- 6
".............", -- 7
".............", -- 8
-- Level 8
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"..ccc...ccc..", -- 4
"..cBc...cBc..", -- 5
"..ccc...ccc..", -- 6
".............", -- 7
".............", -- 8
-- Level 9
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
"..v.v...v.v..", -- 4
".............", -- 5
"..v.v...v.v..", -- 6
".............", -- 7
".............", -- 8
},
}, -- Temple
{
OriginData =
{
ExportName = "Well",
Name = "Desert 90",
GalleryName = "Desert",
GalleryIndex = "90",
ID = "631",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 21,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 20,
MaxZ = 6,
},
Connectors =
{
{
Type = 2,
RelX = 3,
RelY = 16,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 0,
RelY = 16,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 3,
RelY = 16,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 2,
RelX = 6,
RelY = 16,
RelZ = 3,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-16",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 24: 2", -- sandstone
"c: 24: 0", -- sandstone
"d: 8: 0", -- water
"e: 4: 0", -- cobblestone
"f: 13: 0", -- gravel
"g:128: 1", -- sandstonestairs
"h: 44: 1", -- stone_slab
"i:128: 0", -- sandstonestairs
"j:128: 3", -- sandstonestairs
"k:128: 2", -- sandstonestairs
"l: 44: 9", -- stone_slab
"m: 19: 0", -- sponge
"n:126: 0", -- woodenslab
},
BlockData =
{
-- Level 0
"mmmmmmm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 2
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 3
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 4
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 5
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 6
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 7
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 8
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 9
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 10
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 11
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 12
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 13
"mmmmmmm", -- 0
"mbcccbm", -- 1
"mcdddcm", -- 2
"mcdddcm", -- 3
"mcdddcm", -- 4
"mbcccbm", -- 5
"mmmmmmm", -- 6
-- Level 14
"mmeeemm", -- 0
"mbcccbm", -- 1
"ecdddce", -- 2
"ecdddce", -- 3
"ecdddce", -- 4
"mbcccbm", -- 5
"mmeeemm", -- 6
-- Level 15
"mmfffmm", -- 0
"mbcccbm", -- 1
"fcdddcf", -- 2
"fcdddcf", -- 3
"fcdddcf", -- 4
"mbcccbm", -- 5
"mmfffmm", -- 6
-- Level 16
"mm...mm", -- 0
"mbghibm", -- 1
".j...j.", -- 2
".h...h.", -- 3
".k...k.", -- 4
"mbghibm", -- 5
"mm...mm", -- 6
-- Level 17
"mm...mm", -- 0
"mb...bm", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"mb...bm", -- 5
"mm...mm", -- 6
-- Level 18
"mm...mm", -- 0
"mblllbm", -- 1
".l...l.", -- 2
".l...l.", -- 3
".l...l.", -- 4
"mblllbm", -- 5
"mm...mm", -- 6
-- Level 19
"mm...mm", -- 0
"mcccccm", -- 1
".cnnnc.", -- 2
".cnnnc.", -- 3
".cnnnc.", -- 4
"mcccccm", -- 5
"mm...mm", -- 6
-- Level 20
"mm...mm", -- 0
"mh.h.hm", -- 1
".......", -- 2
".h...h.", -- 3
".......", -- 4
"mh.h.hm", -- 5
"mm...mm", -- 6
},
}, -- Well
{
OriginData =
{
ExportName = "BlackSmith",
Name = "Desert 97",
GalleryName = "Desert",
GalleryIndex = "97",
ID = "642",
CreatorName = "STR_Warrior",
},
Size =
{
x = 11,
y = 6,
z = 13,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 5,
MaxZ = 13,
},
Connectors =
{
{
Type = -1,
RelX = 8,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "50",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 4: 0", -- cobblestone
"c: 24: 0", -- sandstone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 12: 0", -- sand
"g: 64: 3", -- woodendoorblock
"h: 43: 0", -- doublestoneslab
"i: 53: 5", -- woodstairs
"j: 53: 4", -- woodstairs
"k: 10: 0", -- lava
"l: 54: 5", -- chest
"m: 19: 0", -- sponge
"n: 64: 9", -- woodendoorblock
"o: 50: 3", -- torch
"p:101: 0", -- ironbars
"q: 50: 1", -- torch
"r: 50: 2", -- torch
"s:128: 2", -- sandstonestairs
"t: 44: 9", -- stone_slab
"u:126: 8", -- woodenslab
"v:128: 4", -- sandstonestairs
"w:128: 5", -- sandstonestairs
"x:128: 7", -- sandstonestairs
"y: 44: 1", -- stone_slab
"z: 43: 1", -- doublestoneslab
},
BlockData =
{
-- Level 0
"mmmmmmabbba", -- 0
"mmmmmmbbbbm", -- 1
"mmmmmmaccca", -- 2
"maccccccccc", -- 3
"mcccccccccc", -- 4
"mcccccccccc", -- 5
"mcccccacccc", -- 6
"mcccccacccc", -- 7
"acccaaacccc", -- 8
"ccccccccccc", -- 9
"ccccccccccc", -- 10
"ccccccccccc", -- 11
"accccccccca", -- 12
-- Level 1
"mmmmmmaddda", -- 0
"mmmmmmddddm", -- 1
"mmmmmmaceca", -- 2
"mafcfcceeec", -- 3
"mcfccfceeec", -- 4
"mcccccceeec", -- 5
"mcffaaaeeec", -- 6
"mffcaaaeeec", -- 7
"acccaaaeeec", -- 8
"ceeeeeeeeec", -- 9
"ceeeeeeeeec", -- 10
"ceeeeeeeeec", -- 11
"accccccccca", -- 12
-- Level 2
"mmmmmma...a", -- 0
"mmmmmm.....", -- 1
"mmmmmmacgca", -- 2
"ma....c...c", -- 3
"m.h...c...c", -- 4
"m.....c...c", -- 5
"m...aac...c", -- 6
"mij.akc...c", -- 7
"accccca...c", -- 8
"cl........c", -- 9
"c.........c", -- 10
"c.........c", -- 11
"accccccccca", -- 12
-- Level 3
"mmmmmma...a", -- 0
"mmmmmm.....", -- 1
"mmmmmmacnca", -- 2
"ma....c..oc", -- 3
"m.....p...c", -- 4
"m.....c...c", -- 5
"m...ppc...p", -- 6
"m...p.c...p", -- 7
"accccca...p", -- 8
"cq........c", -- 9
"p.........c", -- 10
"c........rc", -- 11
"acccpppccca", -- 12
-- Level 4
"mmmmmms...s", -- 0
"mmmmmmc...c", -- 1
"mmmmmmaccca", -- 2
"mattttcuuuc", -- 3
"mtuuuuvuuuc", -- 4
"mtuuuucuuuc", -- 5
"mtuuaacuuuw", -- 6
"mtuua.cuuuw", -- 7
"acccccauuuw", -- 8
"cuuuuuuuuuc", -- 9
"vuuuuuuuuuc", -- 10
"cuuuuuuuuuc", -- 11
"acccxxxccca", -- 12
-- Level 5
"mmmmmm.....", -- 0
"mmmmmm.....", -- 1
"mmmmmmcyyyc", -- 2
"my.y.yy...y", -- 3
"m.....y...y", -- 4
"my....y...y", -- 5
"m...zyz...y", -- 6
"my..y.y...c", -- 7
"cyyyzyc...y", -- 8
"y.........y", -- 9
"y.........y", -- 10
"y.........y", -- 11
"cyyyycyyyyc", -- 12
},
}, -- BlackSmith
{
OriginData =
{
ExportName = "LittleHouse8",
Name = "Desert 99",
GalleryName = "Desert",
GalleryIndex = "99",
ID = "739",
CreatorName = "STR_Warrior",
},
Size =
{
x = 9,
y = 6,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = -1,
MaxX = 9,
MaxY = 5,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 2,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 2", -- sandstone
"b: 24: 0", -- sandstone
"c: 4: 0", -- cobblestone
"d: 13: 0", -- gravel
"e: 5: 0", -- planks
"f: 64: 2", -- woodendoorblock
"g: 65: 2", -- ladder
"h:101: 0", -- ironbars
"i: 64: 9", -- woodendoorblock
"j: 50: 1", -- torch
"k:128: 6", -- sandstonestairs
"l:126: 8", -- woodenslab
"m: 19: 0", -- sponge
"n:128: 5", -- sandstonestairs
"o:128: 4", -- sandstonestairs
"p:128: 7", -- sandstonestairs
"q: 44: 1", -- stone_slab
"r: 96: 2", -- trapdoor
},
BlockData =
{
-- Level 0
"mmmmabbba", -- 0
"ccccbbbbb", -- 1
"ccccbbbbb", -- 2
"ccccbbbbb", -- 3
"abbbabbbb", -- 4
"bbbbbbbbb", -- 5
"bbbbbbbbb", -- 6
"bbbbbbbbb", -- 7
"abbbbbbba", -- 8
-- Level 1
"mmmmabbba", -- 0
"ddddbeeeb", -- 1
"ddddeeeeb", -- 2
"ddddbeeeb", -- 3
"abbbaeeeb", -- 4
"beeeeeeeb", -- 5
"beeeeeeeb", -- 6
"beeeeeeeb", -- 7
"abbbbbbba", -- 8
-- Level 2
"mmmmabbba", -- 0
"....b...b", -- 1
"....f...b", -- 2
"....b...b", -- 3
"abbba...b", -- 4
"b.......b", -- 5
"b.......b", -- 6
"b......gb", -- 7
"abbbbbbba", -- 8
-- Level 3
"mmmmabhba", -- 0
"....b...b", -- 1
"....i...b", -- 2
"....b...h", -- 3
"abhbaj..h", -- 4
"b.......h", -- 5
"h.......b", -- 6
"b......gb", -- 7
"abbhhhbba", -- 8
-- Level 4
"mmmmabkba", -- 0
"....blllb", -- 1
"....blllb", -- 2
"....bllln", -- 3
"abkballln", -- 4
"bllllllln", -- 5
"olllllllb", -- 6
"bllllllgb", -- 7
"abbpppbba", -- 8
-- Level 5
"mmmmbqbqb", -- 0
"....q...q", -- 1
"....q...q", -- 2
"....q...q", -- 3
"bqqqb...b", -- 4
"q.......q", -- 5
"b.......q", -- 6
"q......rq", -- 7
"bqqqbqqqb", -- 8
},
}, -- LittleHouse8
}, -- Pieces
}
================================================
FILE: Server/Prefabs/Villages/JapaneseVillage.cubeset
================================================
-- JapaneseVillage.cubeset
-- Defines the prefabs in the group JapaneseVillage
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-30 13:45:59",
["AllowedBiomes"] = "Plains, Savanna, SavannaM, SunflowerPlains",
["IntendedUse"] = "Village",
},
Pieces =
{
{
OriginData =
{
ExportName = "Restaurant",
Name = "Plains 61",
GalleryName = "Plains",
GalleryIndex = "61",
ID = "117",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 10,
z = 15,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 14,
MaxY = 9,
MaxZ = 15,
},
Connectors =
{
{
Type = -1,
RelX = 14,
RelY = 1,
RelZ = 7,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b:135: 0", -- whitewoodstairs
"c:135: 2", -- whitewoodstairs
"d:135: 1", -- whitewoodstairs
"e: 17: 9", -- tree
"f:135: 3", -- whitewoodstairs
"g: 85: 0", -- fence
"h: 17: 1", -- tree
"i:171: 0", -- carpet
"j:171:12", -- carpet
"k:126: 1", -- woodenslab
"l: 50: 5", -- torch
"m: 19: 0", -- sponge
"n: 35: 0", -- wool
"o: 50: 3", -- torch
"p: 50: 1", -- torch
"q: 50: 4", -- torch
"r: 35:14", -- wool
"s: 44: 8", -- stone_slab
"t: 43: 0", -- doublestoneslab
"u: 44: 0", -- stone_slab
"v: 17: 5", -- tree
},
BlockData =
{
-- Level 0
"mmmmaaaaaaammmm", -- 0
"maaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaam", -- 3
"aaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaaaa", -- 10
"maaaaaaaaaaaaam", -- 11
"maaaaaaaaaaaaam", -- 12
"maaaaaaaaaaaaam", -- 13
"mmmmaaaaaaammmm", -- 14
-- Level 1
"....bcccccd....", -- 0
".aaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaa.", -- 3
"caaaaaaaaaaaaac", -- 4
"baaaaaaaaaaaaad", -- 5
"baaaaaaaaaaaaad", -- 6
"baaaaaaaaaaeaad", -- 7
"baaaaaaaaaaaaad", -- 8
"baaaaaaaaaaaaad", -- 9
"faaaaaaaaaaaaaf", -- 10
".aaaaaaaaaaaaa.", -- 11
".aaaaaaaaaaaaa.", -- 12
".aaaaaaaaaaaaa.", -- 13
"....bfffffd....", -- 14
-- Level 2
"...............", -- 0
".gggg.....gggg.", -- 1
".g...........g.", -- 2
".g.hhhhhhhhh.g.", -- 3
".g.hiiijiiih.g.", -- 4
"...hikijikih...", -- 5
"...hiiijiiihg..", -- 6
"...hjjjjjjj....", -- 7
"...hiiijiiihg..", -- 8
"...hikijikih...", -- 9
".g.hiiijiiih.g.", -- 10
".g.hhhhhhhhh.g.", -- 11
".g...........g.", -- 12
".gggg.....gggg.", -- 13
"...............", -- 14
-- Level 3
"...............", -- 0
".l..g.....g..l.", -- 1
"...............", -- 2
"...hnnnhnnnh...", -- 3
".g.n.......n.g.", -- 4
"...n.......n...", -- 5
"...n.......hl..", -- 6
"...h...........", -- 7
"...n.......hl..", -- 8
"...n.......n...", -- 9
".g.n.......n.g.", -- 10
"...hnnnhnnnh...", -- 11
"...............", -- 12
".l..g.....g..l.", -- 13
"...............", -- 14
-- Level 4
"...............", -- 0
"....g.....g....", -- 1
"...............", -- 2
"...hn.nhn.nh...", -- 3
".g.n...o...n.g.", -- 4
"...n.......n...", -- 5
"...n.......h...", -- 6
"...hp......e...", -- 7
"...n.......h...", -- 8
"...n.......n...", -- 9
".g.n...q...n.g.", -- 10
"...hn.nhn.nh...", -- 11
"...............", -- 12
"....g.....g....", -- 13
"...............", -- 14
-- Level 5
"...............", -- 0
"....g.....g....", -- 1
"....ggggggg....", -- 2
"...hnnnhnnnh...", -- 3
".ggn.......ngg.", -- 4
"..gn.......ng..", -- 5
"..gn.......hg..", -- 6
"..gh..r.r..ng..", -- 7
"..gn.......hg..", -- 8
"..gn.......ng..", -- 9
".ggn.......ngg.", -- 10
"...hnnnhnnnh...", -- 11
"....ggggggg....", -- 12
"....g.....g....", -- 13
"...............", -- 14
-- Level 6
"...............", -- 0
"...stuuuuuts...", -- 1
"..sttttttttts..", -- 2
".sthvvvhvvvhts.", -- 3
".tte.......ett.", -- 4
".ute.......etu.", -- 5
".ute.......htu.", -- 6
".uth..g.g..etu.", -- 7
".ute.......htu.", -- 8
".ute.......etu.", -- 9
".tte.......ett.", -- 10
".sthvvvhvvvhts.", -- 11
"..sttttttttts..", -- 12
"...stuuuuuts...", -- 13
"...............", -- 14
-- Level 7
"...............", -- 0
".stu.......uts.", -- 1
".tu.........ut.", -- 2
".u.uuuuuuuuu.u.", -- 3
"...utttttttu...", -- 4
"...utttttttu...", -- 5
"...utttttttu...", -- 6
"...utttttttu...", -- 7
"...utttttttu...", -- 8
"...utttttttu...", -- 9
"...utttttttu...", -- 10
".u.uuuuuuuuu.u.", -- 11
".tu.........ut.", -- 12
".stu.......uts.", -- 13
"...............", -- 14
-- Level 8
"...............", -- 0
".u...........u.", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
".....uuuuu.....", -- 5
".....utttu.....", -- 6
".....utttu.....", -- 7
".....utttu.....", -- 8
".....uuuuu.....", -- 9
"...............", -- 10
"...............", -- 11
"...............", -- 12
".u...........u.", -- 13
"...............", -- 14
-- Level 9
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
".......u.......", -- 7
"...............", -- 8
"...............", -- 9
"...............", -- 10
"...............", -- 11
"...............", -- 12
"...............", -- 13
"...............", -- 14
},
}, -- Restaurant
{
OriginData =
{
ExportName = "HouseMid",
Name = "Plains 62",
GalleryName = "Plains",
GalleryIndex = "62",
ID = "119",
CreatorName = "Aloe_vera",
},
Size =
{
x = 10,
y = 9,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = -1,
MaxX = 10,
MaxY = 8,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 4,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b:135: 2", -- whitewoodstairs
"c:135: 0", -- whitewoodstairs
"d: 17: 9", -- tree
"e:135: 3", -- whitewoodstairs
"f: 85: 0", -- fence
"g: 17: 1", -- tree
"h:171: 0", -- carpet
"i: 50: 5", -- torch
"j: 35: 0", -- wool
"k: 17: 5", -- tree
"l:124: 0", -- redstonelampon
"m: 19: 0", -- sponge
"n: 69: 9", -- lever
"o: 44: 8", -- stone_slab
"p: 43: 0", -- doublestoneslab
"q: 44: 0", -- stone_slab
},
BlockData =
{
-- Level 0
"maaaaaaaaa", -- 0
"maaaaaaaaa", -- 1
"aaaaaaaaaa", -- 2
"aaaaaaaaaa", -- 3
"aaaaaaaaaa", -- 4
"aaaaaaaaaa", -- 5
"aaaaaaaaaa", -- 6
"maaaaaaaaa", -- 7
"maaaaaaaaa", -- 8
-- Level 1
".aaaaaaaaa", -- 0
".aaaaaaaaa", -- 1
"baaaaaaaaa", -- 2
"caaaaaaaaa", -- 3
"caadaaaaaa", -- 4
"caaaaaaaaa", -- 5
"eaaaaaaaaa", -- 6
".aaaaaaaaa", -- 7
".aaaaaaaaa", -- 8
-- Level 2
".fffffffff", -- 0
".f.......f", -- 1
".f.ggggg.f", -- 2
"...ghhhg.f", -- 3
"....hhhg.f", -- 4
"...ghhhg.f", -- 5
".f.ggggg.f", -- 6
".f.......f", -- 7
".fffffffff", -- 8
-- Level 3
".....i...i", -- 0
"..........", -- 1
".i.jjgjj..", -- 2
"...g...j..", -- 3
".......g.i", -- 4
"...g...j..", -- 5
".i.jjgjj..", -- 6
"..........", -- 7
".....i...i", -- 8
-- Level 4
"..........", -- 0
"..........", -- 1
"...jjgjj..", -- 2
"...g...j..", -- 3
"...j...g..", -- 4
"...g...j..", -- 5
"...jjgjj..", -- 6
"..........", -- 7
"..........", -- 8
-- Level 5
"..........", -- 0
"...f...f..", -- 1
"..fgkgkgf.", -- 2
"..fd...d..", -- 3
"...d.lng..", -- 4
"..fd...d..", -- 5
"..fgkgkgf.", -- 6
"...f...f..", -- 7
"..........", -- 8
-- Level 6
"...ooooo..", -- 0
"..opppppo.", -- 1
".opgjjjgpo", -- 2
".opjgggjpo", -- 3
".opjgggjpo", -- 4
".opjgggjpo", -- 5
".opgjjjgpo", -- 6
"..opppppo.", -- 7
"...ooooo..", -- 8
-- Level 7
".opq...qpo", -- 0
".pq.....qp", -- 1
".q.qqqqq.q", -- 2
"...qpppq..", -- 3
"...qpppq..", -- 4
"...qpppq..", -- 5
".q.qqqqq.q", -- 6
".pq.....qp", -- 7
".opq...qpo", -- 8
-- Level 8
".q.......q", -- 0
"..........", -- 1
"..........", -- 2
"..........", -- 3
".....q....", -- 4
"..........", -- 5
"..........", -- 6
"..........", -- 7
".q.......q", -- 8
},
}, -- HouseMid
{
OriginData =
{
ExportName = "HouseWide",
Name = "Plains 64",
GalleryName = "Plains",
GalleryIndex = "64",
ID = "121",
CreatorName = "STR_Warrior",
},
Size =
{
x = 11,
y = 6,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 11,
MaxY = 5,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b: 17: 1", -- tree
"c: 35: 0", -- wool
"d:171: 0", -- carpet
"e:126: 1", -- woodenslab
"f: 64: 1", -- woodendoorblock
"g: 85: 0", -- fence
"h: 50: 1", -- torch
"i: 50: 2", -- torch
"j: 64: 9", -- woodendoorblock
"k:126:11", -- woodenslab
"l: 17: 5", -- tree
"m: 19: 0", -- sponge
"n:126: 3", -- woodenslab
"o:125: 3", -- woodendoubleslab
"p: 5: 3", -- planks
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"mmaaaaaaamm", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"maaaaaaaaam", -- 8
"mmaaaaaaamm", -- 9
"mmmmmmmmmmm", -- 10
-- Level 1
"...........", -- 0
"..bcbcbcb..", -- 1
".b.d.....b.", -- 2
".cded....c.", -- 3
".bded....b.", -- 4
".c.d.....c.", -- 5
".b.......b.", -- 6
".c.......c.", -- 7
".b.......b.", -- 8
"..bcbfbcb..", -- 9
"...........", -- 10
-- Level 2
"...........", -- 0
"..bgbgbgb..", -- 1
".b.......b.", -- 2
".g.......g.", -- 3
".bh.....ib.", -- 4
".g.......g.", -- 5
".b.......b.", -- 6
".g.......g.", -- 7
".b.......b.", -- 8
"..bgbjbgb..", -- 9
"...........", -- 10
-- Level 3
"...kkkkk...", -- 0
"..bcbcbcb..", -- 1
".b.......b.", -- 2
"kc.......ck", -- 3
"kb.......bk", -- 4
"kc.......ck", -- 5
"kb.......bk", -- 6
"kc.......ck", -- 7
".b.......b.", -- 8
"..bcblbcb..", -- 9
"...kkkkk...", -- 10
-- Level 4
".kn.....nk.", -- 0
"konnnnnnnok", -- 1
"nnnnnnnnnnn", -- 2
".nnpppppnn.", -- 3
".nnpkkkpnn.", -- 4
".nnpkkkpnn.", -- 5
".nnpkkkpnn.", -- 6
".nnpppppnn.", -- 7
"nnnnnnnnnnn", -- 8
"kknnnnnnnok", -- 9
".kn.....nk.", -- 10
-- Level 5
"n.........n", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"....nnn....", -- 4
"....non....", -- 5
"....nnn....", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"n.........n", -- 10
},
}, -- HouseWide
{
OriginData =
{
ExportName = "HouseWithGarden",
Name = "Plains 67",
GalleryName = "Plains",
GalleryIndex = "67",
ID = "130",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 9,
z = 16,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 16,
MaxY = 8,
MaxZ = 16,
},
Connectors =
{
{
Type = -1,
RelX = 9,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 5: 2", -- planks
"c: 2: 0", -- grass
"d:113: 0", -- netherbrickfence
"e: 17: 1", -- tree
"f: 35: 0", -- wool
"g:126: 2", -- woodenslab
"h: 31: 2", -- tallgrass
"i:125: 2", -- woodendoubleslab
"j: 38: 3", -- rose
"k: 38: 2", -- rose
"l: 38: 1", -- rose
"m: 19: 0", -- sponge
"n: 17: 2", -- tree
"o: 50: 4", -- torch
"p: 85: 0", -- fence
"q:140: 0", -- flowerpotblock
"r: 50: 3", -- torch
"s: 44: 8", -- stone_slab
"t: 50: 1", -- torch
"u: 50: 2", -- torch
"v: 43: 0", -- doublestoneslab
"w: 44: 0", -- stone_slab
"x: 18: 2", -- leaves
},
BlockData =
{
-- Level 0
"mmmmmmmmmaammmmm", -- 0
"aabbbbbbbbbbaaam", -- 1
"aabbbbbbbbbbaaam", -- 2
"aabbbbbbbbbbaaam", -- 3
"aabbbbbbbbbbaaam", -- 4
"aabbbbbbbbbbaaam", -- 5
"aabbbbbbbbbbaaam", -- 6
"aabbbbbbbbbbaaam", -- 7
"aabbbbbbbbbbaaam", -- 8
"aabbbbbbbbbbaaam", -- 9
"aaaaaaaaaaaaaaam", -- 10
"aaaaaaaaaaaaaaam", -- 11
"aaaaaaaaaaaaaaam", -- 12
"aaaaaaaaaaaaaaam", -- 13
"aaaaaaaaaaaaaaam", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 1
"mmmmmmmmmccmmmmm", -- 0
"aabbbbbbbbbbaacm", -- 1
"acbbbbbbbbbbccam", -- 2
"acbbbbbbbbbbcaam", -- 3
"acbbbbbbbbbbccam", -- 4
"acbbbbbbbbbbaacm", -- 5
"acbbbbbbbbbbcaam", -- 6
"acbbbbbbbbbbccam", -- 7
"acbbbbbbbbbbccam", -- 8
"acbbbbbbbbbbcaam", -- 9
"acccccccccccccam", -- 10
"aaaaaccaacccacam", -- 11
"acacaccacaccccam", -- 12
"accaaccaccaccaam", -- 13
"cccaccccaccacaam", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 2
"................", -- 0
"ddeffeffe..eddd.", -- 1
"d.fbbgggg..f..d.", -- 2
"d.fbgggggggf.hd.", -- 3
"d.fbgggggggf..d.", -- 4
"d.eggggggggehhd.", -- 5
"d.fgiiggiigf.hd.", -- 6
"d.fgiiggiigf..d.", -- 7
"d.fggggggggf..d.", -- 8
"d.efffeefffe.hd.", -- 9
"d.............d.", -- 10
"djhhk.jhh..hh.d.", -- 11
"d.jlk.hj.h....d.", -- 12
"d..jh.hh..h..nd.", -- 13
"ddddddddddddddd.", -- 14
"................", -- 15
-- Level 3
"........o..o....", -- 0
"..eppeffe..e....", -- 1
"..pqq......p....", -- 2
"..pq.......p....", -- 3
"..pq.......p....", -- 4
"..e........e....", -- 5
"..p........p....", -- 6
"..p........p....", -- 7
"..p........p....", -- 8
"..epppeepppe....", -- 9
"......rr........", -- 10
"................", -- 11
"................", -- 12
".............n..", -- 13
"................", -- 14
"................", -- 15
-- Level 4
"..ssssssssss....", -- 0
".seffeffeffes...", -- 1
".sf..r.....fs...", -- 2
".sf........fs...", -- 3
".sf........fs...", -- 4
".set......ues...", -- 5
".sf........fs...", -- 6
".sf........fs...", -- 7
".sf........fs...", -- 8
".sefffeefffes...", -- 9
"..ssssssssss....", -- 10
"................", -- 11
"................", -- 12
".............n..", -- 13
"................", -- 14
"................", -- 15
-- Level 5
".vw........wv...", -- 0
".wwwwwwwwwwww...", -- 1
"..wvvvvvvvvw....", -- 2
"..wvvvvvvvvw....", -- 3
"..wvvvvvvvvw....", -- 4
"..wvvvvvvvvw....", -- 5
"..wvvvvvvvvw....", -- 6
"..wvvvvvvvvw....", -- 7
"..wvvvvvvvvw....", -- 8
".wwwwwwwwwwww...", -- 9
".vw........wv...", -- 10
"............xxx.", -- 11
"...........xxxxx", -- 12
"...........xxnxx", -- 13
"...........xxxxx", -- 14
"............xxx.", -- 15
-- Level 6
"................", -- 0
"................", -- 1
"................", -- 2
"....wwwwww......", -- 3
"....wvvvvw......", -- 4
"....wvvvvw......", -- 5
"....wvvvvw......", -- 6
"....wwwwww......", -- 7
"................", -- 8
"................", -- 9
"................", -- 10
"............xxx.", -- 11
"...........xxxxx", -- 12
"...........xxnxx", -- 13
"...........xxxxx", -- 14
"............xxx.", -- 15
-- Level 7
"................", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"................", -- 4
"......ww........", -- 5
"................", -- 6
"................", -- 7
"................", -- 8
"................", -- 9
"................", -- 10
"................", -- 11
"............xxx.", -- 12
"............xnx.", -- 13
"............xx..", -- 14
"................", -- 15
-- Level 8
"................", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"................", -- 4
"................", -- 5
"................", -- 6
"................", -- 7
"................", -- 8
"................", -- 9
"................", -- 10
"................", -- 11
".............x..", -- 12
"............xxx.", -- 13
".............x..", -- 14
"................", -- 15
},
}, -- HouseWithGarden
{
OriginData =
{
ExportName = "HouseSmall",
Name = "Plains 68",
GalleryName = "Plains",
GalleryIndex = "68",
ID = "131",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b: 17: 1", -- tree
"c: 35: 0", -- wool
"d: 50: 4", -- torch
"e: 85: 0", -- fence
"f: 44: 8", -- stone_slab
"g: 43: 0", -- doublestoneslab
"h: 44: 0", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
".......", -- 0
".bcc.b.", -- 1
".c...c.", -- 2
".c...c.", -- 3
".c...c.", -- 4
".bcccb.", -- 5
".......", -- 6
-- Level 2
".....d.", -- 0
".bee.b.", -- 1
".c...c.", -- 2
".e...e.", -- 3
".c...c.", -- 4
".beeeb.", -- 5
".......", -- 6
-- Level 3
".fffff.", -- 0
"fbcccbf", -- 1
"fc...cf", -- 2
"fc...cf", -- 3
"fc...cf", -- 4
"fbcccbf", -- 5
".fffff.", -- 6
-- Level 4
"gh...hg", -- 0
"hhhhhhh", -- 1
".hgggh.", -- 2
".hgggh.", -- 3
".hgggh.", -- 4
"hhhhhhh", -- 5
"gh...hg", -- 6
-- Level 5
".......", -- 0
".......", -- 1
".......", -- 2
"...h...", -- 3
".......", -- 4
".......", -- 5
".......", -- 6
},
}, -- HouseSmall
{
OriginData =
{
ExportName = "HighTemple",
Name = "Plains 70",
GalleryName = "Plains",
GalleryIndex = "70",
ID = "133",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 19,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 18,
MaxZ = 10,
},
Connectors =
{
{
Type = 2,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 2,
RelX = 10,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 5,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b:135: 0", -- whitewoodstairs
"c:135: 2", -- whitewoodstairs
"d:135: 1", -- whitewoodstairs
"e: 17: 9", -- tree
"f:135: 3", -- whitewoodstairs
"g: 85: 0", -- fence
"h: 17: 1", -- tree
"i:171: 0", -- carpet
"j: 50: 5", -- torch
"k: 35: 0", -- wool
"l: 17: 5", -- tree
"m: 19: 0", -- sponge
"n:124: 0", -- redstonelampon
"o: 69: 9", -- lever
"p: 44: 8", -- stone_slab
"q: 43: 0", -- doublestoneslab
"r: 44: 0", -- stone_slab
"s: 50: 4", -- torch
"t: 50: 1", -- torch
"u: 50: 3", -- torch
},
BlockData =
{
-- Level 0
"mmmaaaaammm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"aaaaaaaaaaa", -- 3
"aaaaaaaaaaa", -- 4
"aaaaaaaaaaa", -- 5
"aaaaaaaaaaa", -- 6
"aaaaaaaaaaa", -- 7
"maaaaaaaaam", -- 8
"maaaaaaaaam", -- 9
"mmmaaaaammm", -- 10
-- Level 1
"...bcccd...", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
"caaaaaaaaac", -- 3
"baaaaaaaaad", -- 4
"baaeaaaaaad", -- 5
"baaaaaaaaad", -- 6
"faaaaaaaaaf", -- 7
".aaaaaaaaa.", -- 8
".aaaaaaaaa.", -- 9
"...bfffd...", -- 10
-- Level 2
"...........", -- 0
".ggg...ggg.", -- 1
".g.......g.", -- 2
".g.hhhhh.g.", -- 3
"...hiiih...", -- 4
"....iiih...", -- 5
"...hiiih...", -- 6
".g.hhhhh.g.", -- 7
".g.......g.", -- 8
".ggg...ggg.", -- 9
"...........", -- 10
-- Level 3
"...........", -- 0
".j.g...g.j.", -- 1
"...........", -- 2
".g.kkhkk.g.", -- 3
"...h...k...", -- 4
".......h...", -- 5
"...h...k...", -- 6
".g.kkhkk.g.", -- 7
"...........", -- 8
".j.g...g.j.", -- 9
"...........", -- 10
-- Level 4
"...........", -- 0
"...g...g...", -- 1
"...........", -- 2
".g.kkhkk.g.", -- 3
"...h...k...", -- 4
"...k...h...", -- 5
"...h...k...", -- 6
".g.kkhkk.g.", -- 7
"...........", -- 8
"...g...g...", -- 9
"...........", -- 10
-- Level 5
"...........", -- 0
"...g...g...", -- 1
"...ggggg...", -- 2
".gghlhlhgg.", -- 3
"..ge...eg..", -- 4
"..ge.nohg..", -- 5
"..ge...eg..", -- 6
".gghlhlhgg.", -- 7
"...ggggg...", -- 8
"...g...g...", -- 9
"...........", -- 10
-- Level 6
"...........", -- 0
"..pqrrrqp..", -- 1
".pqqqqqqqp.", -- 2
".qqhkkkhqq.", -- 3
".rqkhhhkqr.", -- 4
".rqkhhhkqr.", -- 5
".rqkhhhkqr.", -- 6
".qqhkkkhqq.", -- 7
".pqqqqqqqp.", -- 8
"..pqrrrqp..", -- 9
"...........", -- 10
-- Level 7
"...........", -- 0
".qr.....rq.", -- 1
".........r.", -- 2
"...hhhhh...", -- 3
"...hiiih...", -- 4
"....iiih...", -- 5
"...hiiih...", -- 6
"...hhhhh...", -- 7
".r.......r.", -- 8
".qr.....rq.", -- 9
"...........", -- 10
-- Level 8
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...kkhkk...", -- 3
"...h...k...", -- 4
".......h...", -- 5
"...h...k...", -- 6
"...kkhkk...", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 9
"...........", -- 0
"...........", -- 1
".....s.....", -- 2
"...kkhkk...", -- 3
"...h...k...", -- 4
"...k...ht..", -- 5
"...h...k...", -- 6
"...kkhkk...", -- 7
".....u.....", -- 8
"...........", -- 9
"...........", -- 10
-- Level 10
"...........", -- 0
"...........", -- 1
"...ggggg...", -- 2
"..ghlhlhg..", -- 3
"..ge...eg..", -- 4
"..ge.nohg..", -- 5
"..ge...eg..", -- 6
"..ghlhlhg..", -- 7
"...ggggg...", -- 8
"...........", -- 9
"...........", -- 10
-- Level 11
"...........", -- 0
"..prrrrrp..", -- 1
".pqqqqqqqp.", -- 2
".qqhkkkhqq.", -- 3
".rqkhhhkqr.", -- 4
".rqkhhhkqr.", -- 5
".rqkhhhkqr.", -- 6
".qqhkkkhqr.", -- 7
".pqqqqqqqp.", -- 8
"..pqrrrqp..", -- 9
"...........", -- 10
-- Level 12
"...........", -- 0
".qr.....rq.", -- 1
".r.......r.", -- 2
"...hhhhh...", -- 3
"...hiiih...", -- 4
"....iiih...", -- 5
"...hiiih...", -- 6
"...hhhhh...", -- 7
".r.......r.", -- 8
".qr.....rq.", -- 9
"...........", -- 10
-- Level 13
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...kkhkk...", -- 3
"...h...k...", -- 4
".......h...", -- 5
"...h...k...", -- 6
"...kkhkk...", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
-- Level 14
"...........", -- 0
"...........", -- 1
".....s.....", -- 2
"...kkhkk...", -- 3
"...h...k...", -- 4
"...k...ht..", -- 5
"...h...k...", -- 6
"...kkhkk...", -- 7
".....u.....", -- 8
"...........", -- 9
"...........", -- 10
-- Level 15
"...........", -- 0
"...........", -- 1
"...ggggg...", -- 2
"..ghlhlhg..", -- 3
"..ge...eg..", -- 4
"..ge.nohg..", -- 5
"..ge...eg..", -- 6
"..ghlhlhg..", -- 7
"...ggggg...", -- 8
"...........", -- 9
"...........", -- 10
-- Level 16
"...........", -- 0
"..pqrrrqp..", -- 1
".pqqqqqqqp.", -- 2
".qqrrrrrqq.", -- 3
".rqrrrrrqr.", -- 4
".rqrrrrrqr.", -- 5
".rqrrrrrqr.", -- 6
".qqrrrrrqq.", -- 7
".pqqqqqqqp.", -- 8
"..pqrrrqp..", -- 9
"...........", -- 10
-- Level 17
"...........", -- 0
".qr.....rq.", -- 1
".rr.....rr.", -- 2
"...rrrrr...", -- 3
"...rqqqr...", -- 4
"...rqqqr...", -- 5
"...rqqqr...", -- 6
"...rrrrr...", -- 7
".rr.....rr.", -- 8
".qr.....rq.", -- 9
"...........", -- 10
-- Level 18
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
".....r.....", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
},
}, -- HighTemple
{
OriginData =
{
ExportName = "HouseSmallDouble",
Name = "Plains 72",
GalleryName = "Plains",
GalleryIndex = "72",
ID = "135",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b: 17: 1", -- tree
"c: 35: 0", -- wool
"d:171:12", -- carpet
"e:135: 1", -- whitewoodstairs
"f:126: 2", -- woodenslab
"g:135: 2", -- whitewoodstairs
"h: 50: 4", -- torch
"i: 85: 0", -- fence
"j: 44: 8", -- stone_slab
"k: 43: 0", -- doublestoneslab
"l: 44: 0", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"mmmmmmmmmmm", -- 6
-- Level 1
"...........", -- 0
".bcc.bcccb.", -- 1
".cddd.dddc.", -- 2
".ceddcdfdc.", -- 3
".cggdcdddc.", -- 4
".bcccbcccb.", -- 5
"...........", -- 6
-- Level 2
".h...h...h.", -- 0
".bii.biiib.", -- 1
".c.......c.", -- 2
".i...i...i.", -- 3
".c...i...c.", -- 4
".biiibiiib.", -- 5
"...........", -- 6
-- Level 3
".jjjjjjjjj.", -- 0
"jbiiibiiibj", -- 1
"jc.......cj", -- 2
"jc...c...cj", -- 3
"jc...c...cj", -- 4
"jbcccbcccbj", -- 5
".jjjjjjjjj.", -- 6
-- Level 4
"kl...l...lk", -- 0
"lllllllllll", -- 1
".lkkklkkkl.", -- 2
".lkjklkkkl.", -- 3
".lkkklkkkl.", -- 4
"lllllllllll", -- 5
"kl...l...lk", -- 6
-- Level 5
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...l...l...", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
},
}, -- HouseSmallDouble
{
OriginData =
{
ExportName = "HouseWithSpa",
Name = "Plains 73",
GalleryName = "Plains",
GalleryIndex = "73",
ID = "139",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 8,
z = 14,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 7,
MaxZ = 13,
},
Connectors =
{
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b: 3: 0", -- dirt
"c: 2: 0", -- grass
"d: 8: 0", -- water
"e:135: 3", -- whitewoodstairs
"f:135: 1", -- whitewoodstairs
"g:113: 0", -- netherbrickfence
"h: 17: 1", -- tree
"i: 35: 0", -- wool
"j:171:12", -- carpet
"k: 64: 6", -- woodendoorblock
"l:126: 2", -- woodenslab
"m: 19: 0", -- sponge
"n:135: 2", -- whitewoodstairs
"o: 64: 7", -- woodendoorblock
"p: 50: 4", -- torch
"q: 85: 0", -- fence
"r: 64:12", -- woodendoorblock
"s: 50: 3", -- torch
"t: 44: 8", -- stone_slab
"u: 43: 0", -- doublestoneslab
"v: 44: 0", -- stone_slab
},
BlockData =
{
-- Level 0
"................", -- 0
".aaaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaaaa.", -- 5
".aaaaaaaaaaaaaa.", -- 6
".aaaaaabbbbbbbbb", -- 7
".aaaaaabbbbbbbbb", -- 8
".aaaaaabbbbbbbbb", -- 9
".aaaaaabbbbbbbbb", -- 10
".aaaaaabbbbbbbbb", -- 11
".aaaaaabbbbbbbbb", -- 12
".......bbbbbbbbb", -- 13
-- Level 1
"mmmmmmmmmmmmmmmm", -- 0
"maaaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaaam", -- 6
"maaaaaaaaaaccccc", -- 7
"maaaaaaacccccccc", -- 8
"maaaaaaacccccccc", -- 9
"maaaaaaacccccccc", -- 10
"maaaaaaccccccccc", -- 11
"maaaaaaccccccccc", -- 12
"mmmmmmmccccccccc", -- 13
-- Level 2
"................", -- 0
".aaaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaaaa.", -- 5
".aaddaaaaaaaaaa.", -- 6
".aaddaaeeef.....", -- 7
".aaddaaf........", -- 8
".aaddaaf........", -- 9
".aaddaae........", -- 10
".aaddaa.........", -- 11
".aaaaaa.........", -- 12
"................", -- 13
-- Level 3
"................", -- 0
".ggggghiiihiiih.", -- 1
".geee.ijjjjjjji.", -- 2
".gf...kjjjijlji.", -- 3
".gf...innjijjji.", -- 4
".g....hiiohiiih.", -- 5
".g....g.........", -- 6
".g..............", -- 7
".g..............", -- 8
".g..............", -- 9
".g....g.........", -- 10
".g....g.........", -- 11
".gggggg.........", -- 12
"................", -- 13
-- Level 4
"......p...p...p.", -- 0
".g....hqqqhqqqh.", -- 1
"......i.......i.", -- 2
"......r...q...q.", -- 3
"......i...q...i.", -- 4
"......hqqrhqqqh.", -- 5
"......g...s.....", -- 6
"................", -- 7
"................", -- 8
"................", -- 9
"................", -- 10
"................", -- 11
".g....g.........", -- 12
"................", -- 13
-- Level 5
".tttttttttttttt.", -- 0
"tggggghqqqhqqqht", -- 1
"tg....i.......it", -- 2
"tg....i...i...it", -- 3
"tg....i...i...it", -- 4
"tg....hiiihiiiht", -- 5
"tg....gtttttttt.", -- 6
"tg....gt........", -- 7
"tg....gt........", -- 8
"tg....gt........", -- 9
"tg....gt........", -- 10
"tg....gt........", -- 11
"tggggggt........", -- 12
".tttttt.........", -- 13
-- Level 6
"uv............vu", -- 0
"vvvvvvvvvvvvvvvv", -- 1
".vuuuuuuuuuuuuv.", -- 2
".vuuuuuutuuuuuv.", -- 3
".vuuuuuuuuuuuuv.", -- 4
".vuuuuvvvvvvvvvv", -- 5
".vuuuuv.......vu", -- 6
".vuuuuv.........", -- 7
".vuuuuv.........", -- 8
".vuuuuv.........", -- 9
".vuuuuv.........", -- 10
".vuuuuv.........", -- 11
"vvvvvvvv........", -- 12
"uv....vu........", -- 13
-- Level 7
"................", -- 0
"................", -- 1
"................", -- 2
"...vvvvvvvvvv...", -- 3
"...vv...........", -- 4
"...vv...........", -- 5
"...vv...........", -- 6
"...vv...........", -- 7
"...vv...........", -- 8
"...vv...........", -- 9
"...vv...........", -- 10
"................", -- 11
"................", -- 12
"................", -- 13
},
}, -- HouseWithSpa
{
OriginData =
{
ExportName = "HouseWithSakura1",
Name = "Plains 75",
GalleryName = "Plains",
GalleryIndex = "75",
ID = "141",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 7,
z = 15,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 6,
MaxZ = 15,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 2: 0", -- grass
"c: 17: 5", -- tree
"d: 5: 2", -- planks
"e: 17: 9", -- tree
"f:113: 0", -- netherbrickfence
"g: 17: 1", -- tree
"h: 35: 0", -- wool
"i: 31: 2", -- tallgrass
"j: 54: 2", -- chest
"k: 38: 6", -- rose
"l: 38: 2", -- rose
"m: 19: 0", -- sponge
"n: 50: 4", -- torch
"o: 85: 0", -- fence
"p: 44: 8", -- stone_slab
"q: 35: 6", -- wool
"r: 43: 0", -- doublestoneslab
"s: 44: 0", -- stone_slab
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaa", -- 14
-- Level 1
"aaaabbbaaaaaa", -- 0
"abbbbbbbbbbba", -- 1
"abbaccdabbaba", -- 2
"abbedddebbaba", -- 3
"abbedddebbbba", -- 4
"aabedddebbaba", -- 5
"abbacccabbbbb", -- 6
"abbbbbbbbbaba", -- 7
"aaabbbbbbbbba", -- 8
"ababbbbabbbba", -- 9
"aababbabbbaba", -- 10
"ababbbbabbbba", -- 11
"ababbbbbbbbba", -- 12
"abbbbbbbbbbba", -- 13
"bbbbbbbbbbbbb", -- 14
-- Level 2
"ffff...ffffff", -- 0
"f...........f", -- 1
"f..ghh.g..i.f", -- 2
"f..h...h..i.f", -- 3
"f..h...h....f", -- 4
"fi.h..jh..i.f", -- 5
"f..ghhhg....f", -- 6
"f.........i.f", -- 7
"fii.........f", -- 8
"f.k..k.i....f", -- 9
"fl.i..i...g.f", -- 10
"f.i..i.k....f", -- 11
"f.l.k.......f", -- 12
"f.....l.....f", -- 13
"fffffffffffff", -- 14
-- Level 3
".............", -- 0
".......n.....", -- 1
"...goo.g.....", -- 2
"...h...h.....", -- 3
"...o...o.....", -- 4
"...h...h.....", -- 5
"...gooog.....", -- 6
".............", -- 7
".............", -- 8
".............", -- 9
"..........g..", -- 10
".............", -- 11
".............", -- 12
".............", -- 13
".............", -- 14
-- Level 4
".............", -- 0
"...ppppp.....", -- 1
"..pghhhgp....", -- 2
"..ph...hp....", -- 3
"..ph...hp....", -- 4
"..ph...hp....", -- 5
"..pghhhgp....", -- 6
"...ppppp.....", -- 7
".............", -- 8
"..........q..", -- 9
".........qgq.", -- 10
"..........q..", -- 11
".............", -- 12
".............", -- 13
".............", -- 14
-- Level 5
".............", -- 0
"..rs...sr....", -- 1
"..sssssss....", -- 2
"...srrrs.....", -- 3
"...srrrs.....", -- 4
"...srrrs.....", -- 5
"..sssssss....", -- 6
"..rs...sr....", -- 7
".............", -- 8
".........qqq.", -- 9
".........qqq.", -- 10
".........qqq.", -- 11
".............", -- 12
".............", -- 13
".............", -- 14
-- Level 6
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
".....s.......", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
".............", -- 8
".............", -- 9
"..........q..", -- 10
".............", -- 11
".............", -- 12
".............", -- 13
".............", -- 14
},
}, -- HouseWithSakura1
{
OriginData =
{
ExportName = "SakuraDouble",
Name = "Plains 76",
GalleryName = "Plains",
GalleryIndex = "76",
ID = "142",
CreatorName = "Aloe_vera",
},
Size =
{
x = 12,
y = 8,
z = 6,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 12,
MaxY = 7,
MaxZ = 6,
},
Connectors =
{
{
Type = -1,
RelX = -1,
RelY = 2,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 5,
RelY = 2,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = -3,
RelX = 6,
RelY = 2,
RelZ = -1,
Direction = 2, -- Z-
},
{
Type = -3,
RelX = 12,
RelY = 2,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 3,
RelX = 12,
RelY = 2,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 2: 0", -- grass
"c: 17: 1", -- tree
"d: 35: 6", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaa", -- 0
"aaaaaaaaaaaa", -- 1
"aaaaaaaaaaaa", -- 2
"aaaaaaaaaaaa", -- 3
"aaaaaaaaaaaa", -- 4
"aaaaaaaaaaaa", -- 5
-- Level 1
"bbbbbbbbbbbb", -- 0
"bbbbbbbbbbbb", -- 1
"bbabbbbbbbbb", -- 2
"bbbbbbbbbabb", -- 3
"bbbbbbbbbbbb", -- 4
"bbbbbbbbbbbb", -- 5
-- Level 2
"............", -- 0
"............", -- 1
"..c.........", -- 2
".........c..", -- 3
"............", -- 4
"............", -- 5
-- Level 3
"............", -- 0
"............", -- 1
"..c.........", -- 2
".........c..", -- 3
"............", -- 4
"............", -- 5
-- Level 4
"..d.........", -- 0
"ddddd.......", -- 1
"ddcdd...ddd.", -- 2
"ddddd...dcd.", -- 3
"..d.....ddd.", -- 4
"............", -- 5
-- Level 5
".ddd........", -- 0
".ddd....ddd.", -- 1
"ddddd..ddddd", -- 2
".ddd...ddcdd", -- 3
".ddd...ddddd", -- 4
"........ddd.", -- 5
-- Level 6
"............", -- 0
"..d......d..", -- 1
".ddd....ddd.", -- 2
"..d....ddddd", -- 3
"........ddd.", -- 4
".........d..", -- 5
-- Level 7
"............", -- 0
"............", -- 1
"............", -- 2
".........d..", -- 3
"............", -- 4
"............", -- 5
},
}, -- SakuraDouble
{
OriginData =
{
ExportName = "Forge",
Name = "Plains 79",
GalleryName = "Plains",
GalleryIndex = "79",
ID = "145",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 11,
z = 14,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = -1,
MaxX = 16,
MaxY = 10,
MaxZ = 14,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 17: 1", -- tree
"c: 67: 0", -- stonestairs
"d: 5: 2", -- planks
"e: 67: 2", -- stonestairs
"f:113: 0", -- netherbrickfence
"g:118: 2", -- cauldronblock
"h: 67: 6", -- stonestairs
"i: 67: 4", -- stonestairs
"j: 87: 0", -- netherstone
"k: 67: 7", -- stonestairs
"l: 54: 5", -- chest
"m: 19: 0", -- sponge
"n: 61: 2", -- furnace
"o:101: 0", -- ironbars
"p: 51: 0", -- fire
"q: 50: 4", -- torch
"r: 50: 2", -- torch
"s: 35: 0", -- wool
"t: 67: 3", -- stonestairs
"u: 50: 3", -- torch
"v: 44: 8", -- stone_slab
"w: 43: 0", -- doublestoneslab
"x: 44: 0", -- stone_slab
"y: 17: 5", -- tree
"z: 17: 9", -- tree
},
BlockData =
{
-- Level 0
"mmmmmmmmmmmmmmmm", -- 0
"mmmmmmmmmmmmmmmm", -- 1
"mmaaaaaaaaaaaamm", -- 2
"mmaaaaaaaaaaaamm", -- 3
"mmaaaaaaaaaaaamm", -- 4
"mmaaaaaaaaaaaamm", -- 5
"mmaaaaaaaaaaaamm", -- 6
"mmaaaaaaaaaaaamm", -- 7
"mmaaaaaaaaaaaamm", -- 8
"mmaaaaaaaaaaaamm", -- 9
"mmaaaaaaaaaaaamm", -- 10
"mmaaaaaaaaaaaamm", -- 11
"mmmmmmmmmmmmmmmm", -- 12
"mmmmmmmmmmmmmmmm", -- 13
-- Level 1
"................", -- 0
"................", -- 1
".....bbbbbbbbb..", -- 2
".....cdddddddb..", -- 3
".....cddaaaadb..", -- 4
"..beeedaaaaadb..", -- 5
"..bddddaaaaadb..", -- 6
"..bddddaaaaadb..", -- 7
"..bddddaaaaadb..", -- 8
"..bddddaaaaadb..", -- 9
"..bddddddddddb..", -- 10
"..bbbbbbbbbbbb..", -- 11
"................", -- 12
"................", -- 13
-- Level 2
"................", -- 0
"................", -- 1
".....bfffbfffb..", -- 2
".............a..", -- 3
".............a..", -- 4
"..b.....ghh..a..", -- 5
"..f.....haa..b..", -- 6
"..f.....ija..b..", -- 7
"..f.....kaa..a..", -- 8
"..f..........a..", -- 9
"..fl.........a..", -- 10
"..bffffbbffffb..", -- 11
"................", -- 12
"................", -- 13
-- Level 3
"................", -- 0
"................", -- 1
".....bfffbfffb..", -- 2
".............a..", -- 3
".............a..", -- 4
"..b......nn..a..", -- 5
"..f.....oaa..b..", -- 6
"..f.....opa..b..", -- 7
"..f.....oaa..a..", -- 8
"..f..........a..", -- 9
"..f..........a..", -- 10
"..bffffbbffffb..", -- 11
"................", -- 12
"................", -- 13
-- Level 4
"................", -- 0
".........q...q..", -- 1
"....rbsssbsssb..", -- 2
".............a..", -- 3
"..q..........a..", -- 4
"..b......ce..a..", -- 5
"..s......ea..b..", -- 6
"..s......aa..b..", -- 7
"..s......ta..a..", -- 8
"..s..........a..", -- 9
"..s..........a..", -- 10
".rbssssbbssssb..", -- 11
"..u....uu....u..", -- 12
"................", -- 13
-- Level 5
".vwxxxxxxxxxxwv.", -- 0
"vvvvvvvvvvvvvvvv", -- 1
"wvbyybyyybbyybvw", -- 2
"xvz..........zvx", -- 3
"xvz..........zvx", -- 4
"xvb..........zvx", -- 5
"xvz.......a..bvx", -- 6
"xvz......ca..bvx", -- 7
"xvz.......a..zvx", -- 8
"xvz..........zvx", -- 9
"xvz..........zvx", -- 10
"wvbyyyyyyyyyybvw", -- 11
"vvvvvvvvvvvvvvvv", -- 12
".vwxxxxxxxxxxwv.", -- 13
-- Level 6
"wx............xw", -- 0
"x..............x", -- 1
"..xxxxxxxxxxxx..", -- 2
"..xwwwwwwwwwwx..", -- 3
"..xwvvvvvvvvvx..", -- 4
"..xwv.......vx..", -- 5
"..xwv.....a.vx..", -- 6
"..xwv.....a.vx..", -- 7
"..xwv.....a.vx..", -- 8
"..xwvvvvvvvvvx..", -- 9
"..xwwwwwwwwwwx..", -- 10
"..xxxxxxxxxxxx..", -- 11
"x..............x", -- 12
"wx............xw", -- 13
-- Level 7
"................", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"....xxxxxxxx....", -- 4
"....xxxxxxxx....", -- 5
"....xwwwwwax....", -- 6
"....xwvvvvax....", -- 7
"....xwwwwwax....", -- 8
"....xxxxxxxx....", -- 9
"................", -- 10
"................", -- 11
"................", -- 12
"................", -- 13
-- Level 8
"................", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"................", -- 4
"................", -- 5
"..........a.....", -- 6
".......xx.a.....", -- 7
"..........a.....", -- 8
"................", -- 9
"................", -- 10
"................", -- 11
"................", -- 12
"................", -- 13
-- Level 9
"................", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"................", -- 4
"................", -- 5
"..........a.....", -- 6
"..........a.....", -- 7
"..........a.....", -- 8
"................", -- 9
"................", -- 10
"................", -- 11
"................", -- 12
"................", -- 13
-- Level 10
"................", -- 0
"................", -- 1
"................", -- 2
"................", -- 3
"................", -- 4
"................", -- 5
"..........a.....", -- 6
"..........a.....", -- 7
"..........a.....", -- 8
"................", -- 9
"................", -- 10
"................", -- 11
"................", -- 12
"................", -- 13
},
}, -- Forge
{
OriginData =
{
ExportName = "HouseSmallWithDoor",
Name = "Plains 112",
GalleryName = "Plains",
GalleryIndex = "112",
ID = "264",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b: 17: 1", -- tree
"c: 35: 0", -- wool
"d: 64: 3", -- woodendoorblock
"e: 50: 4", -- torch
"f: 64: 9", -- woodendoorblock
"g: 85: 0", -- fence
"h: 44: 8", -- stone_slab
"i: 43: 0", -- doublestoneslab
"j: 44: 0", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
".......", -- 0
".bcdcb.", -- 1
".c...c.", -- 2
".c...c.", -- 3
".c...c.", -- 4
".bcccb.", -- 5
".......", -- 6
-- Level 2
".....e.", -- 0
".bcfcb.", -- 1
".g...g.", -- 2
".g...g.", -- 3
".g...g.", -- 4
".bgggb.", -- 5
".......", -- 6
-- Level 3
".hhhhh.", -- 0
"hbcccbh", -- 1
"hc...ch", -- 2
"hc...ch", -- 3
"hc...ch", -- 4
"hbcccbh", -- 5
".hhhhh.", -- 6
-- Level 4
"ij...ji", -- 0
"jjjjjjj", -- 1
".jiiij.", -- 2
".jiiij.", -- 3
".jiiij.", -- 4
"jjjjjjj", -- 5
"ij...ji", -- 6
-- Level 5
".......", -- 0
".......", -- 1
".......", -- 2
"...j...", -- 3
".......", -- 4
".......", -- 5
".......", -- 6
},
}, -- HouseSmallWithDoor
{
OriginData =
{
ExportName = "HouseSmallDblWithDoor",
Name = "Plains 113",
GalleryName = "Plains",
GalleryIndex = "113",
ID = "265",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = -1,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 2", -- planks
"b: 17: 9", -- tree
"c: 17: 1", -- tree
"d: 35: 0", -- wool
"e: 64: 3", -- woodendoorblock
"f:171:12", -- carpet
"g:135: 1", -- whitewoodstairs
"h:126: 2", -- woodenslab
"i:135: 2", -- whitewoodstairs
"j: 50: 4", -- torch
"k: 64: 9", -- woodendoorblock
"l: 85: 0", -- fence
"m: 19: 0", -- sponge
"n: 44: 8", -- stone_slab
"o: 43: 0", -- doublestoneslab
"p: 44: 0", -- stone_slab
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"maaaaaaaaam", -- 1
"maaaabaaaam", -- 2
"maaaabaaaam", -- 3
"maaaabaaaam", -- 4
"maaaaaaaaam", -- 5
"mmmmmmmmmmm", -- 6
-- Level 1
"...........", -- 0
".cdedcdddc.", -- 1
".dfff.fffd.", -- 2
".dgffdfhfd.", -- 3
".diifdfffd.", -- 4
".cdddcdddc.", -- 5
"...........", -- 6
-- Level 2
".j...j...j.", -- 0
".cdkdclllc.", -- 1
".d.......l.", -- 2
".l...l...l.", -- 3
".d...l...l.", -- 4
".clllclllc.", -- 5
"...........", -- 6
-- Level 3
".nnnnnnnnn.", -- 0
"ncdddcdddcn", -- 1
"nd...d...dn", -- 2
"nd...d...dn", -- 3
"nd...d...dn", -- 4
"ncdddcdddcn", -- 5
".nnnnnnnnn.", -- 6
-- Level 4
"op.......po", -- 0
"ppppppppppp", -- 1
".pooooooop.", -- 2
".ponndnnop.", -- 3
".pooooooop.", -- 4
"ppppppppppp", -- 5
"op.......po", -- 6
-- Level 5
"...........", -- 0
"...........", -- 1
"...........", -- 2
"...ppppp...", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
},
}, -- HouseSmallDblWithDoor
{
OriginData =
{
ExportName = "Well",
Name = "Plains 143",
GalleryName = "Plains",
GalleryIndex = "143",
ID = "487",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 14,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 13,
MaxZ = 6,
},
Connectors =
{
{
Type = 2,
RelX = 0,
RelY = 9,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 3,
RelY = 9,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 2,
RelX = 6,
RelY = 9,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 3,
RelY = 9,
RelZ = 6,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-9",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 4: 0", -- cobblestone
"c: 8: 0", -- water
"d: 13: 0", -- gravel
"e: 67: 1", -- stonestairs
"f: 67: 2", -- stonestairs
"g: 67: 0", -- stonestairs
"h: 67: 3", -- stonestairs
"i: 85: 0", -- fence
"j: 44: 8", -- stone_slab
"k: 44: 0", -- stone_slab
"l: 43: 0", -- doublestoneslab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
"mmmmmmm", -- 0
"mbbbbbm", -- 1
"mbcc.bm", -- 2
"mbcccbm", -- 3
"mbcccbm", -- 4
"mbbbbbm", -- 5
"mmmmmmm", -- 6
-- Level 2
"mmmmmmm", -- 0
"mbbbbbm", -- 1
"mbcccbm", -- 2
"mbcccbm", -- 3
"mbcccbm", -- 4
"mbbbbbm", -- 5
"mmmmmmm", -- 6
-- Level 3
"mmmmmmm", -- 0
"mbbbbbm", -- 1
"mbcccbm", -- 2
"mbcccbm", -- 3
"mbcccbm", -- 4
"mbbbbbm", -- 5
"mmmmmmm", -- 6
-- Level 4
"mmmmmmm", -- 0
"mbbbbbm", -- 1
"mbcccbm", -- 2
"mbcccbm", -- 3
"mbcccbm", -- 4
"mbbbbbm", -- 5
"mmmmmmm", -- 6
-- Level 5
"mmmmmmm", -- 0
"mbbbbbm", -- 1
"mbcccbm", -- 2
"mbcccbm", -- 3
"mbcccbm", -- 4
"mbbbbbm", -- 5
"mmmmmmm", -- 6
-- Level 6
"mmmmmmm", -- 0
"mbbbbbm", -- 1
"mbcccbm", -- 2
"mbcccbm", -- 3
"mbcccbm", -- 4
"mbbbbbm", -- 5
"mmmmmmm", -- 6
-- Level 7
"mmbbbmm", -- 0
"mbbbbbm", -- 1
"bbcccbb", -- 2
"bbcccbb", -- 3
"bbcccbb", -- 4
"mbbbbbm", -- 5
"mmbbbmm", -- 6
-- Level 8
"mmdddmm", -- 0
"mbbbbbm", -- 1
"dbcccbd", -- 2
"dbcccbd", -- 3
"dbcccbd", -- 4
"mbbbbbm", -- 5
"mmdddmm", -- 6
-- Level 9
"mm...mm", -- 0
"mbefgbm", -- 1
".h...h.", -- 2
".g...e.", -- 3
".f...f.", -- 4
"mbehgbm", -- 5
"mm...mm", -- 6
-- Level 10
"mm...mm", -- 0
"mi...im", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"mi...im", -- 5
"mm...mm", -- 6
-- Level 11
"mm...mm", -- 0
"mi...im", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"mi...im", -- 5
"mm...mm", -- 6
-- Level 12
"mjkkkjm", -- 0
"jlllllj", -- 1
"klllllk", -- 2
"klllllk", -- 3
"klllllk", -- 4
"jlllllj", -- 5
"mjkkkjm", -- 6
-- Level 13
"k.....k", -- 0
".......", -- 1
"..kkk..", -- 2
"..klk..", -- 3
"..kkk..", -- 4
".......", -- 5
"k.....k", -- 6
},
}, -- Well
{
OriginData =
{
ExportName = "Arch",
Name = "Plains 144",
GalleryName = "Plains",
GalleryIndex = "144",
ID = "488",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 7,
z = 5,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 6,
MaxZ = 4,
},
Connectors =
{
{
Type = 2,
RelX = 5,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 2: 0", -- grass
"b: 3: 0", -- dirt
"c: 13: 0", -- gravel
"d:113: 0", -- netherbrickfence
"e: 50: 5", -- torch
"f: 44: 8", -- stone_slab
"g: 44: 0", -- stone_slab
"h: 43: 0", -- doublestoneslab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aabacccaaaa", -- 0
"aabacccabaa", -- 1
"aabacccaaaa", -- 2
"aaaacccaaaa", -- 3
"aaaacccaaaa", -- 4
-- Level 1
"..d.....d..", -- 0
"..d.....d..", -- 1
"..d.....d..", -- 2
"..d.....d..", -- 3
"..d.....d..", -- 4
-- Level 2
"..d.....d..", -- 0
"...........", -- 1
"..d.....d..", -- 2
"...........", -- 3
"..d.....d..", -- 4
-- Level 3
"..e.....e..", -- 0
"...........", -- 1
"..d.....d..", -- 2
"...........", -- 3
"..e.....e..", -- 4
-- Level 4
"...fffff...", -- 0
"...........", -- 1
"..d.....d..", -- 2
"...........", -- 3
"...fffff...", -- 4
-- Level 5
"..g.....g..", -- 0
".fhggggghf.", -- 1
".fhfffffhf.", -- 2
".fhggggghf.", -- 3
"..g.....g..", -- 4
-- Level 6
"...........", -- 0
"...........", -- 1
"hg.......gh", -- 2
"...........", -- 3
"...........", -- 4
},
}, -- Arch
{
OriginData =
{
ExportName = "SakuraSmall",
Name = "Plains 145",
GalleryName = "Plains",
GalleryIndex = "145",
ID = "489",
CreatorName = "Aloe_vera",
},
Size =
{
x = 5,
y = 7,
z = 5,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 5,
MaxY = 6,
MaxZ = 5,
},
Connectors =
{
{
Type = -1,
RelX = 2,
RelY = 2,
RelZ = -1,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 5,
RelY = 2,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -3,
RelX = -1,
RelY = 2,
RelZ = 2,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 2: 0", -- grass
"c: 17: 1", -- tree
"d: 35: 6", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"bbbbb", -- 0
"bbbbb", -- 1
"bbabb", -- 2
"bbbbb", -- 3
"bbbbb", -- 4
-- Level 2
".....", -- 0
".....", -- 1
"..c..", -- 2
".....", -- 3
".....", -- 4
-- Level 3
".....", -- 0
".....", -- 1
"..c..", -- 2
".....", -- 3
".....", -- 4
-- Level 4
"..d..", -- 0
"ddddd", -- 1
"ddcdd", -- 2
"ddddd", -- 3
"..d..", -- 4
-- Level 5
".ddd.", -- 0
".ddd.", -- 1
"ddddd", -- 2
".ddd.", -- 3
".ddd.", -- 4
-- Level 6
".....", -- 0
"..d..", -- 1
".ddd.", -- 2
"..d..", -- 3
".....", -- 4
},
}, -- SakuraSmall
{
OriginData =
{
ExportName = "MediumSakuraTree",
Name = "Plains 146",
GalleryName = "Plains",
GalleryIndex = "146",
ID = "490",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 10,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 9,
MaxZ = 6,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 2,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 6,
RelY = 2,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 0,
RelY = 2,
RelZ = 3,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 2: 0", -- grass
"c: 31: 1", -- tallgrass
"d: 38: 7", -- rose
"e: 17: 1", -- tree
"f: 38: 0", -- rose
"g: 38: 8", -- rose
"h: 38: 5", -- rose
"i: 35: 6", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"bbbbbbb", -- 0
"bbabbbb", -- 1
"bbabaab", -- 2
"bbbaabb", -- 3
"bbabaab", -- 4
"bbababb", -- 5
"bbbbbbb", -- 6
-- Level 2
"mm...mm", -- 0
"m.c...m", -- 1
".dccdc.", -- 2
"..cefc.", -- 3
".ccfgh.", -- 4
"m.ccc.m", -- 5
"mm...mm", -- 6
-- Level 3
"m.....m", -- 0
".......", -- 1
".......", -- 2
"...e...", -- 3
".......", -- 4
".......", -- 5
"m.....m", -- 6
-- Level 4
".......", -- 0
"..i....", -- 1
".......", -- 2
"...e.i.", -- 3
".i.....", -- 4
".......", -- 5
".......", -- 6
-- Level 5
".......", -- 0
"..i....", -- 1
"...i...", -- 2
"..ieii.", -- 3
".i.ii..", -- 4
"...i...", -- 5
".......", -- 6
-- Level 6
".......", -- 0
"..ii...", -- 1
"..iii..", -- 2
".iieii.", -- 3
".iiii..", -- 4
"..iii..", -- 5
".......", -- 6
-- Level 7
".......", -- 0
"..iii..", -- 1
".iiiii.", -- 2
".iieii.", -- 3
".iiiii.", -- 4
"..iii..", -- 5
".......", -- 6
-- Level 8
".......", -- 0
"...i...", -- 1
"..iiii.", -- 2
".iiiii.", -- 3
"..iii..", -- 4
"...i...", -- 5
".......", -- 6
-- Level 9
".......", -- 0
".......", -- 1
"...i...", -- 2
"..iii..", -- 3
"...i...", -- 4
".......", -- 5
".......", -- 6
},
}, -- MediumSakuraTree
{
OriginData =
{
ExportName = "Garden2",
Name = "Plains 147",
GalleryName = "Plains",
GalleryIndex = "147",
ID = "491",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 5,
z = 16,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 4,
MaxZ = 15,
},
Connectors =
{
{
Type = -1,
RelX = 12,
RelY = 3,
RelZ = 15,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 2: 0", -- grass
"c: 8: 0", -- water
"d: 17: 1", -- tree
"e: 13: 0", -- gravel
"f: 31: 2", -- tallgrass
"g: 18: 5", -- leaves
"h: 38: 7", -- rose
"i: 17: 9", -- tree
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaaaaa", -- 7
"aaabaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaaa", -- 14
"aaaaaaaaaaaaaaaa", -- 15
-- Level 1
"aaaaaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaaaaa", -- 5
"aaaaccaaaaaaaaaa", -- 6
"aaacccaaaaaaaaaa", -- 7
"aabccaaaaaaaaaaa", -- 8
"aaaacaaaaaaaaaaa", -- 9
"aaaabaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaaaaa", -- 11
"aaaaaaaaaaaaaaaa", -- 12
"aaaaaaaaaaaaaaaa", -- 13
"aaaaaaaaaaaaaaaa", -- 14
"aaaaaaaaaaaaaaaa", -- 15
-- Level 2
"bbbbbbabbbbbbbbb", -- 0
"bbdbbbbbbbbdbbbb", -- 1
"abbbbbeebbbabdbb", -- 2
"bbbbbbbeebbbbbbb", -- 3
"bbbbbbbbebbabbbb", -- 4
"bbbccccbebbbbbab", -- 5
"bbbccccbeebbbaab", -- 6
"bbcccccbbeeeebba", -- 7
"bbcccccbbbbbeebb", -- 8
"bbccccbbababbebb", -- 9
"bbbbcbbaabbbbeeb", -- 10
"bbbbbbbbbbbbabeb", -- 11
"bbbbbbbbaaabbbeb", -- 12
"bbbbbbbbbabbbbeb", -- 13
"bbbbabbbbbbbbeeb", -- 14
"bbbbbbbbbbbbeebb", -- 15
-- Level 3
"......f...gg.g..", -- 0
"..gg.....gggggg.", -- 1
"ffgg......ghgggg", -- 2
".............gg.", -- 3
"...........f....", -- 4
"...........h.ff.", -- 5
".............fh.", -- 6
"...............f", -- 7
"................", -- 8
".......ff.f.....", -- 9
".f.....ffggf....", -- 10
".......gggg.f...", -- 11
".f......iddg....", -- 12
".....f..gdgg....", -- 13
"....ff...gg.....", -- 14
"................", -- 15
-- Level 4
"................", -- 0
"...........g.g..", -- 1
".............gg.", -- 2
"................", -- 3
"................", -- 4
"................", -- 5
"................", -- 6
"................", -- 7
"................", -- 8
"................", -- 9
".........g......", -- 10
"........ggg.....", -- 11
"........ggg.....", -- 12
".........g......", -- 13
"................", -- 14
"................", -- 15
},
}, -- Garden2
{
OriginData =
{
ExportName = "Farm",
Name = "Plains 166",
GalleryName = "Plains",
GalleryIndex = "166",
ID = "554",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 8,
z = 13,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 7,
MaxZ = 12,
},
Connectors =
{
{
Type = -1,
RelX = 10,
RelY = 2,
RelZ = 6,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 60: 7", -- tilleddirt
"c: 60: 6", -- tilleddirt
"d: 8: 0", -- water
"e: 43: 0", -- doublestoneslab
"f: 44: 0", -- stone_slab
"g: 59: 7", -- wheatblock
"h: 83: 0", -- reedsblock
"i:113: 0", -- netherbrickfence
"j: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmmmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"maaaaaaaaam", -- 8
"maaaaaaaaam", -- 9
"maaaaaaaaam", -- 10
"maaaaaaaaam", -- 11
"mmmmmmmmmmm", -- 12
-- Level 1
"mmmmmmmmmmm", -- 0
"maaaaaaaaam", -- 1
"mabbbbbbbam", -- 2
"mabbbbbbbam", -- 3
"mabbbbbcbam", -- 4
"mabbbbbbcam", -- 5
"mabdddddaam", -- 6
"mabbcbbbbam", -- 7
"mabbbbbbcam", -- 8
"mabbbbbbbam", -- 9
"mabbbbbbbam", -- 10
"maaaaaaaaam", -- 11
"mmmmmmmmmmm", -- 12
-- Level 2
"...........", -- 0
".efffffffe.", -- 1
".fgggggggf.", -- 2
".fgggggggf.", -- 3
".fgggggggf.", -- 4
".fghhhhhgf.", -- 5
".fh.....hf.", -- 6
".fghhhhhgf.", -- 7
".fgggggggf.", -- 8
".fgggggggf.", -- 9
".fgggggggf.", -- 10
".efffffffe.", -- 11
"...........", -- 12
-- Level 3
"...........", -- 0
".i.......i.", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...hhhhh...", -- 5
"..h.....h..", -- 6
"...hhhhh...", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
".i.......i.", -- 11
"...........", -- 12
-- Level 4
"...........", -- 0
".i.......i.", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...hhhhh...", -- 5
"..h.....h..", -- 6
"...hhhhh...", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
".i.......i.", -- 11
"...........", -- 12
-- Level 5
"...........", -- 0
".i.......i.", -- 1
"...........", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
"...........", -- 10
".i.......i.", -- 11
"...........", -- 12
-- Level 6
".i.......i.", -- 0
"iii.....iii", -- 1
".i.......i.", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
".i.......i.", -- 10
"iii.....iii", -- 11
".i.......i.", -- 12
-- Level 7
".j.......j.", -- 0
"j.j.....j.j", -- 1
".j.......j.", -- 2
"...........", -- 3
"...........", -- 4
"...........", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"...........", -- 9
".j.......j.", -- 10
"j.j.....j.j", -- 11
".j.......j.", -- 12
},
}, -- Farm
}, -- Pieces
}
================================================
FILE: Server/Prefabs/Villages/PlainsVillage.cubeset
================================================
-- PlainsVillage.cubeset
-- Defines the prefabs in the group PlainsVillage
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-30 13:45:48",
["AllowedBiomes"] = "Plains, Savanna, SavannaM, SunflowerPlains",
["IntendedUse"] = "Village",
},
Pieces =
{
{
OriginData =
{
ExportName = "WoodenHouseL14x14",
Name = "Plains 0",
GalleryName = "Plains",
GalleryIndex = "0",
ID = "4",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 8,
z = 16,
},
Hitbox =
{
MinX = -1,
MinY = 1,
MinZ = 0,
MaxX = 16,
MaxY = 7,
MaxZ = 16,
},
Connectors =
{
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 5: 0", -- planks
"f: 67: 3", -- stonestairs
"g: 17: 0", -- tree
"h: 64: 3", -- woodendoorblock
"i: 64: 1", -- woodendoorblock
"j:102: 0", -- glasspane
"k: 64: 9", -- woodendoorblock
"l: 53: 2", -- woodstairs
"m: 19: 0", -- sponge
"n: 53: 1", -- woodstairs
"o: 53: 7", -- woodstairs
"p: 53: 6", -- woodstairs
"q: 53: 3", -- woodstairs
"r: 53: 0", -- woodstairs
"s: 53: 5", -- woodstairs
"t: 53: 4", -- woodstairs
"u: 50: 3", -- torch
"v: 50: 2", -- torch
"w: 50: 4", -- torch
"x: 50: 1", -- torch
},
BlockData =
{
-- Level 0
"mmmmmmmmaaammmmm", -- 0
"maaaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaaam", -- 6
"maaaaaaaaaaaaaam", -- 7
"mmmmmaaaaaaaaaam", -- 8
"mmmmmmmmaaaaaaam", -- 9
"mmmmmmmmaaaaaaam", -- 10
"mmmmmmmmaaaaaaam", -- 11
"mmmmmmmmaaaaaaam", -- 12
"mmmmmmmmaaaaaaam", -- 13
"mmmmmmmmaaaaaaam", -- 14
"mmmmmmmmmmmmmmmm", -- 15
-- Level 1
"........bcd.....", -- 0
".aaaaaaaaaaaaaa.", -- 1
".aeeeeeeeeeeeea.", -- 2
".aeeeeeeeeeeeea.", -- 3
".aeeeeeeeeeeeea.", -- 4
".aeeeeeeeeeeeea.", -- 5
".aeeeeeeeeeeeea.", -- 6
".aaaaaaaaeeeeea.", -- 7
".....bfdaeeeeea.", -- 8
"mmmm....aeeeeea.", -- 9
"mmmmmmm.aeeeeea.", -- 10
"mmmmmmm.aeeeeea.", -- 11
"mmmmmmm.aeeeeea.", -- 12
"mmmmmmm.aeeeeea.", -- 13
"mmmmmmm.aaaaaaa.", -- 14
"mmmmmmm.........", -- 15
-- Level 2
"................", -- 0
".geeeeeeghgeeeg.", -- 1
".e............e.", -- 2
".e............e.", -- 3
".e............e.", -- 4
".e............e.", -- 5
".e............e.", -- 6
".geeeeieg.....e.", -- 7
"........e.....e.", -- 8
"mmmm....e.....e.", -- 9
"mmmmmmm.e.....e.", -- 10
"mmmmmmm.e.....e.", -- 11
"mmmmmmm.e.....e.", -- 12
"mmmmmmm.e.....e.", -- 13
"mmmmmmm.geeeeeg.", -- 14
"mmmmmmm.........", -- 15
-- Level 3
"................", -- 0
".gejjejjgkgjjeg.", -- 1
".j............e.", -- 2
".j............j.", -- 3
".j............j.", -- 4
".j............e.", -- 5
".j............j.", -- 6
".gejjekeg.....j.", -- 7
"........e.....e.", -- 8
"mmmm....j.....j.", -- 9
"mmmmmmm.j.....j.", -- 10
"mmmmmmm.e.....e.", -- 11
"mmmmmmm.j.....j.", -- 12
"mmmmmmm.j.....j.", -- 13
"mmmmmmm.gjjjjjg.", -- 14
"mmmmmmm.........", -- 15
-- Level 4
"llllllllllllllln", -- 0
"ogeeeeeegegeeegn", -- 1
".e............en", -- 2
".e............en", -- 3
".e............en", -- 4
".e............en", -- 5
".e............en", -- 6
"pgeeeeeeg.....en", -- 7
"qqqqqqqre.....en", -- 8
"mmmm...re.....en", -- 9
"mmmmmmmre.....en", -- 10
"mmmmmmmre.....en", -- 11
"mmmmmmmre.....en", -- 12
"mmmmmmmre.....en", -- 13
"mmmmmmmrgeeeeegn", -- 14
"mmmmmmmrs.....tn", -- 15
-- Level 5
"................", -- 0
"lllllllllllllll.", -- 1
"oeeeeeeeeeeeeen.", -- 2
".e.........u.en.", -- 3
".e..........ven.", -- 4
".e......w....en.", -- 5
"peeeeeeeee...en.", -- 6
"qqqqqqqqrex..en.", -- 7
"........re...en.", -- 8
"mmmm....re...en.", -- 9
"mmmmmmm.re...en.", -- 10
"mmmmmmm.re...en.", -- 11
"mmmmmmm.re...en.", -- 12
"mmmmmmm.re...en.", -- 13
"mmmmmmm.reeeeen.", -- 14
"mmmmmmm.rs...tn.", -- 15
-- Level 6
"................", -- 0
"................", -- 1
"llllllllllllln..", -- 2
"oeeeeeeeeeeeen..", -- 3
".ex.........en..", -- 4
"peeeeeeeeee.en..", -- 5
"qqqqqqqqqre.en..", -- 6
".........re.en..", -- 7
".........re.en..", -- 8
"mmmm.....re.en..", -- 9
"mmmmmmm..re.en..", -- 10
"mmmmmmm..re.en..", -- 11
"mmmmmmm..re.en..", -- 12
"mmmmmmm..rewen..", -- 13
"mmmmmmm..reeen..", -- 14
"mmmmmmm..rs.tn..", -- 15
-- Level 7
"................", -- 0
"................", -- 1
"................", -- 2
"lllllllllllll...", -- 3
"eeeeeeeeeeeen...", -- 4
"qqqqqqqqqqren...", -- 5
"..........ren...", -- 6
"..........ren...", -- 7
"..........ren...", -- 8
"mmmm......ren...", -- 9
"mmmmmmm...ren...", -- 10
"mmmmmmm...ren...", -- 11
"mmmmmmm...ren...", -- 12
"mmmmmmm...ren...", -- 13
"mmmmmmm...ren...", -- 14
"mmmmmmm...ren...", -- 15
},
}, -- WoodenHouseL14x14
{
OriginData =
{
ExportName = "CobbleWell4x4",
Name = "Plains 1",
GalleryName = "Plains",
GalleryIndex = "1",
ID = "5",
CreatorName = "Aloe_vera",
},
Size =
{
x = 4,
y = 13,
z = 4,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 3,
MaxY = 12,
MaxZ = 3,
},
Connectors =
{
{
Type = 2,
RelX = 1,
RelY = 9,
RelZ = 3,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 2,
RelY = 9,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 2,
RelX = 0,
RelY = 9,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 3,
RelY = 9,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-9",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 4: 0", -- cobblestone
"c: 8: 0", -- water
"d: 85: 0", -- fence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaa", -- 0
"aaaa", -- 1
"aaaa", -- 2
"aaaa", -- 3
-- Level 1
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 2
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 3
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 4
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 5
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 6
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 7
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 8
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 9
"bbbb", -- 0
"b..b", -- 1
"b..b", -- 2
"bbbb", -- 3
-- Level 10
"d..d", -- 0
"....", -- 1
"....", -- 2
"d..d", -- 3
-- Level 11
"d..d", -- 0
"....", -- 1
"....", -- 2
"d..d", -- 3
-- Level 12
"bbbb", -- 0
"bbbb", -- 1
"bbbb", -- 2
"bbbb", -- 3
},
}, -- CobbleWell4x4
{
OriginData =
{
ExportName = "DoublePlantBed",
Name = "Plains 5",
GalleryName = "Plains",
GalleryIndex = "5",
ID = "20",
CreatorName = "tonibm1999",
},
Size =
{
x = 15,
y = 8,
z = 9,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 7,
MaxZ = 8,
},
Connectors =
{
{
Type = -1,
RelX = 7,
RelY = 2,
RelZ = 8,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 2: 0", -- grass
"c: 17: 0", -- tree
"d: 60: 7", -- tilleddirt
"e: 8: 0", -- water
"f: 60: 6", -- tilleddirt
"g: 50: 5", -- torch
"h: 59: 7", -- wheatblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaabaaaaaaa", -- 0
"aaaaaaabaaaaaaa", -- 1
"aaaaaaabaaaaaaa", -- 2
"aaaaaaabaaaaaaa", -- 3
"aaaaaaabaaaaaaa", -- 4
"aaaaaaabaaaaaaa", -- 5
"aaaaaaabaaaaaaa", -- 6
"aaaaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaaaa", -- 8
-- Level 1
"aaaaaaamaaaaaaa", -- 0
"aaaaaaamaaaaaaa", -- 1
"aaaaaaamaaaaaaa", -- 2
"aaaaaaamaaaaaaa", -- 3
"aaaaaaamaaaaaaa", -- 4
"aaaaaaamaaaaaaa", -- 5
"aaaaaaamaaaaaaa", -- 6
"aaaaaaamaaaaaaa", -- 7
"aaaaaaamaaaaaaa", -- 8
-- Level 2
"ccccccc.ccccccc", -- 0
"cddeddc.cddeddc", -- 1
"cddeddc.cddeddc", -- 2
"cddeddc.cddeddc", -- 3
"cddeddc.cddeddc", -- 4
"cddeddc.cddeddc", -- 5
"cddeddc.cdfeddc", -- 6
"cddeddc.cddeddc", -- 7
"ccccccc.ccccccc", -- 8
-- Level 3
"g.....g.g.....g", -- 0
".hh.hh...hh.hh.", -- 1
".hh.hh...hh.hh.", -- 2
".hh.hh...hh.hh.", -- 3
".hh.hh...hh.hh.", -- 4
".hh.hh...hh.hh.", -- 5
".hh.hh...hh.hh.", -- 6
".hh.hh...hh.hh.", -- 7
"g.....g.g.....g", -- 8
-- Level 4
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
-- Level 5
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
-- Level 6
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
-- Level 7
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
},
}, -- DoublePlantBed
{
OriginData =
{
ExportName = "WoodenHouse9x5Fence",
Name = "p9",
GalleryName = "Plains",
GalleryIndex = "9",
ID = "26",
CreatorName = "Aloe_vera",
},
Size =
{
x = 10,
y = 7,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = -1,
MinZ = -1,
MaxX = 10,
MaxY = 6,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 3: 0", -- dirt
"c: 5: 0", -- planks
"d: 2: 0", -- grass
"e: 67: 2", -- stonestairs
"f: 43: 0", -- doublestoneslab
"g: 67: 0", -- stonestairs
"h: 67: 3", -- stonestairs
"i: 17: 0", -- tree
"j: 53: 1", -- woodstairs
"k: 85: 0", -- fence
"l: 53: 0", -- woodstairs
"m: 19: 0", -- sponge
"n: 64: 2", -- woodendoorblock
"o: 64: 0", -- woodendoorblock
"p:102: 0", -- glasspane
"q: 72: 0", -- woodplate
"r: 64: 9", -- woodendoorblock
"s: 53: 5", -- woodstairs
"t: 53: 4", -- woodstairs
"u: 50: 1", -- torch
"v: 50: 2", -- torch
},
BlockData =
{
-- Level 0
"mmmmmmmmmm", -- 0
"maaaaammmm", -- 1
"maaaaammmm", -- 2
"maaaaabbbb", -- 3
"aaaaaabbbb", -- 4
"aaaaaabbbb", -- 5
"aaaaaabbbb", -- 6
"maaaaabbbb", -- 7
"maaaaabbbb", -- 8
"maaaaammmm", -- 9
"mmmmmmmmmm", -- 10
-- Level 1
"......mmmm", -- 0
".aaaaammmm", -- 1
".acccammmm", -- 2
".acccadddd", -- 3
"eafffadddd", -- 4
"gaffffdddd", -- 5
"hafffadddd", -- 6
".afffadddd", -- 7
".afffadddd", -- 8
".aaaaammmm", -- 9
"......mmmm", -- 10
-- Level 2
"......mmmm", -- 0
".icccimmmm", -- 1
".cjklcmmmm", -- 2
".c...ckkkk", -- 3
".c...c...k", -- 4
".n...o...k", -- 5
".c...c...k", -- 6
".cff.c...k", -- 7
".c...ckkkk", -- 8
".icccimmmm", -- 9
"......mmmm", -- 10
-- Level 3
"......mmmm", -- 0
".ipppimmmm", -- 1
".p.q.pmmmm", -- 2
".p...p....", -- 3
".c...c....", -- 4
".r...r....", -- 5
".c...c....", -- 6
".p...p....", -- 7
".p...p....", -- 8
".ipppimmmm", -- 9
"......mmmm", -- 10
-- Level 4
"ls...tjmmm", -- 0
"licccijmmm", -- 1
"lc...cjmmm", -- 2
"lc...cj...", -- 3
"lcu.vcj...", -- 4
"lc...cj...", -- 5
"lcu.vcj...", -- 6
"lc...cj...", -- 7
"lc...cj...", -- 8
"licccijmmm", -- 9
"ls...tjmmm", -- 10
-- Level 5
".ls.tj.mmm", -- 0
".lcccj.mmm", -- 1
".lc.cj.mmm", -- 2
".lc.cj....", -- 3
".lc.cj....", -- 4
".lc.cj....", -- 5
".lc.cj....", -- 6
".lc.cj....", -- 7
".lc.cj....", -- 8
".lcccj.mmm", -- 9
".ls.tj.mmm", -- 10
-- Level 6
"..lcj..mmm", -- 0
"..lcj..mmm", -- 1
"..lcj..mmm", -- 2
"..lcj.....", -- 3
"..lcj.....", -- 4
"..lcj.....", -- 5
"..lcj.....", -- 6
"..lcj.....", -- 7
"..lcj.....", -- 8
"..lcj..mmm", -- 9
"..lcj..mmm", -- 10
},
}, -- WoodenHouse9x5Fence
{
OriginData =
{
ExportName = "SinglePlantBed",
Name = "Plains 17",
GalleryName = "Plains",
GalleryIndex = "17",
ID = "60",
CreatorName = "Aloe_vera",
},
Size =
{
x = 10,
y = 7,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 6,
MaxZ = 6,
},
Connectors =
{
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 3,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 17: 0", -- tree
"c: 60: 7", -- tilleddirt
"d: 60: 6", -- tilleddirt
"e: 8: 0", -- water
"f: 59: 7", -- wheatblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaa", -- 0
"aaaaaaaaaa", -- 1
"aaaaaaaaaa", -- 2
"aaaaaaaaaa", -- 3
"aaaaaaaaaa", -- 4
"aaaaaaaaaa", -- 5
"aaaaaaaaaa", -- 6
-- Level 1
"bbbbbbbbbb", -- 0
"bccccccccb", -- 1
"bccccccdcb", -- 2
"beeeeeeeeb", -- 3
"bcccccdccb", -- 4
"bccccccccb", -- 5
"bbbbbbbbbb", -- 6
-- Level 2
"..........", -- 0
".ffffffff.", -- 1
".ffffffff.", -- 2
"..........", -- 3
".ffffffff.", -- 4
".ffffffff.", -- 5
"..........", -- 6
-- Level 3
"..........", -- 0
"..........", -- 1
"..........", -- 2
"..........", -- 3
"..........", -- 4
"..........", -- 5
"..........", -- 6
-- Level 4
"..........", -- 0
"..........", -- 1
"..........", -- 2
"..........", -- 3
"..........", -- 4
"..........", -- 5
"..........", -- 6
-- Level 5
"..........", -- 0
"..........", -- 1
"..........", -- 2
"..........", -- 3
"..........", -- 4
"..........", -- 5
"..........", -- 6
-- Level 6
"..........", -- 0
"..........", -- 1
"..........", -- 2
"..........", -- 3
"..........", -- 4
"..........", -- 5
"..........", -- 6
},
}, -- SinglePlantBed
{
OriginData =
{
ExportName = "CobbleHouse10x5Library",
Name = "Plains 23",
GalleryName = "Plains",
GalleryIndex = "23",
ID = "66",
CreatorName = "xoft",
},
Size =
{
x = 12,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 12,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 64: 3", -- woodendoorblock
"f: 53: 3", -- woodstairs
"g: 53: 1", -- woodstairs
"h: 85: 0", -- fence
"i: 53: 0", -- woodstairs
"j: 53: 2", -- woodstairs
"k:102: 0", -- glasspane
"l: 64: 9", -- woodendoorblock
"m: 19: 0", -- sponge
"n: 50: 3", -- torch
"o: 72: 0", -- woodplate
"p: 50: 4", -- torch
"q: 53: 7", -- woodstairs
"r: 47: 0", -- bookshelf
"s: 50: 1", -- torch
"t: 50: 2", -- torch
"u: 53: 6", -- woodstairs
"v: 5: 0", -- planks
},
BlockData =
{
-- Level 0
"mmmmmmmaaamm", -- 0
"maaaaaaaaaam", -- 1
"maaaaaaaaaam", -- 2
"maaaaaaaaaam", -- 3
"maaaaaaaaaam", -- 4
"maaaaaaaaaam", -- 5
"mmmmmmmmmmmm", -- 6
-- Level 1
".......bcd..", -- 0
".aaaaaaaaaa.", -- 1
".aaaaaaaaaa.", -- 2
".aaaaaaaaaa.", -- 3
".aaaaaaaaaa.", -- 4
".aaaaaaaaaa.", -- 5
"............", -- 6
-- Level 2
"............", -- 0
".aaaaaaaeaa.", -- 1
".af.ghi...a.", -- 2
".ah.......a.", -- 3
".aj.ghighia.", -- 4
".aaaaaaaaaa.", -- 5
"............", -- 6
-- Level 3
"............", -- 0
".akkakkalaa.", -- 1
".k..no.n.nk.", -- 2
".ko.......k.", -- 3
".k..po.po.k.", -- 4
".akkakkakka.", -- 5
"............", -- 6
-- Level 4
"jjjjjjjjjjjj", -- 0
"qaaaaaaaaaaq", -- 1
".arrrrrrrra.", -- 2
".as......ta.", -- 3
".arrrrrrrra.", -- 4
"uaaaaaaaaaau", -- 5
"ffffffffffff", -- 6
-- Level 5
"............", -- 0
"jjjjjjjjjjjj", -- 1
"qvvvvvvvvvvq", -- 2
".vvvvvvvvvv.", -- 3
"uvvvvvvvvvvu", -- 4
"ffffffffffff", -- 5
"............", -- 6
-- Level 6
"............", -- 0
"............", -- 1
"jjjjjjjjjjjj", -- 2
"vvvvvvvvvvvv", -- 3
"ffffffffffff", -- 4
"............", -- 5
"............", -- 6
},
}, -- CobbleHouse10x5Library
{
OriginData =
{
ExportName = "BigPlantBed",
Name = "Plains 26",
GalleryName = "Plains",
GalleryIndex = "26",
ID = "70",
CreatorName = "Taugrammaton",
},
Size =
{
x = 13,
y = 8,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 7,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 11,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 3: 0", -- dirt
"b: 5: 0", -- planks
"c: 13: 0", -- gravel
"d: 17: 0", -- tree
"e: 60: 7", -- tilleddirt
"f: 8: 0", -- water
"g: 60: 6", -- tilleddirt
"h: 60: 4", -- tilleddirt
"i: 85: 0", -- fence
"j: 59: 7", -- wheatblock
"k: 50: 5", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
"aaaaaaaaaaaaa", -- 9
"aaaaaaaaaaaaa", -- 10
"aaaaaaaaaaaaa", -- 11
-- Level 1
"bbbbbbbbbbbbb", -- 0
"bcccccccccccb", -- 1
"bcccccccccccb", -- 2
"bcccccccccccb", -- 3
"bcccccccccccb", -- 4
"bcccccccccccb", -- 5
"bcccccccccccb", -- 6
"bcccccccccccb", -- 7
"bcccccccccccb", -- 8
"bcccccccccccb", -- 9
"bcccccccccccb", -- 10
"bbbbbbbbbbbbb", -- 11
-- Level 2
"ddddddddddddd", -- 0
"deefeefeefeed", -- 1
"deefeefeefeed", -- 2
"deefeefegfged", -- 3
"deefeefeefeed", -- 4
"deefgefeefged", -- 5
"degfeefegfhed", -- 6
"deefeefeefggd", -- 7
"deefeefeefeed", -- 8
"deefeefeefeed", -- 9
"deefeefeefeed", -- 10
"ddddddddddddd", -- 11
-- Level 3
"i..i..i..i..i", -- 0
"ijj.j..jj.jji", -- 1
"ijj..j.jj.jji", -- 2
"ijj.j..j..jji", -- 3
"ijj.jj.j..jji", -- 4
"ijj.j..jj.jji", -- 5
"ijj.jj.jj.jji", -- 6
"ijj....j..jji", -- 7
"ijj..j....jji", -- 8
"ijj.....j.jji", -- 9
"ijj.jj.j..jji", -- 10
"i..i..i..i..i", -- 11
-- Level 4
"k..k..k..k..k", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
".............", -- 8
".............", -- 9
".............", -- 10
"k..k..k..k..k", -- 11
-- Level 5
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
".............", -- 8
".............", -- 9
".............", -- 10
".............", -- 11
-- Level 6
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
".............", -- 8
".............", -- 9
".............", -- 10
".............", -- 11
-- Level 7
".............", -- 0
".............", -- 1
".............", -- 2
".............", -- 3
".............", -- 4
".............", -- 5
".............", -- 6
".............", -- 7
".............", -- 8
".............", -- 9
".............", -- 10
".............", -- 11
},
}, -- BigPlantBed
{
OriginData =
{
ExportName = "LampPost",
Name = "Plains 28",
GalleryName = "Plains",
GalleryIndex = "28",
ID = "73",
CreatorName = "STR_Warrior",
},
Size =
{
x = 3,
y = 7,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 2,
MaxY = 6,
MaxZ = 2,
},
Connectors =
{
{
Type = -1,
RelX = 1,
RelY = 1,
RelZ = 2,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 2: 0", -- grass
"b: 3: 0", -- dirt
"c: 43: 0", -- doublestoneslab
"d:139: 0", -- cobblestonewall
"e: 50: 4", -- torch
"f: 50: 2", -- torch
"g: 50: 1", -- torch
"h: 50: 3", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaa", -- 0
"aba", -- 1
"aaa", -- 2
-- Level 1
"...", -- 0
".c.", -- 1
"...", -- 2
-- Level 2
"...", -- 0
".d.", -- 1
"...", -- 2
-- Level 3
"...", -- 0
".d.", -- 1
"...", -- 2
-- Level 4
".e.", -- 0
"fcg", -- 1
".h.", -- 2
-- Level 5
"...", -- 0
"...", -- 1
"...", -- 2
-- Level 6
"...", -- 0
"...", -- 1
"...", -- 2
},
}, -- LampPost
{
OriginData =
{
ExportName = "WoodenHouse9x7DoubleDoor",
Name = "Plains 38",
GalleryName = "Plains",
GalleryIndex = "38",
ID = "87",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 11,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 67: 3", -- stonestairs
"f: 17: 0", -- tree
"g: 5: 0", -- planks
"h: 64: 7", -- woodendoorblock
"i: 64: 1", -- woodendoorblock
"j:102: 0", -- glasspane
"k: 64: 9", -- woodendoorblock
"l: 53: 2", -- woodstairs
"m: 19: 0", -- sponge
"n: 53: 7", -- woodstairs
"o: 17: 4", -- tree
"p: 17: 8", -- tree
"q: 50: 3", -- torch
"r: 50: 4", -- torch
"s: 53: 6", -- woodstairs
"t: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"mmmmaaammmm", -- 8
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
".aaaaaaaaa.", -- 6
".aaaaaaaaa.", -- 7
"....bed....", -- 8
-- Level 2
"...........", -- 0
".fggfhfggf.", -- 1
".g.......g.", -- 2
".g.......g.", -- 3
".f.......f.", -- 4
".g.......g.", -- 5
".g.......g.", -- 6
".fggfifggf.", -- 7
"...........", -- 8
-- Level 3
"...........", -- 0
".fjjfkfjjf.", -- 1
".j.......j.", -- 2
".j.......j.", -- 3
".f.......f.", -- 4
".j.......j.", -- 5
".j.......j.", -- 6
".fjjfkfjjf.", -- 7
"...........", -- 8
-- Level 4
"lllllllllll", -- 0
"nfooooooofn", -- 1
".p..q.q..p.", -- 2
".p.......p.", -- 3
".p.......p.", -- 4
".p.......p.", -- 5
".p..r.r..p.", -- 6
"sfooooooofs", -- 7
"ttttttttttt", -- 8
-- Level 5
"...........", -- 0
"lllllllllll", -- 1
"ngggggggggn", -- 2
".g.......g.", -- 3
".g.......g.", -- 4
".g.......g.", -- 5
"sgggggggggs", -- 6
"ttttttttttt", -- 7
"...........", -- 8
-- Level 6
"...........", -- 0
"...........", -- 1
"lllllllllll", -- 2
"ngggggggggn", -- 3
".g.......g.", -- 4
"sgggggggggs", -- 5
"ttttttttttt", -- 6
"...........", -- 7
"...........", -- 8
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
"lllllllllll", -- 3
"ggggggggggg", -- 4
"ttttttttttt", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
},
}, -- WoodenHouse9x7DoubleDoor
{
OriginData =
{
ExportName = "WoodenHouseL13x14",
Name = "Plains 39",
GalleryName = "Plains",
GalleryIndex = "39",
ID = "90",
CreatorName = "STR_Warrior",
},
Size =
{
x = 15,
y = 9,
z = 16,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 15,
MaxY = 8,
MaxZ = 16,
},
Connectors =
{
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A: 53: 7", -- woodstairs
"B: 53: 4", -- woodstairs
"C: 53: 5", -- woodstairs
"D: 53: 6", -- woodstairs
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 43: 0", -- doublestoneslab
"f: 17: 0", -- tree
"g: 5: 0", -- planks
"h: 64: 3", -- woodendoorblock
"i: 96: 8", -- trapdoor
"j: 61: 2", -- furnace
"k: 53: 3", -- woodstairs
"l: 85: 0", -- fence
"m: 19: 0", -- sponge
"n: 53: 2", -- woodstairs
"o: 53: 1", -- woodstairs
"p: 53: 0", -- woodstairs
"q: 47: 0", -- bookshelf
"r:102: 0", -- glasspane
"s: 64: 9", -- woodendoorblock
"t: 72: 0", -- woodplate
"u: 17: 4", -- tree
"v: 17: 8", -- tree
"w: 50: 3", -- torch
"x: 50: 1", -- torch
"y: 50: 4", -- torch
"z: 50: 2", -- torch
},
BlockData =
{
-- Level 0
"mmmmmmaaammmmmm", -- 0
"maaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaam", -- 6
"maaaaaaaaaaaaam", -- 7
"mmmmmmmmaaaaaam", -- 8
"mmmmmmmmaaaaaam", -- 9
"mmmmmmmmaaaaaam", -- 10
"mmmmmmmmaaaaaam", -- 11
"mmmmmmmmaaaaaam", -- 12
"mmmmmmmmaaaaaam", -- 13
"mmmmmmmmaaaaaam", -- 14
"mmmmmmmmmmmmmmm", -- 15
-- Level 1
"......bcd......", -- 0
".aaaaaaaaaaaaa.", -- 1
".aeeeeaaaaaaaa.", -- 2
".aeeeeaaaaaaaa.", -- 3
".aaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaaa.", -- 5
".aaaaaaaaaaaaa.", -- 6
".aaaaaaaaaaaaa.", -- 7
"........aaaaaa.", -- 8
"mmmmmmm.aaaaaa.", -- 9
"mmmmmmm.aaaaaa.", -- 10
"mmmmmmm.aaaaaa.", -- 11
"mmmmmmm.aaaaaa.", -- 12
"mmmmmmm.aaaaaa.", -- 13
"mmmmmmm.aaaaaa.", -- 14
"mmmmmmm........", -- 15
-- Level 2
"...............", -- 0
".fggggfhfggggf.", -- 1
".g...i.......g.", -- 2
".gjeee......kg.", -- 3
".f..........lg.", -- 4
".g..........ng.", -- 5
".g.olp..ol...g.", -- 6
".fggggggfn...f.", -- 7
"........g....g.", -- 8
"mmmmmmm.gk...g.", -- 9
"mmmmmmm.gl..kg.", -- 10
"mmmmmmm.gn..lg.", -- 11
"mmmmmmm.g...ng.", -- 12
"mmmmmmm.gq..qg.", -- 13
"mmmmmmm.fggggf.", -- 14
"mmmmmmm........", -- 15
-- Level 3
"...............", -- 0
".fgrrgfsfgrrgf.", -- 1
".g...........g.", -- 2
".g...........r.", -- 3
".f..........tr.", -- 4
".g...........r.", -- 5
".g..t....t...g.", -- 6
".fgrrrrgf....f.", -- 7
"........g....g.", -- 8
"mmmmmmm.r....r.", -- 9
"mmmmmmm.rt...r.", -- 10
"mmmmmmm.r...tr.", -- 11
"mmmmmmm.r....r.", -- 12
"mmmmmmm.gq..qg.", -- 13
"mmmmmmm.fgrrgf.", -- 14
"mmmmmmm........", -- 15
-- Level 4
"...............", -- 0
".fuuuuuuuuuuuf.", -- 1
".v....w.w....v.", -- 2
".v...........v.", -- 3
".vx..........v.", -- 4
".v...........v.", -- 5
".v......y....v.", -- 6
".fuuuuuufx..zv.", -- 7
"........v....v.", -- 8
"mmmmmmm.v....v.", -- 9
"mmmmmmm.v....v.", -- 10
"mmmmmmm.v....v.", -- 11
"mmmmmmm.v....v.", -- 12
"mmmmmmm.v.yy.v.", -- 13
"mmmmmmm.fuuuuf.", -- 14
"mmmmmmm........", -- 15
-- Level 5
"nnnnnnnnnnnnnno", -- 0
"pgggggggggggggo", -- 1
"pgAAAAAAAAAABgo", -- 2
"pgC.........Bgo", -- 3
"pgC.........Bgo", -- 4
"pgC.........Bgo", -- 5
"pgCDDDDDDD..Bgo", -- 6
"pggggggggC..Bgo", -- 7
"pkkkkkkpgC..Bgo", -- 8
"mmmmmmmpgC..Bgo", -- 9
"mmmmmmmpgC..Bgo", -- 10
"mmmmmmmpgC..Bgo", -- 11
"mmmmmmmpgC..Bgo", -- 12
"mmmmmmmpgCDDBgo", -- 13
"mmmmmmmpggggggo", -- 14
"mmmmmmmpkkkkkkk", -- 15
-- Level 6
"...............", -- 0
".pnnnnnnnnnnno.", -- 1
".pgggggggggggo.", -- 2
".pgggggggggggo.", -- 3
".pgggggggggggo.", -- 4
".pgggggggggggo.", -- 5
".pgggggggggggo.", -- 6
".pkkkkkkkggggo.", -- 7
"........pggggo.", -- 8
"mmmmmmm.pggggo.", -- 9
"mmmmmmm.pggggo.", -- 10
"mmmmmmm.pggggo.", -- 11
"mmmmmmm.pggggo.", -- 12
"mmmmmmm.pggggo.", -- 13
"mmmmmmm.kkkkko.", -- 14
"mmmmmmm........", -- 15
-- Level 7
"...............", -- 0
"...............", -- 1
"..nnnnnnnnnnn..", -- 2
"..pgggggggggo..", -- 3
"..pgggggggggo..", -- 4
"..pgggggggggo..", -- 5
"..kkkkkkkkggo..", -- 6
".........pggo..", -- 7
".........pggo..", -- 8
"mmmmmmm..pggo..", -- 9
"mmmmmmm..pggo..", -- 10
"mmmmmmm..pggo..", -- 11
"mmmmmmm..pggo..", -- 12
"mmmmmmm..kkko..", -- 13
"mmmmmmm........", -- 14
"mmmmmmm........", -- 15
-- Level 8
"...............", -- 0
"...............", -- 1
"...............", -- 2
"...pnnnnnnno...", -- 3
"...pgggggggo...", -- 4
"...pkkkkkkpo...", -- 5
"..........po...", -- 6
"..........po...", -- 7
"..........po...", -- 8
"mmmmmmm...po...", -- 9
"mmmmmmm...po...", -- 10
"mmmmmmm...po...", -- 11
"mmmmmmm...pk...", -- 12
"mmmmmmm........", -- 13
"mmmmmmm........", -- 14
"mmmmmmm........", -- 15
},
}, -- WoodenHouseL13x14
{
OriginData =
{
ExportName = "WoodenHouse7x5",
Name = "Plains 40",
GalleryName = "Plains",
GalleryIndex = "40",
ID = "91",
CreatorName = "xoft",
},
Size =
{
x = 9,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 9,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j: 53: 2", -- woodstairs
"k: 53: 7", -- woodstairs
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n: 53: 6", -- woodstairs
"o: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmaaammm", -- 0
"maaaaaaam", -- 1
"maaaaaaam", -- 2
"maaaaaaam", -- 3
"maaaaaaam", -- 4
"maaaaaaam", -- 5
"mmmmmmmmm", -- 6
-- Level 1
"...bcd...", -- 0
".aaaaaaa.", -- 1
".aaaaaaa.", -- 2
".aaaaaaa.", -- 3
".aaaaaaa.", -- 4
".aaaaaaa.", -- 5
".........", -- 6
-- Level 2
".........", -- 0
".effgffe.", -- 1
".f.....f.", -- 2
".f.....f.", -- 3
".f.....f.", -- 4
".efffffe.", -- 5
".........", -- 6
-- Level 3
".........", -- 0
".ehfifhe.", -- 1
".h.....h.", -- 2
".h.....h.", -- 3
".h.....h.", -- 4
".ehhfhhe.", -- 5
".........", -- 6
-- Level 4
"jjjjjjjjj", -- 0
"kefffffek", -- 1
".f.l.l.f.", -- 2
".f.....f.", -- 3
".f.....f.", -- 4
"nefffffen", -- 5
"ooooooooo", -- 6
-- Level 5
".........", -- 0
"jjjjjjjjj", -- 1
"kfffffffk", -- 2
".f.....f.", -- 3
"nfffffffn", -- 4
"ooooooooo", -- 5
".........", -- 6
-- Level 6
".........", -- 0
".........", -- 1
"jjjjjjjjj", -- 2
"fffffffff", -- 3
"ooooooooo", -- 4
".........", -- 5
".........", -- 6
},
}, -- WoodenHouse7x5
{
OriginData =
{
ExportName = "WoodenHouse9x5",
Name = "Plains 41",
GalleryName = "Plains",
GalleryIndex = "41",
ID = "92",
CreatorName = "xoft",
},
Size =
{
x = 11,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 11,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = -1,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j: 53: 2", -- woodstairs
"k: 53: 7", -- woodstairs
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n: 53: 6", -- woodstairs
"o: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"mmmmmmmmmmm", -- 6
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
"...........", -- 6
-- Level 2
"...........", -- 0
".efffgfffe.", -- 1
".f.......f.", -- 2
".f.......f.", -- 3
".f.......f.", -- 4
".efffffffe.", -- 5
"...........", -- 6
-- Level 3
"...........", -- 0
".ehhfifhhe.", -- 1
".h.......h.", -- 2
".h.......h.", -- 3
".h.......h.", -- 4
".ehhhfhhhe.", -- 5
"...........", -- 6
-- Level 4
"jjjjjjjjjjj", -- 0
"kfffffffffk", -- 1
".f..l.l.ff.", -- 2
".f......ff.", -- 3
".f......ff.", -- 4
"nfffffffffn", -- 5
"ooooooooooo", -- 6
-- Level 5
"...........", -- 0
"jjjjjjjjjjj", -- 1
"kfffffffffk", -- 2
".fffffffff.", -- 3
"nfffffffffn", -- 4
"ooooooooooo", -- 5
"...........", -- 6
-- Level 6
"...........", -- 0
"...........", -- 1
"jjjjjjjjjjj", -- 2
"fffffffffff", -- 3
"ooooooooooo", -- 4
"...........", -- 5
"...........", -- 6
},
}, -- WoodenHouse9x5
{
OriginData =
{
ExportName = "WoodenHouseL9x9",
Name = "Plains 42",
GalleryName = "Plains",
GalleryIndex = "42",
ID = "93",
CreatorName = "xoft",
},
Size =
{
x = 11,
y = 7,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 11,
MaxY = 6,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j: 53: 2", -- woodstairs
"k: 53: 7", -- woodstairs
"l: 53: 1", -- woodstairs
"m: 19: 0", -- sponge
"n: 50: 3", -- torch
"o: 50: 4", -- torch
"p: 53: 6", -- woodstairs
"q: 50: 1", -- torch
"r: 50: 2", -- torch
"s: 53: 3", -- woodstairs
"t: 53: 0", -- woodstairs
"u: 53: 5", -- woodstairs
"v: 53: 4", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"mmmmmaaaaam", -- 6
"mmmmmaaaaam", -- 7
"mmmmmaaaaam", -- 8
"mmmmmaaaaam", -- 9
"mmmmmmmmmmm", -- 10
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
".....aaaaa.", -- 6
"mmmm.aaaaa.", -- 7
"mmmm.aaaaa.", -- 8
"mmmm.aaaaa.", -- 9
"mmmm.......", -- 10
-- Level 2
"...........", -- 0
".efffgfffe.", -- 1
".f.......f.", -- 2
".f.......f.", -- 3
".f.......f.", -- 4
".efffe...f.", -- 5
".....f...f.", -- 6
"mmmm.f...f.", -- 7
"mmmm.f...f.", -- 8
"mmmm.efffe.", -- 9
"mmmm.......", -- 10
-- Level 3
"...........", -- 0
".ehhfifhhe.", -- 1
".h.......h.", -- 2
".h.......h.", -- 3
".h.......h.", -- 4
".ehhhe...f.", -- 5
".....h...h.", -- 6
"mmmm.h...h.", -- 7
"mmmm.h...h.", -- 8
"mmmm.ehhhe.", -- 9
"mmmm.......", -- 10
-- Level 4
"jjjjjjjjjjj", -- 0
"kfffffffffl", -- 1
".f..n.n..fl", -- 2
".f.......fl", -- 3
".f...o...fl", -- 4
"pfffffq.rfl", -- 5
"sssssf...fl", -- 6
"mmmmtf...fl", -- 7
"mmmmtf...fl", -- 8
"mmmmtfffffl", -- 9
"mmmmtu...vl", -- 10
-- Level 5
"...........", -- 0
"jjjjjjjjjl.", -- 1
"kffffffffl.", -- 2
".f......fl.", -- 3
"pffffff.fl.", -- 4
"ssssssf.fl.", -- 5
".....tf.fl.", -- 6
"mmmm.tf.fl.", -- 7
"mmmm.tf.fl.", -- 8
"mmmm.tfffl.", -- 9
"mmmm.tu.vl.", -- 10
-- Level 6
"...........", -- 0
"...........", -- 1
"jjjjjjjjj..", -- 2
"ffffffffl..", -- 3
"sssssstfl..", -- 4
"......tfl..", -- 5
"......tfl..", -- 6
"mmmm..tfl..", -- 7
"mmmm..tfl..", -- 8
"mmmm..tfl..", -- 9
"mmmm..tfl..", -- 10
},
}, -- WoodenHouseL9x9
{
OriginData =
{
ExportName = "WoodenHouseU13x9",
Name = "Plains 43",
GalleryName = "Plains",
GalleryIndex = "43",
ID = "94",
CreatorName = "xoft",
},
Size =
{
x = 15,
y = 7,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 15,
MaxY = 6,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j: 53: 2", -- woodstairs
"k: 53: 0", -- woodstairs
"l: 53: 1", -- woodstairs
"m: 19: 0", -- sponge
"n: 50: 3", -- torch
"o: 50: 4", -- torch
"p: 50: 2", -- torch
"q: 50: 1", -- torch
"r: 53: 3", -- woodstairs
"s: 53: 5", -- woodstairs
"t: 53: 4", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmmmaaammmmmm", -- 0
"maaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaam", -- 5
"maaaaammmaaaaam", -- 6
"maaaaammmaaaaam", -- 7
"maaaaammmaaaaam", -- 8
"maaaaammmaaaaam", -- 9
"mmmmmmmmmmmmmmm", -- 10
-- Level 1
"......bcd......", -- 0
".aaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaaa.", -- 5
".aaaaa...aaaaa.", -- 6
".aaaaa...aaaaa.", -- 7
".aaaaa...aaaaa.", -- 8
".aaaaa...aaaaa.", -- 9
"...............", -- 10
-- Level 2
"...............", -- 0
".efffffgfffffe.", -- 1
".f...........f.", -- 2
".f...........f.", -- 3
".f...........f.", -- 4
".f...efffe...f.", -- 5
".f...f...f...f.", -- 6
".f...f...f...f.", -- 7
".f...f...f...f.", -- 8
".efffe...efffe.", -- 9
"...............", -- 10
-- Level 3
"...............", -- 0
".ehhhhfifhhhhe.", -- 1
".h...........h.", -- 2
".h...........h.", -- 3
".h...........h.", -- 4
".f...ehhhe...f.", -- 5
".h...h...h...h.", -- 6
".h...h...h...h.", -- 7
".h...h...h...h.", -- 8
".ehhhe...ehhhe.", -- 9
"...............", -- 10
-- Level 4
"jjjjjjjjjjjjjjj", -- 0
"kfffffffffffffl", -- 1
"kf....n.n....fl", -- 2
"kf...........fl", -- 3
"kf...o...o...fl", -- 4
"kf..pfffffq..fl", -- 5
"kf...frrrf...fl", -- 6
"kf...fl.kf...fl", -- 7
"kf...fl.kf...fl", -- 8
"kfffffl.kfffffl", -- 9
"ks...tl.ks...tl", -- 10
-- Level 5
"...............", -- 0
".jjjjjjjjjjjjl.", -- 1
".kfffffffffffl.", -- 2
".kfffffffffffl.", -- 3
".kfffffffffffl.", -- 4
".kffflrrrrfffl.", -- 5
".kfffl...kfffl.", -- 6
".kfffl...kfffl.", -- 7
".kfffl...kfffl.", -- 8
".kfffl...kfffl.", -- 9
".ks.tl...ks.tl.", -- 10
-- Level 6
"...............", -- 0
"...............", -- 1
"..kjjjjjjjjjj..", -- 2
"..kfffffffffl..", -- 3
"..kflrrrrrkfl..", -- 4
"..kfl.....kfl..", -- 5
"..kfl.....kfl..", -- 6
"..kfl.....kfl..", -- 7
"..kfl.....kfl..", -- 8
"..kfl.....kfl..", -- 9
"..kfl.....kfl..", -- 10
},
}, -- WoodenHouseU13x9
{
OriginData =
{
ExportName = "WoodenHouse9x5Library",
Name = "Plains 46",
GalleryName = "Plains",
GalleryIndex = "46",
ID = "97",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 11,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h: 53: 3", -- woodstairs
"i: 85: 0", -- fence
"j: 53: 2", -- woodstairs
"k: 53: 1", -- woodstairs
"l: 53: 0", -- woodstairs
"m: 19: 0", -- sponge
"n:102: 0", -- glasspane
"o: 64: 9", -- woodendoorblock
"p: 50: 3", -- torch
"q: 72: 0", -- woodplate
"r: 53: 7", -- woodstairs
"s: 47: 0", -- bookshelf
"t: 50: 1", -- torch
"u: 50: 2", -- torch
"v: 53: 6", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"mmmmmmmmmmm", -- 6
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
"...........", -- 6
-- Level 2
"...........", -- 0
".efffgfffe.", -- 1
".fh.....hf.", -- 2
".fi.....if.", -- 3
".fj.kil.jf.", -- 4
".efffffffe.", -- 5
"...........", -- 6
-- Level 3
"...........", -- 0
".ennfofnne.", -- 1
".n..p.p..n.", -- 2
".nq.....qn.", -- 3
".n...q...n.", -- 4
".ennnfnnne.", -- 5
"...........", -- 6
-- Level 4
"jjjjjjjjjjj", -- 0
"rfffffffffr", -- 1
".fsssssssf.", -- 2
".ft.....uf.", -- 3
".fsssssssf.", -- 4
"vfffffffffv", -- 5
"hhhhhhhhhhh", -- 6
-- Level 5
"...........", -- 0
"jjjjjjjjjjj", -- 1
"rfffffffffr", -- 2
".f.......f.", -- 3
"vfffffffffv", -- 4
"hhhhhhhhhhh", -- 5
"...........", -- 6
-- Level 6
"...........", -- 0
"...........", -- 1
"jjjjjjjjjjj", -- 2
"fffffffffff", -- 3
"hhhhhhhhhhh", -- 4
"...........", -- 5
"...........", -- 6
},
}, -- WoodenHouse9x5Library
{
OriginData =
{
ExportName = "WoodenHouse10x7Library",
Name = "Plains 47",
GalleryName = "Plains",
GalleryIndex = "47",
ID = "98",
CreatorName = "Aloe_vera",
},
Size =
{
x = 12,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 12,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h: 53: 3", -- woodstairs
"i: 85: 0", -- fence
"j: 53: 2", -- woodstairs
"k: 53: 1", -- woodstairs
"l: 53: 0", -- woodstairs
"m: 19: 0", -- sponge
"n:102: 0", -- glasspane
"o: 64: 8", -- woodendoorblock
"p: 64: 9", -- woodendoorblock
"q: 50: 3", -- torch
"r: 72: 0", -- woodplate
"s: 53: 7", -- woodstairs
"t: 47: 0", -- bookshelf
"u: 50: 1", -- torch
"v: 50: 2", -- torch
"w: 53: 6", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaaammmm", -- 0
"maaaaaaaaaam", -- 1
"maaaaaaaaaam", -- 2
"maaaaaaaaaam", -- 3
"maaaaaaaaaam", -- 4
"maaaaaaaaaam", -- 5
"maaaaaaaaaam", -- 6
"maaaaaaaaaam", -- 7
"mmmmmmmmmmmm", -- 8
-- Level 1
"....bccd....", -- 0
".aaaaaaaaaa.", -- 1
".aaaaaaaaaa.", -- 2
".aaaaaaaaaa.", -- 3
".aaaaaaaaaa.", -- 4
".aaaaaaaaaa.", -- 5
".aaaaaaaaaa.", -- 6
".aaaaaaaaaa.", -- 7
"............", -- 8
-- Level 2
"............", -- 0
".efffggfffe.", -- 1
".f........f.", -- 2
".fh......hf.", -- 3
".fi......if.", -- 4
".fj......jf.", -- 5
".f.kilkil.f.", -- 6
".effffffffe.", -- 7
"............", -- 8
-- Level 3
"............", -- 0
".ennfopfnne.", -- 1
".n..q..q..n.", -- 2
".n........n.", -- 3
".fr......rf.", -- 4
".n........n.", -- 5
".n..r..r..n.", -- 6
".ennfnnfnne.", -- 7
"............", -- 8
-- Level 4
"jjjjjjjjjjjj", -- 0
"sffffffffffs", -- 1
".fttttttttf.", -- 2
".f........f.", -- 3
".fu......vf.", -- 4
".f........f.", -- 5
".fttttttttf.", -- 6
"wffffffffffw", -- 7
"hhhhhhhhhhhh", -- 8
-- Level 5
"............", -- 0
"jjjjjjjjjjjj", -- 1
"sffffffffffs", -- 2
".fttttttttf.", -- 3
".f........f.", -- 4
".fttttttttf.", -- 5
"wffffffffffw", -- 6
"hhhhhhhhhhhh", -- 7
"............", -- 8
-- Level 6
"............", -- 0
"............", -- 1
"jjjjjjjjjjjj", -- 2
"sffffffffffs", -- 3
".f........f.", -- 4
"wffffffffffw", -- 5
"hhhhhhhhhhhh", -- 6
"............", -- 7
"............", -- 8
-- Level 7
"............", -- 0
"............", -- 1
"............", -- 2
"jjjjjjjjjjjj", -- 3
"ffffffffffff", -- 4
"hhhhhhhhhhhh", -- 5
"............", -- 6
"............", -- 7
"............", -- 8
},
}, -- WoodenHouse10x7Library
{
OriginData =
{
ExportName = "WoodenHouse9x7Butcher",
Name = "Plains 48",
GalleryName = "Plains",
GalleryIndex = "48",
ID = "99",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 8,
z = 13,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 7,
MaxZ = 13,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 3: 0", -- dirt
"c: 67: 0", -- stonestairs
"d: 67: 2", -- stonestairs
"e: 67: 1", -- stonestairs
"f: 43: 0", -- doublestoneslab
"g: 2: 0", -- grass
"h: 17: 0", -- tree
"i: 5: 0", -- planks
"j: 64: 3", -- woodendoorblock
"k: 53: 3", -- woodstairs
"l: 85: 0", -- fence
"m: 19: 0", -- sponge
"n: 53: 2", -- woodstairs
"o: 64: 1", -- woodendoorblock
"p:102: 0", -- glasspane
"q: 64: 9", -- woodendoorblock
"r: 72: 0", -- woodplate
"s: 53: 7", -- woodstairs
"t: 50: 1", -- torch
"u: 50: 2", -- torch
"v: 53: 6", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"mmbbbbbbbmm", -- 8
"mmbbbbbbbmm", -- 9
"mmbbbbbbbmm", -- 10
"mmbbbbbbbmm", -- 11
"mmbbbbbbbmm", -- 12
-- Level 1
"....cde....", -- 0
".aaaaaaaaa.", -- 1
".affffaaaa.", -- 2
".affffaaaa.", -- 3
".affffaaaa.", -- 4
".affffaaaa.", -- 5
".affffaaaa.", -- 6
".aaaaaaaaa.", -- 7
"..ggggggg..", -- 8
"mmgggggggmm", -- 9
"mmgggggggmm", -- 10
"mmgggggggmm", -- 11
"mmgggggggmm", -- 12
-- Level 2
"...........", -- 0
".hiiijiiih.", -- 1
".i.f....ki.", -- 2
".i.f....li.", -- 3
".i.f....ni.", -- 4
".i.......i.", -- 5
".i.......i.", -- 6
".hiiioiiih.", -- 7
"..l.....l..", -- 8
"mml.....lmm", -- 9
"mml.....lmm", -- 10
"mml.....lmm", -- 11
"mmlllllllmm", -- 12
-- Level 3
"...........", -- 0
".hppiqipph.", -- 1
".p.......p.", -- 2
".p......rp.", -- 3
".i.......i.", -- 4
".p.......p.", -- 5
".p.......p.", -- 6
".hppiqipph.", -- 7
"...........", -- 8
"mm.......mm", -- 9
"mm.......mm", -- 10
"mm.......mm", -- 11
"mm.......mm", -- 12
-- Level 4
"nnnnnnnnnnn", -- 0
"siiiiiiiiis", -- 1
".i.......i.", -- 2
".i.......i.", -- 3
".it.....ui.", -- 4
".i.......i.", -- 5
".i.......i.", -- 6
"viiiiiiiiiv", -- 7
"kkkkkkkkkkk", -- 8
"mm.......mm", -- 9
"mm.......mm", -- 10
"mm.......mm", -- 11
"mm.......mm", -- 12
-- Level 5
"...........", -- 0
"nnnnnnnnnnn", -- 1
"siiiiiiiiis", -- 2
".i.......i.", -- 3
".i.......i.", -- 4
".i.......i.", -- 5
"viiiiiiiiiv", -- 6
"kkkkkkkkkkk", -- 7
"...........", -- 8
"mm.......mm", -- 9
"mm.......mm", -- 10
"mm.......mm", -- 11
"mm.......mm", -- 12
-- Level 6
"...........", -- 0
"...........", -- 1
"nnnnnnnnnnn", -- 2
"siiiiiiiiis", -- 3
".i.......i.", -- 4
"viiiiiiiiiv", -- 5
"kkkkkkkkkkk", -- 6
"...........", -- 7
"...........", -- 8
"mm.......mm", -- 9
"mm.......mm", -- 10
"mm.......mm", -- 11
"mm.......mm", -- 12
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
"nnnnnnnnnnn", -- 3
"iiiiiiiiiii", -- 4
"kkkkkkkkkkk", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
"mm.......mm", -- 9
"mm.......mm", -- 10
"mm.......mm", -- 11
"mm.......mm", -- 12
},
}, -- WoodenHouse9x7Butcher
{
OriginData =
{
ExportName = "WoodenHouse5x5",
Name = "Plains 49",
GalleryName = "Plains",
GalleryIndex = "49",
ID = "100",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 7,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h: 64: 9", -- woodendoorblock
"i:102: 0", -- glasspane
"j: 53: 2", -- woodstairs
"k: 53: 7", -- woodstairs
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n: 53: 6", -- woodstairs
"o: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"mmaaamm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
"..bcd..", -- 0
".aaaaa.", -- 1
".aaaaa.", -- 2
".aaaaa.", -- 3
".aaaaa.", -- 4
".aaaaa.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
".efgfe.", -- 1
".f...f.", -- 2
".f...f.", -- 3
".f...f.", -- 4
".efffe.", -- 5
".......", -- 6
-- Level 3
".......", -- 0
".efhfe.", -- 1
".i...i.", -- 2
".i...i.", -- 3
".i...i.", -- 4
".eiiie.", -- 5
".......", -- 6
-- Level 4
"jjjjjjj", -- 0
"kfffffk", -- 1
".fl.lf.", -- 2
".f...f.", -- 3
".f...f.", -- 4
"nfffffn", -- 5
"ooooooo", -- 6
-- Level 5
".......", -- 0
"jjjjjjj", -- 1
"kfffffk", -- 2
".f...f.", -- 3
"nfffffn", -- 4
"ooooooo", -- 5
".......", -- 6
-- Level 6
".......", -- 0
".......", -- 1
"jjjjjjj", -- 2
"fffffff", -- 3
"ooooooo", -- 4
".......", -- 5
".......", -- 6
},
}, -- WoodenHouse5x5
{
OriginData =
{
ExportName = "Forge",
Name = "Plains 51",
GalleryName = "Plains",
GalleryIndex = "51",
ID = "102",
CreatorName = "Aloe_vera",
},
Size =
{
x = 12,
y = 9,
z = 11,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 12,
MaxY = 8,
MaxZ = 11,
},
Connectors =
{
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 0", -- woodendoorblock
"h: 10: 0", -- lava
"i: 54: 2", -- chest
"j: 61: 2", -- furnace
"k:102: 0", -- glasspane
"l: 64: 9", -- woodendoorblock
"m: 19: 0", -- sponge
"n:139: 0", -- cobblestonewall
"o:101: 0", -- ironbars
"p: 53: 2", -- woodstairs
"q: 53: 7", -- woodstairs
"r: 50: 2", -- torch
"s: 50: 1", -- torch
"t: 53: 6", -- woodstairs
"u: 53: 3", -- woodstairs
"v: 43: 0", -- doublestoneslab
"w: 44: 0", -- stone_slab
},
BlockData =
{
-- Level 0
"mmmmmaaaaamm", -- 0
"maaaaaaaaamm", -- 1
"maaaaaaaaamm", -- 2
"maaaaaaaaaaa", -- 3
"maaaaaaaaaaa", -- 4
"maaaaaaaaaaa", -- 5
"maaaaaaaaaaa", -- 6
"maaaaaaaaaaa", -- 7
"maaaaammmmmm", -- 8
"maaaaammmmmm", -- 9
"mmmmmmmmmmmm", -- 10
-- Level 1
".....bcccd..", -- 0
".aaaaaaaad..", -- 1
".aaaaaaaad..", -- 2
".aaaaaaaaaaa", -- 3
".aaaaaaaaaaa", -- 4
".aaaaaaaaaaa", -- 5
".aaaaaaaaaaa", -- 6
".aaaaaaaaaaa", -- 7
".aaaaa......", -- 8
".aaaaa......", -- 9
"............", -- 10
-- Level 2
"............", -- 0
".efffe......", -- 1
".f...g......", -- 2
".f...ea..aaa", -- 3
".f...f...aha", -- 4
".f...f...aha", -- 5
".f...fijjaha", -- 6
".f...eaaaaaa", -- 7
".f...f......", -- 8
".efffe......", -- 9
"............", -- 10
-- Level 3
"............", -- 0
".ekkke......", -- 1
".k...l......", -- 2
".k...en..n.a", -- 3
".k...k.....o", -- 4
".f...k.....o", -- 5
".k...k.....o", -- 6
".k...eaooooa", -- 7
".k...f......", -- 8
".ekkke......", -- 9
"............", -- 10
-- Level 4
"ppppppp.....", -- 0
"qfffffq.....", -- 1
".f...f......", -- 2
".f..rfa..aoa", -- 3
".f...f...o.a", -- 4
".f...f...o.a", -- 5
".fs..f...o.a", -- 6
".f...faaaaaa", -- 7
".f...f......", -- 8
"tffffft.....", -- 9
"uuuuuuu.....", -- 10
-- Level 5
"............", -- 0
"ppppppp.....", -- 1
"qfffffq.....", -- 2
".f...fvvvvvv", -- 3
".f...fvwwwwv", -- 4
".f...fvwwwwv", -- 5
".f...fvwwwwv", -- 6
".f...fvvvvvv", -- 7
"tffffft.....", -- 8
"uuuuuuu.....", -- 9
"............", -- 10
-- Level 6
"............", -- 0
"............", -- 1
"ppppppp.....", -- 2
"qfffffq.....", -- 3
".f...f......", -- 4
".f...f......", -- 5
".f...f......", -- 6
"tffffft.....", -- 7
"uuuuuuu.....", -- 8
"............", -- 9
"............", -- 10
-- Level 7
"............", -- 0
"............", -- 1
"............", -- 2
"ppppppp.....", -- 3
"qfffffq.....", -- 4
".f...f......", -- 5
"tffffft.....", -- 6
"uuuuuuu.....", -- 7
"............", -- 8
"............", -- 9
"............", -- 10
-- Level 8
"............", -- 0
"............", -- 1
"............", -- 2
"............", -- 3
"ppppppp.....", -- 4
"fffffff.....", -- 5
"uuuuuuu.....", -- 6
"............", -- 7
"............", -- 8
"............", -- 9
"............", -- 10
},
}, -- Forge
{
OriginData =
{
ExportName = "WoodenHouse9x7",
Name = "Plains 52",
GalleryName = "Plains",
GalleryIndex = "52",
ID = "103",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 11,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 3", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j: 53: 2", -- woodstairs
"k: 53: 7", -- woodstairs
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n: 50: 4", -- torch
"o: 53: 6", -- woodstairs
"p: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"mmmmmmmmmmm", -- 8
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
".aaaaaaaaa.", -- 6
".aaaaaaaaa.", -- 7
"...........", -- 8
-- Level 2
"...........", -- 0
".efffgfffe.", -- 1
".f.......f.", -- 2
".f.......f.", -- 3
".f.......f.", -- 4
".f.......f.", -- 5
".f.......f.", -- 6
".efffffffe.", -- 7
"...........", -- 8
-- Level 3
"...........", -- 0
".ehhfifhhe.", -- 1
".h.......h.", -- 2
".h.......h.", -- 3
".f.......f.", -- 4
".h.......h.", -- 5
".h.......h.", -- 6
".ehhhfhhhe.", -- 7
"...........", -- 8
-- Level 4
"jjjjjjjjjjj", -- 0
"kfffffffffk", -- 1
".f..l.l..f.", -- 2
".f.......f.", -- 3
".f.......f.", -- 4
".f.......f.", -- 5
".f...n...f.", -- 6
"offfffffffo", -- 7
"ppppppppppp", -- 8
-- Level 5
"...........", -- 0
"jjjjjjjjjjj", -- 1
"kfffffffffk", -- 2
".f.......f.", -- 3
".f.......f.", -- 4
".f.......f.", -- 5
"offfffffffo", -- 6
"ppppppppppp", -- 7
"...........", -- 8
-- Level 6
"...........", -- 0
"...........", -- 1
"jjjjjjjjjjj", -- 2
"kfffffffffk", -- 3
".f.......f.", -- 4
"offfffffffo", -- 5
"ppppppppppp", -- 6
"...........", -- 7
"...........", -- 8
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
"jjjjjjjjjjj", -- 3
"fffffffffff", -- 4
"ppppppppppp", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
},
}, -- WoodenHouse9x7
{
OriginData =
{
ExportName = "WoodenGranary",
Name = "Plains 54",
GalleryName = "Plains",
GalleryIndex = "54",
ID = "105",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 7,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 7,
MaxY = 6,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = -1,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b:170: 0", -- hayblock
"c: 67: 0", -- stonestairs
"d: 67: 2", -- stonestairs
"e: 67: 1", -- stonestairs
"f: 17: 0", -- tree
"g: 5: 0", -- planks
"h:170: 4", -- hayblock
"i:170: 8", -- hayblock
"j: 54: 2", -- chest
"k: 50: 4", -- torch
"l: 53: 0", -- woodstairs
"m: 19: 0", -- sponge
"n: 53: 5", -- woodstairs
"o: 53: 4", -- woodstairs
"p: 53: 1", -- woodstairs
},
BlockData =
{
-- Level 0
"maaaaam", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"maaaaam", -- 6
"maaaaam", -- 7
"mmmmmmm", -- 8
-- Level 1
"bcddde.", -- 0
".aaaaa.", -- 1
".aaaaa.", -- 2
".aaaaa.", -- 3
".aaaaa.", -- 4
".aaaaa.", -- 5
".aaaaa.", -- 6
".aaaaa.", -- 7
".......", -- 8
-- Level 2
".......", -- 0
".f..bf.", -- 1
".g...g.", -- 2
".gb.hg.", -- 3
".fihif.", -- 4
".gbbbg.", -- 5
".gijbg.", -- 6
".fgfgf.", -- 7
".......", -- 8
-- Level 3
".k...k.", -- 0
".f...f.", -- 1
".g...g.", -- 2
".g...g.", -- 3
".fh..f.", -- 4
".ghibg.", -- 5
".ghiig.", -- 6
".fgfgf.", -- 7
".......", -- 8
-- Level 4
"ln...op", -- 0
"lgggggp", -- 1
"lg...gp", -- 2
"lg...gp", -- 3
"lg...gp", -- 4
"lgbb.gp", -- 5
"lgibigp", -- 6
"lgggggp", -- 7
"ln...op", -- 8
-- Level 5
".ln.op.", -- 0
".lgggp.", -- 1
".lg.gp.", -- 2
".lg.gp.", -- 3
".lg.gp.", -- 4
".lg.gp.", -- 5
".lg.gp.", -- 6
".lgggp.", -- 7
".ln.op.", -- 8
-- Level 6
"..lgp..", -- 0
"..lgp..", -- 1
"..lgp..", -- 2
"..lgp..", -- 3
"..lgp..", -- 4
"..lgp..", -- 5
"..lgp..", -- 6
"..lgp..", -- 7
"..lgp..", -- 8
},
}, -- WoodenGranary
{
OriginData =
{
ExportName = "WoodenStables",
Name = "Plains 55",
GalleryName = "Plains",
GalleryIndex = "55",
ID = "106",
CreatorName = "Aloe_vera",
},
Size =
{
x = 15,
y = 9,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 15,
MaxY = 8,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 7,
RelY = 1,
RelZ = -1,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 3: 0", -- dirt
"f: 17: 0", -- tree
"g:107: 0", -- fencegate
"h:107: 4", -- fencegate
"i: 5: 0", -- planks
"j:107: 6", -- fencegate
"k: 85: 0", -- fence
"l:170: 0", -- hayblock
"m: 19: 0", -- sponge
"n:170: 4", -- hayblock
"o:170: 8", -- hayblock
"p: 50: 1", -- torch
"q: 50: 2", -- torch
"r: 53: 2", -- woodstairs
"s: 53: 7", -- woodstairs
"t: 53: 6", -- woodstairs
"u: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"maaaaaaaaaaaaam", -- 0
"maaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaam", -- 6
"maaaaaaaaaaaaam", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 1
".bcccccccccccd.", -- 0
".aaaaaaaaaaaaa.", -- 1
".aeeeeeeeeeeea.", -- 2
".aeeeeeeeeeeea.", -- 3
".aeeeeeeeeeeea.", -- 4
".aeeeeeeeeeeea.", -- 5
".aeeeeeeeeeeea.", -- 6
".aaaaaaaaaaaaa.", -- 7
"...............", -- 8
-- Level 2
"...............", -- 0
".fghgighgigjgf.", -- 1
".k...k...k...k.", -- 2
".k...k...k...k.", -- 3
".k...k...k...k.", -- 4
".k...k...k...k.", -- 5
".kl..k..nko..k.", -- 6
".fkkkikkkikkkf.", -- 7
"...............", -- 8
-- Level 3
"...............", -- 0
".f...i...i...f.", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
".f...i...i...f.", -- 7
"...............", -- 8
-- Level 4
"...............", -- 0
".fp.qip.qip.qf.", -- 1
"...............", -- 2
"...............", -- 3
"...............", -- 4
"...............", -- 5
"...............", -- 6
".f...i...i...f.", -- 7
"...............", -- 8
-- Level 5
"rrrrrrrrrrrrrrr", -- 0
"siiiiiiiiiiiiis", -- 1
".i...........i.", -- 2
".i...........i.", -- 3
".i...........i.", -- 4
".i...........i.", -- 5
".i...........i.", -- 6
"tiiiiiiiiiiiiit", -- 7
"uuuuuuuuuuuuuuu", -- 8
-- Level 6
"...............", -- 0
"rrrrrrrrrrrrrrr", -- 1
"siiiiiiiiiiiiis", -- 2
".i...........i.", -- 3
".i...........i.", -- 4
".i...........i.", -- 5
"tiiiiiiiiiiiiit", -- 6
"uuuuuuuuuuuuuuu", -- 7
"...............", -- 8
-- Level 7
"...............", -- 0
"...............", -- 1
"rrrrrrrrrrrrrrr", -- 2
"siiiiiiiiiiiiis", -- 3
".i...........i.", -- 4
"tiiiiiiiiiiiiit", -- 5
"uuuuuuuuuuuuuuu", -- 6
"...............", -- 7
"...............", -- 8
-- Level 8
"...............", -- 0
"...............", -- 1
"...............", -- 2
"rrrrrrrrrrrrrrr", -- 3
"iiiiiiiiiiiiiii", -- 4
"uuuuuuuuuuuuuuu", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
},
}, -- WoodenStables
{
OriginData =
{
ExportName = "WoodenChurchMid",
Name = "Plains 58",
GalleryName = "Plains",
GalleryIndex = "58",
ID = "109",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 15,
z = 13,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 14,
MaxZ = 13,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"A: 85: 0", -- fence
"B:126: 8", -- woodenslab
"a: 4: 0", -- cobblestone
"b: 67: 0", -- stonestairs
"c: 67: 2", -- stonestairs
"d: 67: 1", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 64: 1", -- woodendoorblock
"h: 65: 3", -- ladder
"i: 53: 3", -- woodstairs
"j: 53: 7", -- woodstairs
"k: 64: 9", -- woodendoorblock
"l:102: 0", -- glasspane
"m: 19: 0", -- sponge
"n: 50: 1", -- torch
"o: 50: 2", -- torch
"p:171:14", -- carpet
"q: 50: 3", -- torch
"r: 53: 2", -- woodstairs
"s: 53: 0", -- woodstairs
"t: 53: 1", -- woodstairs
"u: 53: 5", -- woodstairs
"v: 53: 4", -- woodstairs
"w: 17: 4", -- tree
"x: 17: 8", -- tree
"y: 54: 2", -- chest
"z: 50: 4", -- torch
},
BlockData =
{
-- Level 0
"mmaaamm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"maaaaam", -- 6
"maaaaam", -- 7
"maaaaam", -- 8
"maaaaam", -- 9
"maaaaam", -- 10
"maaaaam", -- 11
"mmmmmmm", -- 12
-- Level 1
"..bcd..", -- 0
".aaaaa.", -- 1
".aaaaa.", -- 2
".aaaaa.", -- 3
".aaaaa.", -- 4
".aaaaa.", -- 5
".aaaaa.", -- 6
".aaaaa.", -- 7
".aaaaa.", -- 8
".aaaaa.", -- 9
".aaaaa.", -- 10
".aaaaa.", -- 11
".......", -- 12
-- Level 2
".......", -- 0
".efgfe.", -- 1
".f..hf.", -- 2
".f...f.", -- 3
".f...f.", -- 4
".ei.ie.", -- 5
".f...f.", -- 6
".fi.if.", -- 7
".f...f.", -- 8
".f.j.f.", -- 9
".f...f.", -- 10
".efffe.", -- 11
".......", -- 12
-- Level 3
".......", -- 0
".efkfe.", -- 1
".l..hl.", -- 2
".l...l.", -- 3
".l...l.", -- 4
".e...e.", -- 5
".l...l.", -- 6
".l...l.", -- 7
".fn.of.", -- 8
".l.p.l.", -- 9
".l...l.", -- 10
".ellle.", -- 11
".......", -- 12
-- Level 4
".......", -- 0
".efffe.", -- 1
".f.qhf.", -- 2
".f...f.", -- 3
".f...f.", -- 4
"re...er", -- 5
"sf...ft", -- 6
"sf...ft", -- 7
"sf...ft", -- 8
"sf...ft", -- 9
"sf...ft", -- 10
"sefffet", -- 11
"su...vt", -- 12
-- Level 5
".......", -- 0
".ewwwe.", -- 1
".xffhx.", -- 2
".xfffx.", -- 3
".xfffx.", -- 4
".ewwwe.", -- 5
".sf.ft.", -- 6
".sf.ft.", -- 7
".sf.ft.", -- 8
".sf.ft.", -- 9
".sf.ft.", -- 10
".sffft.", -- 11
".su.vt.", -- 12
-- Level 6
".......", -- 0
".eflfe.", -- 1
".f..hf.", -- 2
".f...f.", -- 3
".f.y.f.", -- 4
".efffe.", -- 5
"..sft..", -- 6
"..sft..", -- 7
"..sft..", -- 8
"..sft..", -- 9
"..sft..", -- 10
"..sft..", -- 11
"..sft..", -- 12
-- Level 7
".......", -- 0
".eflfe.", -- 1
".f..hf.", -- 2
".l...l.", -- 3
".f...f.", -- 4
".efffe.", -- 5
".......", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 8
".......", -- 0
".eflfe.", -- 1
".f..hf.", -- 2
".f...f.", -- 3
".f.z.f.", -- 4
".efffe.", -- 5
".......", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 9
".......", -- 0
".ewwwe.", -- 1
".xffhx.", -- 2
".xfffx.", -- 3
".xfffx.", -- 4
".ewwwe.", -- 5
".......", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 10
".......", -- 0
".eAAAe.", -- 1
".A...A.", -- 2
".A...A.", -- 3
".A...A.", -- 4
".eAAAe.", -- 5
".......", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 11
".......", -- 0
".e...e.", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
".e...e.", -- 5
".......", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 12
"su...vt", -- 0
"sefffet", -- 1
"sfBBBft", -- 2
"sfBBBft", -- 3
"sfBBBft", -- 4
"sefffet", -- 5
"su...vt", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 13
".su.vt.", -- 0
".sffft.", -- 1
".sffft.", -- 2
".sffft.", -- 3
".sffft.", -- 4
".sffft.", -- 5
".su.vt.", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
-- Level 14
"..sft..", -- 0
"..sft..", -- 1
"..sft..", -- 2
"..sft..", -- 3
"..sft..", -- 4
"..sft..", -- 5
"..sft..", -- 6
".......", -- 7
".......", -- 8
".......", -- 9
".......", -- 10
".......", -- 11
".......", -- 12
},
}, -- WoodenChurchMid
{
OriginData =
{
ExportName = "WoodenMill5x5",
Name = "Plains 60",
GalleryName = "Plains",
GalleryIndex = "60",
ID = "111",
CreatorName = "Aloe_vera",
},
Size =
{
x = 9,
y = 17,
z = 13,
},
Hitbox =
{
MinX = -1,
MinY = -1,
MinZ = 0,
MaxX = 8,
MaxY = 16,
MaxZ = 12,
},
Connectors =
{
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 6,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 4: 0", -- cobblestone
"b: 67: 2", -- stonestairs
"c: 67: 1", -- stonestairs
"d: 67: 3", -- stonestairs
"e: 17: 0", -- tree
"f: 5: 0", -- planks
"g: 54: 4", -- chest
"h:154: 4", -- hopper
"i: 64: 0", -- woodendoorblock
"j:102: 0", -- glasspane
"k: 85: 0", -- fence
"l: 64: 9", -- woodendoorblock
"m: 19: 0", -- sponge
"n: 50: 2", -- torch
"o: 35: 0", -- wool
"p: 17: 4", -- tree
"q: 17: 8", -- tree
"r: 53: 2", -- woodstairs
"s: 53: 7", -- woodstairs
"t: 53: 6", -- woodstairs
"u: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"mmmmmmmmm", -- 0
"mmmmmmmmm", -- 1
"mmmmmmmmm", -- 2
"mmmmmmmmm", -- 3
"maaaaammm", -- 4
"maaaaaamm", -- 5
"maaaaaamm", -- 6
"maaaaaamm", -- 7
"maaaaammm", -- 8
"mmmmmmmmm", -- 9
"mmmmmmmmm", -- 10
"mmmmmmmmm", -- 11
"mmmmmmmmm", -- 12
-- Level 1
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".aaaaa...", -- 4
".aaaaab..", -- 5
".aaaaac..", -- 6
".aaaaad..", -- 7
".aaaaa...", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 2
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".efffe...", -- 4
".f...f...", -- 5
".fgh.i...", -- 6
".f...f...", -- 7
".efffe...", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 3
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".ejjje...", -- 4
".j...f...", -- 5
".j.k.l...", -- 6
".j...f...", -- 7
".ejjje...", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 4
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".efffe...", -- 4
".f..nf...", -- 5
".f.k.f...", -- 6
".f..nf..k", -- 7
".efffe..o", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 5
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".epppe...", -- 4
".q...q...", -- 5
".q.k.q...", -- 6
".q...q..k", -- 7
".epppe..o", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 6
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".efffe...", -- 4
".f...f...", -- 5
".f.k.f..k", -- 6
".f...f..o", -- 7
".efffe..o", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 7
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".ejjje...", -- 4
".j...j...", -- 5
".j.k.j..k", -- 6
".j...j..o", -- 7
".ejjje...", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 8
"mmmmmmm.o", -- 0
"mmmmmmm.o", -- 1
"mmmmmmm.o", -- 2
".........", -- 3
".efffe...", -- 4
".f...f..k", -- 5
".f.k.f..o", -- 6
".f...f..o", -- 7
".efffe...", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 9
"mmmmmmm.k", -- 0
"mmmmmmm.k", -- 1
"mmmmmmm.o", -- 2
"........o", -- 3
".epppe..o", -- 4
".q...q..k", -- 5
".q.k.q..o", -- 6
".q...q..k", -- 7
".epppe..k", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 10
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm.k", -- 2
"rrrrrrr.k", -- 3
"sfffffs.o", -- 4
".f...f..o", -- 5
".f.kppppp", -- 6
".f...f..o", -- 7
"tffffft.o", -- 8
"uuuuuuu.k", -- 9
"mmmmmmm.k", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 11
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
"rrrrrrr.k", -- 4
"sfffffs.k", -- 5
".f...f..o", -- 6
"tffffft.k", -- 7
"uuuuuuu.o", -- 8
"........o", -- 9
"mmmmmmm.o", -- 10
"mmmmmmm.k", -- 11
"mmmmmmm.k", -- 12
-- Level 12
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".........", -- 4
"rrrrrrr.o", -- 5
"fffffff.o", -- 6
"uuuuuuu.k", -- 7
".........", -- 8
".........", -- 9
"mmmmmmm.o", -- 10
"mmmmmmm.o", -- 11
"mmmmmmm.o", -- 12
-- Level 13
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
".........", -- 4
"........o", -- 5
"........k", -- 6
".........", -- 7
".........", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 14
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
"........o", -- 4
"........o", -- 5
"........k", -- 6
".........", -- 7
".........", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 15
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
"........o", -- 4
"........k", -- 5
".........", -- 6
".........", -- 7
".........", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
-- Level 16
"mmmmmmm..", -- 0
"mmmmmmm..", -- 1
"mmmmmmm..", -- 2
".........", -- 3
"........o", -- 4
"........k", -- 5
".........", -- 6
".........", -- 7
".........", -- 8
".........", -- 9
"mmmmmmm..", -- 10
"mmmmmmm..", -- 11
"mmmmmmm..", -- 12
},
}, -- WoodenMill5x5
{
OriginData =
{
ExportName = "RoofedWell",
Name = "Plains 119",
GalleryName = "Plains",
GalleryIndex = "119",
ID = "271",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 15,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 14,
MaxZ = 6,
},
Connectors =
{
{
Type = 2,
RelX = 0,
RelY = 9,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 3,
RelY = 9,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 6,
RelY = 9,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 3,
RelY = 9,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-9",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 4: 0", -- cobblestone
"c: 8: 0", -- water
"d: 3: 0", -- dirt
"e: 2: 0", -- grass
"f: 13: 0", -- gravel
"g:118: 3", -- cauldronblock
"h: 85: 0", -- fence
"i: 53: 2", -- woodstairs
"j: 53: 7", -- woodstairs
"k: 5: 0", -- planks
"l: 53: 4", -- woodstairs
"m: 19: 0", -- sponge
"n: 53: 5", -- woodstairs
"o: 53: 6", -- woodstairs
"p: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 2
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 3
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 4
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 5
"ddddddd", -- 0
"dbbbbbd", -- 1
"dbcccbd", -- 2
"dbcccbd", -- 3
"dbcccbd", -- 4
"dbbbbbd", -- 5
"ddddddd", -- 6
-- Level 6
"ddddddd", -- 0
"dbbbbbd", -- 1
"dbcccbd", -- 2
"dbcccbd", -- 3
"dbcccbd", -- 4
"dbbbbbd", -- 5
"ddddddd", -- 6
-- Level 7
"ddddddd", -- 0
"dbbbbbd", -- 1
"dbcccbd", -- 2
"dbcccbd", -- 3
"dbcccbd", -- 4
"dbbbbbd", -- 5
"ddddddd", -- 6
-- Level 8
"eefffee", -- 0
"ebbbbbe", -- 1
"fbcccbf", -- 2
"fbcccbf", -- 3
"fbcccbf", -- 4
"ebbbbbe", -- 5
"eefffee", -- 6
-- Level 9
".......", -- 0
".bbbbb.", -- 1
".b...b.", -- 2
".b.g.b.", -- 3
".b...b.", -- 4
".bbbbb.", -- 5
".......", -- 6
-- Level 10
".......", -- 0
".h...h.", -- 1
".......", -- 2
"...h...", -- 3
".......", -- 4
".h...h.", -- 5
".......", -- 6
-- Level 11
".......", -- 0
".h...h.", -- 1
".......", -- 2
"...h...", -- 3
".......", -- 4
".h...h.", -- 5
".......", -- 6
-- Level 12
"iiiiiii", -- 0
"jkjjjkj", -- 1
".l...n.", -- 2
".l.h.n.", -- 3
".l...n.", -- 4
"okoooko", -- 5
"ppppppp", -- 6
-- Level 13
".......", -- 0
"iiiiiii", -- 1
"jkjjjkj", -- 2
".k.h.k.", -- 3
"okoooko", -- 4
"ppppppp", -- 5
".......", -- 6
-- Level 14
".......", -- 0
".......", -- 1
"iiiiiii", -- 2
"kkkkkkk", -- 3
"ppppppp", -- 4
".......", -- 5
".......", -- 6
},
}, -- RoofedWell
{
OriginData =
{
ExportName = "MineEntrance",
Name = "Plains 138",
GalleryName = "Plains",
GalleryIndex = "138",
ID = "446",
CreatorName = "STR_Warrior",
},
Size =
{
x = 7,
y = 38,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 37,
MaxZ = 6,
},
Connectors =
{
{
Type = 2,
RelX = 6,
RelY = 32,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 3,
RelY = 32,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 0,
RelY = 32,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 3,
RelY = 32,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-32",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 77: 2", -- stonebutton
"c: 66: 6", -- tracks
"d: 27: 1", -- poweredrail
"e: 66: 5", -- tracks
"f: 66: 9", -- tracks
"g: 66: 2", -- tracks
"h: 50: 4", -- torch
"i: 66: 4", -- tracks
"j: 66: 8", -- tracks
"k: 66: 3", -- tracks
"l: 66: 7", -- tracks
"m: 19: 0", -- sponge
"n: 50: 2", -- torch
"o: 4: 0", -- cobblestone
"p: 2: 0", -- grass
"q: 13: 0", -- gravel
"r: 53: 2", -- woodstairs
"s: 77: 1", -- stonebutton
"t: 27: 0", -- poweredrail
"u: 53: 7", -- woodstairs
"v: 53: 6", -- woodstairs
"w: 53: 3", -- woodstairs
},
BlockData =
{
-- Level 0
"maaaaam", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
"mm...mm", -- 0
"mm.abam", -- 1
"mmcddam", -- 2
"mae..am", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 2
"mm...mm", -- 0
"mm.a.mm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 3
"mm.h.mm", -- 0
"mm.a.mm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 4
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 5
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 6
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 7
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 8
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 9
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 10
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 11
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 12
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 13
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 14
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 15
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 16
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 17
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 18
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 19
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 20
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 21
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 22
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 23
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 24
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 25
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 26
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm...mm", -- 2
"ma..aam", -- 3
"mmfgamm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 27
"mmmmmmm", -- 0
"mmmammm", -- 1
"mm.aamm", -- 2
"ma..iam", -- 3
"mm..jmm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 28
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmaklmm", -- 2
"maa..am", -- 3
"mm...mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 29
"mmmmmmm", -- 0
"mmmammm", -- 1
"mmc..mm", -- 2
"mae.nam", -- 3
"mmaa.mm", -- 4
"mmmammm", -- 5
"mmmmmmm", -- 6
-- Level 30
"mmooomm", -- 0
"mmmammm", -- 1
"om...mo", -- 2
"oa..aao", -- 3
"omfgamo", -- 4
"mmmammm", -- 5
"mmooomm", -- 6
-- Level 31
"ppqqqpp", -- 0
"paaaaap", -- 1
"qa.aaaq", -- 2
"qa..iaq", -- 3
"qa..jaq", -- 4
"paaaaap", -- 5
"ppqqqpp", -- 6
-- Level 32
"...r...", -- 0
".astba.", -- 1
"...fl..", -- 2
".......", -- 3
".......", -- 4
".a...a.", -- 5
".......", -- 6
-- Level 33
".......", -- 0
".a...a.", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
".a...a.", -- 5
".......", -- 6
-- Level 34
".......", -- 0
".a...a.", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
".a...a.", -- 5
".......", -- 6
-- Level 35
"rrrrrrr", -- 0
"uaaaaau", -- 1
".a...a.", -- 2
".a...a.", -- 3
".a...a.", -- 4
"vaaaaav", -- 5
"wwwwwww", -- 6
-- Level 36
".......", -- 0
"rrrrrrr", -- 1
"uaaaaau", -- 2
".aaaaa.", -- 3
"vaaaaav", -- 4
"wwwwwww", -- 5
".......", -- 6
-- Level 37
".......", -- 0
".......", -- 1
"rrrrrrr", -- 2
"aaaaaaa", -- 3
"wwwwwww", -- 4
".......", -- 5
".......", -- 6
},
}, -- MineEntrance
{
OriginData =
{
ExportName = "MineshaftCorridor",
Name = "Plains 139",
GalleryName = "Plains",
GalleryIndex = "139",
ID = "447",
CreatorName = "STR_Warrior",
},
Size =
{
x = 10,
y = 4,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 3,
MaxZ = 2,
},
Connectors =
{
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 9,
RelY = 1,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "200",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 85: 0", -- fence
"c: 66: 1", -- tracks
"d: 50: 2", -- torch
"e: 50: 1", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaa", -- 0
"aaaaaaaaaa", -- 1
"aaaaaaaaaa", -- 2
-- Level 1
"..b....b..", -- 0
"cccccccccc", -- 1
"..b....b..", -- 2
-- Level 2
"..b....b..", -- 0
"..........", -- 1
"..b....b..", -- 2
-- Level 3
"..a....a..", -- 0
".dae..dae.", -- 1
"..a....a..", -- 2
},
}, -- MineshaftCorridor
{
OriginData =
{
ExportName = "Scarecrow",
Name = "Plains 150",
GalleryName = "Plains",
GalleryIndex = "150",
ID = "494",
CreatorName = "STR_Warrior",
},
Size =
{
x = 1,
y = 6,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 0,
MaxY = 5,
MaxZ = 2,
},
Connectors =
{
{
Type = -1,
RelX = -1,
RelY = 0,
RelZ = 1,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a:139: 0", -- cobblestonewall
"b: 85: 0", -- fence
"c:126: 4", -- woodenslab
"d: 86: 1", -- pumpkin
"e:139: 1", -- cobblestonewall
"f:163: 4", -- acaciawoodstairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
".", -- 0
"a", -- 1
".", -- 2
-- Level 1
".", -- 0
"b", -- 1
".", -- 2
-- Level 2
"c", -- 0
"d", -- 1
"c", -- 2
-- Level 3
".", -- 0
"e", -- 1
".", -- 2
-- Level 4
"f", -- 0
"d", -- 1
"f", -- 2
-- Level 5
".", -- 0
"f", -- 1
".", -- 2
},
}, -- Scarecrow
{
OriginData =
{
ExportName = "MineshaftCrossing",
Name = "Plains 171",
GalleryName = "Plains",
GalleryIndex = "171",
ID = "578",
CreatorName = "Aloe_vera",
},
Size =
{
x = 5,
y = 4,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 3,
MaxZ = 4,
},
Connectors =
{
{
Type = 3,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 2,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -3,
RelX = 2,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "1",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 66: 0", -- tracks
"c: 66: 1", -- tracks
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"m.b.m", -- 0
".aba.", -- 1
"ccccc", -- 2
".aba.", -- 3
"m.b.m", -- 4
-- Level 2
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
-- Level 3
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
},
}, -- MineshaftCrossing
{
OriginData =
{
ExportName = "MineshaftDoubleCrossing",
Name = "Plains 172",
GalleryName = "Plains",
GalleryIndex = "172",
ID = "579",
CreatorName = "Aloe_vera",
},
Size =
{
x = 5,
y = 8,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 7,
MaxZ = 4,
},
Connectors =
{
{
Type = -3,
RelX = 4,
RelY = 5,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 3,
RelX = 4,
RelY = 5,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 2,
RelY = 1,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 0,
RelY = 1,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 2,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 2,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -3,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 3,
RelX = 4,
RelY = 1,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 2,
RelY = 5,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 2,
RelY = 5,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = -3,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 0,
RelY = 5,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 2,
RelY = 5,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 2,
RelY = 5,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "1",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 66: 0", -- tracks
"c: 66: 1", -- tracks
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
-- Level 1
"m.b.m", -- 0
".aba.", -- 1
"ccccc", -- 2
".aba.", -- 3
"m.b.m", -- 4
-- Level 2
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
-- Level 3
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
-- Level 4
"aaaaa", -- 0
"aa.aa", -- 1
"a...a", -- 2
"aa.aa", -- 3
"aaaaa", -- 4
-- Level 5
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
-- Level 6
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
-- Level 7
"m...m", -- 0
".a.a.", -- 1
".....", -- 2
".a.a.", -- 3
"m...m", -- 4
},
}, -- MineshaftDoubleCrossing
{
OriginData =
{
ExportName = "MineshaftCrossing",
Name = "Plains 193",
GalleryName = "Plains",
GalleryIndex = "193",
ID = "657",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 4,
z = 11,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 3,
MaxZ = 10,
},
Connectors =
{
{
Type = 3,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -3,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 5,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
{
Type = -3,
RelX = 5,
RelY = 1,
RelZ = 10,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 10,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 10,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "10",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 66: 0", -- tracks
"c: 85: 0", -- fence
"d: 66: 1", -- tracks
"e: 50: 4", -- torch
"f: 50: 3", -- torch
"g: 50: 2", -- torch
"h: 50: 1", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"mmmmaaammmm", -- 1
"mmmmaaammmm", -- 2
"mmmmaaammmm", -- 3
"aaaaaaaaaaa", -- 4
"aaaaaaaaaaa", -- 5
"aaaaaaaaaaa", -- 6
"mmmmaaammmm", -- 7
"mmmmaaammmm", -- 8
"mmmmaaammmm", -- 9
"mmmmaaammmm", -- 10
-- Level 1
"mmmm.b.mmmm", -- 0
"mmmm.b.mmmm", -- 1
"mmmmcbcmmmm", -- 2
"mmmm.b.mmmm", -- 3
"..c..b..c..", -- 4
"ddddddddddd", -- 5
"..c..b..c..", -- 6
"mmmm.b.mmmm", -- 7
"mmmmcbcmmmm", -- 8
"mmmm.b.mmmm", -- 9
"mmmm.b.mmmm", -- 10
-- Level 2
"mmmm...mmmm", -- 0
"mmmm...mmmm", -- 1
"mmmmc.cmmmm", -- 2
"mmmm...mmmm", -- 3
"..c.....c..", -- 4
"...........", -- 5
"..c.....c..", -- 6
"mmmm...mmmm", -- 7
"mmmmc.cmmmm", -- 8
"mmmm...mmmm", -- 9
"mmmm...mmmm", -- 10
-- Level 3
"mmmm...mmmm", -- 0
"mmmm.e.mmmm", -- 1
"mmmmaaammmm", -- 2
"mmmm.f.mmmm", -- 3
"..a.....a..", -- 4
".gah...gah.", -- 5
"..a.....a..", -- 6
"mmmm.e.mmmm", -- 7
"mmmmaaammmm", -- 8
"mmmm.f.mmmm", -- 9
"mmmm...mmmm", -- 10
},
}, -- MineshaftCrossing
{
OriginData =
{
ExportName = "MineshaftTee",
Name = "Plains 194",
GalleryName = "Plains",
GalleryIndex = "194",
ID = "658",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 4,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 3,
MaxZ = 6,
},
Connectors =
{
{
Type = 3,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -3,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 3,
RelX = 10,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 10,
RelY = 1,
RelZ = 5,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 66: 0", -- tracks
"c: 85: 0", -- fence
"d: 66: 1", -- tracks
"e: 50: 4", -- torch
"f: 50: 3", -- torch
"g: 50: 2", -- torch
"h: 50: 1", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"mmmmaaammmm", -- 1
"mmmmaaammmm", -- 2
"mmmmaaammmm", -- 3
"aaaaaaaaaaa", -- 4
"aaaaaaaaaaa", -- 5
"aaaaaaaaaaa", -- 6
-- Level 1
"mmmm.b.mmmm", -- 0
"mmmm.b.mmmm", -- 1
"mmmmcbcmmmm", -- 2
"mmmm.b.mmmm", -- 3
"..c..b..c..", -- 4
"ddddddddddd", -- 5
"..c.....c..", -- 6
-- Level 2
"mmmm...mmmm", -- 0
"mmmm...mmmm", -- 1
"mmmmc.cmmmm", -- 2
"mmmm...mmmm", -- 3
"..c.....c..", -- 4
"...........", -- 5
"..c.....c..", -- 6
-- Level 3
"mmmm...mmmm", -- 0
"mmmm.e.mmmm", -- 1
"mmmmaaammmm", -- 2
"mmmm.f.mmmm", -- 3
"..a.....a..", -- 4
".gah...gah.", -- 5
"..a.....a..", -- 6
},
}, -- MineshaftTee
{
OriginData =
{
ExportName = "MineshaftStairs",
Name = "Plains 195",
GalleryName = "Plains",
GalleryIndex = "195",
ID = "659",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 8,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 7,
MaxZ = 2,
},
Connectors =
{
{
Type = 3,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 6,
RelY = 5,
RelZ = 1,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 6,
RelY = 5,
RelZ = 1,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 66: 1", -- tracks
"c: 66: 2", -- tracks
"d: 85: 0", -- fence
"e: 50: 1", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaammmm", -- 0
"aaammmm", -- 1
"aaammmm", -- 2
-- Level 1
"..aammm", -- 0
"bcaammm", -- 1
"..aammm", -- 2
-- Level 2
"...aamm", -- 0
"..caamm", -- 1
"...aamm", -- 2
-- Level 3
"...daam", -- 0
"...caam", -- 1
"...daam", -- 2
-- Level 4
"m..d.aa", -- 0
"m...caa", -- 1
"m..d.aa", -- 2
-- Level 5
"mm.d...", -- 0
"mm...bb", -- 1
"mm.d...", -- 2
-- Level 6
"mmmd...", -- 0
"mmm....", -- 1
"mmmd...", -- 2
-- Level 7
"mmma...", -- 0
"mmmae..", -- 1
"mmma...", -- 2
},
}, -- MineshaftStairs
{
OriginData =
{
ExportName = "MineshaftSpiral",
Name = "Plains 198",
GalleryName = "Plains",
GalleryIndex = "198",
ID = "662",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 12,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 11,
MaxZ = 6,
},
Connectors =
{
{
Type = 3,
RelX = 1,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = -3,
RelX = 1,
RelY = 1,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 0,
RelY = 9,
RelZ = 5,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 0,
RelY = 9,
RelZ = 5,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 85: 0", -- fence
"c: 66: 4", -- tracks
"d: 66: 0", -- tracks
"e: 66: 6", -- tracks
"f: 66: 2", -- tracks
"g: 50: 1", -- torch
"h: 50: 3", -- torch
"i: 66: 1", -- tracks
"j: 66: 7", -- tracks
"k: 66: 5", -- tracks
"l: 50: 2", -- torch
"m: 19: 0", -- sponge
"n: 66: 3", -- tracks
"o: 66: 8", -- tracks
"p: 50: 4", -- torch
},
BlockData =
{
-- Level 0
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"mmmmmmm", -- 2
"aaabmmm", -- 3
"aaammmm", -- 4
"aaammmm", -- 5
"aaammmm", -- 6
-- Level 1
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"aaammmm", -- 2
"aaabmmm", -- 3
".c.mmmm", -- 4
".d.mmmm", -- 5
".d.mmmm", -- 6
-- Level 2
"aaaammm", -- 0
"aaaammm", -- 1
"aaaammm", -- 2
".c.bmmm", -- 3
"...mmmm", -- 4
"...mmmm", -- 5
"...mmmm", -- 6
-- Level 3
"b..aamm", -- 0
".efaamm", -- 1
".d.aamm", -- 2
"...bmmm", -- 3
"...mmmm", -- 4
"...mmmm", -- 5
"...mmmm", -- 6
-- Level 4
"b...aaa", -- 0
"...faaa", -- 1
"....aaa", -- 2
"...baaa", -- 3
"...mmmm", -- 4
"mmmmmmm", -- 5
"mmmmmmm", -- 6
-- Level 5
"ag....b", -- 0
"h...ij.", -- 1
".....k.", -- 2
"...baaa", -- 3
"mmmmaaa", -- 4
"mmmmmmm", -- 5
"mmmmmmm", -- 6
-- Level 6
"mm....b", -- 0
"mm.....", -- 1
"mm.....", -- 2
"mmmb.k.", -- 3
"mmmaaaa", -- 4
"mmmaaaa", -- 5
"mmmaaaa", -- 6
-- Level 7
"mmm..la", -- 0
"mmm...h", -- 1
"mmm....", -- 2
"mmmb...", -- 3
"mmaa.d.", -- 4
"mmaano.", -- 5
"mmaa..b", -- 6
-- Level 8
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"mmmm...", -- 2
"mmmb...", -- 3
"aaa....", -- 4
"aaan...", -- 5
"aaa...b", -- 6
-- Level 9
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"mmmmmmm", -- 2
"mmmb...", -- 3
".......", -- 4
"iii...p", -- 5
".....la", -- 6
-- Level 10
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"mmmmmmm", -- 2
"mmmbmmm", -- 3
".....mm", -- 4
".....mm", -- 5
".....mm", -- 6
-- Level 11
"mmmmmmm", -- 0
"mmmmmmm", -- 1
"mmmmmmm", -- 2
"mmmbmmm", -- 3
"....mmm", -- 4
"....mmm", -- 5
"....mmm", -- 6
},
}, -- MineshaftSpiral
{
OriginData =
{
ExportName = "MineshaftStairsCrossing",
Name = "Plains 199",
GalleryName = "Plains",
GalleryIndex = "199",
ID = "663",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 12,
z = 12,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 11,
MaxZ = 11,
},
Connectors =
{
{
Type = 3,
RelX = 0,
RelY = 5,
RelZ = 6,
Direction = 4, -- X-
},
{
Type = -3,
RelX = 0,
RelY = 5,
RelZ = 6,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 10,
RelY = 5,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 10,
RelY = 5,
RelZ = 6,
Direction = 5, -- X+
},
{
Type = 3,
RelX = 5,
RelY = 9,
RelZ = 11,
Direction = 3, -- Z+
},
{
Type = -3,
RelX = 5,
RelY = 9,
RelZ = 11,
Direction = 3, -- Z+
},
{
Type = 3,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = -3,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "30",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 66: 0", -- tracks
"c: 66: 5", -- tracks
"d: 85: 0", -- fence
"e: 66: 1", -- tracks
"f: 50: 3", -- torch
"g: 50: 2", -- torch
"h: 50: 1", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"mmmmaaammmm", -- 1
"mmmmaaammmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmmmmmmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 1
"mmmm.b.mmmm", -- 0
"mmmm.c.mmmm", -- 1
"mmmmaaammmm", -- 2
"mmmmaaammmm", -- 3
"mmmmmmmmmmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 2
"mmmm...mmmm", -- 0
"mmmm...mmmm", -- 1
"mmmm.c.mmmm", -- 2
"mmmmaaammmm", -- 3
"mmmmaaammmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 3
"mmmm...mmmm", -- 0
"mmmm...mmmm", -- 1
"mmmm...mmmm", -- 2
"mmmmdcdmmmm", -- 3
"mmmmaaammmm", -- 4
"mmmmaaammmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 4
"mmmmmmmmmmm", -- 0
"mmmm...mmmm", -- 1
"mmmm...mmmm", -- 2
"mmmmd.dmmmm", -- 3
"mmmm.c.mmmm", -- 4
"aaaaaaaaaaa", -- 5
"aaaaaaaaaaa", -- 6
"aaaaaaaaaaa", -- 7
"mmmmaaammmm", -- 8
"mmmmmmmmmmm", -- 9
"mmmmmmmmmmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 5
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmm...mmmm", -- 2
"mmmmd.dmmmm", -- 3
"mmmm...mmmm", -- 4
"..d..b..d..", -- 5
"eeeeeeeeeee", -- 6
"..d..c..d..", -- 7
"mmmmaaammmm", -- 8
"mmmmaaammmm", -- 9
"mmmmmmmmmmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 6
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmd.dmmmm", -- 3
"mmmm...mmmm", -- 4
"..d.....d..", -- 5
"...........", -- 6
"..d.....d..", -- 7
"mmmm.c.mmmm", -- 8
"mmmmaaammmm", -- 9
"mmmmaaammmm", -- 10
"mmmmmmmmmmm", -- 11
-- Level 7
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmaaammmm", -- 3
"mmmm.f.mmmm", -- 4
"..a.....a..", -- 5
".gah...gah.", -- 6
"..a.....a..", -- 7
"mmmm...mmmm", -- 8
"mmmmdcdmmmm", -- 9
"mmmmaaammmm", -- 10
"mmmmaaammmm", -- 11
-- Level 8
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmmmmmmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmm...mmmm", -- 7
"mmmm...mmmm", -- 8
"mmmmd.dmmmm", -- 9
"mmmm.c.mmmm", -- 10
"mmmmaaammmm", -- 11
-- Level 9
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmmmmmmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmm...mmmm", -- 8
"mmmmd.dmmmm", -- 9
"mmmm...mmmm", -- 10
"mmmm.b.mmmm", -- 11
-- Level 10
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmmmmmmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmd.dmmmm", -- 9
"mmmm...mmmm", -- 10
"mmmm...mmmm", -- 11
-- Level 11
"mmmmmmmmmmm", -- 0
"mmmmmmmmmmm", -- 1
"mmmmmmmmmmm", -- 2
"mmmmmmmmmmm", -- 3
"mmmmmmmmmmm", -- 4
"mmmmmmmmmmm", -- 5
"mmmmmmmmmmm", -- 6
"mmmmmmmmmmm", -- 7
"mmmmmmmmmmm", -- 8
"mmmmaaammmm", -- 9
"mmmm.f.mmmm", -- 10
"mmmm...mmmm", -- 11
},
}, -- MineshaftStairsCrossing
{
OriginData =
{
ExportName = "MineshaftsCorridor5",
Name = "Plains 200",
GalleryName = "Plains",
GalleryIndex = "200",
ID = "664",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 4,
z = 3,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 3,
MaxZ = 2,
},
Connectors =
{
{
Type = 3,
RelX = 10,
RelY = 1,
RelZ = 1,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 10,
RelY = 1,
RelZ = 1,
Direction = 5, -- X+
},
{
Type = -3,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 3,
RelX = 0,
RelY = 1,
RelZ = 1,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "0",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 5: 0", -- planks
"b: 85: 0", -- fence
"c: 66: 1", -- tracks
"d: 50: 2", -- torch
"e: 50: 1", -- torch
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaa", -- 0
"aaaaaaaaaaa", -- 1
"aaaaaaaaaaa", -- 2
-- Level 1
"..b.....b..", -- 0
"ccccccccccc", -- 1
"..b.....b..", -- 2
-- Level 2
"..b.....b..", -- 0
"...........", -- 1
"..b.....b..", -- 2
-- Level 3
"..a.....a..", -- 0
".dae...dae.", -- 1
"..a.....a..", -- 2
},
}, -- MineshaftsCorridor5
}, -- Pieces
}
================================================
FILE: Server/Prefabs/Villages/SandFlatRoofVillage.cubeset
================================================
-- SandFlatRoofVillage.cubeset
-- Defines the prefabs in the group SandFlatRoofVillage
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-30 13:46:02",
["AllowedBiomes"] = "Desert, DesertM",
["IntendedUse"] = "Village",
},
Pieces =
{
{
OriginData =
{
ExportName = "House5x4",
Name = "Desert 25",
GalleryName = "Desert",
GalleryIndex = "25",
ID = "166",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 6,
z = 6,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 5,
MaxZ = 6,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171: 0", -- carpet
"g:171:14", -- carpet
"h: 24: 2", -- sandstone
"i: 64: 9", -- woodendoorblock
"j: 50: 3", -- torch
"k:128: 4", -- sandstonestairs
"l:128: 6", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 5", -- sandstonestairs
"o:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaamm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"mmmmmmm", -- 5
-- Level 1
"..bcd..", -- 0
".aaaaa.", -- 1
".aaaaa.", -- 2
".aaaaa.", -- 3
".aaaaa.", -- 4
".......", -- 5
-- Level 2
".......", -- 0
".aaeaa.", -- 1
".afgfa.", -- 2
".afgfa.", -- 3
".aaaaa.", -- 4
".......", -- 5
-- Level 3
".......", -- 0
".hhihh.", -- 1
".h...h.", -- 2
".h...h.", -- 3
".hh.hh.", -- 4
".......", -- 5
-- Level 4
".......", -- 0
".aaaaa.", -- 1
".aj.ja.", -- 2
".a...a.", -- 3
".aaaaa.", -- 4
".......", -- 5
-- Level 5
"kllllln", -- 0
"kaaaaan", -- 1
"kaaaaan", -- 2
"kaaaaan", -- 3
"kaaaaan", -- 4
"oooooon", -- 5
},
}, -- House5x4
{
OriginData =
{
ExportName = "House5x5",
Name = "Desert 26",
GalleryName = "Desert",
GalleryIndex = "26",
ID = "167",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171: 0", -- carpet
"g:171:15", -- carpet
"h:171:14", -- carpet
"i: 24: 2", -- sandstone
"j: 64: 9", -- woodendoorblock
"k: 50: 3", -- torch
"l:128: 4", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:128: 5", -- sandstonestairs
"p:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaamm", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
"..bcd..", -- 0
".aaaaa.", -- 1
".aaaaa.", -- 2
".aaaaa.", -- 3
".aaaaa.", -- 4
".aaaaa.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
".aaeaa.", -- 1
".afffa.", -- 2
".aghga.", -- 3
".afffa.", -- 4
".aaaaa.", -- 5
".......", -- 6
-- Level 3
".......", -- 0
".iijii.", -- 1
".i...i.", -- 2
".......", -- 3
".i...i.", -- 4
".ii.ii.", -- 5
".......", -- 6
-- Level 4
".......", -- 0
".aaaaa.", -- 1
".ak.ka.", -- 2
".a...a.", -- 3
".a...a.", -- 4
".aaaaa.", -- 5
".......", -- 6
-- Level 5
"lnnnnno", -- 0
"laaaaao", -- 1
"laaaaao", -- 2
"laaaaao", -- 3
"laaaaao", -- 4
"laaaaao", -- 5
"ppppppo", -- 6
},
}, -- House5x5
{
OriginData =
{
ExportName = "House7x5",
Name = "Desert 27",
GalleryName = "Desert",
GalleryIndex = "27",
ID = "168",
CreatorName = "Aloe_vera",
},
Size =
{
x = 9,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171:14", -- carpet
"g:171: 0", -- carpet
"h:171:15", -- carpet
"i: 24: 2", -- sandstone
"j: 64: 9", -- woodendoorblock
"k: 50: 3", -- torch
"l:128: 4", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:128: 5", -- sandstonestairs
"p:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaammmm", -- 0
"maaaaaaam", -- 1
"maaaaaaam", -- 2
"maaaaaaam", -- 3
"maaaaaaam", -- 4
"maaaaaaam", -- 5
"mmmmmmmmm", -- 6
-- Level 1
"..bcd....", -- 0
".aaaaaaa.", -- 1
".aaaaaaa.", -- 2
".aaaaaaa.", -- 3
".aaaaaaa.", -- 4
".aaaaaaa.", -- 5
".........", -- 6
-- Level 2
".........", -- 0
".aaeaaaa.", -- 1
".afffffa.", -- 2
".aghhhga.", -- 3
".afffffa.", -- 4
".aaaaaaa.", -- 5
".........", -- 6
-- Level 3
".........", -- 0
".iiji.ii.", -- 1
".i.....i.", -- 2
".........", -- 3
".i.....i.", -- 4
".iii.iii.", -- 5
".........", -- 6
-- Level 4
".........", -- 0
".aaaaaaa.", -- 1
".ak.k..a.", -- 2
".a.....a.", -- 3
".a.....a.", -- 4
".aaaaaaa.", -- 5
".........", -- 6
-- Level 5
"lnnnnnnnn", -- 0
"laaaaaaao", -- 1
"laaaaaaao", -- 2
"laaaaaaao", -- 3
"laaaaaaao", -- 4
"laaaaaaao", -- 5
"ppppppppo", -- 6
},
}, -- House7x5
{
OriginData =
{
ExportName = "House8x5",
Name = "Desert 28",
GalleryName = "Desert",
GalleryIndex = "28",
ID = "169",
CreatorName = "Aloe_vera",
},
Size =
{
x = 10,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171: 0", -- carpet
"g:171:14", -- carpet
"h:171:15", -- carpet
"i: 24: 2", -- sandstone
"j: 64: 9", -- woodendoorblock
"k: 50: 3", -- torch
"l:128: 4", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:128: 5", -- sandstonestairs
"p:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaammmmm", -- 0
"maaaaaaaam", -- 1
"maaaaaaaam", -- 2
"maaaaaaaam", -- 3
"maaaaaaaam", -- 4
"maaaaaaaam", -- 5
"mmmmmmmmmm", -- 6
-- Level 1
"..bcd.....", -- 0
".aaaaaaaa.", -- 1
".aaaaaaaa.", -- 2
".aaaaaaaa.", -- 3
".aaaaaaaa.", -- 4
".aaaaaaaa.", -- 5
"..........", -- 6
-- Level 2
"..........", -- 0
".aaeaaaaa.", -- 1
".afghhgfa.", -- 2
".afhffhfa.", -- 3
".afghhgfa.", -- 4
".aaaaaaaa.", -- 5
"..........", -- 6
-- Level 3
"..........", -- 0
".iijii.ii.", -- 1
".i......i.", -- 2
"..........", -- 3
".i......i.", -- 4
".ii.ii.ii.", -- 5
"..........", -- 6
-- Level 4
"..........", -- 0
".aaaaaaaa.", -- 1
".ak.k...a.", -- 2
".a......a.", -- 3
".a......a.", -- 4
".aaaaaaaa.", -- 5
"..........", -- 6
-- Level 5
"lnnnnnnnnn", -- 0
"laaaaaaaao", -- 1
"laaaaaaaao", -- 2
"laaaaaaaao", -- 3
"laaaaaaaao", -- 4
"laaaaaaaao", -- 5
"pppppppppo", -- 6
},
}, -- House8x5
{
OriginData =
{
ExportName = "House8x7",
Name = "Desert 29",
GalleryName = "Desert",
GalleryIndex = "29",
ID = "170",
CreatorName = "Aloe_vera",
},
Size =
{
x = 10,
y = 6,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 10,
MaxY = 5,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171: 0", -- carpet
"g:171:14", -- carpet
"h:171:15", -- carpet
"i: 24: 2", -- sandstone
"j: 64: 9", -- woodendoorblock
"k: 50: 3", -- torch
"l: 50: 1", -- torch
"m: 19: 0", -- sponge
"n: 50: 2", -- torch
"o:128: 4", -- sandstonestairs
"p:128: 6", -- sandstonestairs
"q:128: 5", -- sandstonestairs
"r:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaammmmm", -- 0
"maaaaaaaam", -- 1
"maaaaaaaam", -- 2
"maaaaaaaam", -- 3
"maaaaaaaam", -- 4
"maaaaaaaam", -- 5
"maaaaaaaam", -- 6
"maaaaaaaam", -- 7
"mmmmmmmmmm", -- 8
-- Level 1
"..bcd.....", -- 0
".aaaaaaaa.", -- 1
".aaaaaaaa.", -- 2
".aaaaaaaa.", -- 3
".aaaaaaaa.", -- 4
".aaaaaaaa.", -- 5
".aaaaaaaa.", -- 6
".aaaaaaaa.", -- 7
"..........", -- 8
-- Level 2
"..........", -- 0
".aaeaaaaa.", -- 1
".afghhgfa.", -- 2
".afhffhfa.", -- 3
".afhgghfa.", -- 4
".afhffhfa.", -- 5
".afghhgfa.", -- 6
".aaaaaaaa.", -- 7
"..........", -- 8
-- Level 3
"..........", -- 0
".iijii.ii.", -- 1
".i......i.", -- 2
".i......i.", -- 3
"..........", -- 4
".i......i.", -- 5
".i......i.", -- 6
".ii.ii.ii.", -- 7
"..........", -- 8
-- Level 4
"..........", -- 0
".aaaaaaaa.", -- 1
".a..k...a.", -- 2
".a......a.", -- 3
".al....na.", -- 4
".a......a.", -- 5
".a......a.", -- 6
".aaaaaaaa.", -- 7
"..........", -- 8
-- Level 5
"oppppppppp", -- 0
"oaaaaaaaaq", -- 1
"oaaaaaaaaq", -- 2
"oaaaaaaaaq", -- 3
"oaaaaaaaaq", -- 4
"oaaaaaaaaq", -- 5
"oaaaaaaaaq", -- 6
"oaaaaaaaaq", -- 7
"rrrrrrrrrq", -- 8
},
}, -- House8x7
{
OriginData =
{
ExportName = "House9x7",
Name = "Desert 30",
GalleryName = "Desert",
GalleryIndex = "30",
ID = "171",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 6,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 5,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171: 0", -- carpet
"g:171:15", -- carpet
"h:171:14", -- carpet
"i: 24: 2", -- sandstone
"j: 64: 9", -- woodendoorblock
"k: 50: 3", -- torch
"l: 50: 1", -- torch
"m: 19: 0", -- sponge
"n: 50: 2", -- torch
"o: 50: 4", -- torch
"p:128: 4", -- sandstonestairs
"q:128: 6", -- sandstonestairs
"r:128: 5", -- sandstonestairs
"s:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaammmmmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"mmmmmmmmmmm", -- 8
-- Level 1
"..bcd......", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
".aaaaaaaaa.", -- 6
".aaaaaaaaa.", -- 7
"...........", -- 8
-- Level 2
"...........", -- 0
".aaeaaaaaa.", -- 1
".affgggffa.", -- 2
".afghhhgfa.", -- 3
".afghfhgfa.", -- 4
".afghhhgfa.", -- 5
".affgggffa.", -- 6
".aaaaaaaaa.", -- 7
"...........", -- 8
-- Level 3
"...........", -- 0
".iijii.iii.", -- 1
".i.......i.", -- 2
".i.......i.", -- 3
"...........", -- 4
".i.......i.", -- 5
".i.......i.", -- 6
".ii.iii.ii.", -- 7
"...........", -- 8
-- Level 4
"...........", -- 0
".aaaaaaaaa.", -- 1
".a..k....a.", -- 2
".a.......a.", -- 3
".al.....na.", -- 4
".a.......a.", -- 5
".a...o...a.", -- 6
".aaaaaaaaa.", -- 7
"...........", -- 8
-- Level 5
"pqqqqqqqqqq", -- 0
"paaaaaaaaar", -- 1
"paaaaaaaaar", -- 2
"paaaaaaaaar", -- 3
"paaaaaaaaar", -- 4
"paaaaaaaaar", -- 5
"paaaaaaaaar", -- 6
"paaaaaaaaar", -- 7
"ssssssssssr", -- 8
},
}, -- House9x7
{
OriginData =
{
ExportName = "House11x7",
Name = "Desert 31",
GalleryName = "Desert",
GalleryIndex = "31",
ID = "172",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 6,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 5,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:171: 0", -- carpet
"g:171:15", -- carpet
"h:171:14", -- carpet
"i: 24: 2", -- sandstone
"j: 64: 9", -- woodendoorblock
"k: 50: 3", -- torch
"l: 50: 1", -- torch
"m: 19: 0", -- sponge
"n: 50: 2", -- torch
"o: 50: 4", -- torch
"p:128: 4", -- sandstonestairs
"q:128: 6", -- sandstonestairs
"r:128: 5", -- sandstonestairs
"s:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmaaammmmmmmm", -- 0
"maaaaaaaaaaam", -- 1
"maaaaaaaaaaam", -- 2
"maaaaaaaaaaam", -- 3
"maaaaaaaaaaam", -- 4
"maaaaaaaaaaam", -- 5
"maaaaaaaaaaam", -- 6
"maaaaaaaaaaam", -- 7
"mmmmmmmmmmmmm", -- 8
-- Level 1
"..bcd........", -- 0
".aaaaaaaaaaa.", -- 1
".aaaaaaaaaaa.", -- 2
".aaaaaaaaaaa.", -- 3
".aaaaaaaaaaa.", -- 4
".aaaaaaaaaaa.", -- 5
".aaaaaaaaaaa.", -- 6
".aaaaaaaaaaa.", -- 7
".............", -- 8
-- Level 2
".............", -- 0
".aaeaaaaaaaa.", -- 1
".affgggggffa.", -- 2
".afghhhhhgfa.", -- 3
".afghfffhgfa.", -- 4
".afghhhhhgfa.", -- 5
".affgggggffa.", -- 6
".aaaaaaaaaaa.", -- 7
".............", -- 8
-- Level 3
".............", -- 0
".iiji.iii.ii.", -- 1
".i.........i.", -- 2
".i.........i.", -- 3
".............", -- 4
".i.........i.", -- 5
".i.........i.", -- 6
".ii.ii.ii.ii.", -- 7
".............", -- 8
-- Level 4
".............", -- 0
".aaaaaaaaaaa.", -- 1
".a..k..k...a.", -- 2
".a.........a.", -- 3
".al.......na.", -- 4
".a.........a.", -- 5
".a....o....a.", -- 6
".aaaaaaaaaaa.", -- 7
".............", -- 8
-- Level 5
"pqqqqqqqqqqqq", -- 0
"paaaaaaaaaaar", -- 1
"paaaaaaaaaaar", -- 2
"paaaaaaaaaaar", -- 3
"paaaaaaaaaaar", -- 4
"paaaaaaaaaaar", -- 5
"paaaaaaaaaaar", -- 6
"paaaaaaaaaaar", -- 7
"ssssssssssssr", -- 8
},
}, -- House11x7
{
OriginData =
{
ExportName = "Forge",
Name = "Desert 32",
GalleryName = "Desert",
GalleryIndex = "32",
ID = "173",
CreatorName = "Aloe_vera",
},
Size =
{
x = 12,
y = 6,
z = 10,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 12,
MaxY = 5,
MaxZ = 10,
},
Connectors =
{
{
Type = -1,
RelX = 3,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e:128: 3", -- sandstonestairs
"f:171:15", -- carpet
"g: 64: 2", -- woodendoorblock
"h:171: 0", -- carpet
"i:171:14", -- carpet
"j: 61: 2", -- furnace
"k: 10: 0", -- lava
"l: 54: 2", -- chest
"m: 19: 0", -- sponge
"n: 24: 2", -- sandstone
"o: 64: 9", -- woodendoorblock
"p: 50: 1", -- torch
"q:101: 0", -- ironbars
"r:128: 4", -- sandstonestairs
"s:128: 6", -- sandstonestairs
"t:128: 5", -- sandstonestairs
"u:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"aaaaaaammmmm", -- 0
"aaaaaaaaaaam", -- 1
"aaaaaaaaaaam", -- 2
"aaaaaaaaaaam", -- 3
"aaaaaaaaaaam", -- 4
"aaaaaaaaaaam", -- 5
"maaaaaaaaaam", -- 6
"maaaaaaaaaam", -- 7
"maaaaaaaaaam", -- 8
"mmmmmmmmmmmm", -- 9
-- Level 1
"bcccccd.....", -- 0
"baaaaaaaaaa.", -- 1
"baaaaaaaaaa.", -- 2
"baaaaaaaaaa.", -- 3
"baaaaaaaaaa.", -- 4
"eaaaaaaaaaa.", -- 5
".aaaaaaaaaa.", -- 6
".aaaaaaaaaa.", -- 7
".aaaaaaaaaa.", -- 8
"............", -- 9
-- Level 2
"............", -- 0
".a....aaaaa.", -- 1
"......afffa.", -- 2
"......ghfha.", -- 3
"......aiiia.", -- 4
".a....ahfha.", -- 5
".ajaajafffa.", -- 6
".aakkaal..a.", -- 7
".aaaaaaaaaa.", -- 8
"............", -- 9
-- Level 3
"............", -- 0
".n....nn.nn.", -- 1
"......n...n.", -- 2
"......o...n.", -- 3
"......n.....", -- 4
".n....n...n.", -- 5
".n....n...n.", -- 6
".n....n...n.", -- 7
".nnn.nnn.nn.", -- 8
"............", -- 9
-- Level 4
"............", -- 0
".a....aaaaa.", -- 1
"......a...a.", -- 2
"......a...a.", -- 3
"......ap..a.", -- 4
".a....a...a.", -- 5
".aqqqqa...a.", -- 6
".a....a...a.", -- 7
".aaaaaaaaaa.", -- 8
"............", -- 9
-- Level 5
"rsssssssssss", -- 0
"raaaaaaaaaat", -- 1
"raaaaaaaaaat", -- 2
"raaaaaaaaaat", -- 3
"raaaaaaaaaat", -- 4
"raaaaaaaaaat", -- 5
"raaaaaaaaaat", -- 6
"raaaaaaaaaat", -- 7
"raaaaaaaaaat", -- 8
"uuuuuuuuuuut", -- 9
},
}, -- Forge
{
OriginData =
{
ExportName = "MarketStall",
Name = "Desert 34",
GalleryName = "Desert",
GalleryIndex = "34",
ID = "175",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 6,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 5,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 2,
RelY = 0,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "5",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 12: 0", -- sand
"b: 85: 0", -- fence
"c:171:14", -- carpet
"d:171:15", -- carpet
"e:171: 0", -- carpet
"f: 35:14", -- wool
"g: 35: 0", -- wool
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"b.....b", -- 0
"cddeddc", -- 1
"cdeeedc", -- 2
"cdeeedc", -- 3
"cddeddc", -- 4
"b.....b", -- 5
".......", -- 6
-- Level 2
"b.....b", -- 0
".......", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"b.....b", -- 5
".......", -- 6
-- Level 3
"b.....b", -- 0
".......", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"b.....b", -- 5
"fgfgfgf", -- 6
-- Level 4
"fgfgfgf", -- 0
".......", -- 1
".......", -- 2
".......", -- 3
".......", -- 4
"fgfgfgf", -- 5
".......", -- 6
-- Level 5
".......", -- 0
"fgfgfgf", -- 1
"fgfgfgf", -- 2
"fgfgfgf", -- 3
"fgfgfgf", -- 4
".......", -- 5
".......", -- 6
},
}, -- MarketStall
{
OriginData =
{
ExportName = "Marketplace",
Name = "Desert 38",
GalleryName = "Desert",
GalleryIndex = "38",
ID = "261",
CreatorName = "Aloe_vera",
},
Size =
{
x = 14,
y = 4,
z = 16,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 3,
MaxZ = 16,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 0,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "20",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b: 12: 0", -- sand
"c: 24: 2", -- sandstone
"d: 12: 2", -- sand
"e: 85: 0", -- fence
"f: 5: 0", -- planks
"g:128: 2", -- sandstonestairs
"h:128: 0", -- sandstonestairs
"i: 8: 0", -- water
"j:128: 1", -- sandstonestairs
"k:128: 3", -- sandstonestairs
"l: 35: 0", -- wool
"m: 19: 0", -- sponge
"n: 35:14", -- wool
},
BlockData =
{
-- Level 0
"aaaabbbaaabbbb", -- 0
"aaaabbaabbabbb", -- 1
"aababbabcabbbb", -- 2
"aaaaabaaaaabbb", -- 3
"bbbbbbbbbbbbbb", -- 4
"bbbbbbbbbbaabb", -- 5
"bbbbccccbbabab", -- 6
"ccbbccccbbaaab", -- 7
"ccbbccccbbabbb", -- 8
"dcbbccccbbabaa", -- 9
"ccbbbbbbbbaaba", -- 10
"ccbbbbbbbbabaa", -- 11
"bbbbbbbbbbabaa", -- 12
"bbbaababbbaaba", -- 13
"bbbcaaaabbabbb", -- 14
"bbbcccabbbabbb", -- 15
-- Level 1
"e...e.e...e...", -- 0
"..............", -- 1
"..............", -- 2
"fffff.fffff...", -- 3
"..............", -- 4
"..........f..e", -- 5
"....gggg..f...", -- 6
".f..hiij..f...", -- 7
".f..hiij..f...", -- 8
".f..kkkk..f..e", -- 9
".f............", -- 10
".f........f..e", -- 11
"...fffff..f...", -- 12
"..........f...", -- 13
"..........f...", -- 14
"...e...e..f..e", -- 15
-- Level 2
"lnlnl.lnlnl...", -- 0
"..............", -- 1
"..............", -- 2
"e...e.e...e...", -- 3
"..............", -- 4
"..........e..l", -- 5
".............n", -- 6
".e...........l", -- 7
".............n", -- 8
"..........e..l", -- 9
"..............", -- 10
".e........e..l", -- 11
"...e...e.....n", -- 12
".............l", -- 13
".............n", -- 14
"...lnlnl..e..l", -- 15
-- Level 3
"..............", -- 0
"lnlnl.lnlnl...", -- 1
"lnlnl.lnlnl...", -- 2
"lnlnl.lnlnl...", -- 3
"..............", -- 4
"..........lll.", -- 5
"..........nnn.", -- 6
"ll........lll.", -- 7
"nn........nnn.", -- 8
"ll........lll.", -- 9
"nn............", -- 10
"ll........lll.", -- 11
"...lnlnl..nnn.", -- 12
"...lnlnl..lll.", -- 13
"...lnlnl..nnn.", -- 14
"..........lll.", -- 15
},
}, -- Marketplace
{
OriginData =
{
ExportName = "Well",
Name = "Desert 44",
GalleryName = "Desert",
GalleryIndex = "44",
ID = "275",
CreatorName = "Aloe_vera",
},
Size =
{
x = 5,
y = 16,
z = 5,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 4,
MaxY = 15,
MaxZ = 4,
},
Connectors =
{
{
Type = 2,
RelX = 4,
RelY = 11,
RelZ = 2,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 2,
RelY = 11,
RelZ = 4,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 0,
RelY = 11,
RelZ = 2,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 2,
RelY = 11,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-11",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 24: 0", -- sandstone
"c: 8: 0", -- water
"d:128: 2", -- sandstonestairs
"e:128: 0", -- sandstonestairs
"f:128: 1", -- sandstonestairs
"g:128: 3", -- sandstonestairs
"h:128: 6", -- sandstonestairs
"i:128: 4", -- sandstonestairs
"j:128: 5", -- sandstonestairs
"k:128: 7", -- sandstonestairs
"l: 44: 1", -- stone_slab
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"abbba", -- 1
"abbba", -- 2
"abbba", -- 3
"aaaaa", -- 4
-- Level 1
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 2
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 3
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 4
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 5
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 6
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 7
"bbbbb", -- 0
"bcccb", -- 1
"bcccb", -- 2
"bcccb", -- 3
"bbbbb", -- 4
-- Level 8
"bbbbb", -- 0
"bcbcb", -- 1
"bbcbb", -- 2
"bcbcb", -- 3
"bbbbb", -- 4
-- Level 9
"bbbbb", -- 0
"bcbcb", -- 1
"bbbbb", -- 2
"bcbcb", -- 3
"bbbbb", -- 4
-- Level 10
"bbbbb", -- 0
"bcbcb", -- 1
"bbbbb", -- 2
"bcbcb", -- 3
"bbbbb", -- 4
-- Level 11
"ddddd", -- 0
"ecccf", -- 1
"ecbcf", -- 2
"ecccf", -- 3
"ggggf", -- 4
-- Level 12
".....", -- 0
".....", -- 1
"..b..", -- 2
".....", -- 3
".....", -- 4
-- Level 13
".....", -- 0
".....", -- 1
"..b..", -- 2
".....", -- 3
".....", -- 4
-- Level 14
".....", -- 0
".hhh.", -- 1
".ibj.", -- 2
".kkj.", -- 3
".....", -- 4
-- Level 15
"lllll", -- 0
"lllll", -- 1
"lllll", -- 2
"lllll", -- 3
"lllll", -- 4
},
}, -- Well
{
OriginData =
{
ExportName = "HouseL13x12",
Name = "Desert 53",
GalleryName = "Desert",
GalleryIndex = "53",
ID = "345",
CreatorName = "jakibaki",
},
Size =
{
x = 15,
y = 6,
z = 14,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 5,
MaxZ = 14,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 43: 1", -- doublestoneslab
"f: 64: 3", -- woodendoorblock
"g:171: 0", -- carpet
"h:171:15", -- carpet
"i:171:14", -- carpet
"j: 58: 0", -- workbench
"k: 24: 2", -- sandstone
"l: 64: 9", -- woodendoorblock
"m: 19: 0", -- sponge
"n: 50: 3", -- torch
"o: 50: 1", -- torch
"p: 50: 2", -- torch
"q: 50: 4", -- torch
"r:128: 6", -- sandstonestairs
"s:128: 5", -- sandstonestairs
"t:128: 4", -- sandstonestairs
"u:128: 7", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmmaaammmmmmmmm", -- 0
"maaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaam", -- 6
"maaaaaaaaaaaaam", -- 7
"mmmmmmmaaaaaaam", -- 8
"mmmmmmmaaaaaaam", -- 9
"mmmmmmmaaaaaaam", -- 10
"mmmmmmmaaaaaaam", -- 11
"mmmmmmmaaaaaaam", -- 12
"mmmmmmmmmmmmmmm", -- 13
-- Level 1
"...bcd.........", -- 0
".aaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaea.", -- 5
".aaaaaaaaaaaaa.", -- 6
".aaaaaaaaaaaaa.", -- 7
".......aeaaaaa.", -- 8
"mmmmmm.aaaaaaa.", -- 9
"mmmmmm.aaaaaaa.", -- 10
"mmmmmm.aaaaaaa.", -- 11
"mmmmmm.aaaaaaa.", -- 12
"...............", -- 13
-- Level 2
"...............", -- 0
".aaafaaaaaaaaa.", -- 1
".agghhhhhhhhga.", -- 2
".aghiiiiiiiiha.", -- 3
".aghiggggggiha.", -- 4
".aghiiiiiigiha.", -- 5
".agghhhhhigiha.", -- 6
".aaaaaaahigiha.", -- 7
".......ahigiha.", -- 8
"mmmmmm.ahiiiha.", -- 9
"mmmmmm.aghhhga.", -- 10
"mmmmmm.aggggja.", -- 11
"mmmmmm.aaaaaaa.", -- 12
"...............", -- 13
-- Level 3
"...............", -- 0
".kkklkkkk.kkkk.", -- 1
".k...........k.", -- 2
".k...........k.", -- 3
"...............", -- 4
".k...........k.", -- 5
".k...........k.", -- 6
".kkk.kkk.....k.", -- 7
".......k.....k.", -- 8
"mmmmmm.k.......", -- 9
"mmmmmm.......k.", -- 10
"mmmmmm.k.....k.", -- 11
"mmmmmm.kkk.kkk.", -- 12
"...............", -- 13
-- Level 4
"...............", -- 0
".aaaaaaaaaaaaa.", -- 1
".a......n....a.", -- 2
".a...........a.", -- 3
".ao..........a.", -- 4
".a...........a.", -- 5
".a..........pa.", -- 6
".aaaaaaa.....a.", -- 7
".......a.....a.", -- 8
"mmmmmm.a.....a.", -- 9
"mmmmmm.a.....a.", -- 10
"mmmmmm.a..q..a.", -- 11
"mmmmmm.aaaaaaa.", -- 12
"...............", -- 13
-- Level 5
"rrrrrrrrrrrrrrs", -- 0
"taaaaaaaaaaaaas", -- 1
"taaaaaaaaaaaaas", -- 2
"taaaaaaaaaaaaas", -- 3
"taaaaaaaaaaaaas", -- 4
"taaaaaaaaaaaaas", -- 5
"taaaaaaaaaaaaas", -- 6
"taaaaaaaaaaaaas", -- 7
"tuuuuutaaaaaaas", -- 8
"mmmmmmtaaaaaaas", -- 9
"mmmmmmtaaaaaaas", -- 10
"mmmmmmtaaaaaaas", -- 11
"mmmmmmtaaaaaaas", -- 12
"......tuuuuuuuu", -- 13
},
}, -- HouseL13x12
}, -- Pieces
}
================================================
FILE: Server/Prefabs/Villages/SandVillage.cubeset
================================================
-- SandVillage.cubeset
-- Defines the prefabs in the group SandVillage
-- NOTE: This file has been generated automatically by GalExport!
-- Any manual changes will be overwritten by the next automatic export!
Cubeset =
{
Metadata =
{
CubesetFormatVersion = 1,
ExportDate = "2016-11-30 13:45:41",
["AllowedBiomes"] = "Desert, DesertM",
["IntendedUse"] = "Village",
},
Pieces =
{
{
OriginData =
{
ExportName = "Well",
Name = "Desert 0",
GalleryName = "Desert",
GalleryIndex = "0",
ID = "1",
CreatorName = "Aloe_vera",
},
Size =
{
x = 4,
y = 13,
z = 4,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 3,
MaxY = 12,
MaxZ = 3,
},
Connectors =
{
{
Type = 2,
RelX = 2,
RelY = 8,
RelZ = 0,
Direction = 2, -- Z-
},
{
Type = 2,
RelX = 0,
RelY = 8,
RelZ = 1,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 1,
RelY = 8,
RelZ = 3,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 3,
RelY = 8,
RelZ = 2,
Direction = 5, -- X+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "None",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-8",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 24: 0", -- sandstone
"c: 8: 0", -- water
"d: 85: 0", -- fence
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaa", -- 0
"aaaa", -- 1
"aaaa", -- 2
"aaaa", -- 3
-- Level 1
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 2
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 3
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 4
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 5
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 6
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 7
"bbbb", -- 0
"bccb", -- 1
"bccb", -- 2
"bbbb", -- 3
-- Level 8
"bbbb", -- 0
"b..b", -- 1
"b..b", -- 2
"bbbb", -- 3
-- Level 9
"d..d", -- 0
"....", -- 1
"....", -- 2
"d..d", -- 3
-- Level 10
"d..d", -- 0
"....", -- 1
"....", -- 2
"d..d", -- 3
-- Level 11
"d..d", -- 0
"....", -- 1
"....", -- 2
"d..d", -- 3
-- Level 12
"bbbb", -- 0
"bbbb", -- 1
"bbbb", -- 2
"bbbb", -- 3
},
}, -- Well
{
OriginData =
{
ExportName = "SmallHut",
Name = "Desert 4",
GalleryName = "Desert",
GalleryIndex = "4",
ID = "68",
CreatorName = "tonibm1999",
},
Size =
{
x = 5,
y = 6,
z = 6,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 5,
MaxY = 5,
MaxZ = 5,
},
Connectors =
{
{
Type = -1,
RelX = 2,
RelY = 1,
RelZ = 5,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 3", -- sandstonestairs
"c: 24: 2", -- sandstone
"d: 50: 5", -- torch
"e: 26:10", -- bedblock
"f: 26: 2", -- bedblock
"g: 64: 1", -- woodendoorblock
"h: 64: 9", -- woodendoorblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
"mmamm", -- 5
-- Level 1
"aaaaa", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
"aaaaa", -- 4
"..b..", -- 5
-- Level 2
"accca", -- 0
"cdedc", -- 1
"c.f.c", -- 2
"c...c", -- 3
"acgca", -- 4
".....", -- 5
-- Level 3
"ac.ca", -- 0
"c...c", -- 1
".....", -- 2
"c...c", -- 3
"achca", -- 4
".....", -- 5
-- Level 4
"accca", -- 0
"c...c", -- 1
"c...c", -- 2
"c...c", -- 3
"accca", -- 4
".....", -- 5
-- Level 5
".aaa.", -- 0
"aaaaa", -- 1
"aaaaa", -- 2
"aaaaa", -- 3
".aaa.", -- 4
".....", -- 5
},
}, -- SmallHut
{
OriginData =
{
ExportName = "DoubleField",
Name = "Desert 5",
GalleryName = "Desert",
GalleryIndex = "5",
ID = "75",
CreatorName = "tonibm1999",
},
Size =
{
x = 13,
y = 3,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = -1,
MaxX = 13,
MaxY = 2,
MaxZ = 8,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 8,
Direction = 3, -- Z+
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b: 60: 7", -- tilleddirt
"c: 60: 6", -- tilleddirt
"d: 8: 0", -- water
"e: 50: 5", -- torch
"f: 59: 7", -- wheatblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaaaaa", -- 0
"aaaaaaaaaaaaa", -- 1
"aaaaaaaaaaaaa", -- 2
"aaaaaaaaaaaaa", -- 3
"aaaaaaaaaaaaa", -- 4
"aaaaaaaaaaaaa", -- 5
"aaaaaaaaaaaaa", -- 6
"aaaaaaaaaaaaa", -- 7
"aaaaaaaaaaaaa", -- 8
-- Level 1
"aaaaaaaaaaaaa", -- 0
"abcdbbabbdbba", -- 1
"abbdbbabbdbba", -- 2
"abbdbbabbdbba", -- 3
"abbdbbabbdbba", -- 4
"abbdbbabbdbba", -- 5
"acbdbbabbdbba", -- 6
"abbdbbabbdbba", -- 7
"aaaaaaaaaaaaa", -- 8
-- Level 2
"e.....e.....e", -- 0
".ff.ff.ff.ff.", -- 1
".ff.ff.ff.ff.", -- 2
".ff.ff.ff.ff.", -- 3
".ff.ff.ff.ff.", -- 4
".ff.ff.ff.ff.", -- 5
".ff.ff.ff.ff.", -- 6
".ff.ff.ff.ff.", -- 7
"e.....e.....e", -- 8
},
}, -- DoubleField
{
OriginData =
{
ExportName = "House11x7",
Name = "Desert 6",
GalleryName = "Desert",
GalleryIndex = "6",
ID = "81",
CreatorName = "Aloe_vera",
},
Size =
{
x = 11,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
"n: 50: 1", -- torch
"o: 50: 2", -- torch
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"mmmmmmmmmmm", -- 6
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
"...........", -- 6
-- Level 2
"...........", -- 0
".aaaaeaaaa.", -- 1
".a.......a.", -- 2
".a.......a.", -- 3
".a.......a.", -- 4
".aaaaaaaaa.", -- 5
"...........", -- 6
-- Level 3
"...........", -- 0
".affagaffa.", -- 1
".f.......f.", -- 2
".f.......f.", -- 3
".f.......f.", -- 4
".affafaffa.", -- 5
"...........", -- 6
-- Level 4
"ccccccccccc", -- 0
"haaaaaaaaah", -- 1
".a..i.i..a.", -- 2
".a.......a.", -- 3
".a..j.j..a.", -- 4
"kaaaaaaaaak", -- 5
"lllllllllll", -- 6
-- Level 5
"...........", -- 0
"ccccccccccc", -- 1
"haaaaaaaaah", -- 2
".an.....oa.", -- 3
"kaaaaaaaaak", -- 4
"lllllllllll", -- 5
"...........", -- 6
-- Level 6
"...........", -- 0
"...........", -- 1
"ccccccccccc", -- 2
"aaaaaaaaaaa", -- 3
"lllllllllll", -- 4
"...........", -- 5
"...........", -- 6
},
}, -- House11x7
{
OriginData =
{
ExportName = "HouseL14x12",
Name = "Desert 7",
GalleryName = "Desert",
GalleryIndex = "7",
ID = "82",
CreatorName = "Aloe_vera",
},
Size =
{
x = 14,
y = 7,
z = 12,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 6,
MaxZ = 12,
},
Connectors =
{
{
Type = -1,
RelX = 8,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e:128: 3", -- sandstonestairs
"f: 64: 3", -- woodendoorblock
"g: 64: 1", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j:128: 7", -- sandstonestairs
"k: 50: 3", -- torch
"l: 50: 4", -- torch
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:128: 5", -- sandstonestairs
"p:128: 4", -- sandstonestairs
"q: 50: 1", -- torch
},
BlockData =
{
-- Level 0
"mmmmmmmaaammmm", -- 0
"maaaaaaaaaaaam", -- 1
"maaaaaaaaaaaam", -- 2
"maaaaaaaaaaaam", -- 3
"maaaaaaaaaaaam", -- 4
"maaaaaaaaaaaam", -- 5
"mmmmaaamaaaaam", -- 6
"mmmmmmmmaaaaam", -- 7
"mmmmmmmmaaaaam", -- 8
"mmmmmmmmaaaaam", -- 9
"mmmmmmmmaaaaam", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 1
".......bcd....", -- 0
".aaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaa.", -- 5
"....bed.aaaaa.", -- 6
"........aaaaa.", -- 7
"........aaaaa.", -- 8
"........aaaaa.", -- 9
"........aaaaa.", -- 10
"..............", -- 11
-- Level 2
"..............", -- 0
".aaaaaaafaaaa.", -- 1
".a..........a.", -- 2
".a..........a.", -- 3
".a..........a.", -- 4
".aaaagaaa...a.", -- 5
"........a...a.", -- 6
"........a...a.", -- 7
"........a...a.", -- 8
"........a...a.", -- 9
"........aaaaa.", -- 10
"..............", -- 11
-- Level 3
"..............", -- 0
".ahhahhaiahha.", -- 1
".h..........h.", -- 2
".h..........h.", -- 3
".h..........a.", -- 4
".ahhaiahh...h.", -- 5
"........h...h.", -- 6
"........a...a.", -- 7
"........h...h.", -- 8
"........h...h.", -- 9
"........ahhha.", -- 10
"..............", -- 11
-- Level 4
"cccccccccccccc", -- 0
"jaaaaaaaaaaaad", -- 1
".a.....k.k..ad", -- 2
".a..........ad", -- 3
".a..l.l.....ad", -- 4
"naaaaaaaa...ad", -- 5
"eeeeeeeba...ad", -- 6
".......ba...ad", -- 7
".......ba...ad", -- 8
".......ba...ad", -- 9
".......baaaaad", -- 10
".......bo...pd", -- 11
-- Level 5
"..............", -- 0
"ccccccccccccc.", -- 1
"jaaaaaaaaaaad.", -- 2
".aq........ad.", -- 3
"naaaaaaaaa.ad.", -- 4
"eeeeeeeeba.ad.", -- 5
"........ba.ad.", -- 6
"........ba.ad.", -- 7
"........ba.ad.", -- 8
"........balad.", -- 9
"........baaad.", -- 10
"........bo.pd.", -- 11
-- Level 6
"..............", -- 0
"..............", -- 1
"cccccccccccc..", -- 2
"aaaaaaaaaaad..", -- 3
"eeeeeeeeebad..", -- 4
".........bad..", -- 5
".........bad..", -- 6
".........bad..", -- 7
".........bad..", -- 8
".........bad..", -- 9
".........bad..", -- 10
".........bad..", -- 11
},
}, -- HouseL14x12
{
OriginData =
{
ExportName = "House7x7",
Name = "Desert 8",
GalleryName = "Desert",
GalleryIndex = "8",
ID = "112",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 7,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j:128: 6", -- sandstonestairs
"k:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmaaam", -- 0
"maaaaam", -- 1
"maaaaam", -- 2
"maaaaam", -- 3
"maaaaam", -- 4
"maaaaam", -- 5
"mmmmmmm", -- 6
-- Level 1
"...bcd.", -- 0
".aaaaa.", -- 1
".aaaaa.", -- 2
".aaaaa.", -- 3
".aaaaa.", -- 4
".aaaaa.", -- 5
".......", -- 6
-- Level 2
".......", -- 0
".aaaea.", -- 1
".a...a.", -- 2
".a...a.", -- 3
".a...a.", -- 4
".aaaaa.", -- 5
".......", -- 6
-- Level 3
".......", -- 0
".afaga.", -- 1
".f...f.", -- 2
".f...f.", -- 3
".f...f.", -- 4
".afffa.", -- 5
".......", -- 6
-- Level 4
"ccccccc", -- 0
"haaaaah", -- 1
".a.i.a.", -- 2
".a...a.", -- 3
".a...a.", -- 4
"jaaaaaj", -- 5
"kkkkkkk", -- 6
-- Level 5
".......", -- 0
"ccccccc", -- 1
"haaaaah", -- 2
".a...a.", -- 3
"jaaaaaj", -- 4
"kkkkkkk", -- 5
".......", -- 6
-- Level 6
".......", -- 0
".......", -- 1
"ccccccc", -- 2
"aaaaaaa", -- 3
"kkkkkkk", -- 4
".......", -- 5
".......", -- 6
},
}, -- House7x7
{
OriginData =
{
ExportName = "House9x7",
Name = "Desert 9",
GalleryName = "Desert",
GalleryIndex = "9",
ID = "113",
CreatorName = "xoft",
},
Size =
{
x = 9,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmaaammm", -- 0
"maaaaaaam", -- 1
"maaaaaaam", -- 2
"maaaaaaam", -- 3
"maaaaaaam", -- 4
"maaaaaaam", -- 5
"mmmmmmmmm", -- 6
-- Level 1
"...bcd...", -- 0
".aaaaaaa.", -- 1
".aaaaaaa.", -- 2
".aaaaaaa.", -- 3
".aaaaaaa.", -- 4
".aaaaaaa.", -- 5
".........", -- 6
-- Level 2
".........", -- 0
".aaaeaaa.", -- 1
".a.....a.", -- 2
".a.....a.", -- 3
".a.....a.", -- 4
".aaaaaaa.", -- 5
".........", -- 6
-- Level 3
".........", -- 0
".afagafa.", -- 1
".f.....f.", -- 2
".f.....f.", -- 3
".f.....f.", -- 4
".affaffa.", -- 5
".........", -- 6
-- Level 4
"ccccccccc", -- 0
"haaaaaaah", -- 1
".a.i.i.a.", -- 2
".a.....a.", -- 3
".a..j..a.", -- 4
"kaaaaaaak", -- 5
"lllllllll", -- 6
-- Level 5
".........", -- 0
"ccccccccc", -- 1
"haaaaaaah", -- 2
".a.....a.", -- 3
"kaaaaaaak", -- 4
"lllllllll", -- 5
".........", -- 6
-- Level 6
".........", -- 0
".........", -- 1
"ccccccccc", -- 2
"aaaaaaaaa", -- 3
"lllllllll", -- 4
".........", -- 5
".........", -- 6
},
}, -- House9x7
{
OriginData =
{
ExportName = "House9x9",
Name = "Desert 10",
GalleryName = "Desert",
GalleryIndex = "10",
ID = "114",
CreatorName = "xoft",
},
Size =
{
x = 9,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 9,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 4,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmaaammm", -- 0
"maaaaaaam", -- 1
"maaaaaaam", -- 2
"maaaaaaam", -- 3
"maaaaaaam", -- 4
"maaaaaaam", -- 5
"maaaaaaam", -- 6
"maaaaaaam", -- 7
"mmmmmmmmm", -- 8
-- Level 1
"...bcd...", -- 0
".aaaaaaa.", -- 1
".aaaaaaa.", -- 2
".aaaaaaa.", -- 3
".aaaaaaa.", -- 4
".aaaaaaa.", -- 5
".aaaaaaa.", -- 6
".aaaaaaa.", -- 7
".........", -- 8
-- Level 2
".........", -- 0
".aaaeaaa.", -- 1
".a.....a.", -- 2
".a.....a.", -- 3
".a.....a.", -- 4
".a.....a.", -- 5
".a.....a.", -- 6
".aaaaaaa.", -- 7
".........", -- 8
-- Level 3
".........", -- 0
".afagafa.", -- 1
".f.....f.", -- 2
".f.....f.", -- 3
".a.....a.", -- 4
".f.....f.", -- 5
".f.....f.", -- 6
".affaffa.", -- 7
".........", -- 8
-- Level 4
"ccccccccc", -- 0
"haaaaaaah", -- 1
".a.i.i.a.", -- 2
".a.....a.", -- 3
".a.....a.", -- 4
".a.....a.", -- 5
".a..j..a.", -- 6
"kaaaaaaak", -- 7
"lllllllll", -- 8
-- Level 5
".........", -- 0
"ccccccccc", -- 1
"haaaaaaah", -- 2
".a.....a.", -- 3
".a.....a.", -- 4
".a.....a.", -- 5
"kaaaaaaak", -- 6
"lllllllll", -- 7
".........", -- 8
-- Level 6
".........", -- 0
".........", -- 1
"ccccccccc", -- 2
"haaaaaaah", -- 3
".a.....a.", -- 4
"kaaaaaaak", -- 5
"lllllllll", -- 6
".........", -- 7
".........", -- 8
-- Level 7
".........", -- 0
".........", -- 1
".........", -- 2
"ccccccccc", -- 3
"aaaaaaaaa", -- 4
"lllllllll", -- 5
".........", -- 6
".........", -- 7
".........", -- 8
},
}, -- House9x9
{
OriginData =
{
ExportName = "House11x9",
Name = "Desert 11",
GalleryName = "Desert",
GalleryIndex = "11",
ID = "115",
CreatorName = "xoft",
},
Size =
{
x = 11,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 11,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmaaammmm", -- 0
"maaaaaaaaam", -- 1
"maaaaaaaaam", -- 2
"maaaaaaaaam", -- 3
"maaaaaaaaam", -- 4
"maaaaaaaaam", -- 5
"maaaaaaaaam", -- 6
"maaaaaaaaam", -- 7
"mmmmmmmmmmm", -- 8
-- Level 1
"....bcd....", -- 0
".aaaaaaaaa.", -- 1
".aaaaaaaaa.", -- 2
".aaaaaaaaa.", -- 3
".aaaaaaaaa.", -- 4
".aaaaaaaaa.", -- 5
".aaaaaaaaa.", -- 6
".aaaaaaaaa.", -- 7
"...........", -- 8
-- Level 2
"...........", -- 0
".aaaaeaaaa.", -- 1
".a.......a.", -- 2
".a.......a.", -- 3
".a.......a.", -- 4
".a.......a.", -- 5
".a.......a.", -- 6
".aaaaaaaaa.", -- 7
"...........", -- 8
-- Level 3
"...........", -- 0
".affagaffa.", -- 1
".f.......f.", -- 2
".f.......f.", -- 3
".a.......a.", -- 4
".f.......f.", -- 5
".f.......f.", -- 6
".afffafffa.", -- 7
"...........", -- 8
-- Level 4
"ccccccccccc", -- 0
"haaaaaaaaah", -- 1
".a..i.i..a.", -- 2
".a.......a.", -- 3
".a.......a.", -- 4
".a.......a.", -- 5
".a...j...a.", -- 6
"kaaaaaaaaak", -- 7
"lllllllllll", -- 8
-- Level 5
"...........", -- 0
"ccccccccccc", -- 1
"haaaaaaaaah", -- 2
".a.......a.", -- 3
".a.......a.", -- 4
".a.......a.", -- 5
"kaaaaaaaaak", -- 6
"lllllllllll", -- 7
"...........", -- 8
-- Level 6
"...........", -- 0
"...........", -- 1
"ccccccccccc", -- 2
"haaaaaaaaah", -- 3
".a.......a.", -- 4
"kaaaaaaaaak", -- 5
"lllllllllll", -- 6
"...........", -- 7
"...........", -- 8
-- Level 7
"...........", -- 0
"...........", -- 1
"...........", -- 2
"ccccccccccc", -- 3
"aaaaaaaaaaa", -- 4
"lllllllllll", -- 5
"...........", -- 6
"...........", -- 7
"...........", -- 8
},
}, -- House11x9
{
OriginData =
{
ExportName = "House13x9",
Name = "Desert 12",
GalleryName = "Desert",
GalleryIndex = "12",
ID = "116",
CreatorName = "xoft",
},
Size =
{
x = 13,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmaaammmmm", -- 0
"maaaaaaaaaaam", -- 1
"maaaaaaaaaaam", -- 2
"maaaaaaaaaaam", -- 3
"maaaaaaaaaaam", -- 4
"maaaaaaaaaaam", -- 5
"maaaaaaaaaaam", -- 6
"maaaaaaaaaaam", -- 7
"mmmmmmmmmmmmm", -- 8
-- Level 1
".....bcd.....", -- 0
".aaaaaaaaaaa.", -- 1
".aaaaaaaaaaa.", -- 2
".aaaaaaaaaaa.", -- 3
".aaaaaaaaaaa.", -- 4
".aaaaaaaaaaa.", -- 5
".aaaaaaaaaaa.", -- 6
".aaaaaaaaaaa.", -- 7
".............", -- 8
-- Level 2
".............", -- 0
".aaaaaeaaaaa.", -- 1
".a.........a.", -- 2
".a.........a.", -- 3
".a.........a.", -- 4
".a.........a.", -- 5
".a.........a.", -- 6
".aaaaaaaaaaa.", -- 7
".............", -- 8
-- Level 3
".............", -- 0
".afffagafffa.", -- 1
".f.........f.", -- 2
".f.........f.", -- 3
".a.........a.", -- 4
".f.........f.", -- 5
".f.........f.", -- 6
".affaffafffa.", -- 7
".............", -- 8
-- Level 4
"ccccccccccccc", -- 0
"haaaaaaaaaaah", -- 1
".a...i.i...a.", -- 2
".a.........a.", -- 3
".a.........a.", -- 4
".a.........a.", -- 5
".a..j..j...a.", -- 6
"kaaaaaaaaaaak", -- 7
"lllllllllllll", -- 8
-- Level 5
".............", -- 0
"ccccccccccccc", -- 1
"haaaaaaaaaaah", -- 2
".a.........a.", -- 3
".a.........a.", -- 4
".a.........a.", -- 5
"kaaaaaaaaaaak", -- 6
"lllllllllllll", -- 7
".............", -- 8
-- Level 6
".............", -- 0
".............", -- 1
"ccccccccccccc", -- 2
"haaaaaaaaaaah", -- 3
".a.........a.", -- 4
"kaaaaaaaaaaak", -- 5
"lllllllllllll", -- 6
".............", -- 7
".............", -- 8
-- Level 7
".............", -- 0
".............", -- 1
".............", -- 2
"ccccccccccccc", -- 3
"aaaaaaaaaaaaa", -- 4
"lllllllllllll", -- 5
".............", -- 6
".............", -- 7
".............", -- 8
},
}, -- House13x9
{
OriginData =
{
ExportName = "House15x9",
Name = "Desert 13",
GalleryName = "Desert",
GalleryIndex = "13",
ID = "118",
CreatorName = "xoft",
},
Size =
{
x = 15,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 15,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmaaammmmmmm", -- 0
"maaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaam", -- 6
"maaaaaaaaaaaaam", -- 7
"mmmmmmmmmmmmmmm", -- 8
-- Level 1
".....bcd.......", -- 0
".aaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaaa.", -- 5
".aaaaaaaaaaaaa.", -- 6
".aaaaaaaaaaaaa.", -- 7
"...............", -- 8
-- Level 2
"...............", -- 0
".aaaaaeaaaaaaa.", -- 1
".a...........a.", -- 2
".a...........a.", -- 3
".a...........a.", -- 4
".a...........a.", -- 5
".a...........a.", -- 6
".aaaaaaaaaaaaa.", -- 7
"...............", -- 8
-- Level 3
"...............", -- 0
".afffagaffaffa.", -- 1
".f...........f.", -- 2
".f...........f.", -- 3
".a...........a.", -- 4
".f...........f.", -- 5
".f...........f.", -- 6
".affaffaffaffa.", -- 7
"...............", -- 8
-- Level 4
"ccccccccccccccc", -- 0
"haaaaaaaaaaaaah", -- 1
".a...i.i..i..a.", -- 2
".a...........a.", -- 3
".a...........a.", -- 4
".a...........a.", -- 5
".a..j..j..j..a.", -- 6
"kaaaaaaaaaaaaak", -- 7
"lllllllllllllll", -- 8
-- Level 5
"...............", -- 0
"ccccccccccccccc", -- 1
"haaaaaaaaaaaaah", -- 2
".a...........a.", -- 3
".a...........a.", -- 4
".a...........a.", -- 5
"kaaaaaaaaaaaaak", -- 6
"lllllllllllllll", -- 7
"...............", -- 8
-- Level 6
"...............", -- 0
"...............", -- 1
"ccccccccccccccc", -- 2
"haaaaaaaaaaaaah", -- 3
".a...........a.", -- 4
"kaaaaaaaaaaaaak", -- 5
"lllllllllllllll", -- 6
"...............", -- 7
"...............", -- 8
-- Level 7
"...............", -- 0
"...............", -- 1
"...............", -- 2
"ccccccccccccccc", -- 3
"aaaaaaaaaaaaaaa", -- 4
"lllllllllllllll", -- 5
"...............", -- 6
"...............", -- 7
"...............", -- 8
},
}, -- House15x9
{
OriginData =
{
ExportName = "HouseL14x12",
Name = "Desert 14",
GalleryName = "Desert",
GalleryIndex = "14",
ID = "124",
CreatorName = "Aloe_vera",
},
Size =
{
x = 14,
y = 8,
z = 12,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 14,
MaxY = 7,
MaxZ = 12,
},
Connectors =
{
{
Type = -1,
RelX = 5,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e:128: 3", -- sandstonestairs
"f: 64: 3", -- woodendoorblock
"g: 64: 1", -- woodendoorblock
"h:102: 0", -- glasspane
"i: 64: 9", -- woodendoorblock
"j: 64: 8", -- woodendoorblock
"k:128: 7", -- sandstonestairs
"l: 50: 3", -- torch
"m: 19: 0", -- sponge
"n: 50: 2", -- torch
"o: 50: 4", -- torch
"p:128: 6", -- sandstonestairs
"q: 50: 1", -- torch
"r:128: 5", -- sandstonestairs
"s:128: 4", -- sandstonestairs
},
BlockData =
{
-- Level 0
"mmmmaaammmmmmm", -- 0
"maaaaaaaaaaaam", -- 1
"maaaaaaaaaaaam", -- 2
"maaaaaaaaaaaam", -- 3
"maaaaaaaaaaaam", -- 4
"maaaaaaaaaaaam", -- 5
"maaaaaaaaaaaam", -- 6
"maaaaaaaaaaaam", -- 7
"mmmmaaaaaaaaam", -- 8
"mmmmmmaaaaaaam", -- 9
"mmmmmmaaaaaaam", -- 10
"mmmmmmmmmmmmmm", -- 11
-- Level 1
"....bcd.......", -- 0
".aaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaa.", -- 5
".aaaaaaaaaaaa.", -- 6
".aaaaaaaaaaaa.", -- 7
"....beaaaaaaa.", -- 8
"mmmmm.aaaaaaa.", -- 9
"mmmmm.aaaaaaa.", -- 10
"mmmmm.........", -- 11
-- Level 2
"..............", -- 0
".aaaafaaaaaaa.", -- 1
".a..........a.", -- 2
".a..........a.", -- 3
".a..........a.", -- 4
".a..........a.", -- 5
".a..........a.", -- 6
".aaaaga.....a.", -- 7
"......a.....a.", -- 8
"mmmmm.a.....a.", -- 9
"mmmmm.aaaaaaa.", -- 10
"mmmmm.........", -- 11
-- Level 3
"..............", -- 0
".ahhaiahhahha.", -- 1
".h..........h.", -- 2
".h..........h.", -- 3
".a..........a.", -- 4
".h..........h.", -- 5
".h..........h.", -- 6
".ahhaja.....a.", -- 7
"......h.....h.", -- 8
"mmmmm.h.....h.", -- 9
"mmmmm.ahhahha.", -- 10
"mmmmm.........", -- 11
-- Level 4
"cccccccccccccc", -- 0
"kaaaaaaaaaaaad", -- 1
".a..l.l.....ad", -- 2
".a..........ad", -- 3
".a.........nad", -- 4
".a..........ad", -- 5
".a..o.o.....ad", -- 6
"paaaaaaq...nad", -- 7
"eeeeeba.....ad", -- 8
"mmmmmba.....ad", -- 9
"mmmmmbaaaaaaad", -- 10
"mmmmmbr.....sd", -- 11
-- Level 5
"..............", -- 0
"ccccccccccccd.", -- 1
"kaaaaaaaaaaad.", -- 2
".a.........ad.", -- 3
".a.........ad.", -- 4
".a.........ad.", -- 5
"paaaaaaa...ad.", -- 6
"eeeeeeba...ad.", -- 7
"......ba...ad.", -- 8
"mmmmm.ba...ad.", -- 9
"mmmmm.baaaaad.", -- 10
"mmmmm.br...sd.", -- 11
-- Level 6
"..............", -- 0
"..............", -- 1
"cccccccccccc..", -- 2
"kaaaaaaaaaad..", -- 3
".a........ad..", -- 4
"paaaaaaaa.ad..", -- 5
"eeeeeeeea.ad..", -- 6
".......ba.ad..", -- 7
".......ba.ad..", -- 8
"mmmmm..ba.ad..", -- 9
"mmmmm..baaad..", -- 10
"mmmmm..br.sd..", -- 11
-- Level 7
"..............", -- 0
"..............", -- 1
"..............", -- 2
"ccccccccccc...", -- 3
"aaaaaaaaaad...", -- 4
"eeeeeeeebad...", -- 5
"........bad...", -- 6
"........bad...", -- 7
"........bad...", -- 8
"mmmmm...bad...", -- 9
"mmmmm...bad...", -- 10
"mmmmm...bad...", -- 11
},
}, -- HouseL14x12
{
OriginData =
{
ExportName = "House13x7",
Name = "Desert 15",
GalleryName = "Desert",
GalleryIndex = "15",
ID = "125",
CreatorName = "Aloe_vera",
},
Size =
{
x = 13,
y = 7,
z = 7,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 13,
MaxY = 6,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 6,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmaaammmmm", -- 0
"maaaaaaaaaaam", -- 1
"maaaaaaaaaaam", -- 2
"maaaaaaaaaaam", -- 3
"maaaaaaaaaaam", -- 4
"maaaaaaaaaaam", -- 5
"mmmmmmmmmmmmm", -- 6
-- Level 1
".....bcd.....", -- 0
".aaaaaaaaaaa.", -- 1
".aaaaaaaaaaa.", -- 2
".aaaaaaaaaaa.", -- 3
".aaaaaaaaaaa.", -- 4
".aaaaaaaaaaa.", -- 5
".............", -- 6
-- Level 2
".............", -- 0
".aaaaaeaaaaa.", -- 1
".a.........a.", -- 2
".a.........a.", -- 3
".a.........a.", -- 4
".aaaaaaaaaaa.", -- 5
".............", -- 6
-- Level 3
".............", -- 0
".afffagafffa.", -- 1
".f.........f.", -- 2
".f.........f.", -- 3
".f.........f.", -- 4
".affafffaffa.", -- 5
".............", -- 6
-- Level 4
"ccccccccccccc", -- 0
"haaaaaaaaaaah", -- 1
".a...i.i...a.", -- 2
".a.........a.", -- 3
".a..j...j..a.", -- 4
"kaaaaaaaaaaak", -- 5
"lllllllllllll", -- 6
-- Level 5
".............", -- 0
"ccccccccccccc", -- 1
"haaaaaaaaaaah", -- 2
".a.........a.", -- 3
"kaaaaaaaaaaak", -- 4
"lllllllllllll", -- 5
".............", -- 6
-- Level 6
".............", -- 0
".............", -- 1
"ccccccccccccc", -- 2
"aaaaaaaaaaaaa", -- 3
"lllllllllllll", -- 4
".............", -- 5
".............", -- 6
},
}, -- House13x7
{
OriginData =
{
ExportName = "House16x9",
Name = "Desert 16",
GalleryName = "Desert",
GalleryIndex = "16",
ID = "126",
CreatorName = "Aloe_vera",
},
Size =
{
x = 16,
y = 8,
z = 9,
},
Hitbox =
{
MinX = -1,
MinY = 0,
MinZ = 0,
MaxX = 16,
MaxY = 7,
MaxZ = 9,
},
Connectors =
{
{
Type = -1,
RelX = 9,
RelY = 1,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b:128: 0", -- sandstonestairs
"c:128: 2", -- sandstonestairs
"d:128: 1", -- sandstonestairs
"e: 64: 3", -- woodendoorblock
"f:102: 0", -- glasspane
"g: 64: 9", -- woodendoorblock
"h:128: 7", -- sandstonestairs
"i: 50: 3", -- torch
"j: 50: 4", -- torch
"k:128: 6", -- sandstonestairs
"l:128: 3", -- sandstonestairs
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"mmmmmmmmaaammmmm", -- 0
"maaaaaaaaaaaaaam", -- 1
"maaaaaaaaaaaaaam", -- 2
"maaaaaaaaaaaaaam", -- 3
"maaaaaaaaaaaaaam", -- 4
"maaaaaaaaaaaaaam", -- 5
"maaaaaaaaaaaaaam", -- 6
"maaaaaaaaaaaaaam", -- 7
"mmmmmmmmmmmmmmmm", -- 8
-- Level 1
"........bcd.....", -- 0
".aaaaaaaaaaaaaa.", -- 1
".aaaaaaaaaaaaaa.", -- 2
".aaaaaaaaaaaaaa.", -- 3
".aaaaaaaaaaaaaa.", -- 4
".aaaaaaaaaaaaaa.", -- 5
".aaaaaaaaaaaaaa.", -- 6
".aaaaaaaaaaaaaa.", -- 7
"................", -- 8
-- Level 2
"................", -- 0
".aaaaaaaaeaaaaa.", -- 1
".a............a.", -- 2
".a............a.", -- 3
".a............a.", -- 4
".a............a.", -- 5
".a............a.", -- 6
".aaaaaaaaaaaaaa.", -- 7
"................", -- 8
-- Level 3
"................", -- 0
".affafffagafffa.", -- 1
".f............f.", -- 2
".f............f.", -- 3
".a............a.", -- 4
".f............f.", -- 5
".f............f.", -- 6
".affaffafffaffa.", -- 7
"................", -- 8
-- Level 4
"cccccccccccccccc", -- 0
"haaaaaaaaaaaaaah", -- 1
".a..i...i.i...a.", -- 2
".a............a.", -- 3
".a............a.", -- 4
".a............a.", -- 5
".a..j..j...j..a.", -- 6
"kaaaaaaaaaaaaaak", -- 7
"llllllllllllllll", -- 8
-- Level 5
"................", -- 0
"cccccccccccccccc", -- 1
"haaaaaaaaaaaaaah", -- 2
".a............a.", -- 3
".a............a.", -- 4
".a............a.", -- 5
"kaaaaaaaaaaaaaak", -- 6
"llllllllllllllll", -- 7
"................", -- 8
-- Level 6
"................", -- 0
"................", -- 1
"cccccccccccccccc", -- 2
"haaaaaaaaaaaaaah", -- 3
".a............a.", -- 4
"kaaaaaaaaaaaaaak", -- 5
"llllllllllllllll", -- 6
"................", -- 7
"................", -- 8
-- Level 7
"................", -- 0
"................", -- 1
"................", -- 2
"cccccccccccccccc", -- 3
"aaaaaaaaaaaaaaaa", -- 4
"llllllllllllllll", -- 5
"................", -- 6
"................", -- 7
"................", -- 8
},
}, -- House16x9
{
OriginData =
{
ExportName = "SingleField",
Name = "Desert 17",
GalleryName = "Desert",
GalleryIndex = "17",
ID = "127",
CreatorName = "Aloe_vera",
},
Size =
{
x = 10,
y = 3,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = -1,
MaxX = 10,
MaxY = 2,
MaxZ = 7,
},
Connectors =
{
{
Type = -1,
RelX = 0,
RelY = 1,
RelZ = 3,
Direction = 4, -- X-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "0",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 24: 0", -- sandstone
"b: 60: 5", -- tilleddirt
"c: 60: 7", -- tilleddirt
"d: 60: 6", -- tilleddirt
"e: 8: 0", -- water
"f: 50: 5", -- torch
"g: 59: 7", -- wheatblock
"m: 19: 0", -- sponge
},
BlockData =
{
-- Level 0
"aaaaaaaaaa", -- 0
"aaaaaaaaaa", -- 1
"aaaaaaaaaa", -- 2
"aaaaaaaaaa", -- 3
"aaaaaaaaaa", -- 4
"aaaaaaaaaa", -- 5
"aaaaaaaaaa", -- 6
-- Level 1
"aaaaaaaaaa", -- 0
"abccdcccca", -- 1
"acccccccca", -- 2
"aeeeeeeeea", -- 3
"acccccccca", -- 4
"acdcdcccca", -- 5
"aaaaaaaaaa", -- 6
-- Level 2
"f........f", -- 0
".gggggggg.", -- 1
".gggggggg.", -- 2
"..........", -- 3
".gggggggg.", -- 4
".gggggggg.", -- 5
"f........f", -- 6
},
}, -- SingleField
{
OriginData =
{
ExportName = "RoofedWell",
Name = "Desert 43",
GalleryName = "Desert",
GalleryIndex = "43",
ID = "274",
CreatorName = "Aloe_vera",
},
Size =
{
x = 7,
y = 14,
z = 7,
},
Hitbox =
{
MinX = 0,
MinY = 0,
MinZ = 0,
MaxX = 6,
MaxY = 13,
MaxZ = 6,
},
Connectors =
{
{
Type = 2,
RelX = 6,
RelY = 8,
RelZ = 3,
Direction = 5, -- X+
},
{
Type = 2,
RelX = 3,
RelY = 8,
RelZ = 6,
Direction = 3, -- Z+
},
{
Type = 2,
RelX = 0,
RelY = 8,
RelZ = 3,
Direction = 4, -- X-
},
{
Type = 2,
RelX = 3,
RelY = 8,
RelZ = 0,
Direction = 2, -- Z-
},
},
Metadata =
{
["AddWeightIfSame"] = "0",
["AllowedRotations"] = "7",
["DefaultWeight"] = "100",
["DepthWeight"] = "",
["ExpandFloorStrategy"] = "RepeatBottomTillSolid",
["IsStarting"] = "1",
["MergeStrategy"] = "msSpongePrint",
["MoveToGround"] = "1",
["VerticalStrategy"] = "TerrainOrOceanTop|-8",
},
BlockDefinitions =
{
".: 0: 0", -- air
"a: 1: 0", -- stone
"b: 24: 0", -- sandstone
"c: 8: 0", -- water
"d: 12: 0", -- sand
"e: 4: 0", -- cobblestone
"f: 13: 0", -- gravel
"g:118: 3", -- cauldronblock
"h: 85: 0", -- fence
"i:128: 2", -- sandstonestairs
"j:128: 7", -- sandstonestairs
"k:128: 4", -- sandstonestairs
"l:128: 5", -- sandstonestairs
"m: 19: 0", -- sponge
"n:128: 6", -- sandstonestairs
"o:128: 3", -- sandstonestairs
},
BlockData =
{
-- Level 0
"aaaaaaa", -- 0
"aaaaaaa", -- 1
"aaaaaaa", -- 2
"aaaaaaa", -- 3
"aaaaaaa", -- 4
"aaaaaaa", -- 5
"aaaaaaa", -- 6
-- Level 1
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 2
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 3
"aaaaaaa", -- 0
"abbbbba", -- 1
"abcccba", -- 2
"abcccba", -- 3
"abcccba", -- 4
"abbbbba", -- 5
"aaaaaaa", -- 6
-- Level 4
"ddddddd", -- 0
"dbbbbbd", -- 1
"dbcccbd", -- 2
"dbcccbd", -- 3
"dbcccbd", -- 4
"dbbbbbd", -- 5
"ddddddd", -- 6
-- Level 5
"ddddddd", -- 0
"dbbbbbd", -- 1
"dbcccbd", -- 2
"dbcccbd", -- 3
"dbcccbd", -- 4
"dbbbbbd", -- 5
"ddddddd", -- 6
-- Level 6
"ddeeedd", -- 0
"dbbbbbd", -- 1
"ebcccbe", -- 2
"ebcccbe", -- 3
"ebcccbe", -- 4
"dbbbbbd", -- 5
"ddeeedd", -- 6
-- Level 7
"ddfffdd", -- 0
"dbbbbbd", -- 1
"fbcccbf", -- 2
"fbcccbf", -- 3
"fbcccbf", -- 4
"dbbbbbd", -- 5
"ddfffdd", -- 6
-- Level 8
".......", -- 0
".bbbbb.", -- 1
".b...b.", -- 2
".b.g.b.", -- 3
".b...b.", -- 4
".bbbbb.", -- 5
".......", -- 6
-- Level 9
".......", -- 0
".h...h.", -- 1
".......", -- 2
"...h...", -- 3
".......", -- 4
".h...h.", -- 5
".......", -- 6
-- Level 10
".......", -- 0
".h...h.", -- 1
".......", -- 2
"...h...", -- 3
".......", -- 4
".h...h.", -- 5
".......", -- 6
-- Level 11
"iiiiiii", -- 0
"jbjjjbj", -- 1
".k...l.", -- 2
".k.h.l.", -- 3
".k...l.", -- 4
"nbnnnbn", -- 5
"ooooooo", -- 6
-- Level 12
".......", -- 0
"iiiiiii", -- 1
"jb...bj", -- 2
".b.h.b.", -- 3
"nb...bn", -- 4
"ooooooo", -- 5
".......", -- 6
-- Level 13
".......", -- 0
".......", -- 1
"iiiiiii", -- 2
"bbbbbbb", -- 3
"ooooooo", -- 4
".......", -- 5
".......", -- 6
},
}, -- RoofedWell
}, -- Pieces
}
================================================
FILE: Server/Protocol/1.12.2/base.recipes.txt
================================================
# recipeId minecraftName
11 yellow_wool
12 yellow_terracotta
13 yellow_stained_glass_pane
14 yellow_stained_glass
15 yellow_dye_from_sunflower
16 yellow_dye_from_dandelion
17 yellow_concrete_powder
18 yellow_carpet
19 yellow_bed_from_white_bed
20 yellow_bed
21 yellow_banner
22 writable_book
23 wooden_sword
24 wooden_shovel
25 wooden_pressure_plate
26 wooden_pickaxe
27 wooden_hoe
28 oak_door
29 oak_button
30 wooden_axe
31 white_terracotta
32 white_stained_glass_pane
33 white_stained_glass
34 white_concrete_powder
35 white_carpet
36 white_bed
37 white_banner
38 wheat
39 tripwire_hook
40 trapped_chest
41 oak_trapdoor
42 torch
43 tnt_minecart
44 tnt
45 sugar
46 white_wool_from_string
47 stone_bricks
48 stone_sword
49 stone_stairs
50 stone_slab
51 stone_shovel
52 stone_pressure_plate
53 stone_pickaxe
54 stone_hoe
55 stone_button
56 stone_brick_stairs
57 stone_brick_slab
58 stone_axe
59 sticky_piston
60 stick
61 spruce_slab
62 spruce_stairs
63 spruce_planks
64 spruce_fence_gate
65 spruce_fence
66 spruce_door
67 spruce_boat
68 spectral_arrow
69 glistering_melon_slice
70 snow
71 snow_block
72 smooth_sandstone
73 smooth_red_sandstone
74 slime_ball
75 slime_block
76 oak_sign
77 shield
78 shears
79 sea_lantern
80 sandstone_stairs
81 sandstone_slab
82 sandstone
83 repeater
84 redstone_torch
85 redstone_lamp
86 redstone_block
87 redstone
88 red_wool
89 red_terracotta
90 red_stained_glass_pane
91 red_stained_glass
92 red_sandstone_stairs
93 red_sandstone_slab
94 red_sandstone
95 red_nether_bricks
96 red_dye_from_tulip
97 red_dye_from_rose_bush
98 red_dye_from_poppy
99 red_dye_from_beetroot
100 red_concrete_powder
101 red_carpet
102 red_bed_from_white_bed
103 red_bed
104 red_banner
105 rail
106 rabbit_stew_from_red_mushroom
107 rabbit_stew_from_brown_mushroom
108 quartz_stairs
109 quartz_slab
110 quartz_block
111 purpur_stairs
112 purpur_slab
113 purpur_pillar
114 purpur_block
115 purple_wool
116 purple_terracotta
117 purple_stained_glass_pane
118 purple_stained_glass
119 purpur_shulker_box
120 purple_dye
121 purple_concrete_powder
122 purple_carpet
123 purple_bed_from_white_bed
124 purple_bed
125 purple_banner
126 pumpkin_seeds
127 pumpkin_pie
128 prismarine_bricks
129 prismarine
130 polished_granite
131 polished_diorite
132 polished_andesite
133 piston
134 pink_wool
135 pink_terracotta
136 pink_stained_glass_pane
137 pink_stained_glass
138 pink_dye_from_red_white_dye
139 pink_tulip
140 peony
141 pink_concrete_powder
142 pink_carpet
143 pink_bed_from_white_bed
144 pink_bed
145 pink_banner
146 quartz_pillar
147 paper
148 painting
149 orange_wool
150 orange_terracotta
151 orange_stained_glass_pane
152 orange_stained_glass
153 orange_dye_from_red_yellow
154 orange_dye_from_orange_tulip
155 orange_concrete_powder
156 orange_carpet
157 orange_bed_from_white_bed
158 orange_bed
159 orange_banner
160 observer
161 oak_slab
162 oak_stairs
163 oak_planks
164 note_block
165 nether_wart_block
166 nether_brick_stairs
167 nether_brick_slab
168 nether_brick_fence
169 nether_bricks
170 mushroom_stew
171 mossy_stone_bricks
172 mossy_cobblestone_wall
173 mossy_cobblestone
174 minecart
175 melon_seeds
176 melon
177 map
178 magma_cream
179 magma_block
180 magenta_wool
181 magenta_terracotta
182 magenta_stained_glass_pane
183 magenta_stained_glass
184 magenta_dye_from_purple_and_pink
185 magenta_dye_from_lilac
186 magenta_dye_from_blue_red_pink
187 magenta_dye_from_blue_red_white_dye
188 magenta_dye_from_allium
189 magenta_concrete_powder
190 magenta_carpet
191 magenta_bed_from_white_bed
192 magenta_bed
193 magenta_banner
194 jack_o_lantern
195 lime_wool
196 lime_terracotta
197 lime_stained_glass_pane
198 lime_stained_glass
199 lime_dye
200 lime_concrete_powder
201 lime_carpet
202 lime_bed_from_white_bed
203 lime_bed
204 lime_banner
205 light_weighted_pressure_plate
206 light_gray_wool
207 light_gray_terracotta
208 light_gray_stained_glass_pane
209 light_gray_stained_glass
210 light_gray_dye_from_white_tulip
211 light_gray_dye_from_oxeye_daisy
212 light_gray_dye_from_gray_white_dye
213 light_gray_dye_from_black_white_dye
214 light_gray_dye_from_azure_bluet
215 light_gray_concrete_powder
216 light_gray_carpet
217 light_gray_bed_from_white_bed
218 light_gray_bed
219 light_gray_banner
220 light_blue_wool
221 light_blue_terracotta
222 light_blue_stained_glass_pane
223 light_blue_stained_glass
224 light_blue_dye_from_blue_white_dye
225 light_blue_dye_from_blue_orchid
226 light_blue_concrete_powder
227 light_blue_carpet
228 light_blue_bed_from_white_bed
229 light_blue_bed
230 light_blue_banner
231 lever
232 leather_leggings
233 leather_helmet
234 leather_chestplate
235 leather_boots
236 leather
237 lead
238 lapis_lazuli
239 lapis_block
240 ladder
241 jungle_slab
242 jungle_stairs
243 jungle_planks
244 jungle_fence_gate
245 jungle_fence
246 jungle_door
247 jungle_boat
248 jukebox
249 item_frame
250 iron_trapdoor
251 iron_sword
252 iron_shovel
253 iron_pickaxe
254 iron_nugget
255 iron_leggings
256 iron_ingot_from_iron_block
257 iron_ingot_from_nuggets
258 iron_hoe
259 iron_helmet
260 iron_door
261 iron_chestplate
262 iron_boots
263 iron_block
264 iron_bars
265 iron_axe
266 hopper_minecart
267 hopper
268 heavy_weighted_pressure_plate
269 hay_block
270 green_wool
271 green_terracotta
272 green_stained_glass_pane
273 green_stained_glass
274 green_concrete_powder
275 green_carpet
276 green_bed_from_white_bed
277 green_bed
278 green_banner
279 gray_wool
280 gray_terracotta
281 gray_stained_glass_pane
282 gray_stained_glass
283 gray_dye
284 gray_concrete_powder
285 gray_carpet
286 gray_bed_from_white_bed
287 gray_bed
288 gray_banner
289 granite
290 golden_sword
291 golden_shovel
292 powered_rail
293 golden_pickaxe
294 golden_leggings
295 golden_hoe
296 golden_helmet
297 golden_chestplate
298 golden_carrot
299 golden_boots
300 golden_axe
301 golden_apple
302 gold_nugget
303 gold_ingot_from_gold_block
304 gold_ingot
305 gold_block
306 glowstone
307 glass_pane
308 glass_bottle
309 furnace_minecart
310 furnace
311 flower_pot
312 flint_and_steel
313 fishing_rod
314 fire_charge
315 fermented_spider_eye
316 oak_fence_gate
317 oak_fence
318 ender_eye
319 ender_chest
320 end_rod
321 end_crystal
322 end_stone_bricks
323 enchanting_table
324 emerald_block
325 emerald
326 dropper
327 dispenser
328 diorite
329 diamond_sword
330 diamond_shovel
331 diamond_pickaxe
332 diamond_leggings
333 diamond_hoe
334 diamond_helmet
335 diamond_chestplate
336 diamond_boots
337 diamond_block
338 diamond_axe
339 diamond
340 detector_rail
341 daylight_detector
342 dark_prismarine
343 dark_oak_slab
344 dark_oak_stairs
345 dark_oak_planks
346 dark_oak_fence_gate
347 dark_oak_fence
348 dark_oak_door
349 dark_oak_boat
350 cyan_wool
351 cyan_terracotta
352 cyan_stained_glass_pane
353 cyan_stained_glass
354 cyan_dye
355 cyan_concrete_powder
356 cyan_carpet
357 cyan_bed_from_white_bed
358 cyan_bed
359 cyan_banner
360 crafting_table
361 cookie
362 compass
363 comparator
364 cobblestone_wall
365 cobblestone_slab
366 coarse_dirt
367 coal_block
368 coal
369 clock
370 clay
371 chiseled_stone_bricks
372 chiseled_sandstone
373 chiseled_red_sandstone
374 chiseled_quartz_block
375 chest_minecart
376 chest
377 cauldron
378 carrot_on_a_stick
379 cake
380 bucket
381 brown_wool
382 brown_terracotta
383 brown_stained_glass_pane
384 brown_stained_glass
385 brown_concrete_powder
386 brown_carpet
387 brown_bed_from_white_bed
388 brown_bed
389 brown_banner
390 brick_stairs
391 brick_slab
392 bricks
393 brewing_stand
394 bread
395 bowl
396 bow
397 bookshelf
398 book
399 bone_meal
400 bone_meal_from_bone_block
401 bone_block
402 oak_boat
403 blue_wool
404 blue_terracotta
405 blue_stained_glass_pane
406 blue_stained_glass
407 blue_concrete_powder
408 blue_carpet
409 blue_bed_from_white_bed
410 blue_bed
411 blue_banner
412 blaze_powder
413 black_wool
414 black_terracotta
415 black_stained_glass_pane
416 black_stained_glass
417 black_concrete_powder
418 black_carpet
419 black_bed_from_white_bed
420 black_bed
421 black_banner
422 birch_slab
423 birch_stairs
424 birch_planks
425 birch_fence_gate
426 birch_fence
427 birch_door
428 birch_boat
429 beetroot_soup
430 beacon
431 arrow
432 armor_stand
433 anvil
434 andesite
435 activator_rail
436 acacia_slab
437 acacia_stairs
438 acacia_planks
439 acacia_fence_gate
440 acacia_fence
441 acacia_door
442 acacia_boat
================================================
FILE: Server/Protocol/1.13/base.btp.txt
================================================
BlockTypePalette
FileVersion 1
CommonPrefix minecraft:
0 air
1 stone
2 granite
3 polished_granite
4 diorite
5 polished_diorite
6 andesite
7 polished_andesite
8 grass_block snowy true
9 grass_block snowy false
10 dirt
11 coarse_dirt
12 podzol snowy true
13 podzol snowy false
14 cobblestone
15 oak_planks
16 spruce_planks
17 birch_planks
18 jungle_planks
19 acacia_planks
20 dark_oak_planks
21 oak_sapling stage 0
22 oak_sapling stage 1
23 spruce_sapling stage 0
24 spruce_sapling stage 1
25 birch_sapling stage 0
26 birch_sapling stage 1
27 jungle_sapling stage 0
28 jungle_sapling stage 1
29 acacia_sapling stage 0
30 acacia_sapling stage 1
31 dark_oak_sapling stage 0
32 dark_oak_sapling stage 1
33 bedrock
34 water level 0
35 water level 1
36 water level 2
37 water level 3
38 water level 4
39 water level 5
40 water level 6
41 water level 7
42 water level 8
43 water level 9
44 water level 10
45 water level 11
46 water level 12
47 water level 13
48 water level 14
49 water level 15
50 lava level 0
51 lava level 1
52 lava level 2
53 lava level 3
54 lava level 4
55 lava level 5
56 lava level 6
57 lava level 7
58 lava level 8
59 lava level 9
60 lava level 10
61 lava level 11
62 lava level 12
63 lava level 13
64 lava level 14
65 lava level 15
66 sand
67 red_sand
68 gravel
69 gold_ore
70 iron_ore
71 coal_ore
72 oak_log axis x
73 oak_log axis y
74 oak_log axis z
75 spruce_log axis x
76 spruce_log axis y
77 spruce_log axis z
78 birch_log axis x
79 birch_log axis y
80 birch_log axis z
81 jungle_log axis x
82 jungle_log axis y
83 jungle_log axis z
84 acacia_log axis x
85 acacia_log axis y
86 acacia_log axis z
87 dark_oak_log axis x
88 dark_oak_log axis y
89 dark_oak_log axis z
90 stripped_spruce_log axis x
91 stripped_spruce_log axis y
92 stripped_spruce_log axis z
93 stripped_birch_log axis x
94 stripped_birch_log axis y
95 stripped_birch_log axis z
96 stripped_jungle_log axis x
97 stripped_jungle_log axis y
98 stripped_jungle_log axis z
99 stripped_acacia_log axis x
100 stripped_acacia_log axis y
101 stripped_acacia_log axis z
102 stripped_dark_oak_log axis x
103 stripped_dark_oak_log axis y
104 stripped_dark_oak_log axis z
105 stripped_oak_log axis x
106 stripped_oak_log axis y
107 stripped_oak_log axis z
108 oak_wood axis x
109 oak_wood axis y
110 oak_wood axis z
111 spruce_wood axis x
112 spruce_wood axis y
113 spruce_wood axis z
114 birch_wood axis x
115 birch_wood axis y
116 birch_wood axis z
117 jungle_wood axis x
118 jungle_wood axis y
119 jungle_wood axis z
120 acacia_wood axis x
121 acacia_wood axis y
122 acacia_wood axis z
123 dark_oak_wood axis x
124 dark_oak_wood axis y
125 dark_oak_wood axis z
126 stripped_oak_wood axis x
127 stripped_oak_wood axis y
128 stripped_oak_wood axis z
129 stripped_spruce_wood axis x
130 stripped_spruce_wood axis y
131 stripped_spruce_wood axis z
132 stripped_birch_wood axis x
133 stripped_birch_wood axis y
134 stripped_birch_wood axis z
135 stripped_jungle_wood axis x
136 stripped_jungle_wood axis y
137 stripped_jungle_wood axis z
138 stripped_acacia_wood axis x
139 stripped_acacia_wood axis y
140 stripped_acacia_wood axis z
141 stripped_dark_oak_wood axis x
142 stripped_dark_oak_wood axis y
143 stripped_dark_oak_wood axis z
144 oak_leaves persistent true distance 1
145 oak_leaves persistent false distance 1
146 oak_leaves persistent true distance 2
147 oak_leaves persistent false distance 2
148 oak_leaves persistent true distance 3
149 oak_leaves persistent false distance 3
150 oak_leaves persistent true distance 4
151 oak_leaves persistent false distance 4
152 oak_leaves persistent true distance 5
153 oak_leaves persistent false distance 5
154 oak_leaves persistent true distance 6
155 oak_leaves persistent false distance 6
156 oak_leaves persistent true distance 7
157 oak_leaves persistent false distance 7
158 spruce_leaves persistent true distance 1
159 spruce_leaves persistent false distance 1
160 spruce_leaves persistent true distance 2
161 spruce_leaves persistent false distance 2
162 spruce_leaves persistent true distance 3
163 spruce_leaves persistent false distance 3
164 spruce_leaves persistent true distance 4
165 spruce_leaves persistent false distance 4
166 spruce_leaves persistent true distance 5
167 spruce_leaves persistent false distance 5
168 spruce_leaves persistent true distance 6
169 spruce_leaves persistent false distance 6
170 spruce_leaves persistent true distance 7
171 spruce_leaves persistent false distance 7
172 birch_leaves persistent true distance 1
173 birch_leaves persistent false distance 1
174 birch_leaves persistent true distance 2
175 birch_leaves persistent false distance 2
176 birch_leaves persistent true distance 3
177 birch_leaves persistent false distance 3
178 birch_leaves persistent true distance 4
179 birch_leaves persistent false distance 4
180 birch_leaves persistent true distance 5
181 birch_leaves persistent false distance 5
182 birch_leaves persistent true distance 6
183 birch_leaves persistent false distance 6
184 birch_leaves persistent true distance 7
185 birch_leaves persistent false distance 7
186 jungle_leaves persistent true distance 1
187 jungle_leaves persistent false distance 1
188 jungle_leaves persistent true distance 2
189 jungle_leaves persistent false distance 2
190 jungle_leaves persistent true distance 3
191 jungle_leaves persistent false distance 3
192 jungle_leaves persistent true distance 4
193 jungle_leaves persistent false distance 4
194 jungle_leaves persistent true distance 5
195 jungle_leaves persistent false distance 5
196 jungle_leaves persistent true distance 6
197 jungle_leaves persistent false distance 6
198 jungle_leaves persistent true distance 7
199 jungle_leaves persistent false distance 7
200 acacia_leaves persistent true distance 1
201 acacia_leaves persistent false distance 1
202 acacia_leaves persistent true distance 2
203 acacia_leaves persistent false distance 2
204 acacia_leaves persistent true distance 3
205 acacia_leaves persistent false distance 3
206 acacia_leaves persistent true distance 4
207 acacia_leaves persistent false distance 4
208 acacia_leaves persistent true distance 5
209 acacia_leaves persistent false distance 5
210 acacia_leaves persistent true distance 6
211 acacia_leaves persistent false distance 6
212 acacia_leaves persistent true distance 7
213 acacia_leaves persistent false distance 7
214 dark_oak_leaves persistent true distance 1
215 dark_oak_leaves persistent false distance 1
216 dark_oak_leaves persistent true distance 2
217 dark_oak_leaves persistent false distance 2
218 dark_oak_leaves persistent true distance 3
219 dark_oak_leaves persistent false distance 3
220 dark_oak_leaves persistent true distance 4
221 dark_oak_leaves persistent false distance 4
222 dark_oak_leaves persistent true distance 5
223 dark_oak_leaves persistent false distance 5
224 dark_oak_leaves persistent true distance 6
225 dark_oak_leaves persistent false distance 6
226 dark_oak_leaves persistent true distance 7
227 dark_oak_leaves persistent false distance 7
228 sponge
229 wet_sponge
230 glass
231 lapis_ore
232 lapis_block
233 dispenser facing north triggered true
234 dispenser facing north triggered false
235 dispenser facing east triggered true
236 dispenser facing east triggered false
237 dispenser facing south triggered true
238 dispenser facing south triggered false
239 dispenser facing west triggered true
240 dispenser facing west triggered false
241 dispenser facing up triggered true
242 dispenser facing up triggered false
243 dispenser facing down triggered true
244 dispenser facing down triggered false
245 sandstone
246 chiseled_sandstone
247 cut_sandstone
248 note_block instrument harp powered true note 0
249 note_block instrument harp powered false note 0
250 note_block instrument harp powered true note 1
251 note_block instrument harp powered false note 1
252 note_block instrument harp powered true note 2
253 note_block instrument harp powered false note 2
254 note_block instrument harp powered true note 3
255 note_block instrument harp powered false note 3
256 note_block instrument harp powered true note 4
257 note_block instrument harp powered false note 4
258 note_block instrument harp powered true note 5
259 note_block instrument harp powered false note 5
260 note_block instrument harp powered true note 6
261 note_block instrument harp powered false note 6
262 note_block instrument harp powered true note 7
263 note_block instrument harp powered false note 7
264 note_block instrument harp powered true note 8
265 note_block instrument harp powered false note 8
266 note_block instrument harp powered true note 9
267 note_block instrument harp powered false note 9
268 note_block instrument harp powered true note 10
269 note_block instrument harp powered false note 10
270 note_block instrument harp powered true note 11
271 note_block instrument harp powered false note 11
272 note_block instrument harp powered true note 12
273 note_block instrument harp powered false note 12
274 note_block instrument harp powered true note 13
275 note_block instrument harp powered false note 13
276 note_block instrument harp powered true note 14
277 note_block instrument harp powered false note 14
278 note_block instrument harp powered true note 15
279 note_block instrument harp powered false note 15
280 note_block instrument harp powered true note 16
281 note_block instrument harp powered false note 16
282 note_block instrument harp powered true note 17
283 note_block instrument harp powered false note 17
284 note_block instrument harp powered true note 18
285 note_block instrument harp powered false note 18
286 note_block instrument harp powered true note 19
287 note_block instrument harp powered false note 19
288 note_block instrument harp powered true note 20
289 note_block instrument harp powered false note 20
290 note_block instrument harp powered true note 21
291 note_block instrument harp powered false note 21
292 note_block instrument harp powered true note 22
293 note_block instrument harp powered false note 22
294 note_block instrument harp powered true note 23
295 note_block instrument harp powered false note 23
296 note_block instrument harp powered true note 24
297 note_block instrument harp powered false note 24
298 note_block instrument basedrum powered true note 0
299 note_block instrument basedrum powered false note 0
300 note_block instrument basedrum powered true note 1
301 note_block instrument basedrum powered false note 1
302 note_block instrument basedrum powered true note 2
303 note_block instrument basedrum powered false note 2
304 note_block instrument basedrum powered true note 3
305 note_block instrument basedrum powered false note 3
306 note_block instrument basedrum powered true note 4
307 note_block instrument basedrum powered false note 4
308 note_block instrument basedrum powered true note 5
309 note_block instrument basedrum powered false note 5
310 note_block instrument basedrum powered true note 6
311 note_block instrument basedrum powered false note 6
312 note_block instrument basedrum powered true note 7
313 note_block instrument basedrum powered false note 7
314 note_block instrument basedrum powered true note 8
315 note_block instrument basedrum powered false note 8
316 note_block instrument basedrum powered true note 9
317 note_block instrument basedrum powered false note 9
318 note_block instrument basedrum powered true note 10
319 note_block instrument basedrum powered false note 10
320 note_block instrument basedrum powered true note 11
321 note_block instrument basedrum powered false note 11
322 note_block instrument basedrum powered true note 12
323 note_block instrument basedrum powered false note 12
324 note_block instrument basedrum powered true note 13
325 note_block instrument basedrum powered false note 13
326 note_block instrument basedrum powered true note 14
327 note_block instrument basedrum powered false note 14
328 note_block instrument basedrum powered true note 15
329 note_block instrument basedrum powered false note 15
330 note_block instrument basedrum powered true note 16
331 note_block instrument basedrum powered false note 16
332 note_block instrument basedrum powered true note 17
333 note_block instrument basedrum powered false note 17
334 note_block instrument basedrum powered true note 18
335 note_block instrument basedrum powered false note 18
336 note_block instrument basedrum powered true note 19
337 note_block instrument basedrum powered false note 19
338 note_block instrument basedrum powered true note 20
339 note_block instrument basedrum powered false note 20
340 note_block instrument basedrum powered true note 21
341 note_block instrument basedrum powered false note 21
342 note_block instrument basedrum powered true note 22
343 note_block instrument basedrum powered false note 22
344 note_block instrument basedrum powered true note 23
345 note_block instrument basedrum powered false note 23
346 note_block instrument basedrum powered true note 24
347 note_block instrument basedrum powered false note 24
348 note_block instrument snare powered true note 0
349 note_block instrument snare powered false note 0
350 note_block instrument snare powered true note 1
351 note_block instrument snare powered false note 1
352 note_block instrument snare powered true note 2
353 note_block instrument snare powered false note 2
354 note_block instrument snare powered true note 3
355 note_block instrument snare powered false note 3
356 note_block instrument snare powered true note 4
357 note_block instrument snare powered false note 4
358 note_block instrument snare powered true note 5
359 note_block instrument snare powered false note 5
360 note_block instrument snare powered true note 6
361 note_block instrument snare powered false note 6
362 note_block instrument snare powered true note 7
363 note_block instrument snare powered false note 7
364 note_block instrument snare powered true note 8
365 note_block instrument snare powered false note 8
366 note_block instrument snare powered true note 9
367 note_block instrument snare powered false note 9
368 note_block instrument snare powered true note 10
369 note_block instrument snare powered false note 10
370 note_block instrument snare powered true note 11
371 note_block instrument snare powered false note 11
372 note_block instrument snare powered true note 12
373 note_block instrument snare powered false note 12
374 note_block instrument snare powered true note 13
375 note_block instrument snare powered false note 13
376 note_block instrument snare powered true note 14
377 note_block instrument snare powered false note 14
378 note_block instrument snare powered true note 15
379 note_block instrument snare powered false note 15
380 note_block instrument snare powered true note 16
381 note_block instrument snare powered false note 16
382 note_block instrument snare powered true note 17
383 note_block instrument snare powered false note 17
384 note_block instrument snare powered true note 18
385 note_block instrument snare powered false note 18
386 note_block instrument snare powered true note 19
387 note_block instrument snare powered false note 19
388 note_block instrument snare powered true note 20
389 note_block instrument snare powered false note 20
390 note_block instrument snare powered true note 21
391 note_block instrument snare powered false note 21
392 note_block instrument snare powered true note 22
393 note_block instrument snare powered false note 22
394 note_block instrument snare powered true note 23
395 note_block instrument snare powered false note 23
396 note_block instrument snare powered true note 24
397 note_block instrument snare powered false note 24
398 note_block instrument hat powered true note 0
399 note_block instrument hat powered false note 0
400 note_block instrument hat powered true note 1
401 note_block instrument hat powered false note 1
402 note_block instrument hat powered true note 2
403 note_block instrument hat powered false note 2
404 note_block instrument hat powered true note 3
405 note_block instrument hat powered false note 3
406 note_block instrument hat powered true note 4
407 note_block instrument hat powered false note 4
408 note_block instrument hat powered true note 5
409 note_block instrument hat powered false note 5
410 note_block instrument hat powered true note 6
411 note_block instrument hat powered false note 6
412 note_block instrument hat powered true note 7
413 note_block instrument hat powered false note 7
414 note_block instrument hat powered true note 8
415 note_block instrument hat powered false note 8
416 note_block instrument hat powered true note 9
417 note_block instrument hat powered false note 9
418 note_block instrument hat powered true note 10
419 note_block instrument hat powered false note 10
420 note_block instrument hat powered true note 11
421 note_block instrument hat powered false note 11
422 note_block instrument hat powered true note 12
423 note_block instrument hat powered false note 12
424 note_block instrument hat powered true note 13
425 note_block instrument hat powered false note 13
426 note_block instrument hat powered true note 14
427 note_block instrument hat powered false note 14
428 note_block instrument hat powered true note 15
429 note_block instrument hat powered false note 15
430 note_block instrument hat powered true note 16
431 note_block instrument hat powered false note 16
432 note_block instrument hat powered true note 17
433 note_block instrument hat powered false note 17
434 note_block instrument hat powered true note 18
435 note_block instrument hat powered false note 18
436 note_block instrument hat powered true note 19
437 note_block instrument hat powered false note 19
438 note_block instrument hat powered true note 20
439 note_block instrument hat powered false note 20
440 note_block instrument hat powered true note 21
441 note_block instrument hat powered false note 21
442 note_block instrument hat powered true note 22
443 note_block instrument hat powered false note 22
444 note_block instrument hat powered true note 23
445 note_block instrument hat powered false note 23
446 note_block instrument hat powered true note 24
447 note_block instrument hat powered false note 24
448 note_block instrument bass powered true note 0
449 note_block instrument bass powered false note 0
450 note_block instrument bass powered true note 1
451 note_block instrument bass powered false note 1
452 note_block instrument bass powered true note 2
453 note_block instrument bass powered false note 2
454 note_block instrument bass powered true note 3
455 note_block instrument bass powered false note 3
456 note_block instrument bass powered true note 4
457 note_block instrument bass powered false note 4
458 note_block instrument bass powered true note 5
459 note_block instrument bass powered false note 5
460 note_block instrument bass powered true note 6
461 note_block instrument bass powered false note 6
462 note_block instrument bass powered true note 7
463 note_block instrument bass powered false note 7
464 note_block instrument bass powered true note 8
465 note_block instrument bass powered false note 8
466 note_block instrument bass powered true note 9
467 note_block instrument bass powered false note 9
468 note_block instrument bass powered true note 10
469 note_block instrument bass powered false note 10
470 note_block instrument bass powered true note 11
471 note_block instrument bass powered false note 11
472 note_block instrument bass powered true note 12
473 note_block instrument bass powered false note 12
474 note_block instrument bass powered true note 13
475 note_block instrument bass powered false note 13
476 note_block instrument bass powered true note 14
477 note_block instrument bass powered false note 14
478 note_block instrument bass powered true note 15
479 note_block instrument bass powered false note 15
480 note_block instrument bass powered true note 16
481 note_block instrument bass powered false note 16
482 note_block instrument bass powered true note 17
483 note_block instrument bass powered false note 17
484 note_block instrument bass powered true note 18
485 note_block instrument bass powered false note 18
486 note_block instrument bass powered true note 19
487 note_block instrument bass powered false note 19
488 note_block instrument bass powered true note 20
489 note_block instrument bass powered false note 20
490 note_block instrument bass powered true note 21
491 note_block instrument bass powered false note 21
492 note_block instrument bass powered true note 22
493 note_block instrument bass powered false note 22
494 note_block instrument bass powered true note 23
495 note_block instrument bass powered false note 23
496 note_block instrument bass powered true note 24
497 note_block instrument bass powered false note 24
498 note_block instrument flute powered true note 0
499 note_block instrument flute powered false note 0
500 note_block instrument flute powered true note 1
501 note_block instrument flute powered false note 1
502 note_block instrument flute powered true note 2
503 note_block instrument flute powered false note 2
504 note_block instrument flute powered true note 3
505 note_block instrument flute powered false note 3
506 note_block instrument flute powered true note 4
507 note_block instrument flute powered false note 4
508 note_block instrument flute powered true note 5
509 note_block instrument flute powered false note 5
510 note_block instrument flute powered true note 6
511 note_block instrument flute powered false note 6
512 note_block instrument flute powered true note 7
513 note_block instrument flute powered false note 7
514 note_block instrument flute powered true note 8
515 note_block instrument flute powered false note 8
516 note_block instrument flute powered true note 9
517 note_block instrument flute powered false note 9
518 note_block instrument flute powered true note 10
519 note_block instrument flute powered false note 10
520 note_block instrument flute powered true note 11
521 note_block instrument flute powered false note 11
522 note_block instrument flute powered true note 12
523 note_block instrument flute powered false note 12
524 note_block instrument flute powered true note 13
525 note_block instrument flute powered false note 13
526 note_block instrument flute powered true note 14
527 note_block instrument flute powered false note 14
528 note_block instrument flute powered true note 15
529 note_block instrument flute powered false note 15
530 note_block instrument flute powered true note 16
531 note_block instrument flute powered false note 16
532 note_block instrument flute powered true note 17
533 note_block instrument flute powered false note 17
534 note_block instrument flute powered true note 18
535 note_block instrument flute powered false note 18
536 note_block instrument flute powered true note 19
537 note_block instrument flute powered false note 19
538 note_block instrument flute powered true note 20
539 note_block instrument flute powered false note 20
540 note_block instrument flute powered true note 21
541 note_block instrument flute powered false note 21
542 note_block instrument flute powered true note 22
543 note_block instrument flute powered false note 22
544 note_block instrument flute powered true note 23
545 note_block instrument flute powered false note 23
546 note_block instrument flute powered true note 24
547 note_block instrument flute powered false note 24
548 note_block instrument bell powered true note 0
549 note_block instrument bell powered false note 0
550 note_block instrument bell powered true note 1
551 note_block instrument bell powered false note 1
552 note_block instrument bell powered true note 2
553 note_block instrument bell powered false note 2
554 note_block instrument bell powered true note 3
555 note_block instrument bell powered false note 3
556 note_block instrument bell powered true note 4
557 note_block instrument bell powered false note 4
558 note_block instrument bell powered true note 5
559 note_block instrument bell powered false note 5
560 note_block instrument bell powered true note 6
561 note_block instrument bell powered false note 6
562 note_block instrument bell powered true note 7
563 note_block instrument bell powered false note 7
564 note_block instrument bell powered true note 8
565 note_block instrument bell powered false note 8
566 note_block instrument bell powered true note 9
567 note_block instrument bell powered false note 9
568 note_block instrument bell powered true note 10
569 note_block instrument bell powered false note 10
570 note_block instrument bell powered true note 11
571 note_block instrument bell powered false note 11
572 note_block instrument bell powered true note 12
573 note_block instrument bell powered false note 12
574 note_block instrument bell powered true note 13
575 note_block instrument bell powered false note 13
576 note_block instrument bell powered true note 14
577 note_block instrument bell powered false note 14
578 note_block instrument bell powered true note 15
579 note_block instrument bell powered false note 15
580 note_block instrument bell powered true note 16
581 note_block instrument bell powered false note 16
582 note_block instrument bell powered true note 17
583 note_block instrument bell powered false note 17
584 note_block instrument bell powered true note 18
585 note_block instrument bell powered false note 18
586 note_block instrument bell powered true note 19
587 note_block instrument bell powered false note 19
588 note_block instrument bell powered true note 20
589 note_block instrument bell powered false note 20
590 note_block instrument bell powered true note 21
591 note_block instrument bell powered false note 21
592 note_block instrument bell powered true note 22
593 note_block instrument bell powered false note 22
594 note_block instrument bell powered true note 23
595 note_block instrument bell powered false note 23
596 note_block instrument bell powered true note 24
597 note_block instrument bell powered false note 24
598 note_block instrument guitar powered true note 0
599 note_block instrument guitar powered false note 0
600 note_block instrument guitar powered true note 1
601 note_block instrument guitar powered false note 1
602 note_block instrument guitar powered true note 2
603 note_block instrument guitar powered false note 2
604 note_block instrument guitar powered true note 3
605 note_block instrument guitar powered false note 3
606 note_block instrument guitar powered true note 4
607 note_block instrument guitar powered false note 4
608 note_block instrument guitar powered true note 5
609 note_block instrument guitar powered false note 5
610 note_block instrument guitar powered true note 6
611 note_block instrument guitar powered false note 6
612 note_block instrument guitar powered true note 7
613 note_block instrument guitar powered false note 7
614 note_block instrument guitar powered true note 8
615 note_block instrument guitar powered false note 8
616 note_block instrument guitar powered true note 9
617 note_block instrument guitar powered false note 9
618 note_block instrument guitar powered true note 10
619 note_block instrument guitar powered false note 10
620 note_block instrument guitar powered true note 11
621 note_block instrument guitar powered false note 11
622 note_block instrument guitar powered true note 12
623 note_block instrument guitar powered false note 12
624 note_block instrument guitar powered true note 13
625 note_block instrument guitar powered false note 13
626 note_block instrument guitar powered true note 14
627 note_block instrument guitar powered false note 14
628 note_block instrument guitar powered true note 15
629 note_block instrument guitar powered false note 15
630 note_block instrument guitar powered true note 16
631 note_block instrument guitar powered false note 16
632 note_block instrument guitar powered true note 17
633 note_block instrument guitar powered false note 17
634 note_block instrument guitar powered true note 18
635 note_block instrument guitar powered false note 18
636 note_block instrument guitar powered true note 19
637 note_block instrument guitar powered false note 19
638 note_block instrument guitar powered true note 20
639 note_block instrument guitar powered false note 20
640 note_block instrument guitar powered true note 21
641 note_block instrument guitar powered false note 21
642 note_block instrument guitar powered true note 22
643 note_block instrument guitar powered false note 22
644 note_block instrument guitar powered true note 23
645 note_block instrument guitar powered false note 23
646 note_block instrument guitar powered true note 24
647 note_block instrument guitar powered false note 24
648 note_block instrument chime powered true note 0
649 note_block instrument chime powered false note 0
650 note_block instrument chime powered true note 1
651 note_block instrument chime powered false note 1
652 note_block instrument chime powered true note 2
653 note_block instrument chime powered false note 2
654 note_block instrument chime powered true note 3
655 note_block instrument chime powered false note 3
656 note_block instrument chime powered true note 4
657 note_block instrument chime powered false note 4
658 note_block instrument chime powered true note 5
659 note_block instrument chime powered false note 5
660 note_block instrument chime powered true note 6
661 note_block instrument chime powered false note 6
662 note_block instrument chime powered true note 7
663 note_block instrument chime powered false note 7
664 note_block instrument chime powered true note 8
665 note_block instrument chime powered false note 8
666 note_block instrument chime powered true note 9
667 note_block instrument chime powered false note 9
668 note_block instrument chime powered true note 10
669 note_block instrument chime powered false note 10
670 note_block instrument chime powered true note 11
671 note_block instrument chime powered false note 11
672 note_block instrument chime powered true note 12
673 note_block instrument chime powered false note 12
674 note_block instrument chime powered true note 13
675 note_block instrument chime powered false note 13
676 note_block instrument chime powered true note 14
677 note_block instrument chime powered false note 14
678 note_block instrument chime powered true note 15
679 note_block instrument chime powered false note 15
680 note_block instrument chime powered true note 16
681 note_block instrument chime powered false note 16
682 note_block instrument chime powered true note 17
683 note_block instrument chime powered false note 17
684 note_block instrument chime powered true note 18
685 note_block instrument chime powered false note 18
686 note_block instrument chime powered true note 19
687 note_block instrument chime powered false note 19
688 note_block instrument chime powered true note 20
689 note_block instrument chime powered false note 20
690 note_block instrument chime powered true note 21
691 note_block instrument chime powered false note 21
692 note_block instrument chime powered true note 22
693 note_block instrument chime powered false note 22
694 note_block instrument chime powered true note 23
695 note_block instrument chime powered false note 23
696 note_block instrument chime powered true note 24
697 note_block instrument chime powered false note 24
698 note_block instrument xylophone powered true note 0
699 note_block instrument xylophone powered false note 0
700 note_block instrument xylophone powered true note 1
701 note_block instrument xylophone powered false note 1
702 note_block instrument xylophone powered true note 2
703 note_block instrument xylophone powered false note 2
704 note_block instrument xylophone powered true note 3
705 note_block instrument xylophone powered false note 3
706 note_block instrument xylophone powered true note 4
707 note_block instrument xylophone powered false note 4
708 note_block instrument xylophone powered true note 5
709 note_block instrument xylophone powered false note 5
710 note_block instrument xylophone powered true note 6
711 note_block instrument xylophone powered false note 6
712 note_block instrument xylophone powered true note 7
713 note_block instrument xylophone powered false note 7
714 note_block instrument xylophone powered true note 8
715 note_block instrument xylophone powered false note 8
716 note_block instrument xylophone powered true note 9
717 note_block instrument xylophone powered false note 9
718 note_block instrument xylophone powered true note 10
719 note_block instrument xylophone powered false note 10
720 note_block instrument xylophone powered true note 11
721 note_block instrument xylophone powered false note 11
722 note_block instrument xylophone powered true note 12
723 note_block instrument xylophone powered false note 12
724 note_block instrument xylophone powered true note 13
725 note_block instrument xylophone powered false note 13
726 note_block instrument xylophone powered true note 14
727 note_block instrument xylophone powered false note 14
728 note_block instrument xylophone powered true note 15
729 note_block instrument xylophone powered false note 15
730 note_block instrument xylophone powered true note 16
731 note_block instrument xylophone powered false note 16
732 note_block instrument xylophone powered true note 17
733 note_block instrument xylophone powered false note 17
734 note_block instrument xylophone powered true note 18
735 note_block instrument xylophone powered false note 18
736 note_block instrument xylophone powered true note 19
737 note_block instrument xylophone powered false note 19
738 note_block instrument xylophone powered true note 20
739 note_block instrument xylophone powered false note 20
740 note_block instrument xylophone powered true note 21
741 note_block instrument xylophone powered false note 21
742 note_block instrument xylophone powered true note 22
743 note_block instrument xylophone powered false note 22
744 note_block instrument xylophone powered true note 23
745 note_block instrument xylophone powered false note 23
746 note_block instrument xylophone powered true note 24
747 note_block instrument xylophone powered false note 24
748 white_bed facing north occupied true part head
749 white_bed facing north occupied true part foot
750 white_bed facing north occupied false part head
751 white_bed facing north occupied false part foot
752 white_bed facing south occupied true part head
753 white_bed facing south occupied true part foot
754 white_bed facing south occupied false part head
755 white_bed facing south occupied false part foot
756 white_bed facing west occupied true part head
757 white_bed facing west occupied true part foot
758 white_bed facing west occupied false part head
759 white_bed facing west occupied false part foot
760 white_bed facing east occupied true part head
761 white_bed facing east occupied true part foot
762 white_bed facing east occupied false part head
763 white_bed facing east occupied false part foot
764 orange_bed facing north occupied true part head
765 orange_bed facing north occupied true part foot
766 orange_bed facing north occupied false part head
767 orange_bed facing north occupied false part foot
768 orange_bed facing south occupied true part head
769 orange_bed facing south occupied true part foot
770 orange_bed facing south occupied false part head
771 orange_bed facing south occupied false part foot
772 orange_bed facing west occupied true part head
773 orange_bed facing west occupied true part foot
774 orange_bed facing west occupied false part head
775 orange_bed facing west occupied false part foot
776 orange_bed facing east occupied true part head
777 orange_bed facing east occupied true part foot
778 orange_bed facing east occupied false part head
779 orange_bed facing east occupied false part foot
780 magenta_bed facing north occupied true part head
781 magenta_bed facing north occupied true part foot
782 magenta_bed facing north occupied false part head
783 magenta_bed facing north occupied false part foot
784 magenta_bed facing south occupied true part head
785 magenta_bed facing south occupied true part foot
786 magenta_bed facing south occupied false part head
787 magenta_bed facing south occupied false part foot
788 magenta_bed facing west occupied true part head
789 magenta_bed facing west occupied true part foot
790 magenta_bed facing west occupied false part head
791 magenta_bed facing west occupied false part foot
792 magenta_bed facing east occupied true part head
793 magenta_bed facing east occupied true part foot
794 magenta_bed facing east occupied false part head
795 magenta_bed facing east occupied false part foot
796 light_blue_bed facing north occupied true part head
797 light_blue_bed facing north occupied true part foot
798 light_blue_bed facing north occupied false part head
799 light_blue_bed facing north occupied false part foot
800 light_blue_bed facing south occupied true part head
801 light_blue_bed facing south occupied true part foot
802 light_blue_bed facing south occupied false part head
803 light_blue_bed facing south occupied false part foot
804 light_blue_bed facing west occupied true part head
805 light_blue_bed facing west occupied true part foot
806 light_blue_bed facing west occupied false part head
807 light_blue_bed facing west occupied false part foot
808 light_blue_bed facing east occupied true part head
809 light_blue_bed facing east occupied true part foot
810 light_blue_bed facing east occupied false part head
811 light_blue_bed facing east occupied false part foot
812 yellow_bed facing north occupied true part head
813 yellow_bed facing north occupied true part foot
814 yellow_bed facing north occupied false part head
815 yellow_bed facing north occupied false part foot
816 yellow_bed facing south occupied true part head
817 yellow_bed facing south occupied true part foot
818 yellow_bed facing south occupied false part head
819 yellow_bed facing south occupied false part foot
820 yellow_bed facing west occupied true part head
821 yellow_bed facing west occupied true part foot
822 yellow_bed facing west occupied false part head
823 yellow_bed facing west occupied false part foot
824 yellow_bed facing east occupied true part head
825 yellow_bed facing east occupied true part foot
826 yellow_bed facing east occupied false part head
827 yellow_bed facing east occupied false part foot
828 lime_bed facing north occupied true part head
829 lime_bed facing north occupied true part foot
830 lime_bed facing north occupied false part head
831 lime_bed facing north occupied false part foot
832 lime_bed facing south occupied true part head
833 lime_bed facing south occupied true part foot
834 lime_bed facing south occupied false part head
835 lime_bed facing south occupied false part foot
836 lime_bed facing west occupied true part head
837 lime_bed facing west occupied true part foot
838 lime_bed facing west occupied false part head
839 lime_bed facing west occupied false part foot
840 lime_bed facing east occupied true part head
841 lime_bed facing east occupied true part foot
842 lime_bed facing east occupied false part head
843 lime_bed facing east occupied false part foot
844 pink_bed facing north occupied true part head
845 pink_bed facing north occupied true part foot
846 pink_bed facing north occupied false part head
847 pink_bed facing north occupied false part foot
848 pink_bed facing south occupied true part head
849 pink_bed facing south occupied true part foot
850 pink_bed facing south occupied false part head
851 pink_bed facing south occupied false part foot
852 pink_bed facing west occupied true part head
853 pink_bed facing west occupied true part foot
854 pink_bed facing west occupied false part head
855 pink_bed facing west occupied false part foot
856 pink_bed facing east occupied true part head
857 pink_bed facing east occupied true part foot
858 pink_bed facing east occupied false part head
859 pink_bed facing east occupied false part foot
860 gray_bed facing north occupied true part head
861 gray_bed facing north occupied true part foot
862 gray_bed facing north occupied false part head
863 gray_bed facing north occupied false part foot
864 gray_bed facing south occupied true part head
865 gray_bed facing south occupied true part foot
866 gray_bed facing south occupied false part head
867 gray_bed facing south occupied false part foot
868 gray_bed facing west occupied true part head
869 gray_bed facing west occupied true part foot
870 gray_bed facing west occupied false part head
871 gray_bed facing west occupied false part foot
872 gray_bed facing east occupied true part head
873 gray_bed facing east occupied true part foot
874 gray_bed facing east occupied false part head
875 gray_bed facing east occupied false part foot
876 light_gray_bed facing north occupied true part head
877 light_gray_bed facing north occupied true part foot
878 light_gray_bed facing north occupied false part head
879 light_gray_bed facing north occupied false part foot
880 light_gray_bed facing south occupied true part head
881 light_gray_bed facing south occupied true part foot
882 light_gray_bed facing south occupied false part head
883 light_gray_bed facing south occupied false part foot
884 light_gray_bed facing west occupied true part head
885 light_gray_bed facing west occupied true part foot
886 light_gray_bed facing west occupied false part head
887 light_gray_bed facing west occupied false part foot
888 light_gray_bed facing east occupied true part head
889 light_gray_bed facing east occupied true part foot
890 light_gray_bed facing east occupied false part head
891 light_gray_bed facing east occupied false part foot
892 cyan_bed facing north occupied true part head
893 cyan_bed facing north occupied true part foot
894 cyan_bed facing north occupied false part head
895 cyan_bed facing north occupied false part foot
896 cyan_bed facing south occupied true part head
897 cyan_bed facing south occupied true part foot
898 cyan_bed facing south occupied false part head
899 cyan_bed facing south occupied false part foot
900 cyan_bed facing west occupied true part head
901 cyan_bed facing west occupied true part foot
902 cyan_bed facing west occupied false part head
903 cyan_bed facing west occupied false part foot
904 cyan_bed facing east occupied true part head
905 cyan_bed facing east occupied true part foot
906 cyan_bed facing east occupied false part head
907 cyan_bed facing east occupied false part foot
908 purple_bed facing north occupied true part head
909 purple_bed facing north occupied true part foot
910 purple_bed facing north occupied false part head
911 purple_bed facing north occupied false part foot
912 purple_bed facing south occupied true part head
913 purple_bed facing south occupied true part foot
914 purple_bed facing south occupied false part head
915 purple_bed facing south occupied false part foot
916 purple_bed facing west occupied true part head
917 purple_bed facing west occupied true part foot
918 purple_bed facing west occupied false part head
919 purple_bed facing west occupied false part foot
920 purple_bed facing east occupied true part head
921 purple_bed facing east occupied true part foot
922 purple_bed facing east occupied false part head
923 purple_bed facing east occupied false part foot
924 blue_bed facing north occupied true part head
925 blue_bed facing north occupied true part foot
926 blue_bed facing north occupied false part head
927 blue_bed facing north occupied false part foot
928 blue_bed facing south occupied true part head
929 blue_bed facing south occupied true part foot
930 blue_bed facing south occupied false part head
931 blue_bed facing south occupied false part foot
932 blue_bed facing west occupied true part head
933 blue_bed facing west occupied true part foot
934 blue_bed facing west occupied false part head
935 blue_bed facing west occupied false part foot
936 blue_bed facing east occupied true part head
937 blue_bed facing east occupied true part foot
938 blue_bed facing east occupied false part head
939 blue_bed facing east occupied false part foot
940 brown_bed facing north occupied true part head
941 brown_bed facing north occupied true part foot
942 brown_bed facing north occupied false part head
943 brown_bed facing north occupied false part foot
944 brown_bed facing south occupied true part head
945 brown_bed facing south occupied true part foot
946 brown_bed facing south occupied false part head
947 brown_bed facing south occupied false part foot
948 brown_bed facing west occupied true part head
949 brown_bed facing west occupied true part foot
950 brown_bed facing west occupied false part head
951 brown_bed facing west occupied false part foot
952 brown_bed facing east occupied true part head
953 brown_bed facing east occupied true part foot
954 brown_bed facing east occupied false part head
955 brown_bed facing east occupied false part foot
956 green_bed facing north occupied true part head
957 green_bed facing north occupied true part foot
958 green_bed facing north occupied false part head
959 green_bed facing north occupied false part foot
960 green_bed facing south occupied true part head
961 green_bed facing south occupied true part foot
962 green_bed facing south occupied false part head
963 green_bed facing south occupied false part foot
964 green_bed facing west occupied true part head
965 green_bed facing west occupied true part foot
966 green_bed facing west occupied false part head
967 green_bed facing west occupied false part foot
968 green_bed facing east occupied true part head
969 green_bed facing east occupied true part foot
970 green_bed facing east occupied false part head
971 green_bed facing east occupied false part foot
972 red_bed facing north occupied true part head
973 red_bed facing north occupied true part foot
974 red_bed facing north occupied false part head
975 red_bed facing north occupied false part foot
976 red_bed facing south occupied true part head
977 red_bed facing south occupied true part foot
978 red_bed facing south occupied false part head
979 red_bed facing south occupied false part foot
980 red_bed facing west occupied true part head
981 red_bed facing west occupied true part foot
982 red_bed facing west occupied false part head
983 red_bed facing west occupied false part foot
984 red_bed facing east occupied true part head
985 red_bed facing east occupied true part foot
986 red_bed facing east occupied false part head
987 red_bed facing east occupied false part foot
988 black_bed facing north occupied true part head
989 black_bed facing north occupied true part foot
990 black_bed facing north occupied false part head
991 black_bed facing north occupied false part foot
992 black_bed facing south occupied true part head
993 black_bed facing south occupied true part foot
994 black_bed facing south occupied false part head
995 black_bed facing south occupied false part foot
996 black_bed facing west occupied true part head
997 black_bed facing west occupied true part foot
998 black_bed facing west occupied false part head
999 black_bed facing west occupied false part foot
1000 black_bed facing east occupied true part head
1001 black_bed facing east occupied true part foot
1002 black_bed facing east occupied false part head
1003 black_bed facing east occupied false part foot
1004 powered_rail shape north_south powered true
1005 powered_rail shape east_west powered true
1006 powered_rail shape ascending_east powered true
1007 powered_rail shape ascending_west powered true
1008 powered_rail shape ascending_north powered true
1009 powered_rail shape ascending_south powered true
1010 powered_rail shape north_south powered false
1011 powered_rail shape east_west powered false
1012 powered_rail shape ascending_east powered false
1013 powered_rail shape ascending_west powered false
1014 powered_rail shape ascending_north powered false
1015 powered_rail shape ascending_south powered false
1016 detector_rail shape north_south powered true
1017 detector_rail shape east_west powered true
1018 detector_rail shape ascending_east powered true
1019 detector_rail shape ascending_west powered true
1020 detector_rail shape ascending_north powered true
1021 detector_rail shape ascending_south powered true
1022 detector_rail shape north_south powered false
1023 detector_rail shape east_west powered false
1024 detector_rail shape ascending_east powered false
1025 detector_rail shape ascending_west powered false
1026 detector_rail shape ascending_north powered false
1027 detector_rail shape ascending_south powered false
1028 sticky_piston facing north extended true
1029 sticky_piston facing east extended true
1030 sticky_piston facing south extended true
1031 sticky_piston facing west extended true
1032 sticky_piston facing up extended true
1033 sticky_piston facing down extended true
1034 sticky_piston facing north extended false
1035 sticky_piston facing east extended false
1036 sticky_piston facing south extended false
1037 sticky_piston facing west extended false
1038 sticky_piston facing up extended false
1039 sticky_piston facing down extended false
1040 cobweb
1041 grass
1042 fern
1043 dead_bush
1044 seagrass
1045 tall_seagrass half upper
1046 tall_seagrass half lower
1047 piston facing north extended true
1048 piston facing east extended true
1049 piston facing south extended true
1050 piston facing west extended true
1051 piston facing up extended true
1052 piston facing down extended true
1053 piston facing north extended false
1054 piston facing east extended false
1055 piston facing south extended false
1056 piston facing west extended false
1057 piston facing up extended false
1058 piston facing down extended false
1059 piston_head facing north short true type normal
1060 piston_head facing north short true type sticky
1061 piston_head facing north short false type normal
1062 piston_head facing north short false type sticky
1063 piston_head facing east short true type normal
1064 piston_head facing east short true type sticky
1065 piston_head facing east short false type normal
1066 piston_head facing east short false type sticky
1067 piston_head facing south short true type normal
1068 piston_head facing south short true type sticky
1069 piston_head facing south short false type normal
1070 piston_head facing south short false type sticky
1071 piston_head facing west short true type normal
1072 piston_head facing west short true type sticky
1073 piston_head facing west short false type normal
1074 piston_head facing west short false type sticky
1075 piston_head facing up short true type normal
1076 piston_head facing up short true type sticky
1077 piston_head facing up short false type normal
1078 piston_head facing up short false type sticky
1079 piston_head facing down short true type normal
1080 piston_head facing down short true type sticky
1081 piston_head facing down short false type normal
1082 piston_head facing down short false type sticky
1083 white_wool
1084 orange_wool
1085 magenta_wool
1086 light_blue_wool
1087 yellow_wool
1088 lime_wool
1089 pink_wool
1090 gray_wool
1091 light_gray_wool
1092 cyan_wool
1093 purple_wool
1094 blue_wool
1095 brown_wool
1096 green_wool
1097 red_wool
1098 black_wool
1099 moving_piston facing north type normal
1100 moving_piston facing north type sticky
1101 moving_piston facing east type normal
1102 moving_piston facing east type sticky
1103 moving_piston facing south type normal
1104 moving_piston facing south type sticky
1105 moving_piston facing west type normal
1106 moving_piston facing west type sticky
1107 moving_piston facing up type normal
1108 moving_piston facing up type sticky
1109 moving_piston facing down type normal
1110 moving_piston facing down type sticky
1111 dandelion
1112 poppy
1113 blue_orchid
1114 allium
1115 azure_bluet
1116 red_tulip
1117 orange_tulip
1118 white_tulip
1119 pink_tulip
1120 oxeye_daisy
1121 brown_mushroom
1122 red_mushroom
1123 gold_block
1124 iron_block
1125 bricks
1126 tnt
1127 bookshelf
1128 mossy_cobblestone
1129 obsidian
1130 torch
1131 wall_torch facing north
1132 wall_torch facing south
1133 wall_torch facing west
1134 wall_torch facing east
1135 fire north true south true east true age 0 up true west true
1136 fire north true south true east true age 0 up true west false
1137 fire north true south true east true age 0 up false west true
1138 fire north true south true east true age 0 up false west false
1139 fire north true south false east true age 0 up true west true
1140 fire north true south false east true age 0 up true west false
1141 fire north true south false east true age 0 up false west true
1142 fire north true south false east true age 0 up false west false
1143 fire north false south true east true age 0 up true west true
1144 fire north false south true east true age 0 up true west false
1145 fire north false south true east true age 0 up false west true
1146 fire north false south true east true age 0 up false west false
1147 fire north false south false east true age 0 up true west true
1148 fire north false south false east true age 0 up true west false
1149 fire north false south false east true age 0 up false west true
1150 fire north false south false east true age 0 up false west false
1151 fire north true south true east false age 0 up true west true
1152 fire north true south true east false age 0 up true west false
1153 fire north true south true east false age 0 up false west true
1154 fire north true south true east false age 0 up false west false
1155 fire north true south false east false age 0 up true west true
1156 fire north true south false east false age 0 up true west false
1157 fire north true south false east false age 0 up false west true
1158 fire north true south false east false age 0 up false west false
1159 fire north false south true east false age 0 up true west true
1160 fire north false south true east false age 0 up true west false
1161 fire north false south true east false age 0 up false west true
1162 fire north false south true east false age 0 up false west false
1163 fire north false south false east false age 0 up true west true
1164 fire north false south false east false age 0 up true west false
1165 fire north false south false east false age 0 up false west true
1166 fire north false south false east false age 0 up false west false
1167 fire north true south true east true age 1 up true west true
1168 fire north true south true east true age 1 up true west false
1169 fire north true south true east true age 1 up false west true
1170 fire north true south true east true age 1 up false west false
1171 fire north true south false east true age 1 up true west true
1172 fire north true south false east true age 1 up true west false
1173 fire north true south false east true age 1 up false west true
1174 fire north true south false east true age 1 up false west false
1175 fire north false south true east true age 1 up true west true
1176 fire north false south true east true age 1 up true west false
1177 fire north false south true east true age 1 up false west true
1178 fire north false south true east true age 1 up false west false
1179 fire north false south false east true age 1 up true west true
1180 fire north false south false east true age 1 up true west false
1181 fire north false south false east true age 1 up false west true
1182 fire north false south false east true age 1 up false west false
1183 fire north true south true east false age 1 up true west true
1184 fire north true south true east false age 1 up true west false
1185 fire north true south true east false age 1 up false west true
1186 fire north true south true east false age 1 up false west false
1187 fire north true south false east false age 1 up true west true
1188 fire north true south false east false age 1 up true west false
1189 fire north true south false east false age 1 up false west true
1190 fire north true south false east false age 1 up false west false
1191 fire north false south true east false age 1 up true west true
1192 fire north false south true east false age 1 up true west false
1193 fire north false south true east false age 1 up false west true
1194 fire north false south true east false age 1 up false west false
1195 fire north false south false east false age 1 up true west true
1196 fire north false south false east false age 1 up true west false
1197 fire north false south false east false age 1 up false west true
1198 fire north false south false east false age 1 up false west false
1199 fire north true south true east true age 2 up true west true
1200 fire north true south true east true age 2 up true west false
1201 fire north true south true east true age 2 up false west true
1202 fire north true south true east true age 2 up false west false
1203 fire north true south false east true age 2 up true west true
1204 fire north true south false east true age 2 up true west false
1205 fire north true south false east true age 2 up false west true
1206 fire north true south false east true age 2 up false west false
1207 fire north false south true east true age 2 up true west true
1208 fire north false south true east true age 2 up true west false
1209 fire north false south true east true age 2 up false west true
1210 fire north false south true east true age 2 up false west false
1211 fire north false south false east true age 2 up true west true
1212 fire north false south false east true age 2 up true west false
1213 fire north false south false east true age 2 up false west true
1214 fire north false south false east true age 2 up false west false
1215 fire north true south true east false age 2 up true west true
1216 fire north true south true east false age 2 up true west false
1217 fire north true south true east false age 2 up false west true
1218 fire north true south true east false age 2 up false west false
1219 fire north true south false east false age 2 up true west true
1220 fire north true south false east false age 2 up true west false
1221 fire north true south false east false age 2 up false west true
1222 fire north true south false east false age 2 up false west false
1223 fire north false south true east false age 2 up true west true
1224 fire north false south true east false age 2 up true west false
1225 fire north false south true east false age 2 up false west true
1226 fire north false south true east false age 2 up false west false
1227 fire north false south false east false age 2 up true west true
1228 fire north false south false east false age 2 up true west false
1229 fire north false south false east false age 2 up false west true
1230 fire north false south false east false age 2 up false west false
1231 fire north true south true east true age 3 up true west true
1232 fire north true south true east true age 3 up true west false
1233 fire north true south true east true age 3 up false west true
1234 fire north true south true east true age 3 up false west false
1235 fire north true south false east true age 3 up true west true
1236 fire north true south false east true age 3 up true west false
1237 fire north true south false east true age 3 up false west true
1238 fire north true south false east true age 3 up false west false
1239 fire north false south true east true age 3 up true west true
1240 fire north false south true east true age 3 up true west false
1241 fire north false south true east true age 3 up false west true
1242 fire north false south true east true age 3 up false west false
1243 fire north false south false east true age 3 up true west true
1244 fire north false south false east true age 3 up true west false
1245 fire north false south false east true age 3 up false west true
1246 fire north false south false east true age 3 up false west false
1247 fire north true south true east false age 3 up true west true
1248 fire north true south true east false age 3 up true west false
1249 fire north true south true east false age 3 up false west true
1250 fire north true south true east false age 3 up false west false
1251 fire north true south false east false age 3 up true west true
1252 fire north true south false east false age 3 up true west false
1253 fire north true south false east false age 3 up false west true
1254 fire north true south false east false age 3 up false west false
1255 fire north false south true east false age 3 up true west true
1256 fire north false south true east false age 3 up true west false
1257 fire north false south true east false age 3 up false west true
1258 fire north false south true east false age 3 up false west false
1259 fire north false south false east false age 3 up true west true
1260 fire north false south false east false age 3 up true west false
1261 fire north false south false east false age 3 up false west true
1262 fire north false south false east false age 3 up false west false
1263 fire north true south true east true age 4 up true west true
1264 fire north true south true east true age 4 up true west false
1265 fire north true south true east true age 4 up false west true
1266 fire north true south true east true age 4 up false west false
1267 fire north true south false east true age 4 up true west true
1268 fire north true south false east true age 4 up true west false
1269 fire north true south false east true age 4 up false west true
1270 fire north true south false east true age 4 up false west false
1271 fire north false south true east true age 4 up true west true
1272 fire north false south true east true age 4 up true west false
1273 fire north false south true east true age 4 up false west true
1274 fire north false south true east true age 4 up false west false
1275 fire north false south false east true age 4 up true west true
1276 fire north false south false east true age 4 up true west false
1277 fire north false south false east true age 4 up false west true
1278 fire north false south false east true age 4 up false west false
1279 fire north true south true east false age 4 up true west true
1280 fire north true south true east false age 4 up true west false
1281 fire north true south true east false age 4 up false west true
1282 fire north true south true east false age 4 up false west false
1283 fire north true south false east false age 4 up true west true
1284 fire north true south false east false age 4 up true west false
1285 fire north true south false east false age 4 up false west true
1286 fire north true south false east false age 4 up false west false
1287 fire north false south true east false age 4 up true west true
1288 fire north false south true east false age 4 up true west false
1289 fire north false south true east false age 4 up false west true
1290 fire north false south true east false age 4 up false west false
1291 fire north false south false east false age 4 up true west true
1292 fire north false south false east false age 4 up true west false
1293 fire north false south false east false age 4 up false west true
1294 fire north false south false east false age 4 up false west false
1295 fire north true south true east true age 5 up true west true
1296 fire north true south true east true age 5 up true west false
1297 fire north true south true east true age 5 up false west true
1298 fire north true south true east true age 5 up false west false
1299 fire north true south false east true age 5 up true west true
1300 fire north true south false east true age 5 up true west false
1301 fire north true south false east true age 5 up false west true
1302 fire north true south false east true age 5 up false west false
1303 fire north false south true east true age 5 up true west true
1304 fire north false south true east true age 5 up true west false
1305 fire north false south true east true age 5 up false west true
1306 fire north false south true east true age 5 up false west false
1307 fire north false south false east true age 5 up true west true
1308 fire north false south false east true age 5 up true west false
1309 fire north false south false east true age 5 up false west true
1310 fire north false south false east true age 5 up false west false
1311 fire north true south true east false age 5 up true west true
1312 fire north true south true east false age 5 up true west false
1313 fire north true south true east false age 5 up false west true
1314 fire north true south true east false age 5 up false west false
1315 fire north true south false east false age 5 up true west true
1316 fire north true south false east false age 5 up true west false
1317 fire north true south false east false age 5 up false west true
1318 fire north true south false east false age 5 up false west false
1319 fire north false south true east false age 5 up true west true
1320 fire north false south true east false age 5 up true west false
1321 fire north false south true east false age 5 up false west true
1322 fire north false south true east false age 5 up false west false
1323 fire north false south false east false age 5 up true west true
1324 fire north false south false east false age 5 up true west false
1325 fire north false south false east false age 5 up false west true
1326 fire north false south false east false age 5 up false west false
1327 fire north true south true east true age 6 up true west true
1328 fire north true south true east true age 6 up true west false
1329 fire north true south true east true age 6 up false west true
1330 fire north true south true east true age 6 up false west false
1331 fire north true south false east true age 6 up true west true
1332 fire north true south false east true age 6 up true west false
1333 fire north true south false east true age 6 up false west true
1334 fire north true south false east true age 6 up false west false
1335 fire north false south true east true age 6 up true west true
1336 fire north false south true east true age 6 up true west false
1337 fire north false south true east true age 6 up false west true
1338 fire north false south true east true age 6 up false west false
1339 fire north false south false east true age 6 up true west true
1340 fire north false south false east true age 6 up true west false
1341 fire north false south false east true age 6 up false west true
1342 fire north false south false east true age 6 up false west false
1343 fire north true south true east false age 6 up true west true
1344 fire north true south true east false age 6 up true west false
1345 fire north true south true east false age 6 up false west true
1346 fire north true south true east false age 6 up false west false
1347 fire north true south false east false age 6 up true west true
1348 fire north true south false east false age 6 up true west false
1349 fire north true south false east false age 6 up false west true
1350 fire north true south false east false age 6 up false west false
1351 fire north false south true east false age 6 up true west true
1352 fire north false south true east false age 6 up true west false
1353 fire north false south true east false age 6 up false west true
1354 fire north false south true east false age 6 up false west false
1355 fire north false south false east false age 6 up true west true
1356 fire north false south false east false age 6 up true west false
1357 fire north false south false east false age 6 up false west true
1358 fire north false south false east false age 6 up false west false
1359 fire north true south true east true age 7 up true west true
1360 fire north true south true east true age 7 up true west false
1361 fire north true south true east true age 7 up false west true
1362 fire north true south true east true age 7 up false west false
1363 fire north true south false east true age 7 up true west true
1364 fire north true south false east true age 7 up true west false
1365 fire north true south false east true age 7 up false west true
1366 fire north true south false east true age 7 up false west false
1367 fire north false south true east true age 7 up true west true
1368 fire north false south true east true age 7 up true west false
1369 fire north false south true east true age 7 up false west true
1370 fire north false south true east true age 7 up false west false
1371 fire north false south false east true age 7 up true west true
1372 fire north false south false east true age 7 up true west false
1373 fire north false south false east true age 7 up false west true
1374 fire north false south false east true age 7 up false west false
1375 fire north true south true east false age 7 up true west true
1376 fire north true south true east false age 7 up true west false
1377 fire north true south true east false age 7 up false west true
1378 fire north true south true east false age 7 up false west false
1379 fire north true south false east false age 7 up true west true
1380 fire north true south false east false age 7 up true west false
1381 fire north true south false east false age 7 up false west true
1382 fire north true south false east false age 7 up false west false
1383 fire north false south true east false age 7 up true west true
1384 fire north false south true east false age 7 up true west false
1385 fire north false south true east false age 7 up false west true
1386 fire north false south true east false age 7 up false west false
1387 fire north false south false east false age 7 up true west true
1388 fire north false south false east false age 7 up true west false
1389 fire north false south false east false age 7 up false west true
1390 fire north false south false east false age 7 up false west false
1391 fire north true south true east true age 8 up true west true
1392 fire north true south true east true age 8 up true west false
1393 fire north true south true east true age 8 up false west true
1394 fire north true south true east true age 8 up false west false
1395 fire north true south false east true age 8 up true west true
1396 fire north true south false east true age 8 up true west false
1397 fire north true south false east true age 8 up false west true
1398 fire north true south false east true age 8 up false west false
1399 fire north false south true east true age 8 up true west true
1400 fire north false south true east true age 8 up true west false
1401 fire north false south true east true age 8 up false west true
1402 fire north false south true east true age 8 up false west false
1403 fire north false south false east true age 8 up true west true
1404 fire north false south false east true age 8 up true west false
1405 fire north false south false east true age 8 up false west true
1406 fire north false south false east true age 8 up false west false
1407 fire north true south true east false age 8 up true west true
1408 fire north true south true east false age 8 up true west false
1409 fire north true south true east false age 8 up false west true
1410 fire north true south true east false age 8 up false west false
1411 fire north true south false east false age 8 up true west true
1412 fire north true south false east false age 8 up true west false
1413 fire north true south false east false age 8 up false west true
1414 fire north true south false east false age 8 up false west false
1415 fire north false south true east false age 8 up true west true
1416 fire north false south true east false age 8 up true west false
1417 fire north false south true east false age 8 up false west true
1418 fire north false south true east false age 8 up false west false
1419 fire north false south false east false age 8 up true west true
1420 fire north false south false east false age 8 up true west false
1421 fire north false south false east false age 8 up false west true
1422 fire north false south false east false age 8 up false west false
1423 fire north true south true east true age 9 up true west true
1424 fire north true south true east true age 9 up true west false
1425 fire north true south true east true age 9 up false west true
1426 fire north true south true east true age 9 up false west false
1427 fire north true south false east true age 9 up true west true
1428 fire north true south false east true age 9 up true west false
1429 fire north true south false east true age 9 up false west true
1430 fire north true south false east true age 9 up false west false
1431 fire north false south true east true age 9 up true west true
1432 fire north false south true east true age 9 up true west false
1433 fire north false south true east true age 9 up false west true
1434 fire north false south true east true age 9 up false west false
1435 fire north false south false east true age 9 up true west true
1436 fire north false south false east true age 9 up true west false
1437 fire north false south false east true age 9 up false west true
1438 fire north false south false east true age 9 up false west false
1439 fire north true south true east false age 9 up true west true
1440 fire north true south true east false age 9 up true west false
1441 fire north true south true east false age 9 up false west true
1442 fire north true south true east false age 9 up false west false
1443 fire north true south false east false age 9 up true west true
1444 fire north true south false east false age 9 up true west false
1445 fire north true south false east false age 9 up false west true
1446 fire north true south false east false age 9 up false west false
1447 fire north false south true east false age 9 up true west true
1448 fire north false south true east false age 9 up true west false
1449 fire north false south true east false age 9 up false west true
1450 fire north false south true east false age 9 up false west false
1451 fire north false south false east false age 9 up true west true
1452 fire north false south false east false age 9 up true west false
1453 fire north false south false east false age 9 up false west true
1454 fire north false south false east false age 9 up false west false
1455 fire north true south true east true age 10 up true west true
1456 fire north true south true east true age 10 up true west false
1457 fire north true south true east true age 10 up false west true
1458 fire north true south true east true age 10 up false west false
1459 fire north true south false east true age 10 up true west true
1460 fire north true south false east true age 10 up true west false
1461 fire north true south false east true age 10 up false west true
1462 fire north true south false east true age 10 up false west false
1463 fire north false south true east true age 10 up true west true
1464 fire north false south true east true age 10 up true west false
1465 fire north false south true east true age 10 up false west true
1466 fire north false south true east true age 10 up false west false
1467 fire north false south false east true age 10 up true west true
1468 fire north false south false east true age 10 up true west false
1469 fire north false south false east true age 10 up false west true
1470 fire north false south false east true age 10 up false west false
1471 fire north true south true east false age 10 up true west true
1472 fire north true south true east false age 10 up true west false
1473 fire north true south true east false age 10 up false west true
1474 fire north true south true east false age 10 up false west false
1475 fire north true south false east false age 10 up true west true
1476 fire north true south false east false age 10 up true west false
1477 fire north true south false east false age 10 up false west true
1478 fire north true south false east false age 10 up false west false
1479 fire north false south true east false age 10 up true west true
1480 fire north false south true east false age 10 up true west false
1481 fire north false south true east false age 10 up false west true
1482 fire north false south true east false age 10 up false west false
1483 fire north false south false east false age 10 up true west true
1484 fire north false south false east false age 10 up true west false
1485 fire north false south false east false age 10 up false west true
1486 fire north false south false east false age 10 up false west false
1487 fire north true south true east true age 11 up true west true
1488 fire north true south true east true age 11 up true west false
1489 fire north true south true east true age 11 up false west true
1490 fire north true south true east true age 11 up false west false
1491 fire north true south false east true age 11 up true west true
1492 fire north true south false east true age 11 up true west false
1493 fire north true south false east true age 11 up false west true
1494 fire north true south false east true age 11 up false west false
1495 fire north false south true east true age 11 up true west true
1496 fire north false south true east true age 11 up true west false
1497 fire north false south true east true age 11 up false west true
1498 fire north false south true east true age 11 up false west false
1499 fire north false south false east true age 11 up true west true
1500 fire north false south false east true age 11 up true west false
1501 fire north false south false east true age 11 up false west true
1502 fire north false south false east true age 11 up false west false
1503 fire north true south true east false age 11 up true west true
1504 fire north true south true east false age 11 up true west false
1505 fire north true south true east false age 11 up false west true
1506 fire north true south true east false age 11 up false west false
1507 fire north true south false east false age 11 up true west true
1508 fire north true south false east false age 11 up true west false
1509 fire north true south false east false age 11 up false west true
1510 fire north true south false east false age 11 up false west false
1511 fire north false south true east false age 11 up true west true
1512 fire north false south true east false age 11 up true west false
1513 fire north false south true east false age 11 up false west true
1514 fire north false south true east false age 11 up false west false
1515 fire north false south false east false age 11 up true west true
1516 fire north false south false east false age 11 up true west false
1517 fire north false south false east false age 11 up false west true
1518 fire north false south false east false age 11 up false west false
1519 fire north true south true east true age 12 up true west true
1520 fire north true south true east true age 12 up true west false
1521 fire north true south true east true age 12 up false west true
1522 fire north true south true east true age 12 up false west false
1523 fire north true south false east true age 12 up true west true
1524 fire north true south false east true age 12 up true west false
1525 fire north true south false east true age 12 up false west true
1526 fire north true south false east true age 12 up false west false
1527 fire north false south true east true age 12 up true west true
1528 fire north false south true east true age 12 up true west false
1529 fire north false south true east true age 12 up false west true
1530 fire north false south true east true age 12 up false west false
1531 fire north false south false east true age 12 up true west true
1532 fire north false south false east true age 12 up true west false
1533 fire north false south false east true age 12 up false west true
1534 fire north false south false east true age 12 up false west false
1535 fire north true south true east false age 12 up true west true
1536 fire north true south true east false age 12 up true west false
1537 fire north true south true east false age 12 up false west true
1538 fire north true south true east false age 12 up false west false
1539 fire north true south false east false age 12 up true west true
1540 fire north true south false east false age 12 up true west false
1541 fire north true south false east false age 12 up false west true
1542 fire north true south false east false age 12 up false west false
1543 fire north false south true east false age 12 up true west true
1544 fire north false south true east false age 12 up true west false
1545 fire north false south true east false age 12 up false west true
1546 fire north false south true east false age 12 up false west false
1547 fire north false south false east false age 12 up true west true
1548 fire north false south false east false age 12 up true west false
1549 fire north false south false east false age 12 up false west true
1550 fire north false south false east false age 12 up false west false
1551 fire north true south true east true age 13 up true west true
1552 fire north true south true east true age 13 up true west false
1553 fire north true south true east true age 13 up false west true
1554 fire north true south true east true age 13 up false west false
1555 fire north true south false east true age 13 up true west true
1556 fire north true south false east true age 13 up true west false
1557 fire north true south false east true age 13 up false west true
1558 fire north true south false east true age 13 up false west false
1559 fire north false south true east true age 13 up true west true
1560 fire north false south true east true age 13 up true west false
1561 fire north false south true east true age 13 up false west true
1562 fire north false south true east true age 13 up false west false
1563 fire north false south false east true age 13 up true west true
1564 fire north false south false east true age 13 up true west false
1565 fire north false south false east true age 13 up false west true
1566 fire north false south false east true age 13 up false west false
1567 fire north true south true east false age 13 up true west true
1568 fire north true south true east false age 13 up true west false
1569 fire north true south true east false age 13 up false west true
1570 fire north true south true east false age 13 up false west false
1571 fire north true south false east false age 13 up true west true
1572 fire north true south false east false age 13 up true west false
1573 fire north true south false east false age 13 up false west true
1574 fire north true south false east false age 13 up false west false
1575 fire north false south true east false age 13 up true west true
1576 fire north false south true east false age 13 up true west false
1577 fire north false south true east false age 13 up false west true
1578 fire north false south true east false age 13 up false west false
1579 fire north false south false east false age 13 up true west true
1580 fire north false south false east false age 13 up true west false
1581 fire north false south false east false age 13 up false west true
1582 fire north false south false east false age 13 up false west false
1583 fire north true south true east true age 14 up true west true
1584 fire north true south true east true age 14 up true west false
1585 fire north true south true east true age 14 up false west true
1586 fire north true south true east true age 14 up false west false
1587 fire north true south false east true age 14 up true west true
1588 fire north true south false east true age 14 up true west false
1589 fire north true south false east true age 14 up false west true
1590 fire north true south false east true age 14 up false west false
1591 fire north false south true east true age 14 up true west true
1592 fire north false south true east true age 14 up true west false
1593 fire north false south true east true age 14 up false west true
1594 fire north false south true east true age 14 up false west false
1595 fire north false south false east true age 14 up true west true
1596 fire north false south false east true age 14 up true west false
1597 fire north false south false east true age 14 up false west true
1598 fire north false south false east true age 14 up false west false
1599 fire north true south true east false age 14 up true west true
1600 fire north true south true east false age 14 up true west false
1601 fire north true south true east false age 14 up false west true
1602 fire north true south true east false age 14 up false west false
1603 fire north true south false east false age 14 up true west true
1604 fire north true south false east false age 14 up true west false
1605 fire north true south false east false age 14 up false west true
1606 fire north true south false east false age 14 up false west false
1607 fire north false south true east false age 14 up true west true
1608 fire north false south true east false age 14 up true west false
1609 fire north false south true east false age 14 up false west true
1610 fire north false south true east false age 14 up false west false
1611 fire north false south false east false age 14 up true west true
1612 fire north false south false east false age 14 up true west false
1613 fire north false south false east false age 14 up false west true
1614 fire north false south false east false age 14 up false west false
1615 fire north true south true east true age 15 up true west true
1616 fire north true south true east true age 15 up true west false
1617 fire north true south true east true age 15 up false west true
1618 fire north true south true east true age 15 up false west false
1619 fire north true south false east true age 15 up true west true
1620 fire north true south false east true age 15 up true west false
1621 fire north true south false east true age 15 up false west true
1622 fire north true south false east true age 15 up false west false
1623 fire north false south true east true age 15 up true west true
1624 fire north false south true east true age 15 up true west false
1625 fire north false south true east true age 15 up false west true
1626 fire north false south true east true age 15 up false west false
1627 fire north false south false east true age 15 up true west true
1628 fire north false south false east true age 15 up true west false
1629 fire north false south false east true age 15 up false west true
1630 fire north false south false east true age 15 up false west false
1631 fire north true south true east false age 15 up true west true
1632 fire north true south true east false age 15 up true west false
1633 fire north true south true east false age 15 up false west true
1634 fire north true south true east false age 15 up false west false
1635 fire north true south false east false age 15 up true west true
1636 fire north true south false east false age 15 up true west false
1637 fire north true south false east false age 15 up false west true
1638 fire north true south false east false age 15 up false west false
1639 fire north false south true east false age 15 up true west true
1640 fire north false south true east false age 15 up true west false
1641 fire north false south true east false age 15 up false west true
1642 fire north false south true east false age 15 up false west false
1643 fire north false south false east false age 15 up true west true
1644 fire north false south false east false age 15 up true west false
1645 fire north false south false east false age 15 up false west true
1646 fire north false south false east false age 15 up false west false
1647 spawner
1648 oak_stairs facing north waterlogged true shape straight half top
1649 oak_stairs facing north waterlogged false shape straight half top
1650 oak_stairs facing north waterlogged true shape inner_left half top
1651 oak_stairs facing north waterlogged false shape inner_left half top
1652 oak_stairs facing north waterlogged true shape inner_right half top
1653 oak_stairs facing north waterlogged false shape inner_right half top
1654 oak_stairs facing north waterlogged true shape outer_left half top
1655 oak_stairs facing north waterlogged false shape outer_left half top
1656 oak_stairs facing north waterlogged true shape outer_right half top
1657 oak_stairs facing north waterlogged false shape outer_right half top
1658 oak_stairs facing north waterlogged true shape straight half bottom
1659 oak_stairs facing north waterlogged false shape straight half bottom
1660 oak_stairs facing north waterlogged true shape inner_left half bottom
1661 oak_stairs facing north waterlogged false shape inner_left half bottom
1662 oak_stairs facing north waterlogged true shape inner_right half bottom
1663 oak_stairs facing north waterlogged false shape inner_right half bottom
1664 oak_stairs facing north waterlogged true shape outer_left half bottom
1665 oak_stairs facing north waterlogged false shape outer_left half bottom
1666 oak_stairs facing north waterlogged true shape outer_right half bottom
1667 oak_stairs facing north waterlogged false shape outer_right half bottom
1668 oak_stairs facing south waterlogged true shape straight half top
1669 oak_stairs facing south waterlogged false shape straight half top
1670 oak_stairs facing south waterlogged true shape inner_left half top
1671 oak_stairs facing south waterlogged false shape inner_left half top
1672 oak_stairs facing south waterlogged true shape inner_right half top
1673 oak_stairs facing south waterlogged false shape inner_right half top
1674 oak_stairs facing south waterlogged true shape outer_left half top
1675 oak_stairs facing south waterlogged false shape outer_left half top
1676 oak_stairs facing south waterlogged true shape outer_right half top
1677 oak_stairs facing south waterlogged false shape outer_right half top
1678 oak_stairs facing south waterlogged true shape straight half bottom
1679 oak_stairs facing south waterlogged false shape straight half bottom
1680 oak_stairs facing south waterlogged true shape inner_left half bottom
1681 oak_stairs facing south waterlogged false shape inner_left half bottom
1682 oak_stairs facing south waterlogged true shape inner_right half bottom
1683 oak_stairs facing south waterlogged false shape inner_right half bottom
1684 oak_stairs facing south waterlogged true shape outer_left half bottom
1685 oak_stairs facing south waterlogged false shape outer_left half bottom
1686 oak_stairs facing south waterlogged true shape outer_right half bottom
1687 oak_stairs facing south waterlogged false shape outer_right half bottom
1688 oak_stairs facing west waterlogged true shape straight half top
1689 oak_stairs facing west waterlogged false shape straight half top
1690 oak_stairs facing west waterlogged true shape inner_left half top
1691 oak_stairs facing west waterlogged false shape inner_left half top
1692 oak_stairs facing west waterlogged true shape inner_right half top
1693 oak_stairs facing west waterlogged false shape inner_right half top
1694 oak_stairs facing west waterlogged true shape outer_left half top
1695 oak_stairs facing west waterlogged false shape outer_left half top
1696 oak_stairs facing west waterlogged true shape outer_right half top
1697 oak_stairs facing west waterlogged false shape outer_right half top
1698 oak_stairs facing west waterlogged true shape straight half bottom
1699 oak_stairs facing west waterlogged false shape straight half bottom
1700 oak_stairs facing west waterlogged true shape inner_left half bottom
1701 oak_stairs facing west waterlogged false shape inner_left half bottom
1702 oak_stairs facing west waterlogged true shape inner_right half bottom
1703 oak_stairs facing west waterlogged false shape inner_right half bottom
1704 oak_stairs facing west waterlogged true shape outer_left half bottom
1705 oak_stairs facing west waterlogged false shape outer_left half bottom
1706 oak_stairs facing west waterlogged true shape outer_right half bottom
1707 oak_stairs facing west waterlogged false shape outer_right half bottom
1708 oak_stairs facing east waterlogged true shape straight half top
1709 oak_stairs facing east waterlogged false shape straight half top
1710 oak_stairs facing east waterlogged true shape inner_left half top
1711 oak_stairs facing east waterlogged false shape inner_left half top
1712 oak_stairs facing east waterlogged true shape inner_right half top
1713 oak_stairs facing east waterlogged false shape inner_right half top
1714 oak_stairs facing east waterlogged true shape outer_left half top
1715 oak_stairs facing east waterlogged false shape outer_left half top
1716 oak_stairs facing east waterlogged true shape outer_right half top
1717 oak_stairs facing east waterlogged false shape outer_right half top
1718 oak_stairs facing east waterlogged true shape straight half bottom
1719 oak_stairs facing east waterlogged false shape straight half bottom
1720 oak_stairs facing east waterlogged true shape inner_left half bottom
1721 oak_stairs facing east waterlogged false shape inner_left half bottom
1722 oak_stairs facing east waterlogged true shape inner_right half bottom
1723 oak_stairs facing east waterlogged false shape inner_right half bottom
1724 oak_stairs facing east waterlogged true shape outer_left half bottom
1725 oak_stairs facing east waterlogged false shape outer_left half bottom
1726 oak_stairs facing east waterlogged true shape outer_right half bottom
1727 oak_stairs facing east waterlogged false shape outer_right half bottom
1728 chest facing north waterlogged true type single
1729 chest facing north waterlogged false type single
1730 chest facing north waterlogged true type left
1731 chest facing north waterlogged false type left
1732 chest facing north waterlogged true type right
1733 chest facing north waterlogged false type right
1734 chest facing south waterlogged true type single
1735 chest facing south waterlogged false type single
1736 chest facing south waterlogged true type left
1737 chest facing south waterlogged false type left
1738 chest facing south waterlogged true type right
1739 chest facing south waterlogged false type right
1740 chest facing west waterlogged true type single
1741 chest facing west waterlogged false type single
1742 chest facing west waterlogged true type left
1743 chest facing west waterlogged false type left
1744 chest facing west waterlogged true type right
1745 chest facing west waterlogged false type right
1746 chest facing east waterlogged true type single
1747 chest facing east waterlogged false type single
1748 chest facing east waterlogged true type left
1749 chest facing east waterlogged false type left
1750 chest facing east waterlogged true type right
1751 chest facing east waterlogged false type right
1752 redstone_wire south up east up north up power 0 west up
1753 redstone_wire south up east up north up power 0 west side
1754 redstone_wire south up east up north up power 0 west none
1755 redstone_wire south side east up north up power 0 west up
1756 redstone_wire south side east up north up power 0 west side
1757 redstone_wire south side east up north up power 0 west none
1758 redstone_wire south none east up north up power 0 west up
1759 redstone_wire south none east up north up power 0 west side
1760 redstone_wire south none east up north up power 0 west none
1761 redstone_wire south up east up north up power 1 west up
1762 redstone_wire south up east up north up power 1 west side
1763 redstone_wire south up east up north up power 1 west none
1764 redstone_wire south side east up north up power 1 west up
1765 redstone_wire south side east up north up power 1 west side
1766 redstone_wire south side east up north up power 1 west none
1767 redstone_wire south none east up north up power 1 west up
1768 redstone_wire south none east up north up power 1 west side
1769 redstone_wire south none east up north up power 1 west none
1770 redstone_wire south up east up north up power 2 west up
1771 redstone_wire south up east up north up power 2 west side
1772 redstone_wire south up east up north up power 2 west none
1773 redstone_wire south side east up north up power 2 west up
1774 redstone_wire south side east up north up power 2 west side
1775 redstone_wire south side east up north up power 2 west none
1776 redstone_wire south none east up north up power 2 west up
1777 redstone_wire south none east up north up power 2 west side
1778 redstone_wire south none east up north up power 2 west none
1779 redstone_wire south up east up north up power 3 west up
1780 redstone_wire south up east up north up power 3 west side
1781 redstone_wire south up east up north up power 3 west none
1782 redstone_wire south side east up north up power 3 west up
1783 redstone_wire south side east up north up power 3 west side
1784 redstone_wire south side east up north up power 3 west none
1785 redstone_wire south none east up north up power 3 west up
1786 redstone_wire south none east up north up power 3 west side
1787 redstone_wire south none east up north up power 3 west none
1788 redstone_wire south up east up north up power 4 west up
1789 redstone_wire south up east up north up power 4 west side
1790 redstone_wire south up east up north up power 4 west none
1791 redstone_wire south side east up north up power 4 west up
1792 redstone_wire south side east up north up power 4 west side
1793 redstone_wire south side east up north up power 4 west none
1794 redstone_wire south none east up north up power 4 west up
1795 redstone_wire south none east up north up power 4 west side
1796 redstone_wire south none east up north up power 4 west none
1797 redstone_wire south up east up north up power 5 west up
1798 redstone_wire south up east up north up power 5 west side
1799 redstone_wire south up east up north up power 5 west none
1800 redstone_wire south side east up north up power 5 west up
1801 redstone_wire south side east up north up power 5 west side
1802 redstone_wire south side east up north up power 5 west none
1803 redstone_wire south none east up north up power 5 west up
1804 redstone_wire south none east up north up power 5 west side
1805 redstone_wire south none east up north up power 5 west none
1806 redstone_wire south up east up north up power 6 west up
1807 redstone_wire south up east up north up power 6 west side
1808 redstone_wire south up east up north up power 6 west none
1809 redstone_wire south side east up north up power 6 west up
1810 redstone_wire south side east up north up power 6 west side
1811 redstone_wire south side east up north up power 6 west none
1812 redstone_wire south none east up north up power 6 west up
1813 redstone_wire south none east up north up power 6 west side
1814 redstone_wire south none east up north up power 6 west none
1815 redstone_wire south up east up north up power 7 west up
1816 redstone_wire south up east up north up power 7 west side
1817 redstone_wire south up east up north up power 7 west none
1818 redstone_wire south side east up north up power 7 west up
1819 redstone_wire south side east up north up power 7 west side
1820 redstone_wire south side east up north up power 7 west none
1821 redstone_wire south none east up north up power 7 west up
1822 redstone_wire south none east up north up power 7 west side
1823 redstone_wire south none east up north up power 7 west none
1824 redstone_wire south up east up north up power 8 west up
1825 redstone_wire south up east up north up power 8 west side
1826 redstone_wire south up east up north up power 8 west none
1827 redstone_wire south side east up north up power 8 west up
1828 redstone_wire south side east up north up power 8 west side
1829 redstone_wire south side east up north up power 8 west none
1830 redstone_wire south none east up north up power 8 west up
1831 redstone_wire south none east up north up power 8 west side
1832 redstone_wire south none east up north up power 8 west none
1833 redstone_wire south up east up north up power 9 west up
1834 redstone_wire south up east up north up power 9 west side
1835 redstone_wire south up east up north up power 9 west none
1836 redstone_wire south side east up north up power 9 west up
1837 redstone_wire south side east up north up power 9 west side
1838 redstone_wire south side east up north up power 9 west none
1839 redstone_wire south none east up north up power 9 west up
1840 redstone_wire south none east up north up power 9 west side
1841 redstone_wire south none east up north up power 9 west none
1842 redstone_wire south up east up north up power 10 west up
1843 redstone_wire south up east up north up power 10 west side
1844 redstone_wire south up east up north up power 10 west none
1845 redstone_wire south side east up north up power 10 west up
1846 redstone_wire south side east up north up power 10 west side
1847 redstone_wire south side east up north up power 10 west none
1848 redstone_wire south none east up north up power 10 west up
1849 redstone_wire south none east up north up power 10 west side
1850 redstone_wire south none east up north up power 10 west none
1851 redstone_wire south up east up north up power 11 west up
1852 redstone_wire south up east up north up power 11 west side
1853 redstone_wire south up east up north up power 11 west none
1854 redstone_wire south side east up north up power 11 west up
1855 redstone_wire south side east up north up power 11 west side
1856 redstone_wire south side east up north up power 11 west none
1857 redstone_wire south none east up north up power 11 west up
1858 redstone_wire south none east up north up power 11 west side
1859 redstone_wire south none east up north up power 11 west none
1860 redstone_wire south up east up north up power 12 west up
1861 redstone_wire south up east up north up power 12 west side
1862 redstone_wire south up east up north up power 12 west none
1863 redstone_wire south side east up north up power 12 west up
1864 redstone_wire south side east up north up power 12 west side
1865 redstone_wire south side east up north up power 12 west none
1866 redstone_wire south none east up north up power 12 west up
1867 redstone_wire south none east up north up power 12 west side
1868 redstone_wire south none east up north up power 12 west none
1869 redstone_wire south up east up north up power 13 west up
1870 redstone_wire south up east up north up power 13 west side
1871 redstone_wire south up east up north up power 13 west none
1872 redstone_wire south side east up north up power 13 west up
1873 redstone_wire south side east up north up power 13 west side
1874 redstone_wire south side east up north up power 13 west none
1875 redstone_wire south none east up north up power 13 west up
1876 redstone_wire south none east up north up power 13 west side
1877 redstone_wire south none east up north up power 13 west none
1878 redstone_wire south up east up north up power 14 west up
1879 redstone_wire south up east up north up power 14 west side
1880 redstone_wire south up east up north up power 14 west none
1881 redstone_wire south side east up north up power 14 west up
1882 redstone_wire south side east up north up power 14 west side
1883 redstone_wire south side east up north up power 14 west none
1884 redstone_wire south none east up north up power 14 west up
1885 redstone_wire south none east up north up power 14 west side
1886 redstone_wire south none east up north up power 14 west none
1887 redstone_wire south up east up north up power 15 west up
1888 redstone_wire south up east up north up power 15 west side
1889 redstone_wire south up east up north up power 15 west none
1890 redstone_wire south side east up north up power 15 west up
1891 redstone_wire south side east up north up power 15 west side
1892 redstone_wire south side east up north up power 15 west none
1893 redstone_wire south none east up north up power 15 west up
1894 redstone_wire south none east up north up power 15 west side
1895 redstone_wire south none east up north up power 15 west none
1896 redstone_wire south up east up north side power 0 west up
1897 redstone_wire south up east up north side power 0 west side
1898 redstone_wire south up east up north side power 0 west none
1899 redstone_wire south side east up north side power 0 west up
1900 redstone_wire south side east up north side power 0 west side
1901 redstone_wire south side east up north side power 0 west none
1902 redstone_wire south none east up north side power 0 west up
1903 redstone_wire south none east up north side power 0 west side
1904 redstone_wire south none east up north side power 0 west none
1905 redstone_wire south up east up north side power 1 west up
1906 redstone_wire south up east up north side power 1 west side
1907 redstone_wire south up east up north side power 1 west none
1908 redstone_wire south side east up north side power 1 west up
1909 redstone_wire south side east up north side power 1 west side
1910 redstone_wire south side east up north side power 1 west none
1911 redstone_wire south none east up north side power 1 west up
1912 redstone_wire south none east up north side power 1 west side
1913 redstone_wire south none east up north side power 1 west none
1914 redstone_wire south up east up north side power 2 west up
1915 redstone_wire south up east up north side power 2 west side
1916 redstone_wire south up east up north side power 2 west none
1917 redstone_wire south side east up north side power 2 west up
1918 redstone_wire south side east up north side power 2 west side
1919 redstone_wire south side east up north side power 2 west none
1920 redstone_wire south none east up north side power 2 west up
1921 redstone_wire south none east up north side power 2 west side
1922 redstone_wire south none east up north side power 2 west none
1923 redstone_wire south up east up north side power 3 west up
1924 redstone_wire south up east up north side power 3 west side
1925 redstone_wire south up east up north side power 3 west none
1926 redstone_wire south side east up north side power 3 west up
1927 redstone_wire south side east up north side power 3 west side
1928 redstone_wire south side east up north side power 3 west none
1929 redstone_wire south none east up north side power 3 west up
1930 redstone_wire south none east up north side power 3 west side
1931 redstone_wire south none east up north side power 3 west none
1932 redstone_wire south up east up north side power 4 west up
1933 redstone_wire south up east up north side power 4 west side
1934 redstone_wire south up east up north side power 4 west none
1935 redstone_wire south side east up north side power 4 west up
1936 redstone_wire south side east up north side power 4 west side
1937 redstone_wire south side east up north side power 4 west none
1938 redstone_wire south none east up north side power 4 west up
1939 redstone_wire south none east up north side power 4 west side
1940 redstone_wire south none east up north side power 4 west none
1941 redstone_wire south up east up north side power 5 west up
1942 redstone_wire south up east up north side power 5 west side
1943 redstone_wire south up east up north side power 5 west none
1944 redstone_wire south side east up north side power 5 west up
1945 redstone_wire south side east up north side power 5 west side
1946 redstone_wire south side east up north side power 5 west none
1947 redstone_wire south none east up north side power 5 west up
1948 redstone_wire south none east up north side power 5 west side
1949 redstone_wire south none east up north side power 5 west none
1950 redstone_wire south up east up north side power 6 west up
1951 redstone_wire south up east up north side power 6 west side
1952 redstone_wire south up east up north side power 6 west none
1953 redstone_wire south side east up north side power 6 west up
1954 redstone_wire south side east up north side power 6 west side
1955 redstone_wire south side east up north side power 6 west none
1956 redstone_wire south none east up north side power 6 west up
1957 redstone_wire south none east up north side power 6 west side
1958 redstone_wire south none east up north side power 6 west none
1959 redstone_wire south up east up north side power 7 west up
1960 redstone_wire south up east up north side power 7 west side
1961 redstone_wire south up east up north side power 7 west none
1962 redstone_wire south side east up north side power 7 west up
1963 redstone_wire south side east up north side power 7 west side
1964 redstone_wire south side east up north side power 7 west none
1965 redstone_wire south none east up north side power 7 west up
1966 redstone_wire south none east up north side power 7 west side
1967 redstone_wire south none east up north side power 7 west none
1968 redstone_wire south up east up north side power 8 west up
1969 redstone_wire south up east up north side power 8 west side
1970 redstone_wire south up east up north side power 8 west none
1971 redstone_wire south side east up north side power 8 west up
1972 redstone_wire south side east up north side power 8 west side
1973 redstone_wire south side east up north side power 8 west none
1974 redstone_wire south none east up north side power 8 west up
1975 redstone_wire south none east up north side power 8 west side
1976 redstone_wire south none east up north side power 8 west none
1977 redstone_wire south up east up north side power 9 west up
1978 redstone_wire south up east up north side power 9 west side
1979 redstone_wire south up east up north side power 9 west none
1980 redstone_wire south side east up north side power 9 west up
1981 redstone_wire south side east up north side power 9 west side
1982 redstone_wire south side east up north side power 9 west none
1983 redstone_wire south none east up north side power 9 west up
1984 redstone_wire south none east up north side power 9 west side
1985 redstone_wire south none east up north side power 9 west none
1986 redstone_wire south up east up north side power 10 west up
1987 redstone_wire south up east up north side power 10 west side
1988 redstone_wire south up east up north side power 10 west none
1989 redstone_wire south side east up north side power 10 west up
1990 redstone_wire south side east up north side power 10 west side
1991 redstone_wire south side east up north side power 10 west none
1992 redstone_wire south none east up north side power 10 west up
1993 redstone_wire south none east up north side power 10 west side
1994 redstone_wire south none east up north side power 10 west none
1995 redstone_wire south up east up north side power 11 west up
1996 redstone_wire south up east up north side power 11 west side
1997 redstone_wire south up east up north side power 11 west none
1998 redstone_wire south side east up north side power 11 west up
1999 redstone_wire south side east up north side power 11 west side
2000 redstone_wire south side east up north side power 11 west none
2001 redstone_wire south none east up north side power 11 west up
2002 redstone_wire south none east up north side power 11 west side
2003 redstone_wire south none east up north side power 11 west none
2004 redstone_wire south up east up north side power 12 west up
2005 redstone_wire south up east up north side power 12 west side
2006 redstone_wire south up east up north side power 12 west none
2007 redstone_wire south side east up north side power 12 west up
2008 redstone_wire south side east up north side power 12 west side
2009 redstone_wire south side east up north side power 12 west none
2010 redstone_wire south none east up north side power 12 west up
2011 redstone_wire south none east up north side power 12 west side
2012 redstone_wire south none east up north side power 12 west none
2013 redstone_wire south up east up north side power 13 west up
2014 redstone_wire south up east up north side power 13 west side
2015 redstone_wire south up east up north side power 13 west none
2016 redstone_wire south side east up north side power 13 west up
2017 redstone_wire south side east up north side power 13 west side
2018 redstone_wire south side east up north side power 13 west none
2019 redstone_wire south none east up north side power 13 west up
2020 redstone_wire south none east up north side power 13 west side
2021 redstone_wire south none east up north side power 13 west none
2022 redstone_wire south up east up north side power 14 west up
2023 redstone_wire south up east up north side power 14 west side
2024 redstone_wire south up east up north side power 14 west none
2025 redstone_wire south side east up north side power 14 west up
2026 redstone_wire south side east up north side power 14 west side
2027 redstone_wire south side east up north side power 14 west none
2028 redstone_wire south none east up north side power 14 west up
2029 redstone_wire south none east up north side power 14 west side
2030 redstone_wire south none east up north side power 14 west none
2031 redstone_wire south up east up north side power 15 west up
2032 redstone_wire south up east up north side power 15 west side
2033 redstone_wire south up east up north side power 15 west none
2034 redstone_wire south side east up north side power 15 west up
2035 redstone_wire south side east up north side power 15 west side
2036 redstone_wire south side east up north side power 15 west none
2037 redstone_wire south none east up north side power 15 west up
2038 redstone_wire south none east up north side power 15 west side
2039 redstone_wire south none east up north side power 15 west none
2040 redstone_wire south up east up north none power 0 west up
2041 redstone_wire south up east up north none power 0 west side
2042 redstone_wire south up east up north none power 0 west none
2043 redstone_wire south side east up north none power 0 west up
2044 redstone_wire south side east up north none power 0 west side
2045 redstone_wire south side east up north none power 0 west none
2046 redstone_wire south none east up north none power 0 west up
2047 redstone_wire south none east up north none power 0 west side
2048 redstone_wire south none east up north none power 0 west none
2049 redstone_wire south up east up north none power 1 west up
2050 redstone_wire south up east up north none power 1 west side
2051 redstone_wire south up east up north none power 1 west none
2052 redstone_wire south side east up north none power 1 west up
2053 redstone_wire south side east up north none power 1 west side
2054 redstone_wire south side east up north none power 1 west none
2055 redstone_wire south none east up north none power 1 west up
2056 redstone_wire south none east up north none power 1 west side
2057 redstone_wire south none east up north none power 1 west none
2058 redstone_wire south up east up north none power 2 west up
2059 redstone_wire south up east up north none power 2 west side
2060 redstone_wire south up east up north none power 2 west none
2061 redstone_wire south side east up north none power 2 west up
2062 redstone_wire south side east up north none power 2 west side
2063 redstone_wire south side east up north none power 2 west none
2064 redstone_wire south none east up north none power 2 west up
2065 redstone_wire south none east up north none power 2 west side
2066 redstone_wire south none east up north none power 2 west none
2067 redstone_wire south up east up north none power 3 west up
2068 redstone_wire south up east up north none power 3 west side
2069 redstone_wire south up east up north none power 3 west none
2070 redstone_wire south side east up north none power 3 west up
2071 redstone_wire south side east up north none power 3 west side
2072 redstone_wire south side east up north none power 3 west none
2073 redstone_wire south none east up north none power 3 west up
2074 redstone_wire south none east up north none power 3 west side
2075 redstone_wire south none east up north none power 3 west none
2076 redstone_wire south up east up north none power 4 west up
2077 redstone_wire south up east up north none power 4 west side
2078 redstone_wire south up east up north none power 4 west none
2079 redstone_wire south side east up north none power 4 west up
2080 redstone_wire south side east up north none power 4 west side
2081 redstone_wire south side east up north none power 4 west none
2082 redstone_wire south none east up north none power 4 west up
2083 redstone_wire south none east up north none power 4 west side
2084 redstone_wire south none east up north none power 4 west none
2085 redstone_wire south up east up north none power 5 west up
2086 redstone_wire south up east up north none power 5 west side
2087 redstone_wire south up east up north none power 5 west none
2088 redstone_wire south side east up north none power 5 west up
2089 redstone_wire south side east up north none power 5 west side
2090 redstone_wire south side east up north none power 5 west none
2091 redstone_wire south none east up north none power 5 west up
2092 redstone_wire south none east up north none power 5 west side
2093 redstone_wire south none east up north none power 5 west none
2094 redstone_wire south up east up north none power 6 west up
2095 redstone_wire south up east up north none power 6 west side
2096 redstone_wire south up east up north none power 6 west none
2097 redstone_wire south side east up north none power 6 west up
2098 redstone_wire south side east up north none power 6 west side
2099 redstone_wire south side east up north none power 6 west none
2100 redstone_wire south none east up north none power 6 west up
2101 redstone_wire south none east up north none power 6 west side
2102 redstone_wire south none east up north none power 6 west none
2103 redstone_wire south up east up north none power 7 west up
2104 redstone_wire south up east up north none power 7 west side
2105 redstone_wire south up east up north none power 7 west none
2106 redstone_wire south side east up north none power 7 west up
2107 redstone_wire south side east up north none power 7 west side
2108 redstone_wire south side east up north none power 7 west none
2109 redstone_wire south none east up north none power 7 west up
2110 redstone_wire south none east up north none power 7 west side
2111 redstone_wire south none east up north none power 7 west none
2112 redstone_wire south up east up north none power 8 west up
2113 redstone_wire south up east up north none power 8 west side
2114 redstone_wire south up east up north none power 8 west none
2115 redstone_wire south side east up north none power 8 west up
2116 redstone_wire south side east up north none power 8 west side
2117 redstone_wire south side east up north none power 8 west none
2118 redstone_wire south none east up north none power 8 west up
2119 redstone_wire south none east up north none power 8 west side
2120 redstone_wire south none east up north none power 8 west none
2121 redstone_wire south up east up north none power 9 west up
2122 redstone_wire south up east up north none power 9 west side
2123 redstone_wire south up east up north none power 9 west none
2124 redstone_wire south side east up north none power 9 west up
2125 redstone_wire south side east up north none power 9 west side
2126 redstone_wire south side east up north none power 9 west none
2127 redstone_wire south none east up north none power 9 west up
2128 redstone_wire south none east up north none power 9 west side
2129 redstone_wire south none east up north none power 9 west none
2130 redstone_wire south up east up north none power 10 west up
2131 redstone_wire south up east up north none power 10 west side
2132 redstone_wire south up east up north none power 10 west none
2133 redstone_wire south side east up north none power 10 west up
2134 redstone_wire south side east up north none power 10 west side
2135 redstone_wire south side east up north none power 10 west none
2136 redstone_wire south none east up north none power 10 west up
2137 redstone_wire south none east up north none power 10 west side
2138 redstone_wire south none east up north none power 10 west none
2139 redstone_wire south up east up north none power 11 west up
2140 redstone_wire south up east up north none power 11 west side
2141 redstone_wire south up east up north none power 11 west none
2142 redstone_wire south side east up north none power 11 west up
2143 redstone_wire south side east up north none power 11 west side
2144 redstone_wire south side east up north none power 11 west none
2145 redstone_wire south none east up north none power 11 west up
2146 redstone_wire south none east up north none power 11 west side
2147 redstone_wire south none east up north none power 11 west none
2148 redstone_wire south up east up north none power 12 west up
2149 redstone_wire south up east up north none power 12 west side
2150 redstone_wire south up east up north none power 12 west none
2151 redstone_wire south side east up north none power 12 west up
2152 redstone_wire south side east up north none power 12 west side
2153 redstone_wire south side east up north none power 12 west none
2154 redstone_wire south none east up north none power 12 west up
2155 redstone_wire south none east up north none power 12 west side
2156 redstone_wire south none east up north none power 12 west none
2157 redstone_wire south up east up north none power 13 west up
2158 redstone_wire south up east up north none power 13 west side
2159 redstone_wire south up east up north none power 13 west none
2160 redstone_wire south side east up north none power 13 west up
2161 redstone_wire south side east up north none power 13 west side
2162 redstone_wire south side east up north none power 13 west none
2163 redstone_wire south none east up north none power 13 west up
2164 redstone_wire south none east up north none power 13 west side
2165 redstone_wire south none east up north none power 13 west none
2166 redstone_wire south up east up north none power 14 west up
2167 redstone_wire south up east up north none power 14 west side
2168 redstone_wire south up east up north none power 14 west none
2169 redstone_wire south side east up north none power 14 west up
2170 redstone_wire south side east up north none power 14 west side
2171 redstone_wire south side east up north none power 14 west none
2172 redstone_wire south none east up north none power 14 west up
2173 redstone_wire south none east up north none power 14 west side
2174 redstone_wire south none east up north none power 14 west none
2175 redstone_wire south up east up north none power 15 west up
2176 redstone_wire south up east up north none power 15 west side
2177 redstone_wire south up east up north none power 15 west none
2178 redstone_wire south side east up north none power 15 west up
2179 redstone_wire south side east up north none power 15 west side
2180 redstone_wire south side east up north none power 15 west none
2181 redstone_wire south none east up north none power 15 west up
2182 redstone_wire south none east up north none power 15 west side
2183 redstone_wire south none east up north none power 15 west none
2184 redstone_wire south up east side north up power 0 west up
2185 redstone_wire south up east side north up power 0 west side
2186 redstone_wire south up east side north up power 0 west none
2187 redstone_wire south side east side north up power 0 west up
2188 redstone_wire south side east side north up power 0 west side
2189 redstone_wire south side east side north up power 0 west none
2190 redstone_wire south none east side north up power 0 west up
2191 redstone_wire south none east side north up power 0 west side
2192 redstone_wire south none east side north up power 0 west none
2193 redstone_wire south up east side north up power 1 west up
2194 redstone_wire south up east side north up power 1 west side
2195 redstone_wire south up east side north up power 1 west none
2196 redstone_wire south side east side north up power 1 west up
2197 redstone_wire south side east side north up power 1 west side
2198 redstone_wire south side east side north up power 1 west none
2199 redstone_wire south none east side north up power 1 west up
2200 redstone_wire south none east side north up power 1 west side
2201 redstone_wire south none east side north up power 1 west none
2202 redstone_wire south up east side north up power 2 west up
2203 redstone_wire south up east side north up power 2 west side
2204 redstone_wire south up east side north up power 2 west none
2205 redstone_wire south side east side north up power 2 west up
2206 redstone_wire south side east side north up power 2 west side
2207 redstone_wire south side east side north up power 2 west none
2208 redstone_wire south none east side north up power 2 west up
2209 redstone_wire south none east side north up power 2 west side
2210 redstone_wire south none east side north up power 2 west none
2211 redstone_wire south up east side north up power 3 west up
2212 redstone_wire south up east side north up power 3 west side
2213 redstone_wire south up east side north up power 3 west none
2214 redstone_wire south side east side north up power 3 west up
2215 redstone_wire south side east side north up power 3 west side
2216 redstone_wire south side east side north up power 3 west none
2217 redstone_wire south none east side north up power 3 west up
2218 redstone_wire south none east side north up power 3 west side
2219 redstone_wire south none east side north up power 3 west none
2220 redstone_wire south up east side north up power 4 west up
2221 redstone_wire south up east side north up power 4 west side
2222 redstone_wire south up east side north up power 4 west none
2223 redstone_wire south side east side north up power 4 west up
2224 redstone_wire south side east side north up power 4 west side
2225 redstone_wire south side east side north up power 4 west none
2226 redstone_wire south none east side north up power 4 west up
2227 redstone_wire south none east side north up power 4 west side
2228 redstone_wire south none east side north up power 4 west none
2229 redstone_wire south up east side north up power 5 west up
2230 redstone_wire south up east side north up power 5 west side
2231 redstone_wire south up east side north up power 5 west none
2232 redstone_wire south side east side north up power 5 west up
2233 redstone_wire south side east side north up power 5 west side
2234 redstone_wire south side east side north up power 5 west none
2235 redstone_wire south none east side north up power 5 west up
2236 redstone_wire south none east side north up power 5 west side
2237 redstone_wire south none east side north up power 5 west none
2238 redstone_wire south up east side north up power 6 west up
2239 redstone_wire south up east side north up power 6 west side
2240 redstone_wire south up east side north up power 6 west none
2241 redstone_wire south side east side north up power 6 west up
2242 redstone_wire south side east side north up power 6 west side
2243 redstone_wire south side east side north up power 6 west none
2244 redstone_wire south none east side north up power 6 west up
2245 redstone_wire south none east side north up power 6 west side
2246 redstone_wire south none east side north up power 6 west none
2247 redstone_wire south up east side north up power 7 west up
2248 redstone_wire south up east side north up power 7 west side
2249 redstone_wire south up east side north up power 7 west none
2250 redstone_wire south side east side north up power 7 west up
2251 redstone_wire south side east side north up power 7 west side
2252 redstone_wire south side east side north up power 7 west none
2253 redstone_wire south none east side north up power 7 west up
2254 redstone_wire south none east side north up power 7 west side
2255 redstone_wire south none east side north up power 7 west none
2256 redstone_wire south up east side north up power 8 west up
2257 redstone_wire south up east side north up power 8 west side
2258 redstone_wire south up east side north up power 8 west none
2259 redstone_wire south side east side north up power 8 west up
2260 redstone_wire south side east side north up power 8 west side
2261 redstone_wire south side east side north up power 8 west none
2262 redstone_wire south none east side north up power 8 west up
2263 redstone_wire south none east side north up power 8 west side
2264 redstone_wire south none east side north up power 8 west none
2265 redstone_wire south up east side north up power 9 west up
2266 redstone_wire south up east side north up power 9 west side
2267 redstone_wire south up east side north up power 9 west none
2268 redstone_wire south side east side north up power 9 west up
2269 redstone_wire south side east side north up power 9 west side
2270 redstone_wire south side east side north up power 9 west none
2271 redstone_wire south none east side north up power 9 west up
2272 redstone_wire south none east side north up power 9 west side
2273 redstone_wire south none east side north up power 9 west none
2274 redstone_wire south up east side north up power 10 west up
2275 redstone_wire south up east side north up power 10 west side
2276 redstone_wire south up east side north up power 10 west none
2277 redstone_wire south side east side north up power 10 west up
2278 redstone_wire south side east side north up power 10 west side
2279 redstone_wire south side east side north up power 10 west none
2280 redstone_wire south none east side north up power 10 west up
2281 redstone_wire south none east side north up power 10 west side
2282 redstone_wire south none east side north up power 10 west none
2283 redstone_wire south up east side north up power 11 west up
2284 redstone_wire south up east side north up power 11 west side
2285 redstone_wire south up east side north up power 11 west none
2286 redstone_wire south side east side north up power 11 west up
2287 redstone_wire south side east side north up power 11 west side
2288 redstone_wire south side east side north up power 11 west none
2289 redstone_wire south none east side north up power 11 west up
2290 redstone_wire south none east side north up power 11 west side
2291 redstone_wire south none east side north up power 11 west none
2292 redstone_wire south up east side north up power 12 west up
2293 redstone_wire south up east side north up power 12 west side
2294 redstone_wire south up east side north up power 12 west none
2295 redstone_wire south side east side north up power 12 west up
2296 redstone_wire south side east side north up power 12 west side
2297 redstone_wire south side east side north up power 12 west none
2298 redstone_wire south none east side north up power 12 west up
2299 redstone_wire south none east side north up power 12 west side
2300 redstone_wire south none east side north up power 12 west none
2301 redstone_wire south up east side north up power 13 west up
2302 redstone_wire south up east side north up power 13 west side
2303 redstone_wire south up east side north up power 13 west none
2304 redstone_wire south side east side north up power 13 west up
2305 redstone_wire south side east side north up power 13 west side
2306 redstone_wire south side east side north up power 13 west none
2307 redstone_wire south none east side north up power 13 west up
2308 redstone_wire south none east side north up power 13 west side
2309 redstone_wire south none east side north up power 13 west none
2310 redstone_wire south up east side north up power 14 west up
2311 redstone_wire south up east side north up power 14 west side
2312 redstone_wire south up east side north up power 14 west none
2313 redstone_wire south side east side north up power 14 west up
2314 redstone_wire south side east side north up power 14 west side
2315 redstone_wire south side east side north up power 14 west none
2316 redstone_wire south none east side north up power 14 west up
2317 redstone_wire south none east side north up power 14 west side
2318 redstone_wire south none east side north up power 14 west none
2319 redstone_wire south up east side north up power 15 west up
2320 redstone_wire south up east side north up power 15 west side
2321 redstone_wire south up east side north up power 15 west none
2322 redstone_wire south side east side north up power 15 west up
2323 redstone_wire south side east side north up power 15 west side
2324 redstone_wire south side east side north up power 15 west none
2325 redstone_wire south none east side north up power 15 west up
2326 redstone_wire south none east side north up power 15 west side
2327 redstone_wire south none east side north up power 15 west none
2328 redstone_wire south up east side north side power 0 west up
2329 redstone_wire south up east side north side power 0 west side
2330 redstone_wire south up east side north side power 0 west none
2331 redstone_wire south side east side north side power 0 west up
2332 redstone_wire south side east side north side power 0 west side
2333 redstone_wire south side east side north side power 0 west none
2334 redstone_wire south none east side north side power 0 west up
2335 redstone_wire south none east side north side power 0 west side
2336 redstone_wire south none east side north side power 0 west none
2337 redstone_wire south up east side north side power 1 west up
2338 redstone_wire south up east side north side power 1 west side
2339 redstone_wire south up east side north side power 1 west none
2340 redstone_wire south side east side north side power 1 west up
2341 redstone_wire south side east side north side power 1 west side
2342 redstone_wire south side east side north side power 1 west none
2343 redstone_wire south none east side north side power 1 west up
2344 redstone_wire south none east side north side power 1 west side
2345 redstone_wire south none east side north side power 1 west none
2346 redstone_wire south up east side north side power 2 west up
2347 redstone_wire south up east side north side power 2 west side
2348 redstone_wire south up east side north side power 2 west none
2349 redstone_wire south side east side north side power 2 west up
2350 redstone_wire south side east side north side power 2 west side
2351 redstone_wire south side east side north side power 2 west none
2352 redstone_wire south none east side north side power 2 west up
2353 redstone_wire south none east side north side power 2 west side
2354 redstone_wire south none east side north side power 2 west none
2355 redstone_wire south up east side north side power 3 west up
2356 redstone_wire south up east side north side power 3 west side
2357 redstone_wire south up east side north side power 3 west none
2358 redstone_wire south side east side north side power 3 west up
2359 redstone_wire south side east side north side power 3 west side
2360 redstone_wire south side east side north side power 3 west none
2361 redstone_wire south none east side north side power 3 west up
2362 redstone_wire south none east side north side power 3 west side
2363 redstone_wire south none east side north side power 3 west none
2364 redstone_wire south up east side north side power 4 west up
2365 redstone_wire south up east side north side power 4 west side
2366 redstone_wire south up east side north side power 4 west none
2367 redstone_wire south side east side north side power 4 west up
2368 redstone_wire south side east side north side power 4 west side
2369 redstone_wire south side east side north side power 4 west none
2370 redstone_wire south none east side north side power 4 west up
2371 redstone_wire south none east side north side power 4 west side
2372 redstone_wire south none east side north side power 4 west none
2373 redstone_wire south up east side north side power 5 west up
2374 redstone_wire south up east side north side power 5 west side
2375 redstone_wire south up east side north side power 5 west none
2376 redstone_wire south side east side north side power 5 west up
2377 redstone_wire south side east side north side power 5 west side
2378 redstone_wire south side east side north side power 5 west none
2379 redstone_wire south none east side north side power 5 west up
2380 redstone_wire south none east side north side power 5 west side
2381 redstone_wire south none east side north side power 5 west none
2382 redstone_wire south up east side north side power 6 west up
2383 redstone_wire south up east side north side power 6 west side
2384 redstone_wire south up east side north side power 6 west none
2385 redstone_wire south side east side north side power 6 west up
2386 redstone_wire south side east side north side power 6 west side
2387 redstone_wire south side east side north side power 6 west none
2388 redstone_wire south none east side north side power 6 west up
2389 redstone_wire south none east side north side power 6 west side
2390 redstone_wire south none east side north side power 6 west none
2391 redstone_wire south up east side north side power 7 west up
2392 redstone_wire south up east side north side power 7 west side
2393 redstone_wire south up east side north side power 7 west none
2394 redstone_wire south side east side north side power 7 west up
2395 redstone_wire south side east side north side power 7 west side
2396 redstone_wire south side east side north side power 7 west none
2397 redstone_wire south none east side north side power 7 west up
2398 redstone_wire south none east side north side power 7 west side
2399 redstone_wire south none east side north side power 7 west none
2400 redstone_wire south up east side north side power 8 west up
2401 redstone_wire south up east side north side power 8 west side
2402 redstone_wire south up east side north side power 8 west none
2403 redstone_wire south side east side north side power 8 west up
2404 redstone_wire south side east side north side power 8 west side
2405 redstone_wire south side east side north side power 8 west none
2406 redstone_wire south none east side north side power 8 west up
2407 redstone_wire south none east side north side power 8 west side
2408 redstone_wire south none east side north side power 8 west none
2409 redstone_wire south up east side north side power 9 west up
2410 redstone_wire south up east side north side power 9 west side
2411 redstone_wire south up east side north side power 9 west none
2412 redstone_wire south side east side north side power 9 west up
2413 redstone_wire south side east side north side power 9 west side
2414 redstone_wire south side east side north side power 9 west none
2415 redstone_wire south none east side north side power 9 west up
2416 redstone_wire south none east side north side power 9 west side
2417 redstone_wire south none east side north side power 9 west none
2418 redstone_wire south up east side north side power 10 west up
2419 redstone_wire south up east side north side power 10 west side
2420 redstone_wire south up east side north side power 10 west none
2421 redstone_wire south side east side north side power 10 west up
2422 redstone_wire south side east side north side power 10 west side
2423 redstone_wire south side east side north side power 10 west none
2424 redstone_wire south none east side north side power 10 west up
2425 redstone_wire south none east side north side power 10 west side
2426 redstone_wire south none east side north side power 10 west none
2427 redstone_wire south up east side north side power 11 west up
2428 redstone_wire south up east side north side power 11 west side
2429 redstone_wire south up east side north side power 11 west none
2430 redstone_wire south side east side north side power 11 west up
2431 redstone_wire south side east side north side power 11 west side
2432 redstone_wire south side east side north side power 11 west none
2433 redstone_wire south none east side north side power 11 west up
2434 redstone_wire south none east side north side power 11 west side
2435 redstone_wire south none east side north side power 11 west none
2436 redstone_wire south up east side north side power 12 west up
2437 redstone_wire south up east side north side power 12 west side
2438 redstone_wire south up east side north side power 12 west none
2439 redstone_wire south side east side north side power 12 west up
2440 redstone_wire south side east side north side power 12 west side
2441 redstone_wire south side east side north side power 12 west none
2442 redstone_wire south none east side north side power 12 west up
2443 redstone_wire south none east side north side power 12 west side
2444 redstone_wire south none east side north side power 12 west none
2445 redstone_wire south up east side north side power 13 west up
2446 redstone_wire south up east side north side power 13 west side
2447 redstone_wire south up east side north side power 13 west none
2448 redstone_wire south side east side north side power 13 west up
2449 redstone_wire south side east side north side power 13 west side
2450 redstone_wire south side east side north side power 13 west none
2451 redstone_wire south none east side north side power 13 west up
2452 redstone_wire south none east side north side power 13 west side
2453 redstone_wire south none east side north side power 13 west none
2454 redstone_wire south up east side north side power 14 west up
2455 redstone_wire south up east side north side power 14 west side
2456 redstone_wire south up east side north side power 14 west none
2457 redstone_wire south side east side north side power 14 west up
2458 redstone_wire south side east side north side power 14 west side
2459 redstone_wire south side east side north side power 14 west none
2460 redstone_wire south none east side north side power 14 west up
2461 redstone_wire south none east side north side power 14 west side
2462 redstone_wire south none east side north side power 14 west none
2463 redstone_wire south up east side north side power 15 west up
2464 redstone_wire south up east side north side power 15 west side
2465 redstone_wire south up east side north side power 15 west none
2466 redstone_wire south side east side north side power 15 west up
2467 redstone_wire south side east side north side power 15 west side
2468 redstone_wire south side east side north side power 15 west none
2469 redstone_wire south none east side north side power 15 west up
2470 redstone_wire south none east side north side power 15 west side
2471 redstone_wire south none east side north side power 15 west none
2472 redstone_wire south up east side north none power 0 west up
2473 redstone_wire south up east side north none power 0 west side
2474 redstone_wire south up east side north none power 0 west none
2475 redstone_wire south side east side north none power 0 west up
2476 redstone_wire south side east side north none power 0 west side
2477 redstone_wire south side east side north none power 0 west none
2478 redstone_wire south none east side north none power 0 west up
2479 redstone_wire south none east side north none power 0 west side
2480 redstone_wire south none east side north none power 0 west none
2481 redstone_wire south up east side north none power 1 west up
2482 redstone_wire south up east side north none power 1 west side
2483 redstone_wire south up east side north none power 1 west none
2484 redstone_wire south side east side north none power 1 west up
2485 redstone_wire south side east side north none power 1 west side
2486 redstone_wire south side east side north none power 1 west none
2487 redstone_wire south none east side north none power 1 west up
2488 redstone_wire south none east side north none power 1 west side
2489 redstone_wire south none east side north none power 1 west none
2490 redstone_wire south up east side north none power 2 west up
2491 redstone_wire south up east side north none power 2 west side
2492 redstone_wire south up east side north none power 2 west none
2493 redstone_wire south side east side north none power 2 west up
2494 redstone_wire south side east side north none power 2 west side
2495 redstone_wire south side east side north none power 2 west none
2496 redstone_wire south none east side north none power 2 west up
2497 redstone_wire south none east side north none power 2 west side
2498 redstone_wire south none east side north none power 2 west none
2499 redstone_wire south up east side north none power 3 west up
2500 redstone_wire south up east side north none power 3 west side
2501 redstone_wire south up east side north none power 3 west none
2502 redstone_wire south side east side north none power 3 west up
2503 redstone_wire south side east side north none power 3 west side
2504 redstone_wire south side east side north none power 3 west none
2505 redstone_wire south none east side north none power 3 west up
2506 redstone_wire south none east side north none power 3 west side
2507 redstone_wire south none east side north none power 3 west none
2508 redstone_wire south up east side north none power 4 west up
2509 redstone_wire south up east side north none power 4 west side
2510 redstone_wire south up east side north none power 4 west none
2511 redstone_wire south side east side north none power 4 west up
2512 redstone_wire south side east side north none power 4 west side
2513 redstone_wire south side east side north none power 4 west none
2514 redstone_wire south none east side north none power 4 west up
2515 redstone_wire south none east side north none power 4 west side
2516 redstone_wire south none east side north none power 4 west none
2517 redstone_wire south up east side north none power 5 west up
2518 redstone_wire south up east side north none power 5 west side
2519 redstone_wire south up east side north none power 5 west none
2520 redstone_wire south side east side north none power 5 west up
2521 redstone_wire south side east side north none power 5 west side
2522 redstone_wire south side east side north none power 5 west none
2523 redstone_wire south none east side north none power 5 west up
2524 redstone_wire south none east side north none power 5 west side
2525 redstone_wire south none east side north none power 5 west none
2526 redstone_wire south up east side north none power 6 west up
2527 redstone_wire south up east side north none power 6 west side
2528 redstone_wire south up east side north none power 6 west none
2529 redstone_wire south side east side north none power 6 west up
2530 redstone_wire south side east side north none power 6 west side
2531 redstone_wire south side east side north none power 6 west none
2532 redstone_wire south none east side north none power 6 west up
2533 redstone_wire south none east side north none power 6 west side
2534 redstone_wire south none east side north none power 6 west none
2535 redstone_wire south up east side north none power 7 west up
2536 redstone_wire south up east side north none power 7 west side
2537 redstone_wire south up east side north none power 7 west none
2538 redstone_wire south side east side north none power 7 west up
2539 redstone_wire south side east side north none power 7 west side
2540 redstone_wire south side east side north none power 7 west none
2541 redstone_wire south none east side north none power 7 west up
2542 redstone_wire south none east side north none power 7 west side
2543 redstone_wire south none east side north none power 7 west none
2544 redstone_wire south up east side north none power 8 west up
2545 redstone_wire south up east side north none power 8 west side
2546 redstone_wire south up east side north none power 8 west none
2547 redstone_wire south side east side north none power 8 west up
2548 redstone_wire south side east side north none power 8 west side
2549 redstone_wire south side east side north none power 8 west none
2550 redstone_wire south none east side north none power 8 west up
2551 redstone_wire south none east side north none power 8 west side
2552 redstone_wire south none east side north none power 8 west none
2553 redstone_wire south up east side north none power 9 west up
2554 redstone_wire south up east side north none power 9 west side
2555 redstone_wire south up east side north none power 9 west none
2556 redstone_wire south side east side north none power 9 west up
2557 redstone_wire south side east side north none power 9 west side
2558 redstone_wire south side east side north none power 9 west none
2559 redstone_wire south none east side north none power 9 west up
2560 redstone_wire south none east side north none power 9 west side
2561 redstone_wire south none east side north none power 9 west none
2562 redstone_wire south up east side north none power 10 west up
2563 redstone_wire south up east side north none power 10 west side
2564 redstone_wire south up east side north none power 10 west none
2565 redstone_wire south side east side north none power 10 west up
2566 redstone_wire south side east side north none power 10 west side
2567 redstone_wire south side east side north none power 10 west none
2568 redstone_wire south none east side north none power 10 west up
2569 redstone_wire south none east side north none power 10 west side
2570 redstone_wire south none east side north none power 10 west none
2571 redstone_wire south up east side north none power 11 west up
2572 redstone_wire south up east side north none power 11 west side
2573 redstone_wire south up east side north none power 11 west none
2574 redstone_wire south side east side north none power 11 west up
2575 redstone_wire south side east side north none power 11 west side
2576 redstone_wire south side east side north none power 11 west none
2577 redstone_wire south none east side north none power 11 west up
2578 redstone_wire south none east side north none power 11 west side
2579 redstone_wire south none east side north none power 11 west none
2580 redstone_wire south up east side north none power 12 west up
2581 redstone_wire south up east side north none power 12 west side
2582 redstone_wire south up east side north none power 12 west none
2583 redstone_wire south side east side north none power 12 west up
2584 redstone_wire south side east side north none power 12 west side
2585 redstone_wire south side east side north none power 12 west none
2586 redstone_wire south none east side north none power 12 west up
2587 redstone_wire south none east side north none power 12 west side
2588 redstone_wire south none east side north none power 12 west none
2589 redstone_wire south up east side north none power 13 west up
2590 redstone_wire south up east side north none power 13 west side
2591 redstone_wire south up east side north none power 13 west none
2592 redstone_wire south side east side north none power 13 west up
2593 redstone_wire south side east side north none power 13 west side
2594 redstone_wire south side east side north none power 13 west none
2595 redstone_wire south none east side north none power 13 west up
2596 redstone_wire south none east side north none power 13 west side
2597 redstone_wire south none east side north none power 13 west none
2598 redstone_wire south up east side north none power 14 west up
2599 redstone_wire south up east side north none power 14 west side
2600 redstone_wire south up east side north none power 14 west none
2601 redstone_wire south side east side north none power 14 west up
2602 redstone_wire south side east side north none power 14 west side
2603 redstone_wire south side east side north none power 14 west none
2604 redstone_wire south none east side north none power 14 west up
2605 redstone_wire south none east side north none power 14 west side
2606 redstone_wire south none east side north none power 14 west none
2607 redstone_wire south up east side north none power 15 west up
2608 redstone_wire south up east side north none power 15 west side
2609 redstone_wire south up east side north none power 15 west none
2610 redstone_wire south side east side north none power 15 west up
2611 redstone_wire south side east side north none power 15 west side
2612 redstone_wire south side east side north none power 15 west none
2613 redstone_wire south none east side north none power 15 west up
2614 redstone_wire south none east side north none power 15 west side
2615 redstone_wire south none east side north none power 15 west none
2616 redstone_wire south up east none north up power 0 west up
2617 redstone_wire south up east none north up power 0 west side
2618 redstone_wire south up east none north up power 0 west none
2619 redstone_wire south side east none north up power 0 west up
2620 redstone_wire south side east none north up power 0 west side
2621 redstone_wire south side east none north up power 0 west none
2622 redstone_wire south none east none north up power 0 west up
2623 redstone_wire south none east none north up power 0 west side
2624 redstone_wire south none east none north up power 0 west none
2625 redstone_wire south up east none north up power 1 west up
2626 redstone_wire south up east none north up power 1 west side
2627 redstone_wire south up east none north up power 1 west none
2628 redstone_wire south side east none north up power 1 west up
2629 redstone_wire south side east none north up power 1 west side
2630 redstone_wire south side east none north up power 1 west none
2631 redstone_wire south none east none north up power 1 west up
2632 redstone_wire south none east none north up power 1 west side
2633 redstone_wire south none east none north up power 1 west none
2634 redstone_wire south up east none north up power 2 west up
2635 redstone_wire south up east none north up power 2 west side
2636 redstone_wire south up east none north up power 2 west none
2637 redstone_wire south side east none north up power 2 west up
2638 redstone_wire south side east none north up power 2 west side
2639 redstone_wire south side east none north up power 2 west none
2640 redstone_wire south none east none north up power 2 west up
2641 redstone_wire south none east none north up power 2 west side
2642 redstone_wire south none east none north up power 2 west none
2643 redstone_wire south up east none north up power 3 west up
2644 redstone_wire south up east none north up power 3 west side
2645 redstone_wire south up east none north up power 3 west none
2646 redstone_wire south side east none north up power 3 west up
2647 redstone_wire south side east none north up power 3 west side
2648 redstone_wire south side east none north up power 3 west none
2649 redstone_wire south none east none north up power 3 west up
2650 redstone_wire south none east none north up power 3 west side
2651 redstone_wire south none east none north up power 3 west none
2652 redstone_wire south up east none north up power 4 west up
2653 redstone_wire south up east none north up power 4 west side
2654 redstone_wire south up east none north up power 4 west none
2655 redstone_wire south side east none north up power 4 west up
2656 redstone_wire south side east none north up power 4 west side
2657 redstone_wire south side east none north up power 4 west none
2658 redstone_wire south none east none north up power 4 west up
2659 redstone_wire south none east none north up power 4 west side
2660 redstone_wire south none east none north up power 4 west none
2661 redstone_wire south up east none north up power 5 west up
2662 redstone_wire south up east none north up power 5 west side
2663 redstone_wire south up east none north up power 5 west none
2664 redstone_wire south side east none north up power 5 west up
2665 redstone_wire south side east none north up power 5 west side
2666 redstone_wire south side east none north up power 5 west none
2667 redstone_wire south none east none north up power 5 west up
2668 redstone_wire south none east none north up power 5 west side
2669 redstone_wire south none east none north up power 5 west none
2670 redstone_wire south up east none north up power 6 west up
2671 redstone_wire south up east none north up power 6 west side
2672 redstone_wire south up east none north up power 6 west none
2673 redstone_wire south side east none north up power 6 west up
2674 redstone_wire south side east none north up power 6 west side
2675 redstone_wire south side east none north up power 6 west none
2676 redstone_wire south none east none north up power 6 west up
2677 redstone_wire south none east none north up power 6 west side
2678 redstone_wire south none east none north up power 6 west none
2679 redstone_wire south up east none north up power 7 west up
2680 redstone_wire south up east none north up power 7 west side
2681 redstone_wire south up east none north up power 7 west none
2682 redstone_wire south side east none north up power 7 west up
2683 redstone_wire south side east none north up power 7 west side
2684 redstone_wire south side east none north up power 7 west none
2685 redstone_wire south none east none north up power 7 west up
2686 redstone_wire south none east none north up power 7 west side
2687 redstone_wire south none east none north up power 7 west none
2688 redstone_wire south up east none north up power 8 west up
2689 redstone_wire south up east none north up power 8 west side
2690 redstone_wire south up east none north up power 8 west none
2691 redstone_wire south side east none north up power 8 west up
2692 redstone_wire south side east none north up power 8 west side
2693 redstone_wire south side east none north up power 8 west none
2694 redstone_wire south none east none north up power 8 west up
2695 redstone_wire south none east none north up power 8 west side
2696 redstone_wire south none east none north up power 8 west none
2697 redstone_wire south up east none north up power 9 west up
2698 redstone_wire south up east none north up power 9 west side
2699 redstone_wire south up east none north up power 9 west none
2700 redstone_wire south side east none north up power 9 west up
2701 redstone_wire south side east none north up power 9 west side
2702 redstone_wire south side east none north up power 9 west none
2703 redstone_wire south none east none north up power 9 west up
2704 redstone_wire south none east none north up power 9 west side
2705 redstone_wire south none east none north up power 9 west none
2706 redstone_wire south up east none north up power 10 west up
2707 redstone_wire south up east none north up power 10 west side
2708 redstone_wire south up east none north up power 10 west none
2709 redstone_wire south side east none north up power 10 west up
2710 redstone_wire south side east none north up power 10 west side
2711 redstone_wire south side east none north up power 10 west none
2712 redstone_wire south none east none north up power 10 west up
2713 redstone_wire south none east none north up power 10 west side
2714 redstone_wire south none east none north up power 10 west none
2715 redstone_wire south up east none north up power 11 west up
2716 redstone_wire south up east none north up power 11 west side
2717 redstone_wire south up east none north up power 11 west none
2718 redstone_wire south side east none north up power 11 west up
2719 redstone_wire south side east none north up power 11 west side
2720 redstone_wire south side east none north up power 11 west none
2721 redstone_wire south none east none north up power 11 west up
2722 redstone_wire south none east none north up power 11 west side
2723 redstone_wire south none east none north up power 11 west none
2724 redstone_wire south up east none north up power 12 west up
2725 redstone_wire south up east none north up power 12 west side
2726 redstone_wire south up east none north up power 12 west none
2727 redstone_wire south side east none north up power 12 west up
2728 redstone_wire south side east none north up power 12 west side
2729 redstone_wire south side east none north up power 12 west none
2730 redstone_wire south none east none north up power 12 west up
2731 redstone_wire south none east none north up power 12 west side
2732 redstone_wire south none east none north up power 12 west none
2733 redstone_wire south up east none north up power 13 west up
2734 redstone_wire south up east none north up power 13 west side
2735 redstone_wire south up east none north up power 13 west none
2736 redstone_wire south side east none north up power 13 west up
2737 redstone_wire south side east none north up power 13 west side
2738 redstone_wire south side east none north up power 13 west none
2739 redstone_wire south none east none north up power 13 west up
2740 redstone_wire south none east none north up power 13 west side
2741 redstone_wire south none east none north up power 13 west none
2742 redstone_wire south up east none north up power 14 west up
2743 redstone_wire south up east none north up power 14 west side
2744 redstone_wire south up east none north up power 14 west none
2745 redstone_wire south side east none north up power 14 west up
2746 redstone_wire south side east none north up power 14 west side
2747 redstone_wire south side east none north up power 14 west none
2748 redstone_wire south none east none north up power 14 west up
2749 redstone_wire south none east none north up power 14 west side
2750 redstone_wire south none east none north up power 14 west none
2751 redstone_wire south up east none north up power 15 west up
2752 redstone_wire south up east none north up power 15 west side
2753 redstone_wire south up east none north up power 15 west none
2754 redstone_wire south side east none north up power 15 west up
2755 redstone_wire south side east none north up power 15 west side
2756 redstone_wire south side east none north up power 15 west none
2757 redstone_wire south none east none north up power 15 west up
2758 redstone_wire south none east none north up power 15 west side
2759 redstone_wire south none east none north up power 15 west none
2760 redstone_wire south up east none north side power 0 west up
2761 redstone_wire south up east none north side power 0 west side
2762 redstone_wire south up east none north side power 0 west none
2763 redstone_wire south side east none north side power 0 west up
2764 redstone_wire south side east none north side power 0 west side
2765 redstone_wire south side east none north side power 0 west none
2766 redstone_wire south none east none north side power 0 west up
2767 redstone_wire south none east none north side power 0 west side
2768 redstone_wire south none east none north side power 0 west none
2769 redstone_wire south up east none north side power 1 west up
2770 redstone_wire south up east none north side power 1 west side
2771 redstone_wire south up east none north side power 1 west none
2772 redstone_wire south side east none north side power 1 west up
2773 redstone_wire south side east none north side power 1 west side
2774 redstone_wire south side east none north side power 1 west none
2775 redstone_wire south none east none north side power 1 west up
2776 redstone_wire south none east none north side power 1 west side
2777 redstone_wire south none east none north side power 1 west none
2778 redstone_wire south up east none north side power 2 west up
2779 redstone_wire south up east none north side power 2 west side
2780 redstone_wire south up east none north side power 2 west none
2781 redstone_wire south side east none north side power 2 west up
2782 redstone_wire south side east none north side power 2 west side
2783 redstone_wire south side east none north side power 2 west none
2784 redstone_wire south none east none north side power 2 west up
2785 redstone_wire south none east none north side power 2 west side
2786 redstone_wire south none east none north side power 2 west none
2787 redstone_wire south up east none north side power 3 west up
2788 redstone_wire south up east none north side power 3 west side
2789 redstone_wire south up east none north side power 3 west none
2790 redstone_wire south side east none north side power 3 west up
2791 redstone_wire south side east none north side power 3 west side
2792 redstone_wire south side east none north side power 3 west none
2793 redstone_wire south none east none north side power 3 west up
2794 redstone_wire south none east none north side power 3 west side
2795 redstone_wire south none east none north side power 3 west none
2796 redstone_wire south up east none north side power 4 west up
2797 redstone_wire south up east none north side power 4 west side
2798 redstone_wire south up east none north side power 4 west none
2799 redstone_wire south side east none north side power 4 west up
2800 redstone_wire south side east none north side power 4 west side
2801 redstone_wire south side east none north side power 4 west none
2802 redstone_wire south none east none north side power 4 west up
2803 redstone_wire south none east none north side power 4 west side
2804 redstone_wire south none east none north side power 4 west none
2805 redstone_wire south up east none north side power 5 west up
2806 redstone_wire south up east none north side power 5 west side
2807 redstone_wire south up east none north side power 5 west none
2808 redstone_wire south side east none north side power 5 west up
2809 redstone_wire south side east none north side power 5 west side
2810 redstone_wire south side east none north side power 5 west none
2811 redstone_wire south none east none north side power 5 west up
2812 redstone_wire south none east none north side power 5 west side
2813 redstone_wire south none east none north side power 5 west none
2814 redstone_wire south up east none north side power 6 west up
2815 redstone_wire south up east none north side power 6 west side
2816 redstone_wire south up east none north side power 6 west none
2817 redstone_wire south side east none north side power 6 west up
2818 redstone_wire south side east none north side power 6 west side
2819 redstone_wire south side east none north side power 6 west none
2820 redstone_wire south none east none north side power 6 west up
2821 redstone_wire south none east none north side power 6 west side
2822 redstone_wire south none east none north side power 6 west none
2823 redstone_wire south up east none north side power 7 west up
2824 redstone_wire south up east none north side power 7 west side
2825 redstone_wire south up east none north side power 7 west none
2826 redstone_wire south side east none north side power 7 west up
2827 redstone_wire south side east none north side power 7 west side
2828 redstone_wire south side east none north side power 7 west none
2829 redstone_wire south none east none north side power 7 west up
2830 redstone_wire south none east none north side power 7 west side
2831 redstone_wire south none east none north side power 7 west none
2832 redstone_wire south up east none north side power 8 west up
2833 redstone_wire south up east none north side power 8 west side
2834 redstone_wire south up east none north side power 8 west none
2835 redstone_wire south side east none north side power 8 west up
2836 redstone_wire south side east none north side power 8 west side
2837 redstone_wire south side east none north side power 8 west none
2838 redstone_wire south none east none north side power 8 west up
2839 redstone_wire south none east none north side power 8 west side
2840 redstone_wire south none east none north side power 8 west none
2841 redstone_wire south up east none north side power 9 west up
2842 redstone_wire south up east none north side power 9 west side
2843 redstone_wire south up east none north side power 9 west none
2844 redstone_wire south side east none north side power 9 west up
2845 redstone_wire south side east none north side power 9 west side
2846 redstone_wire south side east none north side power 9 west none
2847 redstone_wire south none east none north side power 9 west up
2848 redstone_wire south none east none north side power 9 west side
2849 redstone_wire south none east none north side power 9 west none
2850 redstone_wire south up east none north side power 10 west up
2851 redstone_wire south up east none north side power 10 west side
2852 redstone_wire south up east none north side power 10 west none
2853 redstone_wire south side east none north side power 10 west up
2854 redstone_wire south side east none north side power 10 west side
2855 redstone_wire south side east none north side power 10 west none
2856 redstone_wire south none east none north side power 10 west up
2857 redstone_wire south none east none north side power 10 west side
2858 redstone_wire south none east none north side power 10 west none
2859 redstone_wire south up east none north side power 11 west up
2860 redstone_wire south up east none north side power 11 west side
2861 redstone_wire south up east none north side power 11 west none
2862 redstone_wire south side east none north side power 11 west up
2863 redstone_wire south side east none north side power 11 west side
2864 redstone_wire south side east none north side power 11 west none
2865 redstone_wire south none east none north side power 11 west up
2866 redstone_wire south none east none north side power 11 west side
2867 redstone_wire south none east none north side power 11 west none
2868 redstone_wire south up east none north side power 12 west up
2869 redstone_wire south up east none north side power 12 west side
2870 redstone_wire south up east none north side power 12 west none
2871 redstone_wire south side east none north side power 12 west up
2872 redstone_wire south side east none north side power 12 west side
2873 redstone_wire south side east none north side power 12 west none
2874 redstone_wire south none east none north side power 12 west up
2875 redstone_wire south none east none north side power 12 west side
2876 redstone_wire south none east none north side power 12 west none
2877 redstone_wire south up east none north side power 13 west up
2878 redstone_wire south up east none north side power 13 west side
2879 redstone_wire south up east none north side power 13 west none
2880 redstone_wire south side east none north side power 13 west up
2881 redstone_wire south side east none north side power 13 west side
2882 redstone_wire south side east none north side power 13 west none
2883 redstone_wire south none east none north side power 13 west up
2884 redstone_wire south none east none north side power 13 west side
2885 redstone_wire south none east none north side power 13 west none
2886 redstone_wire south up east none north side power 14 west up
2887 redstone_wire south up east none north side power 14 west side
2888 redstone_wire south up east none north side power 14 west none
2889 redstone_wire south side east none north side power 14 west up
2890 redstone_wire south side east none north side power 14 west side
2891 redstone_wire south side east none north side power 14 west none
2892 redstone_wire south none east none north side power 14 west up
2893 redstone_wire south none east none north side power 14 west side
2894 redstone_wire south none east none north side power 14 west none
2895 redstone_wire south up east none north side power 15 west up
2896 redstone_wire south up east none north side power 15 west side
2897 redstone_wire south up east none north side power 15 west none
2898 redstone_wire south side east none north side power 15 west up
2899 redstone_wire south side east none north side power 15 west side
2900 redstone_wire south side east none north side power 15 west none
2901 redstone_wire south none east none north side power 15 west up
2902 redstone_wire south none east none north side power 15 west side
2903 redstone_wire south none east none north side power 15 west none
2904 redstone_wire south up east none north none power 0 west up
2905 redstone_wire south up east none north none power 0 west side
2906 redstone_wire south up east none north none power 0 west none
2907 redstone_wire south side east none north none power 0 west up
2908 redstone_wire south side east none north none power 0 west side
2909 redstone_wire south side east none north none power 0 west none
2910 redstone_wire south none east none north none power 0 west up
2911 redstone_wire south none east none north none power 0 west side
2912 redstone_wire south none east none north none power 0 west none
2913 redstone_wire south up east none north none power 1 west up
2914 redstone_wire south up east none north none power 1 west side
2915 redstone_wire south up east none north none power 1 west none
2916 redstone_wire south side east none north none power 1 west up
2917 redstone_wire south side east none north none power 1 west side
2918 redstone_wire south side east none north none power 1 west none
2919 redstone_wire south none east none north none power 1 west up
2920 redstone_wire south none east none north none power 1 west side
2921 redstone_wire south none east none north none power 1 west none
2922 redstone_wire south up east none north none power 2 west up
2923 redstone_wire south up east none north none power 2 west side
2924 redstone_wire south up east none north none power 2 west none
2925 redstone_wire south side east none north none power 2 west up
2926 redstone_wire south side east none north none power 2 west side
2927 redstone_wire south side east none north none power 2 west none
2928 redstone_wire south none east none north none power 2 west up
2929 redstone_wire south none east none north none power 2 west side
2930 redstone_wire south none east none north none power 2 west none
2931 redstone_wire south up east none north none power 3 west up
2932 redstone_wire south up east none north none power 3 west side
2933 redstone_wire south up east none north none power 3 west none
2934 redstone_wire south side east none north none power 3 west up
2935 redstone_wire south side east none north none power 3 west side
2936 redstone_wire south side east none north none power 3 west none
2937 redstone_wire south none east none north none power 3 west up
2938 redstone_wire south none east none north none power 3 west side
2939 redstone_wire south none east none north none power 3 west none
2940 redstone_wire south up east none north none power 4 west up
2941 redstone_wire south up east none north none power 4 west side
2942 redstone_wire south up east none north none power 4 west none
2943 redstone_wire south side east none north none power 4 west up
2944 redstone_wire south side east none north none power 4 west side
2945 redstone_wire south side east none north none power 4 west none
2946 redstone_wire south none east none north none power 4 west up
2947 redstone_wire south none east none north none power 4 west side
2948 redstone_wire south none east none north none power 4 west none
2949 redstone_wire south up east none north none power 5 west up
2950 redstone_wire south up east none north none power 5 west side
2951 redstone_wire south up east none north none power 5 west none
2952 redstone_wire south side east none north none power 5 west up
2953 redstone_wire south side east none north none power 5 west side
2954 redstone_wire south side east none north none power 5 west none
2955 redstone_wire south none east none north none power 5 west up
2956 redstone_wire south none east none north none power 5 west side
2957 redstone_wire south none east none north none power 5 west none
2958 redstone_wire south up east none north none power 6 west up
2959 redstone_wire south up east none north none power 6 west side
2960 redstone_wire south up east none north none power 6 west none
2961 redstone_wire south side east none north none power 6 west up
2962 redstone_wire south side east none north none power 6 west side
2963 redstone_wire south side east none north none power 6 west none
2964 redstone_wire south none east none north none power 6 west up
2965 redstone_wire south none east none north none power 6 west side
2966 redstone_wire south none east none north none power 6 west none
2967 redstone_wire south up east none north none power 7 west up
2968 redstone_wire south up east none north none power 7 west side
2969 redstone_wire south up east none north none power 7 west none
2970 redstone_wire south side east none north none power 7 west up
2971 redstone_wire south side east none north none power 7 west side
2972 redstone_wire south side east none north none power 7 west none
2973 redstone_wire south none east none north none power 7 west up
2974 redstone_wire south none east none north none power 7 west side
2975 redstone_wire south none east none north none power 7 west none
2976 redstone_wire south up east none north none power 8 west up
2977 redstone_wire south up east none north none power 8 west side
2978 redstone_wire south up east none north none power 8 west none
2979 redstone_wire south side east none north none power 8 west up
2980 redstone_wire south side east none north none power 8 west side
2981 redstone_wire south side east none north none power 8 west none
2982 redstone_wire south none east none north none power 8 west up
2983 redstone_wire south none east none north none power 8 west side
2984 redstone_wire south none east none north none power 8 west none
2985 redstone_wire south up east none north none power 9 west up
2986 redstone_wire south up east none north none power 9 west side
2987 redstone_wire south up east none north none power 9 west none
2988 redstone_wire south side east none north none power 9 west up
2989 redstone_wire south side east none north none power 9 west side
2990 redstone_wire south side east none north none power 9 west none
2991 redstone_wire south none east none north none power 9 west up
2992 redstone_wire south none east none north none power 9 west side
2993 redstone_wire south none east none north none power 9 west none
2994 redstone_wire south up east none north none power 10 west up
2995 redstone_wire south up east none north none power 10 west side
2996 redstone_wire south up east none north none power 10 west none
2997 redstone_wire south side east none north none power 10 west up
2998 redstone_wire south side east none north none power 10 west side
2999 redstone_wire south side east none north none power 10 west none
3000 redstone_wire south none east none north none power 10 west up
3001 redstone_wire south none east none north none power 10 west side
3002 redstone_wire south none east none north none power 10 west none
3003 redstone_wire south up east none north none power 11 west up
3004 redstone_wire south up east none north none power 11 west side
3005 redstone_wire south up east none north none power 11 west none
3006 redstone_wire south side east none north none power 11 west up
3007 redstone_wire south side east none north none power 11 west side
3008 redstone_wire south side east none north none power 11 west none
3009 redstone_wire south none east none north none power 11 west up
3010 redstone_wire south none east none north none power 11 west side
3011 redstone_wire south none east none north none power 11 west none
3012 redstone_wire south up east none north none power 12 west up
3013 redstone_wire south up east none north none power 12 west side
3014 redstone_wire south up east none north none power 12 west none
3015 redstone_wire south side east none north none power 12 west up
3016 redstone_wire south side east none north none power 12 west side
3017 redstone_wire south side east none north none power 12 west none
3018 redstone_wire south none east none north none power 12 west up
3019 redstone_wire south none east none north none power 12 west side
3020 redstone_wire south none east none north none power 12 west none
3021 redstone_wire south up east none north none power 13 west up
3022 redstone_wire south up east none north none power 13 west side
3023 redstone_wire south up east none north none power 13 west none
3024 redstone_wire south side east none north none power 13 west up
3025 redstone_wire south side east none north none power 13 west side
3026 redstone_wire south side east none north none power 13 west none
3027 redstone_wire south none east none north none power 13 west up
3028 redstone_wire south none east none north none power 13 west side
3029 redstone_wire south none east none north none power 13 west none
3030 redstone_wire south up east none north none power 14 west up
3031 redstone_wire south up east none north none power 14 west side
3032 redstone_wire south up east none north none power 14 west none
3033 redstone_wire south side east none north none power 14 west up
3034 redstone_wire south side east none north none power 14 west side
3035 redstone_wire south side east none north none power 14 west none
3036 redstone_wire south none east none north none power 14 west up
3037 redstone_wire south none east none north none power 14 west side
3038 redstone_wire south none east none north none power 14 west none
3039 redstone_wire south up east none north none power 15 west up
3040 redstone_wire south up east none north none power 15 west side
3041 redstone_wire south up east none north none power 15 west none
3042 redstone_wire south side east none north none power 15 west up
3043 redstone_wire south side east none north none power 15 west side
3044 redstone_wire south side east none north none power 15 west none
3045 redstone_wire south none east none north none power 15 west up
3046 redstone_wire south none east none north none power 15 west side
3047 redstone_wire south none east none north none power 15 west none
3048 diamond_ore
3049 diamond_block
3050 crafting_table
3051 wheat age 0
3052 wheat age 1
3053 wheat age 2
3054 wheat age 3
3055 wheat age 4
3056 wheat age 5
3057 wheat age 6
3058 wheat age 7
3059 farmland moisture 0
3060 farmland moisture 1
3061 farmland moisture 2
3062 farmland moisture 3
3063 farmland moisture 4
3064 farmland moisture 5
3065 farmland moisture 6
3066 farmland moisture 7
3067 furnace facing north lit true
3068 furnace facing north lit false
3069 furnace facing south lit true
3070 furnace facing south lit false
3071 furnace facing west lit true
3072 furnace facing west lit false
3073 furnace facing east lit true
3074 furnace facing east lit false
3075 sign waterlogged true rotation 0
3076 sign waterlogged false rotation 0
3077 sign waterlogged true rotation 1
3078 sign waterlogged false rotation 1
3079 sign waterlogged true rotation 2
3080 sign waterlogged false rotation 2
3081 sign waterlogged true rotation 3
3082 sign waterlogged false rotation 3
3083 sign waterlogged true rotation 4
3084 sign waterlogged false rotation 4
3085 sign waterlogged true rotation 5
3086 sign waterlogged false rotation 5
3087 sign waterlogged true rotation 6
3088 sign waterlogged false rotation 6
3089 sign waterlogged true rotation 7
3090 sign waterlogged false rotation 7
3091 sign waterlogged true rotation 8
3092 sign waterlogged false rotation 8
3093 sign waterlogged true rotation 9
3094 sign waterlogged false rotation 9
3095 sign waterlogged true rotation 10
3096 sign waterlogged false rotation 10
3097 sign waterlogged true rotation 11
3098 sign waterlogged false rotation 11
3099 sign waterlogged true rotation 12
3100 sign waterlogged false rotation 12
3101 sign waterlogged true rotation 13
3102 sign waterlogged false rotation 13
3103 sign waterlogged true rotation 14
3104 sign waterlogged false rotation 14
3105 sign waterlogged true rotation 15
3106 sign waterlogged false rotation 15
3107 oak_door hinge left half upper facing north powered true open true
3108 oak_door hinge left half upper facing north powered false open true
3109 oak_door hinge left half upper facing north powered true open false
3110 oak_door hinge left half upper facing north powered false open false
3111 oak_door hinge right half upper facing north powered true open true
3112 oak_door hinge right half upper facing north powered false open true
3113 oak_door hinge right half upper facing north powered true open false
3114 oak_door hinge right half upper facing north powered false open false
3115 oak_door hinge left half lower facing north powered true open true
3116 oak_door hinge left half lower facing north powered false open true
3117 oak_door hinge left half lower facing north powered true open false
3118 oak_door hinge left half lower facing north powered false open false
3119 oak_door hinge right half lower facing north powered true open true
3120 oak_door hinge right half lower facing north powered false open true
3121 oak_door hinge right half lower facing north powered true open false
3122 oak_door hinge right half lower facing north powered false open false
3123 oak_door hinge left half upper facing south powered true open true
3124 oak_door hinge left half upper facing south powered false open true
3125 oak_door hinge left half upper facing south powered true open false
3126 oak_door hinge left half upper facing south powered false open false
3127 oak_door hinge right half upper facing south powered true open true
3128 oak_door hinge right half upper facing south powered false open true
3129 oak_door hinge right half upper facing south powered true open false
3130 oak_door hinge right half upper facing south powered false open false
3131 oak_door hinge left half lower facing south powered true open true
3132 oak_door hinge left half lower facing south powered false open true
3133 oak_door hinge left half lower facing south powered true open false
3134 oak_door hinge left half lower facing south powered false open false
3135 oak_door hinge right half lower facing south powered true open true
3136 oak_door hinge right half lower facing south powered false open true
3137 oak_door hinge right half lower facing south powered true open false
3138 oak_door hinge right half lower facing south powered false open false
3139 oak_door hinge left half upper facing west powered true open true
3140 oak_door hinge left half upper facing west powered false open true
3141 oak_door hinge left half upper facing west powered true open false
3142 oak_door hinge left half upper facing west powered false open false
3143 oak_door hinge right half upper facing west powered true open true
3144 oak_door hinge right half upper facing west powered false open true
3145 oak_door hinge right half upper facing west powered true open false
3146 oak_door hinge right half upper facing west powered false open false
3147 oak_door hinge left half lower facing west powered true open true
3148 oak_door hinge left half lower facing west powered false open true
3149 oak_door hinge left half lower facing west powered true open false
3150 oak_door hinge left half lower facing west powered false open false
3151 oak_door hinge right half lower facing west powered true open true
3152 oak_door hinge right half lower facing west powered false open true
3153 oak_door hinge right half lower facing west powered true open false
3154 oak_door hinge right half lower facing west powered false open false
3155 oak_door hinge left half upper facing east powered true open true
3156 oak_door hinge left half upper facing east powered false open true
3157 oak_door hinge left half upper facing east powered true open false
3158 oak_door hinge left half upper facing east powered false open false
3159 oak_door hinge right half upper facing east powered true open true
3160 oak_door hinge right half upper facing east powered false open true
3161 oak_door hinge right half upper facing east powered true open false
3162 oak_door hinge right half upper facing east powered false open false
3163 oak_door hinge left half lower facing east powered true open true
3164 oak_door hinge left half lower facing east powered false open true
3165 oak_door hinge left half lower facing east powered true open false
3166 oak_door hinge left half lower facing east powered false open false
3167 oak_door hinge right half lower facing east powered true open true
3168 oak_door hinge right half lower facing east powered false open true
3169 oak_door hinge right half lower facing east powered true open false
3170 oak_door hinge right half lower facing east powered false open false
3171 ladder facing north waterlogged true
3172 ladder facing north waterlogged false
3173 ladder facing south waterlogged true
3174 ladder facing south waterlogged false
3175 ladder facing west waterlogged true
3176 ladder facing west waterlogged false
3177 ladder facing east waterlogged true
3178 ladder facing east waterlogged false
3179 rail shape north_south
3180 rail shape east_west
3181 rail shape ascending_east
3182 rail shape ascending_west
3183 rail shape ascending_north
3184 rail shape ascending_south
3185 rail shape south_east
3186 rail shape south_west
3187 rail shape north_west
3188 rail shape north_east
3189 cobblestone_stairs facing north waterlogged true shape straight half top
3190 cobblestone_stairs facing north waterlogged false shape straight half top
3191 cobblestone_stairs facing north waterlogged true shape inner_left half top
3192 cobblestone_stairs facing north waterlogged false shape inner_left half top
3193 cobblestone_stairs facing north waterlogged true shape inner_right half top
3194 cobblestone_stairs facing north waterlogged false shape inner_right half top
3195 cobblestone_stairs facing north waterlogged true shape outer_left half top
3196 cobblestone_stairs facing north waterlogged false shape outer_left half top
3197 cobblestone_stairs facing north waterlogged true shape outer_right half top
3198 cobblestone_stairs facing north waterlogged false shape outer_right half top
3199 cobblestone_stairs facing north waterlogged true shape straight half bottom
3200 cobblestone_stairs facing north waterlogged false shape straight half bottom
3201 cobblestone_stairs facing north waterlogged true shape inner_left half bottom
3202 cobblestone_stairs facing north waterlogged false shape inner_left half bottom
3203 cobblestone_stairs facing north waterlogged true shape inner_right half bottom
3204 cobblestone_stairs facing north waterlogged false shape inner_right half bottom
3205 cobblestone_stairs facing north waterlogged true shape outer_left half bottom
3206 cobblestone_stairs facing north waterlogged false shape outer_left half bottom
3207 cobblestone_stairs facing north waterlogged true shape outer_right half bottom
3208 cobblestone_stairs facing north waterlogged false shape outer_right half bottom
3209 cobblestone_stairs facing south waterlogged true shape straight half top
3210 cobblestone_stairs facing south waterlogged false shape straight half top
3211 cobblestone_stairs facing south waterlogged true shape inner_left half top
3212 cobblestone_stairs facing south waterlogged false shape inner_left half top
3213 cobblestone_stairs facing south waterlogged true shape inner_right half top
3214 cobblestone_stairs facing south waterlogged false shape inner_right half top
3215 cobblestone_stairs facing south waterlogged true shape outer_left half top
3216 cobblestone_stairs facing south waterlogged false shape outer_left half top
3217 cobblestone_stairs facing south waterlogged true shape outer_right half top
3218 cobblestone_stairs facing south waterlogged false shape outer_right half top
3219 cobblestone_stairs facing south waterlogged true shape straight half bottom
3220 cobblestone_stairs facing south waterlogged false shape straight half bottom
3221 cobblestone_stairs facing south waterlogged true shape inner_left half bottom
3222 cobblestone_stairs facing south waterlogged false shape inner_left half bottom
3223 cobblestone_stairs facing south waterlogged true shape inner_right half bottom
3224 cobblestone_stairs facing south waterlogged false shape inner_right half bottom
3225 cobblestone_stairs facing south waterlogged true shape outer_left half bottom
3226 cobblestone_stairs facing south waterlogged false shape outer_left half bottom
3227 cobblestone_stairs facing south waterlogged true shape outer_right half bottom
3228 cobblestone_stairs facing south waterlogged false shape outer_right half bottom
3229 cobblestone_stairs facing west waterlogged true shape straight half top
3230 cobblestone_stairs facing west waterlogged false shape straight half top
3231 cobblestone_stairs facing west waterlogged true shape inner_left half top
3232 cobblestone_stairs facing west waterlogged false shape inner_left half top
3233 cobblestone_stairs facing west waterlogged true shape inner_right half top
3234 cobblestone_stairs facing west waterlogged false shape inner_right half top
3235 cobblestone_stairs facing west waterlogged true shape outer_left half top
3236 cobblestone_stairs facing west waterlogged false shape outer_left half top
3237 cobblestone_stairs facing west waterlogged true shape outer_right half top
3238 cobblestone_stairs facing west waterlogged false shape outer_right half top
3239 cobblestone_stairs facing west waterlogged true shape straight half bottom
3240 cobblestone_stairs facing west waterlogged false shape straight half bottom
3241 cobblestone_stairs facing west waterlogged true shape inner_left half bottom
3242 cobblestone_stairs facing west waterlogged false shape inner_left half bottom
3243 cobblestone_stairs facing west waterlogged true shape inner_right half bottom
3244 cobblestone_stairs facing west waterlogged false shape inner_right half bottom
3245 cobblestone_stairs facing west waterlogged true shape outer_left half bottom
3246 cobblestone_stairs facing west waterlogged false shape outer_left half bottom
3247 cobblestone_stairs facing west waterlogged true shape outer_right half bottom
3248 cobblestone_stairs facing west waterlogged false shape outer_right half bottom
3249 cobblestone_stairs facing east waterlogged true shape straight half top
3250 cobblestone_stairs facing east waterlogged false shape straight half top
3251 cobblestone_stairs facing east waterlogged true shape inner_left half top
3252 cobblestone_stairs facing east waterlogged false shape inner_left half top
3253 cobblestone_stairs facing east waterlogged true shape inner_right half top
3254 cobblestone_stairs facing east waterlogged false shape inner_right half top
3255 cobblestone_stairs facing east waterlogged true shape outer_left half top
3256 cobblestone_stairs facing east waterlogged false shape outer_left half top
3257 cobblestone_stairs facing east waterlogged true shape outer_right half top
3258 cobblestone_stairs facing east waterlogged false shape outer_right half top
3259 cobblestone_stairs facing east waterlogged true shape straight half bottom
3260 cobblestone_stairs facing east waterlogged false shape straight half bottom
3261 cobblestone_stairs facing east waterlogged true shape inner_left half bottom
3262 cobblestone_stairs facing east waterlogged false shape inner_left half bottom
3263 cobblestone_stairs facing east waterlogged true shape inner_right half bottom
3264 cobblestone_stairs facing east waterlogged false shape inner_right half bottom
3265 cobblestone_stairs facing east waterlogged true shape outer_left half bottom
3266 cobblestone_stairs facing east waterlogged false shape outer_left half bottom
3267 cobblestone_stairs facing east waterlogged true shape outer_right half bottom
3268 cobblestone_stairs facing east waterlogged false shape outer_right half bottom
3269 wall_sign facing north waterlogged true
3270 wall_sign facing north waterlogged false
3271 wall_sign facing south waterlogged true
3272 wall_sign facing south waterlogged false
3273 wall_sign facing west waterlogged true
3274 wall_sign facing west waterlogged false
3275 wall_sign facing east waterlogged true
3276 wall_sign facing east waterlogged false
3277 lever facing north face floor powered true
3278 lever facing north face floor powered false
3279 lever facing south face floor powered true
3280 lever facing south face floor powered false
3281 lever facing west face floor powered true
3282 lever facing west face floor powered false
3283 lever facing east face floor powered true
3284 lever facing east face floor powered false
3285 lever facing north face wall powered true
3286 lever facing north face wall powered false
3287 lever facing south face wall powered true
3288 lever facing south face wall powered false
3289 lever facing west face wall powered true
3290 lever facing west face wall powered false
3291 lever facing east face wall powered true
3292 lever facing east face wall powered false
3293 lever facing north face ceiling powered true
3294 lever facing north face ceiling powered false
3295 lever facing south face ceiling powered true
3296 lever facing south face ceiling powered false
3297 lever facing west face ceiling powered true
3298 lever facing west face ceiling powered false
3299 lever facing east face ceiling powered true
3300 lever facing east face ceiling powered false
3301 stone_pressure_plate powered true
3302 stone_pressure_plate powered false
3303 iron_door hinge left half upper facing north powered true open true
3304 iron_door hinge left half upper facing north powered false open true
3305 iron_door hinge left half upper facing north powered true open false
3306 iron_door hinge left half upper facing north powered false open false
3307 iron_door hinge right half upper facing north powered true open true
3308 iron_door hinge right half upper facing north powered false open true
3309 iron_door hinge right half upper facing north powered true open false
3310 iron_door hinge right half upper facing north powered false open false
3311 iron_door hinge left half lower facing north powered true open true
3312 iron_door hinge left half lower facing north powered false open true
3313 iron_door hinge left half lower facing north powered true open false
3314 iron_door hinge left half lower facing north powered false open false
3315 iron_door hinge right half lower facing north powered true open true
3316 iron_door hinge right half lower facing north powered false open true
3317 iron_door hinge right half lower facing north powered true open false
3318 iron_door hinge right half lower facing north powered false open false
3319 iron_door hinge left half upper facing south powered true open true
3320 iron_door hinge left half upper facing south powered false open true
3321 iron_door hinge left half upper facing south powered true open false
3322 iron_door hinge left half upper facing south powered false open false
3323 iron_door hinge right half upper facing south powered true open true
3324 iron_door hinge right half upper facing south powered false open true
3325 iron_door hinge right half upper facing south powered true open false
3326 iron_door hinge right half upper facing south powered false open false
3327 iron_door hinge left half lower facing south powered true open true
3328 iron_door hinge left half lower facing south powered false open true
3329 iron_door hinge left half lower facing south powered true open false
3330 iron_door hinge left half lower facing south powered false open false
3331 iron_door hinge right half lower facing south powered true open true
3332 iron_door hinge right half lower facing south powered false open true
3333 iron_door hinge right half lower facing south powered true open false
3334 iron_door hinge right half lower facing south powered false open false
3335 iron_door hinge left half upper facing west powered true open true
3336 iron_door hinge left half upper facing west powered false open true
3337 iron_door hinge left half upper facing west powered true open false
3338 iron_door hinge left half upper facing west powered false open false
3339 iron_door hinge right half upper facing west powered true open true
3340 iron_door hinge right half upper facing west powered false open true
3341 iron_door hinge right half upper facing west powered true open false
3342 iron_door hinge right half upper facing west powered false open false
3343 iron_door hinge left half lower facing west powered true open true
3344 iron_door hinge left half lower facing west powered false open true
3345 iron_door hinge left half lower facing west powered true open false
3346 iron_door hinge left half lower facing west powered false open false
3347 iron_door hinge right half lower facing west powered true open true
3348 iron_door hinge right half lower facing west powered false open true
3349 iron_door hinge right half lower facing west powered true open false
3350 iron_door hinge right half lower facing west powered false open false
3351 iron_door hinge left half upper facing east powered true open true
3352 iron_door hinge left half upper facing east powered false open true
3353 iron_door hinge left half upper facing east powered true open false
3354 iron_door hinge left half upper facing east powered false open false
3355 iron_door hinge right half upper facing east powered true open true
3356 iron_door hinge right half upper facing east powered false open true
3357 iron_door hinge right half upper facing east powered true open false
3358 iron_door hinge right half upper facing east powered false open false
3359 iron_door hinge left half lower facing east powered true open true
3360 iron_door hinge left half lower facing east powered false open true
3361 iron_door hinge left half lower facing east powered true open false
3362 iron_door hinge left half lower facing east powered false open false
3363 iron_door hinge right half lower facing east powered true open true
3364 iron_door hinge right half lower facing east powered false open true
3365 iron_door hinge right half lower facing east powered true open false
3366 iron_door hinge right half lower facing east powered false open false
3367 oak_pressure_plate powered true
3368 oak_pressure_plate powered false
3369 spruce_pressure_plate powered true
3370 spruce_pressure_plate powered false
3371 birch_pressure_plate powered true
3372 birch_pressure_plate powered false
3373 jungle_pressure_plate powered true
3374 jungle_pressure_plate powered false
3375 acacia_pressure_plate powered true
3376 acacia_pressure_plate powered false
3377 dark_oak_pressure_plate powered true
3378 dark_oak_pressure_plate powered false
3379 redstone_ore lit true
3380 redstone_ore lit false
3381 redstone_torch lit true
3382 redstone_torch lit false
3383 redstone_wall_torch facing north lit true
3384 redstone_wall_torch facing north lit false
3385 redstone_wall_torch facing south lit true
3386 redstone_wall_torch facing south lit false
3387 redstone_wall_torch facing west lit true
3388 redstone_wall_torch facing west lit false
3389 redstone_wall_torch facing east lit true
3390 redstone_wall_torch facing east lit false
3391 stone_button facing north face floor powered true
3392 stone_button facing north face floor powered false
3393 stone_button facing south face floor powered true
3394 stone_button facing south face floor powered false
3395 stone_button facing west face floor powered true
3396 stone_button facing west face floor powered false
3397 stone_button facing east face floor powered true
3398 stone_button facing east face floor powered false
3399 stone_button facing north face wall powered true
3400 stone_button facing north face wall powered false
3401 stone_button facing south face wall powered true
3402 stone_button facing south face wall powered false
3403 stone_button facing west face wall powered true
3404 stone_button facing west face wall powered false
3405 stone_button facing east face wall powered true
3406 stone_button facing east face wall powered false
3407 stone_button facing north face ceiling powered true
3408 stone_button facing north face ceiling powered false
3409 stone_button facing south face ceiling powered true
3410 stone_button facing south face ceiling powered false
3411 stone_button facing west face ceiling powered true
3412 stone_button facing west face ceiling powered false
3413 stone_button facing east face ceiling powered true
3414 stone_button facing east face ceiling powered false
3415 snow layers 1
3416 snow layers 2
3417 snow layers 3
3418 snow layers 4
3419 snow layers 5
3420 snow layers 6
3421 snow layers 7
3422 snow layers 8
3423 ice
3424 snow_block
3425 cactus age 0
3426 cactus age 1
3427 cactus age 2
3428 cactus age 3
3429 cactus age 4
3430 cactus age 5
3431 cactus age 6
3432 cactus age 7
3433 cactus age 8
3434 cactus age 9
3435 cactus age 10
3436 cactus age 11
3437 cactus age 12
3438 cactus age 13
3439 cactus age 14
3440 cactus age 15
3441 clay
3442 sugar_cane age 0
3443 sugar_cane age 1
3444 sugar_cane age 2
3445 sugar_cane age 3
3446 sugar_cane age 4
3447 sugar_cane age 5
3448 sugar_cane age 6
3449 sugar_cane age 7
3450 sugar_cane age 8
3451 sugar_cane age 9
3452 sugar_cane age 10
3453 sugar_cane age 11
3454 sugar_cane age 12
3455 sugar_cane age 13
3456 sugar_cane age 14
3457 sugar_cane age 15
3458 jukebox has_record true
3459 jukebox has_record false
3460 oak_fence waterlogged true south true east true north true west true
3461 oak_fence waterlogged true south true east true north true west false
3462 oak_fence waterlogged false south true east true north true west true
3463 oak_fence waterlogged false south true east true north true west false
3464 oak_fence waterlogged true south false east true north true west true
3465 oak_fence waterlogged true south false east true north true west false
3466 oak_fence waterlogged false south false east true north true west true
3467 oak_fence waterlogged false south false east true north true west false
3468 oak_fence waterlogged true south true east true north false west true
3469 oak_fence waterlogged true south true east true north false west false
3470 oak_fence waterlogged false south true east true north false west true
3471 oak_fence waterlogged false south true east true north false west false
3472 oak_fence waterlogged true south false east true north false west true
3473 oak_fence waterlogged true south false east true north false west false
3474 oak_fence waterlogged false south false east true north false west true
3475 oak_fence waterlogged false south false east true north false west false
3476 oak_fence waterlogged true south true east false north true west true
3477 oak_fence waterlogged true south true east false north true west false
3478 oak_fence waterlogged false south true east false north true west true
3479 oak_fence waterlogged false south true east false north true west false
3480 oak_fence waterlogged true south false east false north true west true
3481 oak_fence waterlogged true south false east false north true west false
3482 oak_fence waterlogged false south false east false north true west true
3483 oak_fence waterlogged false south false east false north true west false
3484 oak_fence waterlogged true south true east false north false west true
3485 oak_fence waterlogged true south true east false north false west false
3486 oak_fence waterlogged false south true east false north false west true
3487 oak_fence waterlogged false south true east false north false west false
3488 oak_fence waterlogged true south false east false north false west true
3489 oak_fence waterlogged true south false east false north false west false
3490 oak_fence waterlogged false south false east false north false west true
3491 oak_fence waterlogged false south false east false north false west false
3492 pumpkin
3493 netherrack
3494 soul_sand
3495 glowstone
3496 nether_portal axis x
3497 nether_portal axis z
3498 carved_pumpkin facing north
3499 carved_pumpkin facing south
3500 carved_pumpkin facing west
3501 carved_pumpkin facing east
3502 jack_o_lantern facing north
3503 jack_o_lantern facing south
3504 jack_o_lantern facing west
3505 jack_o_lantern facing east
3506 cake bites 0
3507 cake bites 1
3508 cake bites 2
3509 cake bites 3
3510 cake bites 4
3511 cake bites 5
3512 cake bites 6
3513 repeater facing north powered true locked true delay 1
3514 repeater facing north powered false locked true delay 1
3515 repeater facing north powered true locked false delay 1
3516 repeater facing north powered false locked false delay 1
3517 repeater facing south powered true locked true delay 1
3518 repeater facing south powered false locked true delay 1
3519 repeater facing south powered true locked false delay 1
3520 repeater facing south powered false locked false delay 1
3521 repeater facing west powered true locked true delay 1
3522 repeater facing west powered false locked true delay 1
3523 repeater facing west powered true locked false delay 1
3524 repeater facing west powered false locked false delay 1
3525 repeater facing east powered true locked true delay 1
3526 repeater facing east powered false locked true delay 1
3527 repeater facing east powered true locked false delay 1
3528 repeater facing east powered false locked false delay 1
3529 repeater facing north powered true locked true delay 2
3530 repeater facing north powered false locked true delay 2
3531 repeater facing north powered true locked false delay 2
3532 repeater facing north powered false locked false delay 2
3533 repeater facing south powered true locked true delay 2
3534 repeater facing south powered false locked true delay 2
3535 repeater facing south powered true locked false delay 2
3536 repeater facing south powered false locked false delay 2
3537 repeater facing west powered true locked true delay 2
3538 repeater facing west powered false locked true delay 2
3539 repeater facing west powered true locked false delay 2
3540 repeater facing west powered false locked false delay 2
3541 repeater facing east powered true locked true delay 2
3542 repeater facing east powered false locked true delay 2
3543 repeater facing east powered true locked false delay 2
3544 repeater facing east powered false locked false delay 2
3545 repeater facing north powered true locked true delay 3
3546 repeater facing north powered false locked true delay 3
3547 repeater facing north powered true locked false delay 3
3548 repeater facing north powered false locked false delay 3
3549 repeater facing south powered true locked true delay 3
3550 repeater facing south powered false locked true delay 3
3551 repeater facing south powered true locked false delay 3
3552 repeater facing south powered false locked false delay 3
3553 repeater facing west powered true locked true delay 3
3554 repeater facing west powered false locked true delay 3
3555 repeater facing west powered true locked false delay 3
3556 repeater facing west powered false locked false delay 3
3557 repeater facing east powered true locked true delay 3
3558 repeater facing east powered false locked true delay 3
3559 repeater facing east powered true locked false delay 3
3560 repeater facing east powered false locked false delay 3
3561 repeater facing north powered true locked true delay 4
3562 repeater facing north powered false locked true delay 4
3563 repeater facing north powered true locked false delay 4
3564 repeater facing north powered false locked false delay 4
3565 repeater facing south powered true locked true delay 4
3566 repeater facing south powered false locked true delay 4
3567 repeater facing south powered true locked false delay 4
3568 repeater facing south powered false locked false delay 4
3569 repeater facing west powered true locked true delay 4
3570 repeater facing west powered false locked true delay 4
3571 repeater facing west powered true locked false delay 4
3572 repeater facing west powered false locked false delay 4
3573 repeater facing east powered true locked true delay 4
3574 repeater facing east powered false locked true delay 4
3575 repeater facing east powered true locked false delay 4
3576 repeater facing east powered false locked false delay 4
3577 white_stained_glass
3578 orange_stained_glass
3579 magenta_stained_glass
3580 light_blue_stained_glass
3581 yellow_stained_glass
3582 lime_stained_glass
3583 pink_stained_glass
3584 gray_stained_glass
3585 light_gray_stained_glass
3586 cyan_stained_glass
3587 purple_stained_glass
3588 blue_stained_glass
3589 brown_stained_glass
3590 green_stained_glass
3591 red_stained_glass
3592 black_stained_glass
3593 oak_trapdoor waterlogged true powered true facing north half top open true
3594 oak_trapdoor waterlogged false powered true facing north half top open true
3595 oak_trapdoor waterlogged true powered false facing north half top open true
3596 oak_trapdoor waterlogged false powered false facing north half top open true
3597 oak_trapdoor waterlogged true powered true facing north half top open false
3598 oak_trapdoor waterlogged false powered true facing north half top open false
3599 oak_trapdoor waterlogged true powered false facing north half top open false
3600 oak_trapdoor waterlogged false powered false facing north half top open false
3601 oak_trapdoor waterlogged true powered true facing north half bottom open true
3602 oak_trapdoor waterlogged false powered true facing north half bottom open true
3603 oak_trapdoor waterlogged true powered false facing north half bottom open true
3604 oak_trapdoor waterlogged false powered false facing north half bottom open true
3605 oak_trapdoor waterlogged true powered true facing north half bottom open false
3606 oak_trapdoor waterlogged false powered true facing north half bottom open false
3607 oak_trapdoor waterlogged true powered false facing north half bottom open false
3608 oak_trapdoor waterlogged false powered false facing north half bottom open false
3609 oak_trapdoor waterlogged true powered true facing south half top open true
3610 oak_trapdoor waterlogged false powered true facing south half top open true
3611 oak_trapdoor waterlogged true powered false facing south half top open true
3612 oak_trapdoor waterlogged false powered false facing south half top open true
3613 oak_trapdoor waterlogged true powered true facing south half top open false
3614 oak_trapdoor waterlogged false powered true facing south half top open false
3615 oak_trapdoor waterlogged true powered false facing south half top open false
3616 oak_trapdoor waterlogged false powered false facing south half top open false
3617 oak_trapdoor waterlogged true powered true facing south half bottom open true
3618 oak_trapdoor waterlogged false powered true facing south half bottom open true
3619 oak_trapdoor waterlogged true powered false facing south half bottom open true
3620 oak_trapdoor waterlogged false powered false facing south half bottom open true
3621 oak_trapdoor waterlogged true powered true facing south half bottom open false
3622 oak_trapdoor waterlogged false powered true facing south half bottom open false
3623 oak_trapdoor waterlogged true powered false facing south half bottom open false
3624 oak_trapdoor waterlogged false powered false facing south half bottom open false
3625 oak_trapdoor waterlogged true powered true facing west half top open true
3626 oak_trapdoor waterlogged false powered true facing west half top open true
3627 oak_trapdoor waterlogged true powered false facing west half top open true
3628 oak_trapdoor waterlogged false powered false facing west half top open true
3629 oak_trapdoor waterlogged true powered true facing west half top open false
3630 oak_trapdoor waterlogged false powered true facing west half top open false
3631 oak_trapdoor waterlogged true powered false facing west half top open false
3632 oak_trapdoor waterlogged false powered false facing west half top open false
3633 oak_trapdoor waterlogged true powered true facing west half bottom open true
3634 oak_trapdoor waterlogged false powered true facing west half bottom open true
3635 oak_trapdoor waterlogged true powered false facing west half bottom open true
3636 oak_trapdoor waterlogged false powered false facing west half bottom open true
3637 oak_trapdoor waterlogged true powered true facing west half bottom open false
3638 oak_trapdoor waterlogged false powered true facing west half bottom open false
3639 oak_trapdoor waterlogged true powered false facing west half bottom open false
3640 oak_trapdoor waterlogged false powered false facing west half bottom open false
3641 oak_trapdoor waterlogged true powered true facing east half top open true
3642 oak_trapdoor waterlogged false powered true facing east half top open true
3643 oak_trapdoor waterlogged true powered false facing east half top open true
3644 oak_trapdoor waterlogged false powered false facing east half top open true
3645 oak_trapdoor waterlogged true powered true facing east half top open false
3646 oak_trapdoor waterlogged false powered true facing east half top open false
3647 oak_trapdoor waterlogged true powered false facing east half top open false
3648 oak_trapdoor waterlogged false powered false facing east half top open false
3649 oak_trapdoor waterlogged true powered true facing east half bottom open true
3650 oak_trapdoor waterlogged false powered true facing east half bottom open true
3651 oak_trapdoor waterlogged true powered false facing east half bottom open true
3652 oak_trapdoor waterlogged false powered false facing east half bottom open true
3653 oak_trapdoor waterlogged true powered true facing east half bottom open false
3654 oak_trapdoor waterlogged false powered true facing east half bottom open false
3655 oak_trapdoor waterlogged true powered false facing east half bottom open false
3656 oak_trapdoor waterlogged false powered false facing east half bottom open false
3657 spruce_trapdoor waterlogged true powered true facing north half top open true
3658 spruce_trapdoor waterlogged false powered true facing north half top open true
3659 spruce_trapdoor waterlogged true powered false facing north half top open true
3660 spruce_trapdoor waterlogged false powered false facing north half top open true
3661 spruce_trapdoor waterlogged true powered true facing north half top open false
3662 spruce_trapdoor waterlogged false powered true facing north half top open false
3663 spruce_trapdoor waterlogged true powered false facing north half top open false
3664 spruce_trapdoor waterlogged false powered false facing north half top open false
3665 spruce_trapdoor waterlogged true powered true facing north half bottom open true
3666 spruce_trapdoor waterlogged false powered true facing north half bottom open true
3667 spruce_trapdoor waterlogged true powered false facing north half bottom open true
3668 spruce_trapdoor waterlogged false powered false facing north half bottom open true
3669 spruce_trapdoor waterlogged true powered true facing north half bottom open false
3670 spruce_trapdoor waterlogged false powered true facing north half bottom open false
3671 spruce_trapdoor waterlogged true powered false facing north half bottom open false
3672 spruce_trapdoor waterlogged false powered false facing north half bottom open false
3673 spruce_trapdoor waterlogged true powered true facing south half top open true
3674 spruce_trapdoor waterlogged false powered true facing south half top open true
3675 spruce_trapdoor waterlogged true powered false facing south half top open true
3676 spruce_trapdoor waterlogged false powered false facing south half top open true
3677 spruce_trapdoor waterlogged true powered true facing south half top open false
3678 spruce_trapdoor waterlogged false powered true facing south half top open false
3679 spruce_trapdoor waterlogged true powered false facing south half top open false
3680 spruce_trapdoor waterlogged false powered false facing south half top open false
3681 spruce_trapdoor waterlogged true powered true facing south half bottom open true
3682 spruce_trapdoor waterlogged false powered true facing south half bottom open true
3683 spruce_trapdoor waterlogged true powered false facing south half bottom open true
3684 spruce_trapdoor waterlogged false powered false facing south half bottom open true
3685 spruce_trapdoor waterlogged true powered true facing south half bottom open false
3686 spruce_trapdoor waterlogged false powered true facing south half bottom open false
3687 spruce_trapdoor waterlogged true powered false facing south half bottom open false
3688 spruce_trapdoor waterlogged false powered false facing south half bottom open false
3689 spruce_trapdoor waterlogged true powered true facing west half top open true
3690 spruce_trapdoor waterlogged false powered true facing west half top open true
3691 spruce_trapdoor waterlogged true powered false facing west half top open true
3692 spruce_trapdoor waterlogged false powered false facing west half top open true
3693 spruce_trapdoor waterlogged true powered true facing west half top open false
3694 spruce_trapdoor waterlogged false powered true facing west half top open false
3695 spruce_trapdoor waterlogged true powered false facing west half top open false
3696 spruce_trapdoor waterlogged false powered false facing west half top open false
3697 spruce_trapdoor waterlogged true powered true facing west half bottom open true
3698 spruce_trapdoor waterlogged false powered true facing west half bottom open true
3699 spruce_trapdoor waterlogged true powered false facing west half bottom open true
3700 spruce_trapdoor waterlogged false powered false facing west half bottom open true
3701 spruce_trapdoor waterlogged true powered true facing west half bottom open false
3702 spruce_trapdoor waterlogged false powered true facing west half bottom open false
3703 spruce_trapdoor waterlogged true powered false facing west half bottom open false
3704 spruce_trapdoor waterlogged false powered false facing west half bottom open false
3705 spruce_trapdoor waterlogged true powered true facing east half top open true
3706 spruce_trapdoor waterlogged false powered true facing east half top open true
3707 spruce_trapdoor waterlogged true powered false facing east half top open true
3708 spruce_trapdoor waterlogged false powered false facing east half top open true
3709 spruce_trapdoor waterlogged true powered true facing east half top open false
3710 spruce_trapdoor waterlogged false powered true facing east half top open false
3711 spruce_trapdoor waterlogged true powered false facing east half top open false
3712 spruce_trapdoor waterlogged false powered false facing east half top open false
3713 spruce_trapdoor waterlogged true powered true facing east half bottom open true
3714 spruce_trapdoor waterlogged false powered true facing east half bottom open true
3715 spruce_trapdoor waterlogged true powered false facing east half bottom open true
3716 spruce_trapdoor waterlogged false powered false facing east half bottom open true
3717 spruce_trapdoor waterlogged true powered true facing east half bottom open false
3718 spruce_trapdoor waterlogged false powered true facing east half bottom open false
3719 spruce_trapdoor waterlogged true powered false facing east half bottom open false
3720 spruce_trapdoor waterlogged false powered false facing east half bottom open false
3721 birch_trapdoor waterlogged true powered true facing north half top open true
3722 birch_trapdoor waterlogged false powered true facing north half top open true
3723 birch_trapdoor waterlogged true powered false facing north half top open true
3724 birch_trapdoor waterlogged false powered false facing north half top open true
3725 birch_trapdoor waterlogged true powered true facing north half top open false
3726 birch_trapdoor waterlogged false powered true facing north half top open false
3727 birch_trapdoor waterlogged true powered false facing north half top open false
3728 birch_trapdoor waterlogged false powered false facing north half top open false
3729 birch_trapdoor waterlogged true powered true facing north half bottom open true
3730 birch_trapdoor waterlogged false powered true facing north half bottom open true
3731 birch_trapdoor waterlogged true powered false facing north half bottom open true
3732 birch_trapdoor waterlogged false powered false facing north half bottom open true
3733 birch_trapdoor waterlogged true powered true facing north half bottom open false
3734 birch_trapdoor waterlogged false powered true facing north half bottom open false
3735 birch_trapdoor waterlogged true powered false facing north half bottom open false
3736 birch_trapdoor waterlogged false powered false facing north half bottom open false
3737 birch_trapdoor waterlogged true powered true facing south half top open true
3738 birch_trapdoor waterlogged false powered true facing south half top open true
3739 birch_trapdoor waterlogged true powered false facing south half top open true
3740 birch_trapdoor waterlogged false powered false facing south half top open true
3741 birch_trapdoor waterlogged true powered true facing south half top open false
3742 birch_trapdoor waterlogged false powered true facing south half top open false
3743 birch_trapdoor waterlogged true powered false facing south half top open false
3744 birch_trapdoor waterlogged false powered false facing south half top open false
3745 birch_trapdoor waterlogged true powered true facing south half bottom open true
3746 birch_trapdoor waterlogged false powered true facing south half bottom open true
3747 birch_trapdoor waterlogged true powered false facing south half bottom open true
3748 birch_trapdoor waterlogged false powered false facing south half bottom open true
3749 birch_trapdoor waterlogged true powered true facing south half bottom open false
3750 birch_trapdoor waterlogged false powered true facing south half bottom open false
3751 birch_trapdoor waterlogged true powered false facing south half bottom open false
3752 birch_trapdoor waterlogged false powered false facing south half bottom open false
3753 birch_trapdoor waterlogged true powered true facing west half top open true
3754 birch_trapdoor waterlogged false powered true facing west half top open true
3755 birch_trapdoor waterlogged true powered false facing west half top open true
3756 birch_trapdoor waterlogged false powered false facing west half top open true
3757 birch_trapdoor waterlogged true powered true facing west half top open false
3758 birch_trapdoor waterlogged false powered true facing west half top open false
3759 birch_trapdoor waterlogged true powered false facing west half top open false
3760 birch_trapdoor waterlogged false powered false facing west half top open false
3761 birch_trapdoor waterlogged true powered true facing west half bottom open true
3762 birch_trapdoor waterlogged false powered true facing west half bottom open true
3763 birch_trapdoor waterlogged true powered false facing west half bottom open true
3764 birch_trapdoor waterlogged false powered false facing west half bottom open true
3765 birch_trapdoor waterlogged true powered true facing west half bottom open false
3766 birch_trapdoor waterlogged false powered true facing west half bottom open false
3767 birch_trapdoor waterlogged true powered false facing west half bottom open false
3768 birch_trapdoor waterlogged false powered false facing west half bottom open false
3769 birch_trapdoor waterlogged true powered true facing east half top open true
3770 birch_trapdoor waterlogged false powered true facing east half top open true
3771 birch_trapdoor waterlogged true powered false facing east half top open true
3772 birch_trapdoor waterlogged false powered false facing east half top open true
3773 birch_trapdoor waterlogged true powered true facing east half top open false
3774 birch_trapdoor waterlogged false powered true facing east half top open false
3775 birch_trapdoor waterlogged true powered false facing east half top open false
3776 birch_trapdoor waterlogged false powered false facing east half top open false
3777 birch_trapdoor waterlogged true powered true facing east half bottom open true
3778 birch_trapdoor waterlogged false powered true facing east half bottom open true
3779 birch_trapdoor waterlogged true powered false facing east half bottom open true
3780 birch_trapdoor waterlogged false powered false facing east half bottom open true
3781 birch_trapdoor waterlogged true powered true facing east half bottom open false
3782 birch_trapdoor waterlogged false powered true facing east half bottom open false
3783 birch_trapdoor waterlogged true powered false facing east half bottom open false
3784 birch_trapdoor waterlogged false powered false facing east half bottom open false
3785 jungle_trapdoor waterlogged true powered true facing north half top open true
3786 jungle_trapdoor waterlogged false powered true facing north half top open true
3787 jungle_trapdoor waterlogged true powered false facing north half top open true
3788 jungle_trapdoor waterlogged false powered false facing north half top open true
3789 jungle_trapdoor waterlogged true powered true facing north half top open false
3790 jungle_trapdoor waterlogged false powered true facing north half top open false
3791 jungle_trapdoor waterlogged true powered false facing north half top open false
3792 jungle_trapdoor waterlogged false powered false facing north half top open false
3793 jungle_trapdoor waterlogged true powered true facing north half bottom open true
3794 jungle_trapdoor waterlogged false powered true facing north half bottom open true
3795 jungle_trapdoor waterlogged true powered false facing north half bottom open true
3796 jungle_trapdoor waterlogged false powered false facing north half bottom open true
3797 jungle_trapdoor waterlogged true powered true facing north half bottom open false
3798 jungle_trapdoor waterlogged false powered true facing north half bottom open false
3799 jungle_trapdoor waterlogged true powered false facing north half bottom open false
3800 jungle_trapdoor waterlogged false powered false facing north half bottom open false
3801 jungle_trapdoor waterlogged true powered true facing south half top open true
3802 jungle_trapdoor waterlogged false powered true facing south half top open true
3803 jungle_trapdoor waterlogged true powered false facing south half top open true
3804 jungle_trapdoor waterlogged false powered false facing south half top open true
3805 jungle_trapdoor waterlogged true powered true facing south half top open false
3806 jungle_trapdoor waterlogged false powered true facing south half top open false
3807 jungle_trapdoor waterlogged true powered false facing south half top open false
3808 jungle_trapdoor waterlogged false powered false facing south half top open false
3809 jungle_trapdoor waterlogged true powered true facing south half bottom open true
3810 jungle_trapdoor waterlogged false powered true facing south half bottom open true
3811 jungle_trapdoor waterlogged true powered false facing south half bottom open true
3812 jungle_trapdoor waterlogged false powered false facing south half bottom open true
3813 jungle_trapdoor waterlogged true powered true facing south half bottom open false
3814 jungle_trapdoor waterlogged false powered true facing south half bottom open false
3815 jungle_trapdoor waterlogged true powered false facing south half bottom open false
3816 jungle_trapdoor waterlogged false powered false facing south half bottom open false
3817 jungle_trapdoor waterlogged true powered true facing west half top open true
3818 jungle_trapdoor waterlogged false powered true facing west half top open true
3819 jungle_trapdoor waterlogged true powered false facing west half top open true
3820 jungle_trapdoor waterlogged false powered false facing west half top open true
3821 jungle_trapdoor waterlogged true powered true facing west half top open false
3822 jungle_trapdoor waterlogged false powered true facing west half top open false
3823 jungle_trapdoor waterlogged true powered false facing west half top open false
3824 jungle_trapdoor waterlogged false powered false facing west half top open false
3825 jungle_trapdoor waterlogged true powered true facing west half bottom open true
3826 jungle_trapdoor waterlogged false powered true facing west half bottom open true
3827 jungle_trapdoor waterlogged true powered false facing west half bottom open true
3828 jungle_trapdoor waterlogged false powered false facing west half bottom open true
3829 jungle_trapdoor waterlogged true powered true facing west half bottom open false
3830 jungle_trapdoor waterlogged false powered true facing west half bottom open false
3831 jungle_trapdoor waterlogged true powered false facing west half bottom open false
3832 jungle_trapdoor waterlogged false powered false facing west half bottom open false
3833 jungle_trapdoor waterlogged true powered true facing east half top open true
3834 jungle_trapdoor waterlogged false powered true facing east half top open true
3835 jungle_trapdoor waterlogged true powered false facing east half top open true
3836 jungle_trapdoor waterlogged false powered false facing east half top open true
3837 jungle_trapdoor waterlogged true powered true facing east half top open false
3838 jungle_trapdoor waterlogged false powered true facing east half top open false
3839 jungle_trapdoor waterlogged true powered false facing east half top open false
3840 jungle_trapdoor waterlogged false powered false facing east half top open false
3841 jungle_trapdoor waterlogged true powered true facing east half bottom open true
3842 jungle_trapdoor waterlogged false powered true facing east half bottom open true
3843 jungle_trapdoor waterlogged true powered false facing east half bottom open true
3844 jungle_trapdoor waterlogged false powered false facing east half bottom open true
3845 jungle_trapdoor waterlogged true powered true facing east half bottom open false
3846 jungle_trapdoor waterlogged false powered true facing east half bottom open false
3847 jungle_trapdoor waterlogged true powered false facing east half bottom open false
3848 jungle_trapdoor waterlogged false powered false facing east half bottom open false
3849 acacia_trapdoor waterlogged true powered true facing north half top open true
3850 acacia_trapdoor waterlogged false powered true facing north half top open true
3851 acacia_trapdoor waterlogged true powered false facing north half top open true
3852 acacia_trapdoor waterlogged false powered false facing north half top open true
3853 acacia_trapdoor waterlogged true powered true facing north half top open false
3854 acacia_trapdoor waterlogged false powered true facing north half top open false
3855 acacia_trapdoor waterlogged true powered false facing north half top open false
3856 acacia_trapdoor waterlogged false powered false facing north half top open false
3857 acacia_trapdoor waterlogged true powered true facing north half bottom open true
3858 acacia_trapdoor waterlogged false powered true facing north half bottom open true
3859 acacia_trapdoor waterlogged true powered false facing north half bottom open true
3860 acacia_trapdoor waterlogged false powered false facing north half bottom open true
3861 acacia_trapdoor waterlogged true powered true facing north half bottom open false
3862 acacia_trapdoor waterlogged false powered true facing north half bottom open false
3863 acacia_trapdoor waterlogged true powered false facing north half bottom open false
3864 acacia_trapdoor waterlogged false powered false facing north half bottom open false
3865 acacia_trapdoor waterlogged true powered true facing south half top open true
3866 acacia_trapdoor waterlogged false powered true facing south half top open true
3867 acacia_trapdoor waterlogged true powered false facing south half top open true
3868 acacia_trapdoor waterlogged false powered false facing south half top open true
3869 acacia_trapdoor waterlogged true powered true facing south half top open false
3870 acacia_trapdoor waterlogged false powered true facing south half top open false
3871 acacia_trapdoor waterlogged true powered false facing south half top open false
3872 acacia_trapdoor waterlogged false powered false facing south half top open false
3873 acacia_trapdoor waterlogged true powered true facing south half bottom open true
3874 acacia_trapdoor waterlogged false powered true facing south half bottom open true
3875 acacia_trapdoor waterlogged true powered false facing south half bottom open true
3876 acacia_trapdoor waterlogged false powered false facing south half bottom open true
3877 acacia_trapdoor waterlogged true powered true facing south half bottom open false
3878 acacia_trapdoor waterlogged false powered true facing south half bottom open false
3879 acacia_trapdoor waterlogged true powered false facing south half bottom open false
3880 acacia_trapdoor waterlogged false powered false facing south half bottom open false
3881 acacia_trapdoor waterlogged true powered true facing west half top open true
3882 acacia_trapdoor waterlogged false powered true facing west half top open true
3883 acacia_trapdoor waterlogged true powered false facing west half top open true
3884 acacia_trapdoor waterlogged false powered false facing west half top open true
3885 acacia_trapdoor waterlogged true powered true facing west half top open false
3886 acacia_trapdoor waterlogged false powered true facing west half top open false
3887 acacia_trapdoor waterlogged true powered false facing west half top open false
3888 acacia_trapdoor waterlogged false powered false facing west half top open false
3889 acacia_trapdoor waterlogged true powered true facing west half bottom open true
3890 acacia_trapdoor waterlogged false powered true facing west half bottom open true
3891 acacia_trapdoor waterlogged true powered false facing west half bottom open true
3892 acacia_trapdoor waterlogged false powered false facing west half bottom open true
3893 acacia_trapdoor waterlogged true powered true facing west half bottom open false
3894 acacia_trapdoor waterlogged false powered true facing west half bottom open false
3895 acacia_trapdoor waterlogged true powered false facing west half bottom open false
3896 acacia_trapdoor waterlogged false powered false facing west half bottom open false
3897 acacia_trapdoor waterlogged true powered true facing east half top open true
3898 acacia_trapdoor waterlogged false powered true facing east half top open true
3899 acacia_trapdoor waterlogged true powered false facing east half top open true
3900 acacia_trapdoor waterlogged false powered false facing east half top open true
3901 acacia_trapdoor waterlogged true powered true facing east half top open false
3902 acacia_trapdoor waterlogged false powered true facing east half top open false
3903 acacia_trapdoor waterlogged true powered false facing east half top open false
3904 acacia_trapdoor waterlogged false powered false facing east half top open false
3905 acacia_trapdoor waterlogged true powered true facing east half bottom open true
3906 acacia_trapdoor waterlogged false powered true facing east half bottom open true
3907 acacia_trapdoor waterlogged true powered false facing east half bottom open true
3908 acacia_trapdoor waterlogged false powered false facing east half bottom open true
3909 acacia_trapdoor waterlogged true powered true facing east half bottom open false
3910 acacia_trapdoor waterlogged false powered true facing east half bottom open false
3911 acacia_trapdoor waterlogged true powered false facing east half bottom open false
3912 acacia_trapdoor waterlogged false powered false facing east half bottom open false
3913 dark_oak_trapdoor waterlogged true powered true facing north half top open true
3914 dark_oak_trapdoor waterlogged false powered true facing north half top open true
3915 dark_oak_trapdoor waterlogged true powered false facing north half top open true
3916 dark_oak_trapdoor waterlogged false powered false facing north half top open true
3917 dark_oak_trapdoor waterlogged true powered true facing north half top open false
3918 dark_oak_trapdoor waterlogged false powered true facing north half top open false
3919 dark_oak_trapdoor waterlogged true powered false facing north half top open false
3920 dark_oak_trapdoor waterlogged false powered false facing north half top open false
3921 dark_oak_trapdoor waterlogged true powered true facing north half bottom open true
3922 dark_oak_trapdoor waterlogged false powered true facing north half bottom open true
3923 dark_oak_trapdoor waterlogged true powered false facing north half bottom open true
3924 dark_oak_trapdoor waterlogged false powered false facing north half bottom open true
3925 dark_oak_trapdoor waterlogged true powered true facing north half bottom open false
3926 dark_oak_trapdoor waterlogged false powered true facing north half bottom open false
3927 dark_oak_trapdoor waterlogged true powered false facing north half bottom open false
3928 dark_oak_trapdoor waterlogged false powered false facing north half bottom open false
3929 dark_oak_trapdoor waterlogged true powered true facing south half top open true
3930 dark_oak_trapdoor waterlogged false powered true facing south half top open true
3931 dark_oak_trapdoor waterlogged true powered false facing south half top open true
3932 dark_oak_trapdoor waterlogged false powered false facing south half top open true
3933 dark_oak_trapdoor waterlogged true powered true facing south half top open false
3934 dark_oak_trapdoor waterlogged false powered true facing south half top open false
3935 dark_oak_trapdoor waterlogged true powered false facing south half top open false
3936 dark_oak_trapdoor waterlogged false powered false facing south half top open false
3937 dark_oak_trapdoor waterlogged true powered true facing south half bottom open true
3938 dark_oak_trapdoor waterlogged false powered true facing south half bottom open true
3939 dark_oak_trapdoor waterlogged true powered false facing south half bottom open true
3940 dark_oak_trapdoor waterlogged false powered false facing south half bottom open true
3941 dark_oak_trapdoor waterlogged true powered true facing south half bottom open false
3942 dark_oak_trapdoor waterlogged false powered true facing south half bottom open false
3943 dark_oak_trapdoor waterlogged true powered false facing south half bottom open false
3944 dark_oak_trapdoor waterlogged false powered false facing south half bottom open false
3945 dark_oak_trapdoor waterlogged true powered true facing west half top open true
3946 dark_oak_trapdoor waterlogged false powered true facing west half top open true
3947 dark_oak_trapdoor waterlogged true powered false facing west half top open true
3948 dark_oak_trapdoor waterlogged false powered false facing west half top open true
3949 dark_oak_trapdoor waterlogged true powered true facing west half top open false
3950 dark_oak_trapdoor waterlogged false powered true facing west half top open false
3951 dark_oak_trapdoor waterlogged true powered false facing west half top open false
3952 dark_oak_trapdoor waterlogged false powered false facing west half top open false
3953 dark_oak_trapdoor waterlogged true powered true facing west half bottom open true
3954 dark_oak_trapdoor waterlogged false powered true facing west half bottom open true
3955 dark_oak_trapdoor waterlogged true powered false facing west half bottom open true
3956 dark_oak_trapdoor waterlogged false powered false facing west half bottom open true
3957 dark_oak_trapdoor waterlogged true powered true facing west half bottom open false
3958 dark_oak_trapdoor waterlogged false powered true facing west half bottom open false
3959 dark_oak_trapdoor waterlogged true powered false facing west half bottom open false
3960 dark_oak_trapdoor waterlogged false powered false facing west half bottom open false
3961 dark_oak_trapdoor waterlogged true powered true facing east half top open true
3962 dark_oak_trapdoor waterlogged false powered true facing east half top open true
3963 dark_oak_trapdoor waterlogged true powered false facing east half top open true
3964 dark_oak_trapdoor waterlogged false powered false facing east half top open true
3965 dark_oak_trapdoor waterlogged true powered true facing east half top open false
3966 dark_oak_trapdoor waterlogged false powered true facing east half top open false
3967 dark_oak_trapdoor waterlogged true powered false facing east half top open false
3968 dark_oak_trapdoor waterlogged false powered false facing east half top open false
3969 dark_oak_trapdoor waterlogged true powered true facing east half bottom open true
3970 dark_oak_trapdoor waterlogged false powered true facing east half bottom open true
3971 dark_oak_trapdoor waterlogged true powered false facing east half bottom open true
3972 dark_oak_trapdoor waterlogged false powered false facing east half bottom open true
3973 dark_oak_trapdoor waterlogged true powered true facing east half bottom open false
3974 dark_oak_trapdoor waterlogged false powered true facing east half bottom open false
3975 dark_oak_trapdoor waterlogged true powered false facing east half bottom open false
3976 dark_oak_trapdoor waterlogged false powered false facing east half bottom open false
3977 infested_stone
3978 infested_cobblestone
3979 infested_stone_bricks
3980 infested_mossy_stone_bricks
3981 infested_cracked_stone_bricks
3982 infested_chiseled_stone_bricks
3983 stone_bricks
3984 mossy_stone_bricks
3985 cracked_stone_bricks
3986 chiseled_stone_bricks
3987 brown_mushroom_block up true south true east true north true down true west true
3988 brown_mushroom_block up true south true east true north true down true west false
3989 brown_mushroom_block up false south true east true north true down true west true
3990 brown_mushroom_block up false south true east true north true down true west false
3991 brown_mushroom_block up true south false east true north true down true west true
3992 brown_mushroom_block up true south false east true north true down true west false
3993 brown_mushroom_block up false south false east true north true down true west true
3994 brown_mushroom_block up false south false east true north true down true west false
3995 brown_mushroom_block up true south true east true north false down true west true
3996 brown_mushroom_block up true south true east true north false down true west false
3997 brown_mushroom_block up false south true east true north false down true west true
3998 brown_mushroom_block up false south true east true north false down true west false
3999 brown_mushroom_block up true south false east true north false down true west true
4000 brown_mushroom_block up true south false east true north false down true west false
4001 brown_mushroom_block up false south false east true north false down true west true
4002 brown_mushroom_block up false south false east true north false down true west false
4003 brown_mushroom_block up true south true east false north true down true west true
4004 brown_mushroom_block up true south true east false north true down true west false
4005 brown_mushroom_block up false south true east false north true down true west true
4006 brown_mushroom_block up false south true east false north true down true west false
4007 brown_mushroom_block up true south false east false north true down true west true
4008 brown_mushroom_block up true south false east false north true down true west false
4009 brown_mushroom_block up false south false east false north true down true west true
4010 brown_mushroom_block up false south false east false north true down true west false
4011 brown_mushroom_block up true south true east false north false down true west true
4012 brown_mushroom_block up true south true east false north false down true west false
4013 brown_mushroom_block up false south true east false north false down true west true
4014 brown_mushroom_block up false south true east false north false down true west false
4015 brown_mushroom_block up true south false east false north false down true west true
4016 brown_mushroom_block up true south false east false north false down true west false
4017 brown_mushroom_block up false south false east false north false down true west true
4018 brown_mushroom_block up false south false east false north false down true west false
4019 brown_mushroom_block up true south true east true north true down false west true
4020 brown_mushroom_block up true south true east true north true down false west false
4021 brown_mushroom_block up false south true east true north true down false west true
4022 brown_mushroom_block up false south true east true north true down false west false
4023 brown_mushroom_block up true south false east true north true down false west true
4024 brown_mushroom_block up true south false east true north true down false west false
4025 brown_mushroom_block up false south false east true north true down false west true
4026 brown_mushroom_block up false south false east true north true down false west false
4027 brown_mushroom_block up true south true east true north false down false west true
4028 brown_mushroom_block up true south true east true north false down false west false
4029 brown_mushroom_block up false south true east true north false down false west true
4030 brown_mushroom_block up false south true east true north false down false west false
4031 brown_mushroom_block up true south false east true north false down false west true
4032 brown_mushroom_block up true south false east true north false down false west false
4033 brown_mushroom_block up false south false east true north false down false west true
4034 brown_mushroom_block up false south false east true north false down false west false
4035 brown_mushroom_block up true south true east false north true down false west true
4036 brown_mushroom_block up true south true east false north true down false west false
4037 brown_mushroom_block up false south true east false north true down false west true
4038 brown_mushroom_block up false south true east false north true down false west false
4039 brown_mushroom_block up true south false east false north true down false west true
4040 brown_mushroom_block up true south false east false north true down false west false
4041 brown_mushroom_block up false south false east false north true down false west true
4042 brown_mushroom_block up false south false east false north true down false west false
4043 brown_mushroom_block up true south true east false north false down false west true
4044 brown_mushroom_block up true south true east false north false down false west false
4045 brown_mushroom_block up false south true east false north false down false west true
4046 brown_mushroom_block up false south true east false north false down false west false
4047 brown_mushroom_block up true south false east false north false down false west true
4048 brown_mushroom_block up true south false east false north false down false west false
4049 brown_mushroom_block up false south false east false north false down false west true
4050 brown_mushroom_block up false south false east false north false down false west false
4051 red_mushroom_block up true south true east true north true down true west true
4052 red_mushroom_block up true south true east true north true down true west false
4053 red_mushroom_block up false south true east true north true down true west true
4054 red_mushroom_block up false south true east true north true down true west false
4055 red_mushroom_block up true south false east true north true down true west true
4056 red_mushroom_block up true south false east true north true down true west false
4057 red_mushroom_block up false south false east true north true down true west true
4058 red_mushroom_block up false south false east true north true down true west false
4059 red_mushroom_block up true south true east true north false down true west true
4060 red_mushroom_block up true south true east true north false down true west false
4061 red_mushroom_block up false south true east true north false down true west true
4062 red_mushroom_block up false south true east true north false down true west false
4063 red_mushroom_block up true south false east true north false down true west true
4064 red_mushroom_block up true south false east true north false down true west false
4065 red_mushroom_block up false south false east true north false down true west true
4066 red_mushroom_block up false south false east true north false down true west false
4067 red_mushroom_block up true south true east false north true down true west true
4068 red_mushroom_block up true south true east false north true down true west false
4069 red_mushroom_block up false south true east false north true down true west true
4070 red_mushroom_block up false south true east false north true down true west false
4071 red_mushroom_block up true south false east false north true down true west true
4072 red_mushroom_block up true south false east false north true down true west false
4073 red_mushroom_block up false south false east false north true down true west true
4074 red_mushroom_block up false south false east false north true down true west false
4075 red_mushroom_block up true south true east false north false down true west true
4076 red_mushroom_block up true south true east false north false down true west false
4077 red_mushroom_block up false south true east false north false down true west true
4078 red_mushroom_block up false south true east false north false down true west false
4079 red_mushroom_block up true south false east false north false down true west true
4080 red_mushroom_block up true south false east false north false down true west false
4081 red_mushroom_block up false south false east false north false down true west true
4082 red_mushroom_block up false south false east false north false down true west false
4083 red_mushroom_block up true south true east true north true down false west true
4084 red_mushroom_block up true south true east true north true down false west false
4085 red_mushroom_block up false south true east true north true down false west true
4086 red_mushroom_block up false south true east true north true down false west false
4087 red_mushroom_block up true south false east true north true down false west true
4088 red_mushroom_block up true south false east true north true down false west false
4089 red_mushroom_block up false south false east true north true down false west true
4090 red_mushroom_block up false south false east true north true down false west false
4091 red_mushroom_block up true south true east true north false down false west true
4092 red_mushroom_block up true south true east true north false down false west false
4093 red_mushroom_block up false south true east true north false down false west true
4094 red_mushroom_block up false south true east true north false down false west false
4095 red_mushroom_block up true south false east true north false down false west true
4096 red_mushroom_block up true south false east true north false down false west false
4097 red_mushroom_block up false south false east true north false down false west true
4098 red_mushroom_block up false south false east true north false down false west false
4099 red_mushroom_block up true south true east false north true down false west true
4100 red_mushroom_block up true south true east false north true down false west false
4101 red_mushroom_block up false south true east false north true down false west true
4102 red_mushroom_block up false south true east false north true down false west false
4103 red_mushroom_block up true south false east false north true down false west true
4104 red_mushroom_block up true south false east false north true down false west false
4105 red_mushroom_block up false south false east false north true down false west true
4106 red_mushroom_block up false south false east false north true down false west false
4107 red_mushroom_block up true south true east false north false down false west true
4108 red_mushroom_block up true south true east false north false down false west false
4109 red_mushroom_block up false south true east false north false down false west true
4110 red_mushroom_block up false south true east false north false down false west false
4111 red_mushroom_block up true south false east false north false down false west true
4112 red_mushroom_block up true south false east false north false down false west false
4113 red_mushroom_block up false south false east false north false down false west true
4114 red_mushroom_block up false south false east false north false down false west false
4115 mushroom_stem up true south true east true north true down true west true
4116 mushroom_stem up true south true east true north true down true west false
4117 mushroom_stem up false south true east true north true down true west true
4118 mushroom_stem up false south true east true north true down true west false
4119 mushroom_stem up true south false east true north true down true west true
4120 mushroom_stem up true south false east true north true down true west false
4121 mushroom_stem up false south false east true north true down true west true
4122 mushroom_stem up false south false east true north true down true west false
4123 mushroom_stem up true south true east true north false down true west true
4124 mushroom_stem up true south true east true north false down true west false
4125 mushroom_stem up false south true east true north false down true west true
4126 mushroom_stem up false south true east true north false down true west false
4127 mushroom_stem up true south false east true north false down true west true
4128 mushroom_stem up true south false east true north false down true west false
4129 mushroom_stem up false south false east true north false down true west true
4130 mushroom_stem up false south false east true north false down true west false
4131 mushroom_stem up true south true east false north true down true west true
4132 mushroom_stem up true south true east false north true down true west false
4133 mushroom_stem up false south true east false north true down true west true
4134 mushroom_stem up false south true east false north true down true west false
4135 mushroom_stem up true south false east false north true down true west true
4136 mushroom_stem up true south false east false north true down true west false
4137 mushroom_stem up false south false east false north true down true west true
4138 mushroom_stem up false south false east false north true down true west false
4139 mushroom_stem up true south true east false north false down true west true
4140 mushroom_stem up true south true east false north false down true west false
4141 mushroom_stem up false south true east false north false down true west true
4142 mushroom_stem up false south true east false north false down true west false
4143 mushroom_stem up true south false east false north false down true west true
4144 mushroom_stem up true south false east false north false down true west false
4145 mushroom_stem up false south false east false north false down true west true
4146 mushroom_stem up false south false east false north false down true west false
4147 mushroom_stem up true south true east true north true down false west true
4148 mushroom_stem up true south true east true north true down false west false
4149 mushroom_stem up false south true east true north true down false west true
4150 mushroom_stem up false south true east true north true down false west false
4151 mushroom_stem up true south false east true north true down false west true
4152 mushroom_stem up true south false east true north true down false west false
4153 mushroom_stem up false south false east true north true down false west true
4154 mushroom_stem up false south false east true north true down false west false
4155 mushroom_stem up true south true east true north false down false west true
4156 mushroom_stem up true south true east true north false down false west false
4157 mushroom_stem up false south true east true north false down false west true
4158 mushroom_stem up false south true east true north false down false west false
4159 mushroom_stem up true south false east true north false down false west true
4160 mushroom_stem up true south false east true north false down false west false
4161 mushroom_stem up false south false east true north false down false west true
4162 mushroom_stem up false south false east true north false down false west false
4163 mushroom_stem up true south true east false north true down false west true
4164 mushroom_stem up true south true east false north true down false west false
4165 mushroom_stem up false south true east false north true down false west true
4166 mushroom_stem up false south true east false north true down false west false
4167 mushroom_stem up true south false east false north true down false west true
4168 mushroom_stem up true south false east false north true down false west false
4169 mushroom_stem up false south false east false north true down false west true
4170 mushroom_stem up false south false east false north true down false west false
4171 mushroom_stem up true south true east false north false down false west true
4172 mushroom_stem up true south true east false north false down false west false
4173 mushroom_stem up false south true east false north false down false west true
4174 mushroom_stem up false south true east false north false down false west false
4175 mushroom_stem up true south false east false north false down false west true
4176 mushroom_stem up true south false east false north false down false west false
4177 mushroom_stem up false south false east false north false down false west true
4178 mushroom_stem up false south false east false north false down false west false
4179 iron_bars waterlogged true south true east true north true west true
4180 iron_bars waterlogged true south true east true north true west false
4181 iron_bars waterlogged false south true east true north true west true
4182 iron_bars waterlogged false south true east true north true west false
4183 iron_bars waterlogged true south false east true north true west true
4184 iron_bars waterlogged true south false east true north true west false
4185 iron_bars waterlogged false south false east true north true west true
4186 iron_bars waterlogged false south false east true north true west false
4187 iron_bars waterlogged true south true east true north false west true
4188 iron_bars waterlogged true south true east true north false west false
4189 iron_bars waterlogged false south true east true north false west true
4190 iron_bars waterlogged false south true east true north false west false
4191 iron_bars waterlogged true south false east true north false west true
4192 iron_bars waterlogged true south false east true north false west false
4193 iron_bars waterlogged false south false east true north false west true
4194 iron_bars waterlogged false south false east true north false west false
4195 iron_bars waterlogged true south true east false north true west true
4196 iron_bars waterlogged true south true east false north true west false
4197 iron_bars waterlogged false south true east false north true west true
4198 iron_bars waterlogged false south true east false north true west false
4199 iron_bars waterlogged true south false east false north true west true
4200 iron_bars waterlogged true south false east false north true west false
4201 iron_bars waterlogged false south false east false north true west true
4202 iron_bars waterlogged false south false east false north true west false
4203 iron_bars waterlogged true south true east false north false west true
4204 iron_bars waterlogged true south true east false north false west false
4205 iron_bars waterlogged false south true east false north false west true
4206 iron_bars waterlogged false south true east false north false west false
4207 iron_bars waterlogged true south false east false north false west true
4208 iron_bars waterlogged true south false east false north false west false
4209 iron_bars waterlogged false south false east false north false west true
4210 iron_bars waterlogged false south false east false north false west false
4211 glass_pane waterlogged true south true east true north true west true
4212 glass_pane waterlogged true south true east true north true west false
4213 glass_pane waterlogged false south true east true north true west true
4214 glass_pane waterlogged false south true east true north true west false
4215 glass_pane waterlogged true south false east true north true west true
4216 glass_pane waterlogged true south false east true north true west false
4217 glass_pane waterlogged false south false east true north true west true
4218 glass_pane waterlogged false south false east true north true west false
4219 glass_pane waterlogged true south true east true north false west true
4220 glass_pane waterlogged true south true east true north false west false
4221 glass_pane waterlogged false south true east true north false west true
4222 glass_pane waterlogged false south true east true north false west false
4223 glass_pane waterlogged true south false east true north false west true
4224 glass_pane waterlogged true south false east true north false west false
4225 glass_pane waterlogged false south false east true north false west true
4226 glass_pane waterlogged false south false east true north false west false
4227 glass_pane waterlogged true south true east false north true west true
4228 glass_pane waterlogged true south true east false north true west false
4229 glass_pane waterlogged false south true east false north true west true
4230 glass_pane waterlogged false south true east false north true west false
4231 glass_pane waterlogged true south false east false north true west true
4232 glass_pane waterlogged true south false east false north true west false
4233 glass_pane waterlogged false south false east false north true west true
4234 glass_pane waterlogged false south false east false north true west false
4235 glass_pane waterlogged true south true east false north false west true
4236 glass_pane waterlogged true south true east false north false west false
4237 glass_pane waterlogged false south true east false north false west true
4238 glass_pane waterlogged false south true east false north false west false
4239 glass_pane waterlogged true south false east false north false west true
4240 glass_pane waterlogged true south false east false north false west false
4241 glass_pane waterlogged false south false east false north false west true
4242 glass_pane waterlogged false south false east false north false west false
4243 melon
4244 attached_pumpkin_stem facing north
4245 attached_pumpkin_stem facing south
4246 attached_pumpkin_stem facing west
4247 attached_pumpkin_stem facing east
4248 attached_melon_stem facing north
4249 attached_melon_stem facing south
4250 attached_melon_stem facing west
4251 attached_melon_stem facing east
4252 pumpkin_stem age 0
4253 pumpkin_stem age 1
4254 pumpkin_stem age 2
4255 pumpkin_stem age 3
4256 pumpkin_stem age 4
4257 pumpkin_stem age 5
4258 pumpkin_stem age 6
4259 pumpkin_stem age 7
4260 melon_stem age 0
4261 melon_stem age 1
4262 melon_stem age 2
4263 melon_stem age 3
4264 melon_stem age 4
4265 melon_stem age 5
4266 melon_stem age 6
4267 melon_stem age 7
4268 vine south true east true north true up true west true
4269 vine south true east true north true up true west false
4270 vine south true east true north true up false west true
4271 vine south true east true north true up false west false
4272 vine south false east true north true up true west true
4273 vine south false east true north true up true west false
4274 vine south false east true north true up false west true
4275 vine south false east true north true up false west false
4276 vine south true east true north false up true west true
4277 vine south true east true north false up true west false
4278 vine south true east true north false up false west true
4279 vine south true east true north false up false west false
4280 vine south false east true north false up true west true
4281 vine south false east true north false up true west false
4282 vine south false east true north false up false west true
4283 vine south false east true north false up false west false
4284 vine south true east false north true up true west true
4285 vine south true east false north true up true west false
4286 vine south true east false north true up false west true
4287 vine south true east false north true up false west false
4288 vine south false east false north true up true west true
4289 vine south false east false north true up true west false
4290 vine south false east false north true up false west true
4291 vine south false east false north true up false west false
4292 vine south true east false north false up true west true
4293 vine south true east false north false up true west false
4294 vine south true east false north false up false west true
4295 vine south true east false north false up false west false
4296 vine south false east false north false up true west true
4297 vine south false east false north false up true west false
4298 vine south false east false north false up false west true
4299 vine south false east false north false up false west false
4300 oak_fence_gate facing north powered true open true in_wall true
4301 oak_fence_gate facing north powered false open true in_wall true
4302 oak_fence_gate facing north powered true open false in_wall true
4303 oak_fence_gate facing north powered false open false in_wall true
4304 oak_fence_gate facing north powered true open true in_wall false
4305 oak_fence_gate facing north powered false open true in_wall false
4306 oak_fence_gate facing north powered true open false in_wall false
4307 oak_fence_gate facing north powered false open false in_wall false
4308 oak_fence_gate facing south powered true open true in_wall true
4309 oak_fence_gate facing south powered false open true in_wall true
4310 oak_fence_gate facing south powered true open false in_wall true
4311 oak_fence_gate facing south powered false open false in_wall true
4312 oak_fence_gate facing south powered true open true in_wall false
4313 oak_fence_gate facing south powered false open true in_wall false
4314 oak_fence_gate facing south powered true open false in_wall false
4315 oak_fence_gate facing south powered false open false in_wall false
4316 oak_fence_gate facing west powered true open true in_wall true
4317 oak_fence_gate facing west powered false open true in_wall true
4318 oak_fence_gate facing west powered true open false in_wall true
4319 oak_fence_gate facing west powered false open false in_wall true
4320 oak_fence_gate facing west powered true open true in_wall false
4321 oak_fence_gate facing west powered false open true in_wall false
4322 oak_fence_gate facing west powered true open false in_wall false
4323 oak_fence_gate facing west powered false open false in_wall false
4324 oak_fence_gate facing east powered true open true in_wall true
4325 oak_fence_gate facing east powered false open true in_wall true
4326 oak_fence_gate facing east powered true open false in_wall true
4327 oak_fence_gate facing east powered false open false in_wall true
4328 oak_fence_gate facing east powered true open true in_wall false
4329 oak_fence_gate facing east powered false open true in_wall false
4330 oak_fence_gate facing east powered true open false in_wall false
4331 oak_fence_gate facing east powered false open false in_wall false
4332 brick_stairs facing north waterlogged true shape straight half top
4333 brick_stairs facing north waterlogged false shape straight half top
4334 brick_stairs facing north waterlogged true shape inner_left half top
4335 brick_stairs facing north waterlogged false shape inner_left half top
4336 brick_stairs facing north waterlogged true shape inner_right half top
4337 brick_stairs facing north waterlogged false shape inner_right half top
4338 brick_stairs facing north waterlogged true shape outer_left half top
4339 brick_stairs facing north waterlogged false shape outer_left half top
4340 brick_stairs facing north waterlogged true shape outer_right half top
4341 brick_stairs facing north waterlogged false shape outer_right half top
4342 brick_stairs facing north waterlogged true shape straight half bottom
4343 brick_stairs facing north waterlogged false shape straight half bottom
4344 brick_stairs facing north waterlogged true shape inner_left half bottom
4345 brick_stairs facing north waterlogged false shape inner_left half bottom
4346 brick_stairs facing north waterlogged true shape inner_right half bottom
4347 brick_stairs facing north waterlogged false shape inner_right half bottom
4348 brick_stairs facing north waterlogged true shape outer_left half bottom
4349 brick_stairs facing north waterlogged false shape outer_left half bottom
4350 brick_stairs facing north waterlogged true shape outer_right half bottom
4351 brick_stairs facing north waterlogged false shape outer_right half bottom
4352 brick_stairs facing south waterlogged true shape straight half top
4353 brick_stairs facing south waterlogged false shape straight half top
4354 brick_stairs facing south waterlogged true shape inner_left half top
4355 brick_stairs facing south waterlogged false shape inner_left half top
4356 brick_stairs facing south waterlogged true shape inner_right half top
4357 brick_stairs facing south waterlogged false shape inner_right half top
4358 brick_stairs facing south waterlogged true shape outer_left half top
4359 brick_stairs facing south waterlogged false shape outer_left half top
4360 brick_stairs facing south waterlogged true shape outer_right half top
4361 brick_stairs facing south waterlogged false shape outer_right half top
4362 brick_stairs facing south waterlogged true shape straight half bottom
4363 brick_stairs facing south waterlogged false shape straight half bottom
4364 brick_stairs facing south waterlogged true shape inner_left half bottom
4365 brick_stairs facing south waterlogged false shape inner_left half bottom
4366 brick_stairs facing south waterlogged true shape inner_right half bottom
4367 brick_stairs facing south waterlogged false shape inner_right half bottom
4368 brick_stairs facing south waterlogged true shape outer_left half bottom
4369 brick_stairs facing south waterlogged false shape outer_left half bottom
4370 brick_stairs facing south waterlogged true shape outer_right half bottom
4371 brick_stairs facing south waterlogged false shape outer_right half bottom
4372 brick_stairs facing west waterlogged true shape straight half top
4373 brick_stairs facing west waterlogged false shape straight half top
4374 brick_stairs facing west waterlogged true shape inner_left half top
4375 brick_stairs facing west waterlogged false shape inner_left half top
4376 brick_stairs facing west waterlogged true shape inner_right half top
4377 brick_stairs facing west waterlogged false shape inner_right half top
4378 brick_stairs facing west waterlogged true shape outer_left half top
4379 brick_stairs facing west waterlogged false shape outer_left half top
4380 brick_stairs facing west waterlogged true shape outer_right half top
4381 brick_stairs facing west waterlogged false shape outer_right half top
4382 brick_stairs facing west waterlogged true shape straight half bottom
4383 brick_stairs facing west waterlogged false shape straight half bottom
4384 brick_stairs facing west waterlogged true shape inner_left half bottom
4385 brick_stairs facing west waterlogged false shape inner_left half bottom
4386 brick_stairs facing west waterlogged true shape inner_right half bottom
4387 brick_stairs facing west waterlogged false shape inner_right half bottom
4388 brick_stairs facing west waterlogged true shape outer_left half bottom
4389 brick_stairs facing west waterlogged false shape outer_left half bottom
4390 brick_stairs facing west waterlogged true shape outer_right half bottom
4391 brick_stairs facing west waterlogged false shape outer_right half bottom
4392 brick_stairs facing east waterlogged true shape straight half top
4393 brick_stairs facing east waterlogged false shape straight half top
4394 brick_stairs facing east waterlogged true shape inner_left half top
4395 brick_stairs facing east waterlogged false shape inner_left half top
4396 brick_stairs facing east waterlogged true shape inner_right half top
4397 brick_stairs facing east waterlogged false shape inner_right half top
4398 brick_stairs facing east waterlogged true shape outer_left half top
4399 brick_stairs facing east waterlogged false shape outer_left half top
4400 brick_stairs facing east waterlogged true shape outer_right half top
4401 brick_stairs facing east waterlogged false shape outer_right half top
4402 brick_stairs facing east waterlogged true shape straight half bottom
4403 brick_stairs facing east waterlogged false shape straight half bottom
4404 brick_stairs facing east waterlogged true shape inner_left half bottom
4405 brick_stairs facing east waterlogged false shape inner_left half bottom
4406 brick_stairs facing east waterlogged true shape inner_right half bottom
4407 brick_stairs facing east waterlogged false shape inner_right half bottom
4408 brick_stairs facing east waterlogged true shape outer_left half bottom
4409 brick_stairs facing east waterlogged false shape outer_left half bottom
4410 brick_stairs facing east waterlogged true shape outer_right half bottom
4411 brick_stairs facing east waterlogged false shape outer_right half bottom
4412 stone_brick_stairs facing north waterlogged true shape straight half top
4413 stone_brick_stairs facing north waterlogged false shape straight half top
4414 stone_brick_stairs facing north waterlogged true shape inner_left half top
4415 stone_brick_stairs facing north waterlogged false shape inner_left half top
4416 stone_brick_stairs facing north waterlogged true shape inner_right half top
4417 stone_brick_stairs facing north waterlogged false shape inner_right half top
4418 stone_brick_stairs facing north waterlogged true shape outer_left half top
4419 stone_brick_stairs facing north waterlogged false shape outer_left half top
4420 stone_brick_stairs facing north waterlogged true shape outer_right half top
4421 stone_brick_stairs facing north waterlogged false shape outer_right half top
4422 stone_brick_stairs facing north waterlogged true shape straight half bottom
4423 stone_brick_stairs facing north waterlogged false shape straight half bottom
4424 stone_brick_stairs facing north waterlogged true shape inner_left half bottom
4425 stone_brick_stairs facing north waterlogged false shape inner_left half bottom
4426 stone_brick_stairs facing north waterlogged true shape inner_right half bottom
4427 stone_brick_stairs facing north waterlogged false shape inner_right half bottom
4428 stone_brick_stairs facing north waterlogged true shape outer_left half bottom
4429 stone_brick_stairs facing north waterlogged false shape outer_left half bottom
4430 stone_brick_stairs facing north waterlogged true shape outer_right half bottom
4431 stone_brick_stairs facing north waterlogged false shape outer_right half bottom
4432 stone_brick_stairs facing south waterlogged true shape straight half top
4433 stone_brick_stairs facing south waterlogged false shape straight half top
4434 stone_brick_stairs facing south waterlogged true shape inner_left half top
4435 stone_brick_stairs facing south waterlogged false shape inner_left half top
4436 stone_brick_stairs facing south waterlogged true shape inner_right half top
4437 stone_brick_stairs facing south waterlogged false shape inner_right half top
4438 stone_brick_stairs facing south waterlogged true shape outer_left half top
4439 stone_brick_stairs facing south waterlogged false shape outer_left half top
4440 stone_brick_stairs facing south waterlogged true shape outer_right half top
4441 stone_brick_stairs facing south waterlogged false shape outer_right half top
4442 stone_brick_stairs facing south waterlogged true shape straight half bottom
4443 stone_brick_stairs facing south waterlogged false shape straight half bottom
4444 stone_brick_stairs facing south waterlogged true shape inner_left half bottom
4445 stone_brick_stairs facing south waterlogged false shape inner_left half bottom
4446 stone_brick_stairs facing south waterlogged true shape inner_right half bottom
4447 stone_brick_stairs facing south waterlogged false shape inner_right half bottom
4448 stone_brick_stairs facing south waterlogged true shape outer_left half bottom
4449 stone_brick_stairs facing south waterlogged false shape outer_left half bottom
4450 stone_brick_stairs facing south waterlogged true shape outer_right half bottom
4451 stone_brick_stairs facing south waterlogged false shape outer_right half bottom
4452 stone_brick_stairs facing west waterlogged true shape straight half top
4453 stone_brick_stairs facing west waterlogged false shape straight half top
4454 stone_brick_stairs facing west waterlogged true shape inner_left half top
4455 stone_brick_stairs facing west waterlogged false shape inner_left half top
4456 stone_brick_stairs facing west waterlogged true shape inner_right half top
4457 stone_brick_stairs facing west waterlogged false shape inner_right half top
4458 stone_brick_stairs facing west waterlogged true shape outer_left half top
4459 stone_brick_stairs facing west waterlogged false shape outer_left half top
4460 stone_brick_stairs facing west waterlogged true shape outer_right half top
4461 stone_brick_stairs facing west waterlogged false shape outer_right half top
4462 stone_brick_stairs facing west waterlogged true shape straight half bottom
4463 stone_brick_stairs facing west waterlogged false shape straight half bottom
4464 stone_brick_stairs facing west waterlogged true shape inner_left half bottom
4465 stone_brick_stairs facing west waterlogged false shape inner_left half bottom
4466 stone_brick_stairs facing west waterlogged true shape inner_right half bottom
4467 stone_brick_stairs facing west waterlogged false shape inner_right half bottom
4468 stone_brick_stairs facing west waterlogged true shape outer_left half bottom
4469 stone_brick_stairs facing west waterlogged false shape outer_left half bottom
4470 stone_brick_stairs facing west waterlogged true shape outer_right half bottom
4471 stone_brick_stairs facing west waterlogged false shape outer_right half bottom
4472 stone_brick_stairs facing east waterlogged true shape straight half top
4473 stone_brick_stairs facing east waterlogged false shape straight half top
4474 stone_brick_stairs facing east waterlogged true shape inner_left half top
4475 stone_brick_stairs facing east waterlogged false shape inner_left half top
4476 stone_brick_stairs facing east waterlogged true shape inner_right half top
4477 stone_brick_stairs facing east waterlogged false shape inner_right half top
4478 stone_brick_stairs facing east waterlogged true shape outer_left half top
4479 stone_brick_stairs facing east waterlogged false shape outer_left half top
4480 stone_brick_stairs facing east waterlogged true shape outer_right half top
4481 stone_brick_stairs facing east waterlogged false shape outer_right half top
4482 stone_brick_stairs facing east waterlogged true shape straight half bottom
4483 stone_brick_stairs facing east waterlogged false shape straight half bottom
4484 stone_brick_stairs facing east waterlogged true shape inner_left half bottom
4485 stone_brick_stairs facing east waterlogged false shape inner_left half bottom
4486 stone_brick_stairs facing east waterlogged true shape inner_right half bottom
4487 stone_brick_stairs facing east waterlogged false shape inner_right half bottom
4488 stone_brick_stairs facing east waterlogged true shape outer_left half bottom
4489 stone_brick_stairs facing east waterlogged false shape outer_left half bottom
4490 stone_brick_stairs facing east waterlogged true shape outer_right half bottom
4491 stone_brick_stairs facing east waterlogged false shape outer_right half bottom
4492 mycelium snowy true
4493 mycelium snowy false
4494 lily_pad
4495 nether_bricks
4496 nether_brick_fence waterlogged true south true east true north true west true
4497 nether_brick_fence waterlogged true south true east true north true west false
4498 nether_brick_fence waterlogged false south true east true north true west true
4499 nether_brick_fence waterlogged false south true east true north true west false
4500 nether_brick_fence waterlogged true south false east true north true west true
4501 nether_brick_fence waterlogged true south false east true north true west false
4502 nether_brick_fence waterlogged false south false east true north true west true
4503 nether_brick_fence waterlogged false south false east true north true west false
4504 nether_brick_fence waterlogged true south true east true north false west true
4505 nether_brick_fence waterlogged true south true east true north false west false
4506 nether_brick_fence waterlogged false south true east true north false west true
4507 nether_brick_fence waterlogged false south true east true north false west false
4508 nether_brick_fence waterlogged true south false east true north false west true
4509 nether_brick_fence waterlogged true south false east true north false west false
4510 nether_brick_fence waterlogged false south false east true north false west true
4511 nether_brick_fence waterlogged false south false east true north false west false
4512 nether_brick_fence waterlogged true south true east false north true west true
4513 nether_brick_fence waterlogged true south true east false north true west false
4514 nether_brick_fence waterlogged false south true east false north true west true
4515 nether_brick_fence waterlogged false south true east false north true west false
4516 nether_brick_fence waterlogged true south false east false north true west true
4517 nether_brick_fence waterlogged true south false east false north true west false
4518 nether_brick_fence waterlogged false south false east false north true west true
4519 nether_brick_fence waterlogged false south false east false north true west false
4520 nether_brick_fence waterlogged true south true east false north false west true
4521 nether_brick_fence waterlogged true south true east false north false west false
4522 nether_brick_fence waterlogged false south true east false north false west true
4523 nether_brick_fence waterlogged false south true east false north false west false
4524 nether_brick_fence waterlogged true south false east false north false west true
4525 nether_brick_fence waterlogged true south false east false north false west false
4526 nether_brick_fence waterlogged false south false east false north false west true
4527 nether_brick_fence waterlogged false south false east false north false west false
4528 nether_brick_stairs facing north waterlogged true shape straight half top
4529 nether_brick_stairs facing north waterlogged false shape straight half top
4530 nether_brick_stairs facing north waterlogged true shape inner_left half top
4531 nether_brick_stairs facing north waterlogged false shape inner_left half top
4532 nether_brick_stairs facing north waterlogged true shape inner_right half top
4533 nether_brick_stairs facing north waterlogged false shape inner_right half top
4534 nether_brick_stairs facing north waterlogged true shape outer_left half top
4535 nether_brick_stairs facing north waterlogged false shape outer_left half top
4536 nether_brick_stairs facing north waterlogged true shape outer_right half top
4537 nether_brick_stairs facing north waterlogged false shape outer_right half top
4538 nether_brick_stairs facing north waterlogged true shape straight half bottom
4539 nether_brick_stairs facing north waterlogged false shape straight half bottom
4540 nether_brick_stairs facing north waterlogged true shape inner_left half bottom
4541 nether_brick_stairs facing north waterlogged false shape inner_left half bottom
4542 nether_brick_stairs facing north waterlogged true shape inner_right half bottom
4543 nether_brick_stairs facing north waterlogged false shape inner_right half bottom
4544 nether_brick_stairs facing north waterlogged true shape outer_left half bottom
4545 nether_brick_stairs facing north waterlogged false shape outer_left half bottom
4546 nether_brick_stairs facing north waterlogged true shape outer_right half bottom
4547 nether_brick_stairs facing north waterlogged false shape outer_right half bottom
4548 nether_brick_stairs facing south waterlogged true shape straight half top
4549 nether_brick_stairs facing south waterlogged false shape straight half top
4550 nether_brick_stairs facing south waterlogged true shape inner_left half top
4551 nether_brick_stairs facing south waterlogged false shape inner_left half top
4552 nether_brick_stairs facing south waterlogged true shape inner_right half top
4553 nether_brick_stairs facing south waterlogged false shape inner_right half top
4554 nether_brick_stairs facing south waterlogged true shape outer_left half top
4555 nether_brick_stairs facing south waterlogged false shape outer_left half top
4556 nether_brick_stairs facing south waterlogged true shape outer_right half top
4557 nether_brick_stairs facing south waterlogged false shape outer_right half top
4558 nether_brick_stairs facing south waterlogged true shape straight half bottom
4559 nether_brick_stairs facing south waterlogged false shape straight half bottom
4560 nether_brick_stairs facing south waterlogged true shape inner_left half bottom
4561 nether_brick_stairs facing south waterlogged false shape inner_left half bottom
4562 nether_brick_stairs facing south waterlogged true shape inner_right half bottom
4563 nether_brick_stairs facing south waterlogged false shape inner_right half bottom
4564 nether_brick_stairs facing south waterlogged true shape outer_left half bottom
4565 nether_brick_stairs facing south waterlogged false shape outer_left half bottom
4566 nether_brick_stairs facing south waterlogged true shape outer_right half bottom
4567 nether_brick_stairs facing south waterlogged false shape outer_right half bottom
4568 nether_brick_stairs facing west waterlogged true shape straight half top
4569 nether_brick_stairs facing west waterlogged false shape straight half top
4570 nether_brick_stairs facing west waterlogged true shape inner_left half top
4571 nether_brick_stairs facing west waterlogged false shape inner_left half top
4572 nether_brick_stairs facing west waterlogged true shape inner_right half top
4573 nether_brick_stairs facing west waterlogged false shape inner_right half top
4574 nether_brick_stairs facing west waterlogged true shape outer_left half top
4575 nether_brick_stairs facing west waterlogged false shape outer_left half top
4576 nether_brick_stairs facing west waterlogged true shape outer_right half top
4577 nether_brick_stairs facing west waterlogged false shape outer_right half top
4578 nether_brick_stairs facing west waterlogged true shape straight half bottom
4579 nether_brick_stairs facing west waterlogged false shape straight half bottom
4580 nether_brick_stairs facing west waterlogged true shape inner_left half bottom
4581 nether_brick_stairs facing west waterlogged false shape inner_left half bottom
4582 nether_brick_stairs facing west waterlogged true shape inner_right half bottom
4583 nether_brick_stairs facing west waterlogged false shape inner_right half bottom
4584 nether_brick_stairs facing west waterlogged true shape outer_left half bottom
4585 nether_brick_stairs facing west waterlogged false shape outer_left half bottom
4586 nether_brick_stairs facing west waterlogged true shape outer_right half bottom
4587 nether_brick_stairs facing west waterlogged false shape outer_right half bottom
4588 nether_brick_stairs facing east waterlogged true shape straight half top
4589 nether_brick_stairs facing east waterlogged false shape straight half top
4590 nether_brick_stairs facing east waterlogged true shape inner_left half top
4591 nether_brick_stairs facing east waterlogged false shape inner_left half top
4592 nether_brick_stairs facing east waterlogged true shape inner_right half top
4593 nether_brick_stairs facing east waterlogged false shape inner_right half top
4594 nether_brick_stairs facing east waterlogged true shape outer_left half top
4595 nether_brick_stairs facing east waterlogged false shape outer_left half top
4596 nether_brick_stairs facing east waterlogged true shape outer_right half top
4597 nether_brick_stairs facing east waterlogged false shape outer_right half top
4598 nether_brick_stairs facing east waterlogged true shape straight half bottom
4599 nether_brick_stairs facing east waterlogged false shape straight half bottom
4600 nether_brick_stairs facing east waterlogged true shape inner_left half bottom
4601 nether_brick_stairs facing east waterlogged false shape inner_left half bottom
4602 nether_brick_stairs facing east waterlogged true shape inner_right half bottom
4603 nether_brick_stairs facing east waterlogged false shape inner_right half bottom
4604 nether_brick_stairs facing east waterlogged true shape outer_left half bottom
4605 nether_brick_stairs facing east waterlogged false shape outer_left half bottom
4606 nether_brick_stairs facing east waterlogged true shape outer_right half bottom
4607 nether_brick_stairs facing east waterlogged false shape outer_right half bottom
4608 nether_wart age 0
4609 nether_wart age 1
4610 nether_wart age 2
4611 nether_wart age 3
4612 enchanting_table
4613 brewing_stand has_bottle_0 true has_bottle_1 true has_bottle_2 true
4614 brewing_stand has_bottle_0 true has_bottle_1 true has_bottle_2 false
4615 brewing_stand has_bottle_0 true has_bottle_1 false has_bottle_2 true
4616 brewing_stand has_bottle_0 true has_bottle_1 false has_bottle_2 false
4617 brewing_stand has_bottle_0 false has_bottle_1 true has_bottle_2 true
4618 brewing_stand has_bottle_0 false has_bottle_1 true has_bottle_2 false
4619 brewing_stand has_bottle_0 false has_bottle_1 false has_bottle_2 true
4620 brewing_stand has_bottle_0 false has_bottle_1 false has_bottle_2 false
4621 cauldron level 0
4622 cauldron level 1
4623 cauldron level 2
4624 cauldron level 3
4625 end_portal
4626 end_portal_frame facing north eye true
4627 end_portal_frame facing south eye true
4628 end_portal_frame facing west eye true
4629 end_portal_frame facing east eye true
4630 end_portal_frame facing north eye false
4631 end_portal_frame facing south eye false
4632 end_portal_frame facing west eye false
4633 end_portal_frame facing east eye false
4634 end_stone
4635 dragon_egg
4636 redstone_lamp lit true
4637 redstone_lamp lit false
4638 cocoa facing north age 0
4639 cocoa facing south age 0
4640 cocoa facing west age 0
4641 cocoa facing east age 0
4642 cocoa facing north age 1
4643 cocoa facing south age 1
4644 cocoa facing west age 1
4645 cocoa facing east age 1
4646 cocoa facing north age 2
4647 cocoa facing south age 2
4648 cocoa facing west age 2
4649 cocoa facing east age 2
4650 sandstone_stairs facing north waterlogged true shape straight half top
4651 sandstone_stairs facing north waterlogged false shape straight half top
4652 sandstone_stairs facing north waterlogged true shape inner_left half top
4653 sandstone_stairs facing north waterlogged false shape inner_left half top
4654 sandstone_stairs facing north waterlogged true shape inner_right half top
4655 sandstone_stairs facing north waterlogged false shape inner_right half top
4656 sandstone_stairs facing north waterlogged true shape outer_left half top
4657 sandstone_stairs facing north waterlogged false shape outer_left half top
4658 sandstone_stairs facing north waterlogged true shape outer_right half top
4659 sandstone_stairs facing north waterlogged false shape outer_right half top
4660 sandstone_stairs facing north waterlogged true shape straight half bottom
4661 sandstone_stairs facing north waterlogged false shape straight half bottom
4662 sandstone_stairs facing north waterlogged true shape inner_left half bottom
4663 sandstone_stairs facing north waterlogged false shape inner_left half bottom
4664 sandstone_stairs facing north waterlogged true shape inner_right half bottom
4665 sandstone_stairs facing north waterlogged false shape inner_right half bottom
4666 sandstone_stairs facing north waterlogged true shape outer_left half bottom
4667 sandstone_stairs facing north waterlogged false shape outer_left half bottom
4668 sandstone_stairs facing north waterlogged true shape outer_right half bottom
4669 sandstone_stairs facing north waterlogged false shape outer_right half bottom
4670 sandstone_stairs facing south waterlogged true shape straight half top
4671 sandstone_stairs facing south waterlogged false shape straight half top
4672 sandstone_stairs facing south waterlogged true shape inner_left half top
4673 sandstone_stairs facing south waterlogged false shape inner_left half top
4674 sandstone_stairs facing south waterlogged true shape inner_right half top
4675 sandstone_stairs facing south waterlogged false shape inner_right half top
4676 sandstone_stairs facing south waterlogged true shape outer_left half top
4677 sandstone_stairs facing south waterlogged false shape outer_left half top
4678 sandstone_stairs facing south waterlogged true shape outer_right half top
4679 sandstone_stairs facing south waterlogged false shape outer_right half top
4680 sandstone_stairs facing south waterlogged true shape straight half bottom
4681 sandstone_stairs facing south waterlogged false shape straight half bottom
4682 sandstone_stairs facing south waterlogged true shape inner_left half bottom
4683 sandstone_stairs facing south waterlogged false shape inner_left half bottom
4684 sandstone_stairs facing south waterlogged true shape inner_right half bottom
4685 sandstone_stairs facing south waterlogged false shape inner_right half bottom
4686 sandstone_stairs facing south waterlogged true shape outer_left half bottom
4687 sandstone_stairs facing south waterlogged false shape outer_left half bottom
4688 sandstone_stairs facing south waterlogged true shape outer_right half bottom
4689 sandstone_stairs facing south waterlogged false shape outer_right half bottom
4690 sandstone_stairs facing west waterlogged true shape straight half top
4691 sandstone_stairs facing west waterlogged false shape straight half top
4692 sandstone_stairs facing west waterlogged true shape inner_left half top
4693 sandstone_stairs facing west waterlogged false shape inner_left half top
4694 sandstone_stairs facing west waterlogged true shape inner_right half top
4695 sandstone_stairs facing west waterlogged false shape inner_right half top
4696 sandstone_stairs facing west waterlogged true shape outer_left half top
4697 sandstone_stairs facing west waterlogged false shape outer_left half top
4698 sandstone_stairs facing west waterlogged true shape outer_right half top
4699 sandstone_stairs facing west waterlogged false shape outer_right half top
4700 sandstone_stairs facing west waterlogged true shape straight half bottom
4701 sandstone_stairs facing west waterlogged false shape straight half bottom
4702 sandstone_stairs facing west waterlogged true shape inner_left half bottom
4703 sandstone_stairs facing west waterlogged false shape inner_left half bottom
4704 sandstone_stairs facing west waterlogged true shape inner_right half bottom
4705 sandstone_stairs facing west waterlogged false shape inner_right half bottom
4706 sandstone_stairs facing west waterlogged true shape outer_left half bottom
4707 sandstone_stairs facing west waterlogged false shape outer_left half bottom
4708 sandstone_stairs facing west waterlogged true shape outer_right half bottom
4709 sandstone_stairs facing west waterlogged false shape outer_right half bottom
4710 sandstone_stairs facing east waterlogged true shape straight half top
4711 sandstone_stairs facing east waterlogged false shape straight half top
4712 sandstone_stairs facing east waterlogged true shape inner_left half top
4713 sandstone_stairs facing east waterlogged false shape inner_left half top
4714 sandstone_stairs facing east waterlogged true shape inner_right half top
4715 sandstone_stairs facing east waterlogged false shape inner_right half top
4716 sandstone_stairs facing east waterlogged true shape outer_left half top
4717 sandstone_stairs facing east waterlogged false shape outer_left half top
4718 sandstone_stairs facing east waterlogged true shape outer_right half top
4719 sandstone_stairs facing east waterlogged false shape outer_right half top
4720 sandstone_stairs facing east waterlogged true shape straight half bottom
4721 sandstone_stairs facing east waterlogged false shape straight half bottom
4722 sandstone_stairs facing east waterlogged true shape inner_left half bottom
4723 sandstone_stairs facing east waterlogged false shape inner_left half bottom
4724 sandstone_stairs facing east waterlogged true shape inner_right half bottom
4725 sandstone_stairs facing east waterlogged false shape inner_right half bottom
4726 sandstone_stairs facing east waterlogged true shape outer_left half bottom
4727 sandstone_stairs facing east waterlogged false shape outer_left half bottom
4728 sandstone_stairs facing east waterlogged true shape outer_right half bottom
4729 sandstone_stairs facing east waterlogged false shape outer_right half bottom
4730 emerald_ore
4731 ender_chest facing north waterlogged true
4732 ender_chest facing north waterlogged false
4733 ender_chest facing south waterlogged true
4734 ender_chest facing south waterlogged false
4735 ender_chest facing west waterlogged true
4736 ender_chest facing west waterlogged false
4737 ender_chest facing east waterlogged true
4738 ender_chest facing east waterlogged false
4739 tripwire_hook attached true facing north powered true
4740 tripwire_hook attached true facing north powered false
4741 tripwire_hook attached true facing south powered true
4742 tripwire_hook attached true facing south powered false
4743 tripwire_hook attached true facing west powered true
4744 tripwire_hook attached true facing west powered false
4745 tripwire_hook attached true facing east powered true
4746 tripwire_hook attached true facing east powered false
4747 tripwire_hook attached false facing north powered true
4748 tripwire_hook attached false facing north powered false
4749 tripwire_hook attached false facing south powered true
4750 tripwire_hook attached false facing south powered false
4751 tripwire_hook attached false facing west powered true
4752 tripwire_hook attached false facing west powered false
4753 tripwire_hook attached false facing east powered true
4754 tripwire_hook attached false facing east powered false
4755 tripwire attached true disarmed true powered true east true north true south true west true
4756 tripwire attached true disarmed true powered true east true north true south true west false
4757 tripwire attached true disarmed true powered true east true north true south false west true
4758 tripwire attached true disarmed true powered true east true north true south false west false
4759 tripwire attached true disarmed true powered false east true north true south true west true
4760 tripwire attached true disarmed true powered false east true north true south true west false
4761 tripwire attached true disarmed true powered false east true north true south false west true
4762 tripwire attached true disarmed true powered false east true north true south false west false
4763 tripwire attached true disarmed true powered true east true north false south true west true
4764 tripwire attached true disarmed true powered true east true north false south true west false
4765 tripwire attached true disarmed true powered true east true north false south false west true
4766 tripwire attached true disarmed true powered true east true north false south false west false
4767 tripwire attached true disarmed true powered false east true north false south true west true
4768 tripwire attached true disarmed true powered false east true north false south true west false
4769 tripwire attached true disarmed true powered false east true north false south false west true
4770 tripwire attached true disarmed true powered false east true north false south false west false
4771 tripwire attached true disarmed true powered true east false north true south true west true
4772 tripwire attached true disarmed true powered true east false north true south true west false
4773 tripwire attached true disarmed true powered true east false north true south false west true
4774 tripwire attached true disarmed true powered true east false north true south false west false
4775 tripwire attached true disarmed true powered false east false north true south true west true
4776 tripwire attached true disarmed true powered false east false north true south true west false
4777 tripwire attached true disarmed true powered false east false north true south false west true
4778 tripwire attached true disarmed true powered false east false north true south false west false
4779 tripwire attached true disarmed true powered true east false north false south true west true
4780 tripwire attached true disarmed true powered true east false north false south true west false
4781 tripwire attached true disarmed true powered true east false north false south false west true
4782 tripwire attached true disarmed true powered true east false north false south false west false
4783 tripwire attached true disarmed true powered false east false north false south true west true
4784 tripwire attached true disarmed true powered false east false north false south true west false
4785 tripwire attached true disarmed true powered false east false north false south false west true
4786 tripwire attached true disarmed true powered false east false north false south false west false
4787 tripwire attached true disarmed false powered true east true north true south true west true
4788 tripwire attached true disarmed false powered true east true north true south true west false
4789 tripwire attached true disarmed false powered true east true north true south false west true
4790 tripwire attached true disarmed false powered true east true north true south false west false
4791 tripwire attached true disarmed false powered false east true north true south true west true
4792 tripwire attached true disarmed false powered false east true north true south true west false
4793 tripwire attached true disarmed false powered false east true north true south false west true
4794 tripwire attached true disarmed false powered false east true north true south false west false
4795 tripwire attached true disarmed false powered true east true north false south true west true
4796 tripwire attached true disarmed false powered true east true north false south true west false
4797 tripwire attached true disarmed false powered true east true north false south false west true
4798 tripwire attached true disarmed false powered true east true north false south false west false
4799 tripwire attached true disarmed false powered false east true north false south true west true
4800 tripwire attached true disarmed false powered false east true north false south true west false
4801 tripwire attached true disarmed false powered false east true north false south false west true
4802 tripwire attached true disarmed false powered false east true north false south false west false
4803 tripwire attached true disarmed false powered true east false north true south true west true
4804 tripwire attached true disarmed false powered true east false north true south true west false
4805 tripwire attached true disarmed false powered true east false north true south false west true
4806 tripwire attached true disarmed false powered true east false north true south false west false
4807 tripwire attached true disarmed false powered false east false north true south true west true
4808 tripwire attached true disarmed false powered false east false north true south true west false
4809 tripwire attached true disarmed false powered false east false north true south false west true
4810 tripwire attached true disarmed false powered false east false north true south false west false
4811 tripwire attached true disarmed false powered true east false north false south true west true
4812 tripwire attached true disarmed false powered true east false north false south true west false
4813 tripwire attached true disarmed false powered true east false north false south false west true
4814 tripwire attached true disarmed false powered true east false north false south false west false
4815 tripwire attached true disarmed false powered false east false north false south true west true
4816 tripwire attached true disarmed false powered false east false north false south true west false
4817 tripwire attached true disarmed false powered false east false north false south false west true
4818 tripwire attached true disarmed false powered false east false north false south false west false
4819 tripwire attached false disarmed true powered true east true north true south true west true
4820 tripwire attached false disarmed true powered true east true north true south true west false
4821 tripwire attached false disarmed true powered true east true north true south false west true
4822 tripwire attached false disarmed true powered true east true north true south false west false
4823 tripwire attached false disarmed true powered false east true north true south true west true
4824 tripwire attached false disarmed true powered false east true north true south true west false
4825 tripwire attached false disarmed true powered false east true north true south false west true
4826 tripwire attached false disarmed true powered false east true north true south false west false
4827 tripwire attached false disarmed true powered true east true north false south true west true
4828 tripwire attached false disarmed true powered true east true north false south true west false
4829 tripwire attached false disarmed true powered true east true north false south false west true
4830 tripwire attached false disarmed true powered true east true north false south false west false
4831 tripwire attached false disarmed true powered false east true north false south true west true
4832 tripwire attached false disarmed true powered false east true north false south true west false
4833 tripwire attached false disarmed true powered false east true north false south false west true
4834 tripwire attached false disarmed true powered false east true north false south false west false
4835 tripwire attached false disarmed true powered true east false north true south true west true
4836 tripwire attached false disarmed true powered true east false north true south true west false
4837 tripwire attached false disarmed true powered true east false north true south false west true
4838 tripwire attached false disarmed true powered true east false north true south false west false
4839 tripwire attached false disarmed true powered false east false north true south true west true
4840 tripwire attached false disarmed true powered false east false north true south true west false
4841 tripwire attached false disarmed true powered false east false north true south false west true
4842 tripwire attached false disarmed true powered false east false north true south false west false
4843 tripwire attached false disarmed true powered true east false north false south true west true
4844 tripwire attached false disarmed true powered true east false north false south true west false
4845 tripwire attached false disarmed true powered true east false north false south false west true
4846 tripwire attached false disarmed true powered true east false north false south false west false
4847 tripwire attached false disarmed true powered false east false north false south true west true
4848 tripwire attached false disarmed true powered false east false north false south true west false
4849 tripwire attached false disarmed true powered false east false north false south false west true
4850 tripwire attached false disarmed true powered false east false north false south false west false
4851 tripwire attached false disarmed false powered true east true north true south true west true
4852 tripwire attached false disarmed false powered true east true north true south true west false
4853 tripwire attached false disarmed false powered true east true north true south false west true
4854 tripwire attached false disarmed false powered true east true north true south false west false
4855 tripwire attached false disarmed false powered false east true north true south true west true
4856 tripwire attached false disarmed false powered false east true north true south true west false
4857 tripwire attached false disarmed false powered false east true north true south false west true
4858 tripwire attached false disarmed false powered false east true north true south false west false
4859 tripwire attached false disarmed false powered true east true north false south true west true
4860 tripwire attached false disarmed false powered true east true north false south true west false
4861 tripwire attached false disarmed false powered true east true north false south false west true
4862 tripwire attached false disarmed false powered true east true north false south false west false
4863 tripwire attached false disarmed false powered false east true north false south true west true
4864 tripwire attached false disarmed false powered false east true north false south true west false
4865 tripwire attached false disarmed false powered false east true north false south false west true
4866 tripwire attached false disarmed false powered false east true north false south false west false
4867 tripwire attached false disarmed false powered true east false north true south true west true
4868 tripwire attached false disarmed false powered true east false north true south true west false
4869 tripwire attached false disarmed false powered true east false north true south false west true
4870 tripwire attached false disarmed false powered true east false north true south false west false
4871 tripwire attached false disarmed false powered false east false north true south true west true
4872 tripwire attached false disarmed false powered false east false north true south true west false
4873 tripwire attached false disarmed false powered false east false north true south false west true
4874 tripwire attached false disarmed false powered false east false north true south false west false
4875 tripwire attached false disarmed false powered true east false north false south true west true
4876 tripwire attached false disarmed false powered true east false north false south true west false
4877 tripwire attached false disarmed false powered true east false north false south false west true
4878 tripwire attached false disarmed false powered true east false north false south false west false
4879 tripwire attached false disarmed false powered false east false north false south true west true
4880 tripwire attached false disarmed false powered false east false north false south true west false
4881 tripwire attached false disarmed false powered false east false north false south false west true
4882 tripwire attached false disarmed false powered false east false north false south false west false
4883 emerald_block
4884 spruce_stairs facing north waterlogged true shape straight half top
4885 spruce_stairs facing north waterlogged false shape straight half top
4886 spruce_stairs facing north waterlogged true shape inner_left half top
4887 spruce_stairs facing north waterlogged false shape inner_left half top
4888 spruce_stairs facing north waterlogged true shape inner_right half top
4889 spruce_stairs facing north waterlogged false shape inner_right half top
4890 spruce_stairs facing north waterlogged true shape outer_left half top
4891 spruce_stairs facing north waterlogged false shape outer_left half top
4892 spruce_stairs facing north waterlogged true shape outer_right half top
4893 spruce_stairs facing north waterlogged false shape outer_right half top
4894 spruce_stairs facing north waterlogged true shape straight half bottom
4895 spruce_stairs facing north waterlogged false shape straight half bottom
4896 spruce_stairs facing north waterlogged true shape inner_left half bottom
4897 spruce_stairs facing north waterlogged false shape inner_left half bottom
4898 spruce_stairs facing north waterlogged true shape inner_right half bottom
4899 spruce_stairs facing north waterlogged false shape inner_right half bottom
4900 spruce_stairs facing north waterlogged true shape outer_left half bottom
4901 spruce_stairs facing north waterlogged false shape outer_left half bottom
4902 spruce_stairs facing north waterlogged true shape outer_right half bottom
4903 spruce_stairs facing north waterlogged false shape outer_right half bottom
4904 spruce_stairs facing south waterlogged true shape straight half top
4905 spruce_stairs facing south waterlogged false shape straight half top
4906 spruce_stairs facing south waterlogged true shape inner_left half top
4907 spruce_stairs facing south waterlogged false shape inner_left half top
4908 spruce_stairs facing south waterlogged true shape inner_right half top
4909 spruce_stairs facing south waterlogged false shape inner_right half top
4910 spruce_stairs facing south waterlogged true shape outer_left half top
4911 spruce_stairs facing south waterlogged false shape outer_left half top
4912 spruce_stairs facing south waterlogged true shape outer_right half top
4913 spruce_stairs facing south waterlogged false shape outer_right half top
4914 spruce_stairs facing south waterlogged true shape straight half bottom
4915 spruce_stairs facing south waterlogged false shape straight half bottom
4916 spruce_stairs facing south waterlogged true shape inner_left half bottom
4917 spruce_stairs facing south waterlogged false shape inner_left half bottom
4918 spruce_stairs facing south waterlogged true shape inner_right half bottom
4919 spruce_stairs facing south waterlogged false shape inner_right half bottom
4920 spruce_stairs facing south waterlogged true shape outer_left half bottom
4921 spruce_stairs facing south waterlogged false shape outer_left half bottom
4922 spruce_stairs facing south waterlogged true shape outer_right half bottom
4923 spruce_stairs facing south waterlogged false shape outer_right half bottom
4924 spruce_stairs facing west waterlogged true shape straight half top
4925 spruce_stairs facing west waterlogged false shape straight half top
4926 spruce_stairs facing west waterlogged true shape inner_left half top
4927 spruce_stairs facing west waterlogged false shape inner_left half top
4928 spruce_stairs facing west waterlogged true shape inner_right half top
4929 spruce_stairs facing west waterlogged false shape inner_right half top
4930 spruce_stairs facing west waterlogged true shape outer_left half top
4931 spruce_stairs facing west waterlogged false shape outer_left half top
4932 spruce_stairs facing west waterlogged true shape outer_right half top
4933 spruce_stairs facing west waterlogged false shape outer_right half top
4934 spruce_stairs facing west waterlogged true shape straight half bottom
4935 spruce_stairs facing west waterlogged false shape straight half bottom
4936 spruce_stairs facing west waterlogged true shape inner_left half bottom
4937 spruce_stairs facing west waterlogged false shape inner_left half bottom
4938 spruce_stairs facing west waterlogged true shape inner_right half bottom
4939 spruce_stairs facing west waterlogged false shape inner_right half bottom
4940 spruce_stairs facing west waterlogged true shape outer_left half bottom
4941 spruce_stairs facing west waterlogged false shape outer_left half bottom
4942 spruce_stairs facing west waterlogged true shape outer_right half bottom
4943 spruce_stairs facing west waterlogged false shape outer_right half bottom
4944 spruce_stairs facing east waterlogged true shape straight half top
4945 spruce_stairs facing east waterlogged false shape straight half top
4946 spruce_stairs facing east waterlogged true shape inner_left half top
4947 spruce_stairs facing east waterlogged false shape inner_left half top
4948 spruce_stairs facing east waterlogged true shape inner_right half top
4949 spruce_stairs facing east waterlogged false shape inner_right half top
4950 spruce_stairs facing east waterlogged true shape outer_left half top
4951 spruce_stairs facing east waterlogged false shape outer_left half top
4952 spruce_stairs facing east waterlogged true shape outer_right half top
4953 spruce_stairs facing east waterlogged false shape outer_right half top
4954 spruce_stairs facing east waterlogged true shape straight half bottom
4955 spruce_stairs facing east waterlogged false shape straight half bottom
4956 spruce_stairs facing east waterlogged true shape inner_left half bottom
4957 spruce_stairs facing east waterlogged false shape inner_left half bottom
4958 spruce_stairs facing east waterlogged true shape inner_right half bottom
4959 spruce_stairs facing east waterlogged false shape inner_right half bottom
4960 spruce_stairs facing east waterlogged true shape outer_left half bottom
4961 spruce_stairs facing east waterlogged false shape outer_left half bottom
4962 spruce_stairs facing east waterlogged true shape outer_right half bottom
4963 spruce_stairs facing east waterlogged false shape outer_right half bottom
4964 birch_stairs facing north waterlogged true shape straight half top
4965 birch_stairs facing north waterlogged false shape straight half top
4966 birch_stairs facing north waterlogged true shape inner_left half top
4967 birch_stairs facing north waterlogged false shape inner_left half top
4968 birch_stairs facing north waterlogged true shape inner_right half top
4969 birch_stairs facing north waterlogged false shape inner_right half top
4970 birch_stairs facing north waterlogged true shape outer_left half top
4971 birch_stairs facing north waterlogged false shape outer_left half top
4972 birch_stairs facing north waterlogged true shape outer_right half top
4973 birch_stairs facing north waterlogged false shape outer_right half top
4974 birch_stairs facing north waterlogged true shape straight half bottom
4975 birch_stairs facing north waterlogged false shape straight half bottom
4976 birch_stairs facing north waterlogged true shape inner_left half bottom
4977 birch_stairs facing north waterlogged false shape inner_left half bottom
4978 birch_stairs facing north waterlogged true shape inner_right half bottom
4979 birch_stairs facing north waterlogged false shape inner_right half bottom
4980 birch_stairs facing north waterlogged true shape outer_left half bottom
4981 birch_stairs facing north waterlogged false shape outer_left half bottom
4982 birch_stairs facing north waterlogged true shape outer_right half bottom
4983 birch_stairs facing north waterlogged false shape outer_right half bottom
4984 birch_stairs facing south waterlogged true shape straight half top
4985 birch_stairs facing south waterlogged false shape straight half top
4986 birch_stairs facing south waterlogged true shape inner_left half top
4987 birch_stairs facing south waterlogged false shape inner_left half top
4988 birch_stairs facing south waterlogged true shape inner_right half top
4989 birch_stairs facing south waterlogged false shape inner_right half top
4990 birch_stairs facing south waterlogged true shape outer_left half top
4991 birch_stairs facing south waterlogged false shape outer_left half top
4992 birch_stairs facing south waterlogged true shape outer_right half top
4993 birch_stairs facing south waterlogged false shape outer_right half top
4994 birch_stairs facing south waterlogged true shape straight half bottom
4995 birch_stairs facing south waterlogged false shape straight half bottom
4996 birch_stairs facing south waterlogged true shape inner_left half bottom
4997 birch_stairs facing south waterlogged false shape inner_left half bottom
4998 birch_stairs facing south waterlogged true shape inner_right half bottom
4999 birch_stairs facing south waterlogged false shape inner_right half bottom
5000 birch_stairs facing south waterlogged true shape outer_left half bottom
5001 birch_stairs facing south waterlogged false shape outer_left half bottom
5002 birch_stairs facing south waterlogged true shape outer_right half bottom
5003 birch_stairs facing south waterlogged false shape outer_right half bottom
5004 birch_stairs facing west waterlogged true shape straight half top
5005 birch_stairs facing west waterlogged false shape straight half top
5006 birch_stairs facing west waterlogged true shape inner_left half top
5007 birch_stairs facing west waterlogged false shape inner_left half top
5008 birch_stairs facing west waterlogged true shape inner_right half top
5009 birch_stairs facing west waterlogged false shape inner_right half top
5010 birch_stairs facing west waterlogged true shape outer_left half top
5011 birch_stairs facing west waterlogged false shape outer_left half top
5012 birch_stairs facing west waterlogged true shape outer_right half top
5013 birch_stairs facing west waterlogged false shape outer_right half top
5014 birch_stairs facing west waterlogged true shape straight half bottom
5015 birch_stairs facing west waterlogged false shape straight half bottom
5016 birch_stairs facing west waterlogged true shape inner_left half bottom
5017 birch_stairs facing west waterlogged false shape inner_left half bottom
5018 birch_stairs facing west waterlogged true shape inner_right half bottom
5019 birch_stairs facing west waterlogged false shape inner_right half bottom
5020 birch_stairs facing west waterlogged true shape outer_left half bottom
5021 birch_stairs facing west waterlogged false shape outer_left half bottom
5022 birch_stairs facing west waterlogged true shape outer_right half bottom
5023 birch_stairs facing west waterlogged false shape outer_right half bottom
5024 birch_stairs facing east waterlogged true shape straight half top
5025 birch_stairs facing east waterlogged false shape straight half top
5026 birch_stairs facing east waterlogged true shape inner_left half top
5027 birch_stairs facing east waterlogged false shape inner_left half top
5028 birch_stairs facing east waterlogged true shape inner_right half top
5029 birch_stairs facing east waterlogged false shape inner_right half top
5030 birch_stairs facing east waterlogged true shape outer_left half top
5031 birch_stairs facing east waterlogged false shape outer_left half top
5032 birch_stairs facing east waterlogged true shape outer_right half top
5033 birch_stairs facing east waterlogged false shape outer_right half top
5034 birch_stairs facing east waterlogged true shape straight half bottom
5035 birch_stairs facing east waterlogged false shape straight half bottom
5036 birch_stairs facing east waterlogged true shape inner_left half bottom
5037 birch_stairs facing east waterlogged false shape inner_left half bottom
5038 birch_stairs facing east waterlogged true shape inner_right half bottom
5039 birch_stairs facing east waterlogged false shape inner_right half bottom
5040 birch_stairs facing east waterlogged true shape outer_left half bottom
5041 birch_stairs facing east waterlogged false shape outer_left half bottom
5042 birch_stairs facing east waterlogged true shape outer_right half bottom
5043 birch_stairs facing east waterlogged false shape outer_right half bottom
5044 jungle_stairs facing north waterlogged true shape straight half top
5045 jungle_stairs facing north waterlogged false shape straight half top
5046 jungle_stairs facing north waterlogged true shape inner_left half top
5047 jungle_stairs facing north waterlogged false shape inner_left half top
5048 jungle_stairs facing north waterlogged true shape inner_right half top
5049 jungle_stairs facing north waterlogged false shape inner_right half top
5050 jungle_stairs facing north waterlogged true shape outer_left half top
5051 jungle_stairs facing north waterlogged false shape outer_left half top
5052 jungle_stairs facing north waterlogged true shape outer_right half top
5053 jungle_stairs facing north waterlogged false shape outer_right half top
5054 jungle_stairs facing north waterlogged true shape straight half bottom
5055 jungle_stairs facing north waterlogged false shape straight half bottom
5056 jungle_stairs facing north waterlogged true shape inner_left half bottom
5057 jungle_stairs facing north waterlogged false shape inner_left half bottom
5058 jungle_stairs facing north waterlogged true shape inner_right half bottom
5059 jungle_stairs facing north waterlogged false shape inner_right half bottom
5060 jungle_stairs facing north waterlogged true shape outer_left half bottom
5061 jungle_stairs facing north waterlogged false shape outer_left half bottom
5062 jungle_stairs facing north waterlogged true shape outer_right half bottom
5063 jungle_stairs facing north waterlogged false shape outer_right half bottom
5064 jungle_stairs facing south waterlogged true shape straight half top
5065 jungle_stairs facing south waterlogged false shape straight half top
5066 jungle_stairs facing south waterlogged true shape inner_left half top
5067 jungle_stairs facing south waterlogged false shape inner_left half top
5068 jungle_stairs facing south waterlogged true shape inner_right half top
5069 jungle_stairs facing south waterlogged false shape inner_right half top
5070 jungle_stairs facing south waterlogged true shape outer_left half top
5071 jungle_stairs facing south waterlogged false shape outer_left half top
5072 jungle_stairs facing south waterlogged true shape outer_right half top
5073 jungle_stairs facing south waterlogged false shape outer_right half top
5074 jungle_stairs facing south waterlogged true shape straight half bottom
5075 jungle_stairs facing south waterlogged false shape straight half bottom
5076 jungle_stairs facing south waterlogged true shape inner_left half bottom
5077 jungle_stairs facing south waterlogged false shape inner_left half bottom
5078 jungle_stairs facing south waterlogged true shape inner_right half bottom
5079 jungle_stairs facing south waterlogged false shape inner_right half bottom
5080 jungle_stairs facing south waterlogged true shape outer_left half bottom
5081 jungle_stairs facing south waterlogged false shape outer_left half bottom
5082 jungle_stairs facing south waterlogged true shape outer_right half bottom
5083 jungle_stairs facing south waterlogged false shape outer_right half bottom
5084 jungle_stairs facing west waterlogged true shape straight half top
5085 jungle_stairs facing west waterlogged false shape straight half top
5086 jungle_stairs facing west waterlogged true shape inner_left half top
5087 jungle_stairs facing west waterlogged false shape inner_left half top
5088 jungle_stairs facing west waterlogged true shape inner_right half top
5089 jungle_stairs facing west waterlogged false shape inner_right half top
5090 jungle_stairs facing west waterlogged true shape outer_left half top
5091 jungle_stairs facing west waterlogged false shape outer_left half top
5092 jungle_stairs facing west waterlogged true shape outer_right half top
5093 jungle_stairs facing west waterlogged false shape outer_right half top
5094 jungle_stairs facing west waterlogged true shape straight half bottom
5095 jungle_stairs facing west waterlogged false shape straight half bottom
5096 jungle_stairs facing west waterlogged true shape inner_left half bottom
5097 jungle_stairs facing west waterlogged false shape inner_left half bottom
5098 jungle_stairs facing west waterlogged true shape inner_right half bottom
5099 jungle_stairs facing west waterlogged false shape inner_right half bottom
5100 jungle_stairs facing west waterlogged true shape outer_left half bottom
5101 jungle_stairs facing west waterlogged false shape outer_left half bottom
5102 jungle_stairs facing west waterlogged true shape outer_right half bottom
5103 jungle_stairs facing west waterlogged false shape outer_right half bottom
5104 jungle_stairs facing east waterlogged true shape straight half top
5105 jungle_stairs facing east waterlogged false shape straight half top
5106 jungle_stairs facing east waterlogged true shape inner_left half top
5107 jungle_stairs facing east waterlogged false shape inner_left half top
5108 jungle_stairs facing east waterlogged true shape inner_right half top
5109 jungle_stairs facing east waterlogged false shape inner_right half top
5110 jungle_stairs facing east waterlogged true shape outer_left half top
5111 jungle_stairs facing east waterlogged false shape outer_left half top
5112 jungle_stairs facing east waterlogged true shape outer_right half top
5113 jungle_stairs facing east waterlogged false shape outer_right half top
5114 jungle_stairs facing east waterlogged true shape straight half bottom
5115 jungle_stairs facing east waterlogged false shape straight half bottom
5116 jungle_stairs facing east waterlogged true shape inner_left half bottom
5117 jungle_stairs facing east waterlogged false shape inner_left half bottom
5118 jungle_stairs facing east waterlogged true shape inner_right half bottom
5119 jungle_stairs facing east waterlogged false shape inner_right half bottom
5120 jungle_stairs facing east waterlogged true shape outer_left half bottom
5121 jungle_stairs facing east waterlogged false shape outer_left half bottom
5122 jungle_stairs facing east waterlogged true shape outer_right half bottom
5123 jungle_stairs facing east waterlogged false shape outer_right half bottom
5124 command_block conditional true facing north
5125 command_block conditional true facing east
5126 command_block conditional true facing south
5127 command_block conditional true facing west
5128 command_block conditional true facing up
5129 command_block conditional true facing down
5130 command_block conditional false facing north
5131 command_block conditional false facing east
5132 command_block conditional false facing south
5133 command_block conditional false facing west
5134 command_block conditional false facing up
5135 command_block conditional false facing down
5136 beacon
5137 cobblestone_wall waterlogged true south true east true north true up true west true
5138 cobblestone_wall waterlogged true south true east true north true up true west false
5139 cobblestone_wall waterlogged false south true east true north true up true west true
5140 cobblestone_wall waterlogged false south true east true north true up true west false
5141 cobblestone_wall waterlogged true south true east true north true up false west true
5142 cobblestone_wall waterlogged true south true east true north true up false west false
5143 cobblestone_wall waterlogged false south true east true north true up false west true
5144 cobblestone_wall waterlogged false south true east true north true up false west false
5145 cobblestone_wall waterlogged true south false east true north true up true west true
5146 cobblestone_wall waterlogged true south false east true north true up true west false
5147 cobblestone_wall waterlogged false south false east true north true up true west true
5148 cobblestone_wall waterlogged false south false east true north true up true west false
5149 cobblestone_wall waterlogged true south false east true north true up false west true
5150 cobblestone_wall waterlogged true south false east true north true up false west false
5151 cobblestone_wall waterlogged false south false east true north true up false west true
5152 cobblestone_wall waterlogged false south false east true north true up false west false
5153 cobblestone_wall waterlogged true south true east true north false up true west true
5154 cobblestone_wall waterlogged true south true east true north false up true west false
5155 cobblestone_wall waterlogged false south true east true north false up true west true
5156 cobblestone_wall waterlogged false south true east true north false up true west false
5157 cobblestone_wall waterlogged true south true east true north false up false west true
5158 cobblestone_wall waterlogged true south true east true north false up false west false
5159 cobblestone_wall waterlogged false south true east true north false up false west true
5160 cobblestone_wall waterlogged false south true east true north false up false west false
5161 cobblestone_wall waterlogged true south false east true north false up true west true
5162 cobblestone_wall waterlogged true south false east true north false up true west false
5163 cobblestone_wall waterlogged false south false east true north false up true west true
5164 cobblestone_wall waterlogged false south false east true north false up true west false
5165 cobblestone_wall waterlogged true south false east true north false up false west true
5166 cobblestone_wall waterlogged true south false east true north false up false west false
5167 cobblestone_wall waterlogged false south false east true north false up false west true
5168 cobblestone_wall waterlogged false south false east true north false up false west false
5169 cobblestone_wall waterlogged true south true east false north true up true west true
5170 cobblestone_wall waterlogged true south true east false north true up true west false
5171 cobblestone_wall waterlogged false south true east false north true up true west true
5172 cobblestone_wall waterlogged false south true east false north true up true west false
5173 cobblestone_wall waterlogged true south true east false north true up false west true
5174 cobblestone_wall waterlogged true south true east false north true up false west false
5175 cobblestone_wall waterlogged false south true east false north true up false west true
5176 cobblestone_wall waterlogged false south true east false north true up false west false
5177 cobblestone_wall waterlogged true south false east false north true up true west true
5178 cobblestone_wall waterlogged true south false east false north true up true west false
5179 cobblestone_wall waterlogged false south false east false north true up true west true
5180 cobblestone_wall waterlogged false south false east false north true up true west false
5181 cobblestone_wall waterlogged true south false east false north true up false west true
5182 cobblestone_wall waterlogged true south false east false north true up false west false
5183 cobblestone_wall waterlogged false south false east false north true up false west true
5184 cobblestone_wall waterlogged false south false east false north true up false west false
5185 cobblestone_wall waterlogged true south true east false north false up true west true
5186 cobblestone_wall waterlogged true south true east false north false up true west false
5187 cobblestone_wall waterlogged false south true east false north false up true west true
5188 cobblestone_wall waterlogged false south true east false north false up true west false
5189 cobblestone_wall waterlogged true south true east false north false up false west true
5190 cobblestone_wall waterlogged true south true east false north false up false west false
5191 cobblestone_wall waterlogged false south true east false north false up false west true
5192 cobblestone_wall waterlogged false south true east false north false up false west false
5193 cobblestone_wall waterlogged true south false east false north false up true west true
5194 cobblestone_wall waterlogged true south false east false north false up true west false
5195 cobblestone_wall waterlogged false south false east false north false up true west true
5196 cobblestone_wall waterlogged false south false east false north false up true west false
5197 cobblestone_wall waterlogged true south false east false north false up false west true
5198 cobblestone_wall waterlogged true south false east false north false up false west false
5199 cobblestone_wall waterlogged false south false east false north false up false west true
5200 cobblestone_wall waterlogged false south false east false north false up false west false
5201 mossy_cobblestone_wall waterlogged true south true east true north true up true west true
5202 mossy_cobblestone_wall waterlogged true south true east true north true up true west false
5203 mossy_cobblestone_wall waterlogged false south true east true north true up true west true
5204 mossy_cobblestone_wall waterlogged false south true east true north true up true west false
5205 mossy_cobblestone_wall waterlogged true south true east true north true up false west true
5206 mossy_cobblestone_wall waterlogged true south true east true north true up false west false
5207 mossy_cobblestone_wall waterlogged false south true east true north true up false west true
5208 mossy_cobblestone_wall waterlogged false south true east true north true up false west false
5209 mossy_cobblestone_wall waterlogged true south false east true north true up true west true
5210 mossy_cobblestone_wall waterlogged true south false east true north true up true west false
5211 mossy_cobblestone_wall waterlogged false south false east true north true up true west true
5212 mossy_cobblestone_wall waterlogged false south false east true north true up true west false
5213 mossy_cobblestone_wall waterlogged true south false east true north true up false west true
5214 mossy_cobblestone_wall waterlogged true south false east true north true up false west false
5215 mossy_cobblestone_wall waterlogged false south false east true north true up false west true
5216 mossy_cobblestone_wall waterlogged false south false east true north true up false west false
5217 mossy_cobblestone_wall waterlogged true south true east true north false up true west true
5218 mossy_cobblestone_wall waterlogged true south true east true north false up true west false
5219 mossy_cobblestone_wall waterlogged false south true east true north false up true west true
5220 mossy_cobblestone_wall waterlogged false south true east true north false up true west false
5221 mossy_cobblestone_wall waterlogged true south true east true north false up false west true
5222 mossy_cobblestone_wall waterlogged true south true east true north false up false west false
5223 mossy_cobblestone_wall waterlogged false south true east true north false up false west true
5224 mossy_cobblestone_wall waterlogged false south true east true north false up false west false
5225 mossy_cobblestone_wall waterlogged true south false east true north false up true west true
5226 mossy_cobblestone_wall waterlogged true south false east true north false up true west false
5227 mossy_cobblestone_wall waterlogged false south false east true north false up true west true
5228 mossy_cobblestone_wall waterlogged false south false east true north false up true west false
5229 mossy_cobblestone_wall waterlogged true south false east true north false up false west true
5230 mossy_cobblestone_wall waterlogged true south false east true north false up false west false
5231 mossy_cobblestone_wall waterlogged false south false east true north false up false west true
5232 mossy_cobblestone_wall waterlogged false south false east true north false up false west false
5233 mossy_cobblestone_wall waterlogged true south true east false north true up true west true
5234 mossy_cobblestone_wall waterlogged true south true east false north true up true west false
5235 mossy_cobblestone_wall waterlogged false south true east false north true up true west true
5236 mossy_cobblestone_wall waterlogged false south true east false north true up true west false
5237 mossy_cobblestone_wall waterlogged true south true east false north true up false west true
5238 mossy_cobblestone_wall waterlogged true south true east false north true up false west false
5239 mossy_cobblestone_wall waterlogged false south true east false north true up false west true
5240 mossy_cobblestone_wall waterlogged false south true east false north true up false west false
5241 mossy_cobblestone_wall waterlogged true south false east false north true up true west true
5242 mossy_cobblestone_wall waterlogged true south false east false north true up true west false
5243 mossy_cobblestone_wall waterlogged false south false east false north true up true west true
5244 mossy_cobblestone_wall waterlogged false south false east false north true up true west false
5245 mossy_cobblestone_wall waterlogged true south false east false north true up false west true
5246 mossy_cobblestone_wall waterlogged true south false east false north true up false west false
5247 mossy_cobblestone_wall waterlogged false south false east false north true up false west true
5248 mossy_cobblestone_wall waterlogged false south false east false north true up false west false
5249 mossy_cobblestone_wall waterlogged true south true east false north false up true west true
5250 mossy_cobblestone_wall waterlogged true south true east false north false up true west false
5251 mossy_cobblestone_wall waterlogged false south true east false north false up true west true
5252 mossy_cobblestone_wall waterlogged false south true east false north false up true west false
5253 mossy_cobblestone_wall waterlogged true south true east false north false up false west true
5254 mossy_cobblestone_wall waterlogged true south true east false north false up false west false
5255 mossy_cobblestone_wall waterlogged false south true east false north false up false west true
5256 mossy_cobblestone_wall waterlogged false south true east false north false up false west false
5257 mossy_cobblestone_wall waterlogged true south false east false north false up true west true
5258 mossy_cobblestone_wall waterlogged true south false east false north false up true west false
5259 mossy_cobblestone_wall waterlogged false south false east false north false up true west true
5260 mossy_cobblestone_wall waterlogged false south false east false north false up true west false
5261 mossy_cobblestone_wall waterlogged true south false east false north false up false west true
5262 mossy_cobblestone_wall waterlogged true south false east false north false up false west false
5263 mossy_cobblestone_wall waterlogged false south false east false north false up false west true
5264 mossy_cobblestone_wall waterlogged false south false east false north false up false west false
5265 flower_pot
5266 potted_oak_sapling
5267 potted_spruce_sapling
5268 potted_birch_sapling
5269 potted_jungle_sapling
5270 potted_acacia_sapling
5271 potted_dark_oak_sapling
5272 potted_fern
5273 potted_dandelion
5274 potted_poppy
5275 potted_blue_orchid
5276 potted_allium
5277 potted_azure_bluet
5278 potted_red_tulip
5279 potted_orange_tulip
5280 potted_white_tulip
5281 potted_pink_tulip
5282 potted_oxeye_daisy
5283 potted_red_mushroom
5284 potted_brown_mushroom
5285 potted_dead_bush
5286 potted_cactus
5287 carrots age 0
5288 carrots age 1
5289 carrots age 2
5290 carrots age 3
5291 carrots age 4
5292 carrots age 5
5293 carrots age 6
5294 carrots age 7
5295 potatoes age 0
5296 potatoes age 1
5297 potatoes age 2
5298 potatoes age 3
5299 potatoes age 4
5300 potatoes age 5
5301 potatoes age 6
5302 potatoes age 7
5303 oak_button facing north face floor powered true
5304 oak_button facing north face floor powered false
5305 oak_button facing south face floor powered true
5306 oak_button facing south face floor powered false
5307 oak_button facing west face floor powered true
5308 oak_button facing west face floor powered false
5309 oak_button facing east face floor powered true
5310 oak_button facing east face floor powered false
5311 oak_button facing north face wall powered true
5312 oak_button facing north face wall powered false
5313 oak_button facing south face wall powered true
5314 oak_button facing south face wall powered false
5315 oak_button facing west face wall powered true
5316 oak_button facing west face wall powered false
5317 oak_button facing east face wall powered true
5318 oak_button facing east face wall powered false
5319 oak_button facing north face ceiling powered true
5320 oak_button facing north face ceiling powered false
5321 oak_button facing south face ceiling powered true
5322 oak_button facing south face ceiling powered false
5323 oak_button facing west face ceiling powered true
5324 oak_button facing west face ceiling powered false
5325 oak_button facing east face ceiling powered true
5326 oak_button facing east face ceiling powered false
5327 spruce_button facing north face floor powered true
5328 spruce_button facing north face floor powered false
5329 spruce_button facing south face floor powered true
5330 spruce_button facing south face floor powered false
5331 spruce_button facing west face floor powered true
5332 spruce_button facing west face floor powered false
5333 spruce_button facing east face floor powered true
5334 spruce_button facing east face floor powered false
5335 spruce_button facing north face wall powered true
5336 spruce_button facing north face wall powered false
5337 spruce_button facing south face wall powered true
5338 spruce_button facing south face wall powered false
5339 spruce_button facing west face wall powered true
5340 spruce_button facing west face wall powered false
5341 spruce_button facing east face wall powered true
5342 spruce_button facing east face wall powered false
5343 spruce_button facing north face ceiling powered true
5344 spruce_button facing north face ceiling powered false
5345 spruce_button facing south face ceiling powered true
5346 spruce_button facing south face ceiling powered false
5347 spruce_button facing west face ceiling powered true
5348 spruce_button facing west face ceiling powered false
5349 spruce_button facing east face ceiling powered true
5350 spruce_button facing east face ceiling powered false
5351 birch_button facing north face floor powered true
5352 birch_button facing north face floor powered false
5353 birch_button facing south face floor powered true
5354 birch_button facing south face floor powered false
5355 birch_button facing west face floor powered true
5356 birch_button facing west face floor powered false
5357 birch_button facing east face floor powered true
5358 birch_button facing east face floor powered false
5359 birch_button facing north face wall powered true
5360 birch_button facing north face wall powered false
5361 birch_button facing south face wall powered true
5362 birch_button facing south face wall powered false
5363 birch_button facing west face wall powered true
5364 birch_button facing west face wall powered false
5365 birch_button facing east face wall powered true
5366 birch_button facing east face wall powered false
5367 birch_button facing north face ceiling powered true
5368 birch_button facing north face ceiling powered false
5369 birch_button facing south face ceiling powered true
5370 birch_button facing south face ceiling powered false
5371 birch_button facing west face ceiling powered true
5372 birch_button facing west face ceiling powered false
5373 birch_button facing east face ceiling powered true
5374 birch_button facing east face ceiling powered false
5375 jungle_button facing north face floor powered true
5376 jungle_button facing north face floor powered false
5377 jungle_button facing south face floor powered true
5378 jungle_button facing south face floor powered false
5379 jungle_button facing west face floor powered true
5380 jungle_button facing west face floor powered false
5381 jungle_button facing east face floor powered true
5382 jungle_button facing east face floor powered false
5383 jungle_button facing north face wall powered true
5384 jungle_button facing north face wall powered false
5385 jungle_button facing south face wall powered true
5386 jungle_button facing south face wall powered false
5387 jungle_button facing west face wall powered true
5388 jungle_button facing west face wall powered false
5389 jungle_button facing east face wall powered true
5390 jungle_button facing east face wall powered false
5391 jungle_button facing north face ceiling powered true
5392 jungle_button facing north face ceiling powered false
5393 jungle_button facing south face ceiling powered true
5394 jungle_button facing south face ceiling powered false
5395 jungle_button facing west face ceiling powered true
5396 jungle_button facing west face ceiling powered false
5397 jungle_button facing east face ceiling powered true
5398 jungle_button facing east face ceiling powered false
5399 acacia_button facing north face floor powered true
5400 acacia_button facing north face floor powered false
5401 acacia_button facing south face floor powered true
5402 acacia_button facing south face floor powered false
5403 acacia_button facing west face floor powered true
5404 acacia_button facing west face floor powered false
5405 acacia_button facing east face floor powered true
5406 acacia_button facing east face floor powered false
5407 acacia_button facing north face wall powered true
5408 acacia_button facing north face wall powered false
5409 acacia_button facing south face wall powered true
5410 acacia_button facing south face wall powered false
5411 acacia_button facing west face wall powered true
5412 acacia_button facing west face wall powered false
5413 acacia_button facing east face wall powered true
5414 acacia_button facing east face wall powered false
5415 acacia_button facing north face ceiling powered true
5416 acacia_button facing north face ceiling powered false
5417 acacia_button facing south face ceiling powered true
5418 acacia_button facing south face ceiling powered false
5419 acacia_button facing west face ceiling powered true
5420 acacia_button facing west face ceiling powered false
5421 acacia_button facing east face ceiling powered true
5422 acacia_button facing east face ceiling powered false
5423 dark_oak_button facing north face floor powered true
5424 dark_oak_button facing north face floor powered false
5425 dark_oak_button facing south face floor powered true
5426 dark_oak_button facing south face floor powered false
5427 dark_oak_button facing west face floor powered true
5428 dark_oak_button facing west face floor powered false
5429 dark_oak_button facing east face floor powered true
5430 dark_oak_button facing east face floor powered false
5431 dark_oak_button facing north face wall powered true
5432 dark_oak_button facing north face wall powered false
5433 dark_oak_button facing south face wall powered true
5434 dark_oak_button facing south face wall powered false
5435 dark_oak_button facing west face wall powered true
5436 dark_oak_button facing west face wall powered false
5437 dark_oak_button facing east face wall powered true
5438 dark_oak_button facing east face wall powered false
5439 dark_oak_button facing north face ceiling powered true
5440 dark_oak_button facing north face ceiling powered false
5441 dark_oak_button facing south face ceiling powered true
5442 dark_oak_button facing south face ceiling powered false
5443 dark_oak_button facing west face ceiling powered true
5444 dark_oak_button facing west face ceiling powered false
5445 dark_oak_button facing east face ceiling powered true
5446 dark_oak_button facing east face ceiling powered false
5447 skeleton_wall_skull facing north
5448 skeleton_wall_skull facing south
5449 skeleton_wall_skull facing west
5450 skeleton_wall_skull facing east
5451 skeleton_skull rotation 0
5452 skeleton_skull rotation 1
5453 skeleton_skull rotation 2
5454 skeleton_skull rotation 3
5455 skeleton_skull rotation 4
5456 skeleton_skull rotation 5
5457 skeleton_skull rotation 6
5458 skeleton_skull rotation 7
5459 skeleton_skull rotation 8
5460 skeleton_skull rotation 9
5461 skeleton_skull rotation 10
5462 skeleton_skull rotation 11
5463 skeleton_skull rotation 12
5464 skeleton_skull rotation 13
5465 skeleton_skull rotation 14
5466 skeleton_skull rotation 15
5467 wither_skeleton_wall_skull facing north
5468 wither_skeleton_wall_skull facing south
5469 wither_skeleton_wall_skull facing west
5470 wither_skeleton_wall_skull facing east
5471 wither_skeleton_skull rotation 0
5472 wither_skeleton_skull rotation 1
5473 wither_skeleton_skull rotation 2
5474 wither_skeleton_skull rotation 3
5475 wither_skeleton_skull rotation 4
5476 wither_skeleton_skull rotation 5
5477 wither_skeleton_skull rotation 6
5478 wither_skeleton_skull rotation 7
5479 wither_skeleton_skull rotation 8
5480 wither_skeleton_skull rotation 9
5481 wither_skeleton_skull rotation 10
5482 wither_skeleton_skull rotation 11
5483 wither_skeleton_skull rotation 12
5484 wither_skeleton_skull rotation 13
5485 wither_skeleton_skull rotation 14
5486 wither_skeleton_skull rotation 15
5487 zombie_wall_head facing north
5488 zombie_wall_head facing south
5489 zombie_wall_head facing west
5490 zombie_wall_head facing east
5491 zombie_head rotation 0
5492 zombie_head rotation 1
5493 zombie_head rotation 2
5494 zombie_head rotation 3
5495 zombie_head rotation 4
5496 zombie_head rotation 5
5497 zombie_head rotation 6
5498 zombie_head rotation 7
5499 zombie_head rotation 8
5500 zombie_head rotation 9
5501 zombie_head rotation 10
5502 zombie_head rotation 11
5503 zombie_head rotation 12
5504 zombie_head rotation 13
5505 zombie_head rotation 14
5506 zombie_head rotation 15
5507 player_wall_head facing north
5508 player_wall_head facing south
5509 player_wall_head facing west
5510 player_wall_head facing east
5511 player_head rotation 0
5512 player_head rotation 1
5513 player_head rotation 2
5514 player_head rotation 3
5515 player_head rotation 4
5516 player_head rotation 5
5517 player_head rotation 6
5518 player_head rotation 7
5519 player_head rotation 8
5520 player_head rotation 9
5521 player_head rotation 10
5522 player_head rotation 11
5523 player_head rotation 12
5524 player_head rotation 13
5525 player_head rotation 14
5526 player_head rotation 15
5527 creeper_wall_head facing north
5528 creeper_wall_head facing south
5529 creeper_wall_head facing west
5530 creeper_wall_head facing east
5531 creeper_head rotation 0
5532 creeper_head rotation 1
5533 creeper_head rotation 2
5534 creeper_head rotation 3
5535 creeper_head rotation 4
5536 creeper_head rotation 5
5537 creeper_head rotation 6
5538 creeper_head rotation 7
5539 creeper_head rotation 8
5540 creeper_head rotation 9
5541 creeper_head rotation 10
5542 creeper_head rotation 11
5543 creeper_head rotation 12
5544 creeper_head rotation 13
5545 creeper_head rotation 14
5546 creeper_head rotation 15
5547 dragon_wall_head facing north
5548 dragon_wall_head facing south
5549 dragon_wall_head facing west
5550 dragon_wall_head facing east
5551 dragon_head rotation 0
5552 dragon_head rotation 1
5553 dragon_head rotation 2
5554 dragon_head rotation 3
5555 dragon_head rotation 4
5556 dragon_head rotation 5
5557 dragon_head rotation 6
5558 dragon_head rotation 7
5559 dragon_head rotation 8
5560 dragon_head rotation 9
5561 dragon_head rotation 10
5562 dragon_head rotation 11
5563 dragon_head rotation 12
5564 dragon_head rotation 13
5565 dragon_head rotation 14
5566 dragon_head rotation 15
5567 anvil facing north
5568 anvil facing south
5569 anvil facing west
5570 anvil facing east
5571 chipped_anvil facing north
5572 chipped_anvil facing south
5573 chipped_anvil facing west
5574 chipped_anvil facing east
5575 damaged_anvil facing north
5576 damaged_anvil facing south
5577 damaged_anvil facing west
5578 damaged_anvil facing east
5579 trapped_chest facing north waterlogged true type single
5580 trapped_chest facing north waterlogged false type single
5581 trapped_chest facing north waterlogged true type left
5582 trapped_chest facing north waterlogged false type left
5583 trapped_chest facing north waterlogged true type right
5584 trapped_chest facing north waterlogged false type right
5585 trapped_chest facing south waterlogged true type single
5586 trapped_chest facing south waterlogged false type single
5587 trapped_chest facing south waterlogged true type left
5588 trapped_chest facing south waterlogged false type left
5589 trapped_chest facing south waterlogged true type right
5590 trapped_chest facing south waterlogged false type right
5591 trapped_chest facing west waterlogged true type single
5592 trapped_chest facing west waterlogged false type single
5593 trapped_chest facing west waterlogged true type left
5594 trapped_chest facing west waterlogged false type left
5595 trapped_chest facing west waterlogged true type right
5596 trapped_chest facing west waterlogged false type right
5597 trapped_chest facing east waterlogged true type single
5598 trapped_chest facing east waterlogged false type single
5599 trapped_chest facing east waterlogged true type left
5600 trapped_chest facing east waterlogged false type left
5601 trapped_chest facing east waterlogged true type right
5602 trapped_chest facing east waterlogged false type right
5603 light_weighted_pressure_plate power 0
5604 light_weighted_pressure_plate power 1
5605 light_weighted_pressure_plate power 2
5606 light_weighted_pressure_plate power 3
5607 light_weighted_pressure_plate power 4
5608 light_weighted_pressure_plate power 5
5609 light_weighted_pressure_plate power 6
5610 light_weighted_pressure_plate power 7
5611 light_weighted_pressure_plate power 8
5612 light_weighted_pressure_plate power 9
5613 light_weighted_pressure_plate power 10
5614 light_weighted_pressure_plate power 11
5615 light_weighted_pressure_plate power 12
5616 light_weighted_pressure_plate power 13
5617 light_weighted_pressure_plate power 14
5618 light_weighted_pressure_plate power 15
5619 heavy_weighted_pressure_plate power 0
5620 heavy_weighted_pressure_plate power 1
5621 heavy_weighted_pressure_plate power 2
5622 heavy_weighted_pressure_plate power 3
5623 heavy_weighted_pressure_plate power 4
5624 heavy_weighted_pressure_plate power 5
5625 heavy_weighted_pressure_plate power 6
5626 heavy_weighted_pressure_plate power 7
5627 heavy_weighted_pressure_plate power 8
5628 heavy_weighted_pressure_plate power 9
5629 heavy_weighted_pressure_plate power 10
5630 heavy_weighted_pressure_plate power 11
5631 heavy_weighted_pressure_plate power 12
5632 heavy_weighted_pressure_plate power 13
5633 heavy_weighted_pressure_plate power 14
5634 heavy_weighted_pressure_plate power 15
5635 comparator facing north mode compare powered true
5636 comparator facing north mode compare powered false
5637 comparator facing north mode subtract powered true
5638 comparator facing north mode subtract powered false
5639 comparator facing south mode compare powered true
5640 comparator facing south mode compare powered false
5641 comparator facing south mode subtract powered true
5642 comparator facing south mode subtract powered false
5643 comparator facing west mode compare powered true
5644 comparator facing west mode compare powered false
5645 comparator facing west mode subtract powered true
5646 comparator facing west mode subtract powered false
5647 comparator facing east mode compare powered true
5648 comparator facing east mode compare powered false
5649 comparator facing east mode subtract powered true
5650 comparator facing east mode subtract powered false
5651 daylight_detector inverted true power 0
5652 daylight_detector inverted true power 1
5653 daylight_detector inverted true power 2
5654 daylight_detector inverted true power 3
5655 daylight_detector inverted true power 4
5656 daylight_detector inverted true power 5
5657 daylight_detector inverted true power 6
5658 daylight_detector inverted true power 7
5659 daylight_detector inverted true power 8
5660 daylight_detector inverted true power 9
5661 daylight_detector inverted true power 10
5662 daylight_detector inverted true power 11
5663 daylight_detector inverted true power 12
5664 daylight_detector inverted true power 13
5665 daylight_detector inverted true power 14
5666 daylight_detector inverted true power 15
5667 daylight_detector inverted false power 0
5668 daylight_detector inverted false power 1
5669 daylight_detector inverted false power 2
5670 daylight_detector inverted false power 3
5671 daylight_detector inverted false power 4
5672 daylight_detector inverted false power 5
5673 daylight_detector inverted false power 6
5674 daylight_detector inverted false power 7
5675 daylight_detector inverted false power 8
5676 daylight_detector inverted false power 9
5677 daylight_detector inverted false power 10
5678 daylight_detector inverted false power 11
5679 daylight_detector inverted false power 12
5680 daylight_detector inverted false power 13
5681 daylight_detector inverted false power 14
5682 daylight_detector inverted false power 15
5683 redstone_block
5684 nether_quartz_ore
5685 hopper facing down enabled true
5686 hopper facing north enabled true
5687 hopper facing south enabled true
5688 hopper facing west enabled true
5689 hopper facing east enabled true
5690 hopper facing down enabled false
5691 hopper facing north enabled false
5692 hopper facing south enabled false
5693 hopper facing west enabled false
5694 hopper facing east enabled false
5695 quartz_block
5696 chiseled_quartz_block
5697 quartz_pillar axis x
5698 quartz_pillar axis y
5699 quartz_pillar axis z
5700 quartz_stairs facing north waterlogged true shape straight half top
5701 quartz_stairs facing north waterlogged false shape straight half top
5702 quartz_stairs facing north waterlogged true shape inner_left half top
5703 quartz_stairs facing north waterlogged false shape inner_left half top
5704 quartz_stairs facing north waterlogged true shape inner_right half top
5705 quartz_stairs facing north waterlogged false shape inner_right half top
5706 quartz_stairs facing north waterlogged true shape outer_left half top
5707 quartz_stairs facing north waterlogged false shape outer_left half top
5708 quartz_stairs facing north waterlogged true shape outer_right half top
5709 quartz_stairs facing north waterlogged false shape outer_right half top
5710 quartz_stairs facing north waterlogged true shape straight half bottom
5711 quartz_stairs facing north waterlogged false shape straight half bottom
5712 quartz_stairs facing north waterlogged true shape inner_left half bottom
5713 quartz_stairs facing north waterlogged false shape inner_left half bottom
5714 quartz_stairs facing north waterlogged true shape inner_right half bottom
5715 quartz_stairs facing north waterlogged false shape inner_right half bottom
5716 quartz_stairs facing north waterlogged true shape outer_left half bottom
5717 quartz_stairs facing north waterlogged false shape outer_left half bottom
5718 quartz_stairs facing north waterlogged true shape outer_right half bottom
5719 quartz_stairs facing north waterlogged false shape outer_right half bottom
5720 quartz_stairs facing south waterlogged true shape straight half top
5721 quartz_stairs facing south waterlogged false shape straight half top
5722 quartz_stairs facing south waterlogged true shape inner_left half top
5723 quartz_stairs facing south waterlogged false shape inner_left half top
5724 quartz_stairs facing south waterlogged true shape inner_right half top
5725 quartz_stairs facing south waterlogged false shape inner_right half top
5726 quartz_stairs facing south waterlogged true shape outer_left half top
5727 quartz_stairs facing south waterlogged false shape outer_left half top
5728 quartz_stairs facing south waterlogged true shape outer_right half top
5729 quartz_stairs facing south waterlogged false shape outer_right half top
5730 quartz_stairs facing south waterlogged true shape straight half bottom
5731 quartz_stairs facing south waterlogged false shape straight half bottom
5732 quartz_stairs facing south waterlogged true shape inner_left half bottom
5733 quartz_stairs facing south waterlogged false shape inner_left half bottom
5734 quartz_stairs facing south waterlogged true shape inner_right half bottom
5735 quartz_stairs facing south waterlogged false shape inner_right half bottom
5736 quartz_stairs facing south waterlogged true shape outer_left half bottom
5737 quartz_stairs facing south waterlogged false shape outer_left half bottom
5738 quartz_stairs facing south waterlogged true shape outer_right half bottom
5739 quartz_stairs facing south waterlogged false shape outer_right half bottom
5740 quartz_stairs facing west waterlogged true shape straight half top
5741 quartz_stairs facing west waterlogged false shape straight half top
5742 quartz_stairs facing west waterlogged true shape inner_left half top
5743 quartz_stairs facing west waterlogged false shape inner_left half top
5744 quartz_stairs facing west waterlogged true shape inner_right half top
5745 quartz_stairs facing west waterlogged false shape inner_right half top
5746 quartz_stairs facing west waterlogged true shape outer_left half top
5747 quartz_stairs facing west waterlogged false shape outer_left half top
5748 quartz_stairs facing west waterlogged true shape outer_right half top
5749 quartz_stairs facing west waterlogged false shape outer_right half top
5750 quartz_stairs facing west waterlogged true shape straight half bottom
5751 quartz_stairs facing west waterlogged false shape straight half bottom
5752 quartz_stairs facing west waterlogged true shape inner_left half bottom
5753 quartz_stairs facing west waterlogged false shape inner_left half bottom
5754 quartz_stairs facing west waterlogged true shape inner_right half bottom
5755 quartz_stairs facing west waterlogged false shape inner_right half bottom
5756 quartz_stairs facing west waterlogged true shape outer_left half bottom
5757 quartz_stairs facing west waterlogged false shape outer_left half bottom
5758 quartz_stairs facing west waterlogged true shape outer_right half bottom
5759 quartz_stairs facing west waterlogged false shape outer_right half bottom
5760 quartz_stairs facing east waterlogged true shape straight half top
5761 quartz_stairs facing east waterlogged false shape straight half top
5762 quartz_stairs facing east waterlogged true shape inner_left half top
5763 quartz_stairs facing east waterlogged false shape inner_left half top
5764 quartz_stairs facing east waterlogged true shape inner_right half top
5765 quartz_stairs facing east waterlogged false shape inner_right half top
5766 quartz_stairs facing east waterlogged true shape outer_left half top
5767 quartz_stairs facing east waterlogged false shape outer_left half top
5768 quartz_stairs facing east waterlogged true shape outer_right half top
5769 quartz_stairs facing east waterlogged false shape outer_right half top
5770 quartz_stairs facing east waterlogged true shape straight half bottom
5771 quartz_stairs facing east waterlogged false shape straight half bottom
5772 quartz_stairs facing east waterlogged true shape inner_left half bottom
5773 quartz_stairs facing east waterlogged false shape inner_left half bottom
5774 quartz_stairs facing east waterlogged true shape inner_right half bottom
5775 quartz_stairs facing east waterlogged false shape inner_right half bottom
5776 quartz_stairs facing east waterlogged true shape outer_left half bottom
5777 quartz_stairs facing east waterlogged false shape outer_left half bottom
5778 quartz_stairs facing east waterlogged true shape outer_right half bottom
5779 quartz_stairs facing east waterlogged false shape outer_right half bottom
5780 activator_rail shape north_south powered true
5781 activator_rail shape east_west powered true
5782 activator_rail shape ascending_east powered true
5783 activator_rail shape ascending_west powered true
5784 activator_rail shape ascending_north powered true
5785 activator_rail shape ascending_south powered true
5786 activator_rail shape north_south powered false
5787 activator_rail shape east_west powered false
5788 activator_rail shape ascending_east powered false
5789 activator_rail shape ascending_west powered false
5790 activator_rail shape ascending_north powered false
5791 activator_rail shape ascending_south powered false
5792 dropper facing north triggered true
5793 dropper facing north triggered false
5794 dropper facing east triggered true
5795 dropper facing east triggered false
5796 dropper facing south triggered true
5797 dropper facing south triggered false
5798 dropper facing west triggered true
5799 dropper facing west triggered false
5800 dropper facing up triggered true
5801 dropper facing up triggered false
5802 dropper facing down triggered true
5803 dropper facing down triggered false
5804 white_terracotta
5805 orange_terracotta
5806 magenta_terracotta
5807 light_blue_terracotta
5808 yellow_terracotta
5809 lime_terracotta
5810 pink_terracotta
5811 gray_terracotta
5812 light_gray_terracotta
5813 cyan_terracotta
5814 purple_terracotta
5815 blue_terracotta
5816 brown_terracotta
5817 green_terracotta
5818 red_terracotta
5819 black_terracotta
5820 white_stained_glass_pane waterlogged true south true east true north true west true
5821 white_stained_glass_pane waterlogged true south true east true north true west false
5822 white_stained_glass_pane waterlogged false south true east true north true west true
5823 white_stained_glass_pane waterlogged false south true east true north true west false
5824 white_stained_glass_pane waterlogged true south false east true north true west true
5825 white_stained_glass_pane waterlogged true south false east true north true west false
5826 white_stained_glass_pane waterlogged false south false east true north true west true
5827 white_stained_glass_pane waterlogged false south false east true north true west false
5828 white_stained_glass_pane waterlogged true south true east true north false west true
5829 white_stained_glass_pane waterlogged true south true east true north false west false
5830 white_stained_glass_pane waterlogged false south true east true north false west true
5831 white_stained_glass_pane waterlogged false south true east true north false west false
5832 white_stained_glass_pane waterlogged true south false east true north false west true
5833 white_stained_glass_pane waterlogged true south false east true north false west false
5834 white_stained_glass_pane waterlogged false south false east true north false west true
5835 white_stained_glass_pane waterlogged false south false east true north false west false
5836 white_stained_glass_pane waterlogged true south true east false north true west true
5837 white_stained_glass_pane waterlogged true south true east false north true west false
5838 white_stained_glass_pane waterlogged false south true east false north true west true
5839 white_stained_glass_pane waterlogged false south true east false north true west false
5840 white_stained_glass_pane waterlogged true south false east false north true west true
5841 white_stained_glass_pane waterlogged true south false east false north true west false
5842 white_stained_glass_pane waterlogged false south false east false north true west true
5843 white_stained_glass_pane waterlogged false south false east false north true west false
5844 white_stained_glass_pane waterlogged true south true east false north false west true
5845 white_stained_glass_pane waterlogged true south true east false north false west false
5846 white_stained_glass_pane waterlogged false south true east false north false west true
5847 white_stained_glass_pane waterlogged false south true east false north false west false
5848 white_stained_glass_pane waterlogged true south false east false north false west true
5849 white_stained_glass_pane waterlogged true south false east false north false west false
5850 white_stained_glass_pane waterlogged false south false east false north false west true
5851 white_stained_glass_pane waterlogged false south false east false north false west false
5852 orange_stained_glass_pane waterlogged true south true east true north true west true
5853 orange_stained_glass_pane waterlogged true south true east true north true west false
5854 orange_stained_glass_pane waterlogged false south true east true north true west true
5855 orange_stained_glass_pane waterlogged false south true east true north true west false
5856 orange_stained_glass_pane waterlogged true south false east true north true west true
5857 orange_stained_glass_pane waterlogged true south false east true north true west false
5858 orange_stained_glass_pane waterlogged false south false east true north true west true
5859 orange_stained_glass_pane waterlogged false south false east true north true west false
5860 orange_stained_glass_pane waterlogged true south true east true north false west true
5861 orange_stained_glass_pane waterlogged true south true east true north false west false
5862 orange_stained_glass_pane waterlogged false south true east true north false west true
5863 orange_stained_glass_pane waterlogged false south true east true north false west false
5864 orange_stained_glass_pane waterlogged true south false east true north false west true
5865 orange_stained_glass_pane waterlogged true south false east true north false west false
5866 orange_stained_glass_pane waterlogged false south false east true north false west true
5867 orange_stained_glass_pane waterlogged false south false east true north false west false
5868 orange_stained_glass_pane waterlogged true south true east false north true west true
5869 orange_stained_glass_pane waterlogged true south true east false north true west false
5870 orange_stained_glass_pane waterlogged false south true east false north true west true
5871 orange_stained_glass_pane waterlogged false south true east false north true west false
5872 orange_stained_glass_pane waterlogged true south false east false north true west true
5873 orange_stained_glass_pane waterlogged true south false east false north true west false
5874 orange_stained_glass_pane waterlogged false south false east false north true west true
5875 orange_stained_glass_pane waterlogged false south false east false north true west false
5876 orange_stained_glass_pane waterlogged true south true east false north false west true
5877 orange_stained_glass_pane waterlogged true south true east false north false west false
5878 orange_stained_glass_pane waterlogged false south true east false north false west true
5879 orange_stained_glass_pane waterlogged false south true east false north false west false
5880 orange_stained_glass_pane waterlogged true south false east false north false west true
5881 orange_stained_glass_pane waterlogged true south false east false north false west false
5882 orange_stained_glass_pane waterlogged false south false east false north false west true
5883 orange_stained_glass_pane waterlogged false south false east false north false west false
5884 magenta_stained_glass_pane waterlogged true south true east true north true west true
5885 magenta_stained_glass_pane waterlogged true south true east true north true west false
5886 magenta_stained_glass_pane waterlogged false south true east true north true west true
5887 magenta_stained_glass_pane waterlogged false south true east true north true west false
5888 magenta_stained_glass_pane waterlogged true south false east true north true west true
5889 magenta_stained_glass_pane waterlogged true south false east true north true west false
5890 magenta_stained_glass_pane waterlogged false south false east true north true west true
5891 magenta_stained_glass_pane waterlogged false south false east true north true west false
5892 magenta_stained_glass_pane waterlogged true south true east true north false west true
5893 magenta_stained_glass_pane waterlogged true south true east true north false west false
5894 magenta_stained_glass_pane waterlogged false south true east true north false west true
5895 magenta_stained_glass_pane waterlogged false south true east true north false west false
5896 magenta_stained_glass_pane waterlogged true south false east true north false west true
5897 magenta_stained_glass_pane waterlogged true south false east true north false west false
5898 magenta_stained_glass_pane waterlogged false south false east true north false west true
5899 magenta_stained_glass_pane waterlogged false south false east true north false west false
5900 magenta_stained_glass_pane waterlogged true south true east false north true west true
5901 magenta_stained_glass_pane waterlogged true south true east false north true west false
5902 magenta_stained_glass_pane waterlogged false south true east false north true west true
5903 magenta_stained_glass_pane waterlogged false south true east false north true west false
5904 magenta_stained_glass_pane waterlogged true south false east false north true west true
5905 magenta_stained_glass_pane waterlogged true south false east false north true west false
5906 magenta_stained_glass_pane waterlogged false south false east false north true west true
5907 magenta_stained_glass_pane waterlogged false south false east false north true west false
5908 magenta_stained_glass_pane waterlogged true south true east false north false west true
5909 magenta_stained_glass_pane waterlogged true south true east false north false west false
5910 magenta_stained_glass_pane waterlogged false south true east false north false west true
5911 magenta_stained_glass_pane waterlogged false south true east false north false west false
5912 magenta_stained_glass_pane waterlogged true south false east false north false west true
5913 magenta_stained_glass_pane waterlogged true south false east false north false west false
5914 magenta_stained_glass_pane waterlogged false south false east false north false west true
5915 magenta_stained_glass_pane waterlogged false south false east false north false west false
5916 light_blue_stained_glass_pane waterlogged true south true east true north true west true
5917 light_blue_stained_glass_pane waterlogged true south true east true north true west false
5918 light_blue_stained_glass_pane waterlogged false south true east true north true west true
5919 light_blue_stained_glass_pane waterlogged false south true east true north true west false
5920 light_blue_stained_glass_pane waterlogged true south false east true north true west true
5921 light_blue_stained_glass_pane waterlogged true south false east true north true west false
5922 light_blue_stained_glass_pane waterlogged false south false east true north true west true
5923 light_blue_stained_glass_pane waterlogged false south false east true north true west false
5924 light_blue_stained_glass_pane waterlogged true south true east true north false west true
5925 light_blue_stained_glass_pane waterlogged true south true east true north false west false
5926 light_blue_stained_glass_pane waterlogged false south true east true north false west true
5927 light_blue_stained_glass_pane waterlogged false south true east true north false west false
5928 light_blue_stained_glass_pane waterlogged true south false east true north false west true
5929 light_blue_stained_glass_pane waterlogged true south false east true north false west false
5930 light_blue_stained_glass_pane waterlogged false south false east true north false west true
5931 light_blue_stained_glass_pane waterlogged false south false east true north false west false
5932 light_blue_stained_glass_pane waterlogged true south true east false north true west true
5933 light_blue_stained_glass_pane waterlogged true south true east false north true west false
5934 light_blue_stained_glass_pane waterlogged false south true east false north true west true
5935 light_blue_stained_glass_pane waterlogged false south true east false north true west false
5936 light_blue_stained_glass_pane waterlogged true south false east false north true west true
5937 light_blue_stained_glass_pane waterlogged true south false east false north true west false
5938 light_blue_stained_glass_pane waterlogged false south false east false north true west true
5939 light_blue_stained_glass_pane waterlogged false south false east false north true west false
5940 light_blue_stained_glass_pane waterlogged true south true east false north false west true
5941 light_blue_stained_glass_pane waterlogged true south true east false north false west false
5942 light_blue_stained_glass_pane waterlogged false south true east false north false west true
5943 light_blue_stained_glass_pane waterlogged false south true east false north false west false
5944 light_blue_stained_glass_pane waterlogged true south false east false north false west true
5945 light_blue_stained_glass_pane waterlogged true south false east false north false west false
5946 light_blue_stained_glass_pane waterlogged false south false east false north false west true
5947 light_blue_stained_glass_pane waterlogged false south false east false north false west false
5948 yellow_stained_glass_pane waterlogged true south true east true north true west true
5949 yellow_stained_glass_pane waterlogged true south true east true north true west false
5950 yellow_stained_glass_pane waterlogged false south true east true north true west true
5951 yellow_stained_glass_pane waterlogged false south true east true north true west false
5952 yellow_stained_glass_pane waterlogged true south false east true north true west true
5953 yellow_stained_glass_pane waterlogged true south false east true north true west false
5954 yellow_stained_glass_pane waterlogged false south false east true north true west true
5955 yellow_stained_glass_pane waterlogged false south false east true north true west false
5956 yellow_stained_glass_pane waterlogged true south true east true north false west true
5957 yellow_stained_glass_pane waterlogged true south true east true north false west false
5958 yellow_stained_glass_pane waterlogged false south true east true north false west true
5959 yellow_stained_glass_pane waterlogged false south true east true north false west false
5960 yellow_stained_glass_pane waterlogged true south false east true north false west true
5961 yellow_stained_glass_pane waterlogged true south false east true north false west false
5962 yellow_stained_glass_pane waterlogged false south false east true north false west true
5963 yellow_stained_glass_pane waterlogged false south false east true north false west false
5964 yellow_stained_glass_pane waterlogged true south true east false north true west true
5965 yellow_stained_glass_pane waterlogged true south true east false north true west false
5966 yellow_stained_glass_pane waterlogged false south true east false north true west true
5967 yellow_stained_glass_pane waterlogged false south true east false north true west false
5968 yellow_stained_glass_pane waterlogged true south false east false north true west true
5969 yellow_stained_glass_pane waterlogged true south false east false north true west false
5970 yellow_stained_glass_pane waterlogged false south false east false north true west true
5971 yellow_stained_glass_pane waterlogged false south false east false north true west false
5972 yellow_stained_glass_pane waterlogged true south true east false north false west true
5973 yellow_stained_glass_pane waterlogged true south true east false north false west false
5974 yellow_stained_glass_pane waterlogged false south true east false north false west true
5975 yellow_stained_glass_pane waterlogged false south true east false north false west false
5976 yellow_stained_glass_pane waterlogged true south false east false north false west true
5977 yellow_stained_glass_pane waterlogged true south false east false north false west false
5978 yellow_stained_glass_pane waterlogged false south false east false north false west true
5979 yellow_stained_glass_pane waterlogged false south false east false north false west false
5980 lime_stained_glass_pane waterlogged true south true east true north true west true
5981 lime_stained_glass_pane waterlogged true south true east true north true west false
5982 lime_stained_glass_pane waterlogged false south true east true north true west true
5983 lime_stained_glass_pane waterlogged false south true east true north true west false
5984 lime_stained_glass_pane waterlogged true south false east true north true west true
5985 lime_stained_glass_pane waterlogged true south false east true north true west false
5986 lime_stained_glass_pane waterlogged false south false east true north true west true
5987 lime_stained_glass_pane waterlogged false south false east true north true west false
5988 lime_stained_glass_pane waterlogged true south true east true north false west true
5989 lime_stained_glass_pane waterlogged true south true east true north false west false
5990 lime_stained_glass_pane waterlogged false south true east true north false west true
5991 lime_stained_glass_pane waterlogged false south true east true north false west false
5992 lime_stained_glass_pane waterlogged true south false east true north false west true
5993 lime_stained_glass_pane waterlogged true south false east true north false west false
5994 lime_stained_glass_pane waterlogged false south false east true north false west true
5995 lime_stained_glass_pane waterlogged false south false east true north false west false
5996 lime_stained_glass_pane waterlogged true south true east false north true west true
5997 lime_stained_glass_pane waterlogged true south true east false north true west false
5998 lime_stained_glass_pane waterlogged false south true east false north true west true
5999 lime_stained_glass_pane waterlogged false south true east false north true west false
6000 lime_stained_glass_pane waterlogged true south false east false north true west true
6001 lime_stained_glass_pane waterlogged true south false east false north true west false
6002 lime_stained_glass_pane waterlogged false south false east false north true west true
6003 lime_stained_glass_pane waterlogged false south false east false north true west false
6004 lime_stained_glass_pane waterlogged true south true east false north false west true
6005 lime_stained_glass_pane waterlogged true south true east false north false west false
6006 lime_stained_glass_pane waterlogged false south true east false north false west true
6007 lime_stained_glass_pane waterlogged false south true east false north false west false
6008 lime_stained_glass_pane waterlogged true south false east false north false west true
6009 lime_stained_glass_pane waterlogged true south false east false north false west false
6010 lime_stained_glass_pane waterlogged false south false east false north false west true
6011 lime_stained_glass_pane waterlogged false south false east false north false west false
6012 pink_stained_glass_pane waterlogged true south true east true north true west true
6013 pink_stained_glass_pane waterlogged true south true east true north true west false
6014 pink_stained_glass_pane waterlogged false south true east true north true west true
6015 pink_stained_glass_pane waterlogged false south true east true north true west false
6016 pink_stained_glass_pane waterlogged true south false east true north true west true
6017 pink_stained_glass_pane waterlogged true south false east true north true west false
6018 pink_stained_glass_pane waterlogged false south false east true north true west true
6019 pink_stained_glass_pane waterlogged false south false east true north true west false
6020 pink_stained_glass_pane waterlogged true south true east true north false west true
6021 pink_stained_glass_pane waterlogged true south true east true north false west false
6022 pink_stained_glass_pane waterlogged false south true east true north false west true
6023 pink_stained_glass_pane waterlogged false south true east true north false west false
6024 pink_stained_glass_pane waterlogged true south false east true north false west true
6025 pink_stained_glass_pane waterlogged true south false east true north false west false
6026 pink_stained_glass_pane waterlogged false south false east true north false west true
6027 pink_stained_glass_pane waterlogged false south false east true north false west false
6028 pink_stained_glass_pane waterlogged true south true east false north true west true
6029 pink_stained_glass_pane waterlogged true south true east false north true west false
6030 pink_stained_glass_pane waterlogged false south true east false north true west true
6031 pink_stained_glass_pane waterlogged false south true east false north true west false
6032 pink_stained_glass_pane waterlogged true south false east false north true west true
6033 pink_stained_glass_pane waterlogged true south false east false north true west false
6034 pink_stained_glass_pane waterlogged false south false east false north true west true
6035 pink_stained_glass_pane waterlogged false south false east false north true west false
6036 pink_stained_glass_pane waterlogged true south true east false north false west true
6037 pink_stained_glass_pane waterlogged true south true east false north false west false
6038 pink_stained_glass_pane waterlogged false south true east false north false west true
6039 pink_stained_glass_pane waterlogged false south true east false north false west false
6040 pink_stained_glass_pane waterlogged true south false east false north false west true
6041 pink_stained_glass_pane waterlogged true south false east false north false west false
6042 pink_stained_glass_pane waterlogged false south false east false north false west true
6043 pink_stained_glass_pane waterlogged false south false east false north false west false
6044 gray_stained_glass_pane waterlogged true south true east true north true west true
6045 gray_stained_glass_pane waterlogged true south true east true north true west false
6046 gray_stained_glass_pane waterlogged false south true east true north true west true
6047 gray_stained_glass_pane waterlogged false south true east true north true west false
6048 gray_stained_glass_pane waterlogged true south false east true north true west true
6049 gray_stained_glass_pane waterlogged true south false east true north true west false
6050 gray_stained_glass_pane waterlogged false south false east true north true west true
6051 gray_stained_glass_pane waterlogged false south false east true north true west false
6052 gray_stained_glass_pane waterlogged true south true east true north false west true
6053 gray_stained_glass_pane waterlogged true south true east true north false west false
6054 gray_stained_glass_pane waterlogged false south true east true north false west true
6055 gray_stained_glass_pane waterlogged false south true east true north false west false
6056 gray_stained_glass_pane waterlogged true south false east true north false west true
6057 gray_stained_glass_pane waterlogged true south false east true north false west false
6058 gray_stained_glass_pane waterlogged false south false east true north false west true
6059 gray_stained_glass_pane waterlogged false south false east true north false west false
6060 gray_stained_glass_pane waterlogged true south true east false north true west true
6061 gray_stained_glass_pane waterlogged true south true east false north true west false
6062 gray_stained_glass_pane waterlogged false south true east false north true west true
6063 gray_stained_glass_pane waterlogged false south true east false north true west false
6064 gray_stained_glass_pane waterlogged true south false east false north true west true
6065 gray_stained_glass_pane waterlogged true south false east false north true west false
6066 gray_stained_glass_pane waterlogged false south false east false north true west true
6067 gray_stained_glass_pane waterlogged false south false east false north true west false
6068 gray_stained_glass_pane waterlogged true south true east false north false west true
6069 gray_stained_glass_pane waterlogged true south true east false north false west false
6070 gray_stained_glass_pane waterlogged false south true east false north false west true
6071 gray_stained_glass_pane waterlogged false south true east false north false west false
6072 gray_stained_glass_pane waterlogged true south false east false north false west true
6073 gray_stained_glass_pane waterlogged true south false east false north false west false
6074 gray_stained_glass_pane waterlogged false south false east false north false west true
6075 gray_stained_glass_pane waterlogged false south false east false north false west false
6076 light_gray_stained_glass_pane waterlogged true south true east true north true west true
6077 light_gray_stained_glass_pane waterlogged true south true east true north true west false
6078 light_gray_stained_glass_pane waterlogged false south true east true north true west true
6079 light_gray_stained_glass_pane waterlogged false south true east true north true west false
6080 light_gray_stained_glass_pane waterlogged true south false east true north true west true
6081 light_gray_stained_glass_pane waterlogged true south false east true north true west false
6082 light_gray_stained_glass_pane waterlogged false south false east true north true west true
6083 light_gray_stained_glass_pane waterlogged false south false east true north true west false
6084 light_gray_stained_glass_pane waterlogged true south true east true north false west true
6085 light_gray_stained_glass_pane waterlogged true south true east true north false west false
6086 light_gray_stained_glass_pane waterlogged false south true east true north false west true
6087 light_gray_stained_glass_pane waterlogged false south true east true north false west false
6088 light_gray_stained_glass_pane waterlogged true south false east true north false west true
6089 light_gray_stained_glass_pane waterlogged true south false east true north false west false
6090 light_gray_stained_glass_pane waterlogged false south false east true north false west true
6091 light_gray_stained_glass_pane waterlogged false south false east true north false west false
6092 light_gray_stained_glass_pane waterlogged true south true east false north true west true
6093 light_gray_stained_glass_pane waterlogged true south true east false north true west false
6094 light_gray_stained_glass_pane waterlogged false south true east false north true west true
6095 light_gray_stained_glass_pane waterlogged false south true east false north true west false
6096 light_gray_stained_glass_pane waterlogged true south false east false north true west true
6097 light_gray_stained_glass_pane waterlogged true south false east false north true west false
6098 light_gray_stained_glass_pane waterlogged false south false east false north true west true
6099 light_gray_stained_glass_pane waterlogged false south false east false north true west false
6100 light_gray_stained_glass_pane waterlogged true south true east false north false west true
6101 light_gray_stained_glass_pane waterlogged true south true east false north false west false
6102 light_gray_stained_glass_pane waterlogged false south true east false north false west true
6103 light_gray_stained_glass_pane waterlogged false south true east false north false west false
6104 light_gray_stained_glass_pane waterlogged true south false east false north false west true
6105 light_gray_stained_glass_pane waterlogged true south false east false north false west false
6106 light_gray_stained_glass_pane waterlogged false south false east false north false west true
6107 light_gray_stained_glass_pane waterlogged false south false east false north false west false
6108 cyan_stained_glass_pane waterlogged true south true east true north true west true
6109 cyan_stained_glass_pane waterlogged true south true east true north true west false
6110 cyan_stained_glass_pane waterlogged false south true east true north true west true
6111 cyan_stained_glass_pane waterlogged false south true east true north true west false
6112 cyan_stained_glass_pane waterlogged true south false east true north true west true
6113 cyan_stained_glass_pane waterlogged true south false east true north true west false
6114 cyan_stained_glass_pane waterlogged false south false east true north true west true
6115 cyan_stained_glass_pane waterlogged false south false east true north true west false
6116 cyan_stained_glass_pane waterlogged true south true east true north false west true
6117 cyan_stained_glass_pane waterlogged true south true east true north false west false
6118 cyan_stained_glass_pane waterlogged false south true east true north false west true
6119 cyan_stained_glass_pane waterlogged false south true east true north false west false
6120 cyan_stained_glass_pane waterlogged true south false east true north false west true
6121 cyan_stained_glass_pane waterlogged true south false east true north false west false
6122 cyan_stained_glass_pane waterlogged false south false east true north false west true
6123 cyan_stained_glass_pane waterlogged false south false east true north false west false
6124 cyan_stained_glass_pane waterlogged true south true east false north true west true
6125 cyan_stained_glass_pane waterlogged true south true east false north true west false
6126 cyan_stained_glass_pane waterlogged false south true east false north true west true
6127 cyan_stained_glass_pane waterlogged false south true east false north true west false
6128 cyan_stained_glass_pane waterlogged true south false east false north true west true
6129 cyan_stained_glass_pane waterlogged true south false east false north true west false
6130 cyan_stained_glass_pane waterlogged false south false east false north true west true
6131 cyan_stained_glass_pane waterlogged false south false east false north true west false
6132 cyan_stained_glass_pane waterlogged true south true east false north false west true
6133 cyan_stained_glass_pane waterlogged true south true east false north false west false
6134 cyan_stained_glass_pane waterlogged false south true east false north false west true
6135 cyan_stained_glass_pane waterlogged false south true east false north false west false
6136 cyan_stained_glass_pane waterlogged true south false east false north false west true
6137 cyan_stained_glass_pane waterlogged true south false east false north false west false
6138 cyan_stained_glass_pane waterlogged false south false east false north false west true
6139 cyan_stained_glass_pane waterlogged false south false east false north false west false
6140 purple_stained_glass_pane waterlogged true south true east true north true west true
6141 purple_stained_glass_pane waterlogged true south true east true north true west false
6142 purple_stained_glass_pane waterlogged false south true east true north true west true
6143 purple_stained_glass_pane waterlogged false south true east true north true west false
6144 purple_stained_glass_pane waterlogged true south false east true north true west true
6145 purple_stained_glass_pane waterlogged true south false east true north true west false
6146 purple_stained_glass_pane waterlogged false south false east true north true west true
6147 purple_stained_glass_pane waterlogged false south false east true north true west false
6148 purple_stained_glass_pane waterlogged true south true east true north false west true
6149 purple_stained_glass_pane waterlogged true south true east true north false west false
6150 purple_stained_glass_pane waterlogged false south true east true north false west true
6151 purple_stained_glass_pane waterlogged false south true east true north false west false
6152 purple_stained_glass_pane waterlogged true south false east true north false west true
6153 purple_stained_glass_pane waterlogged true south false east true north false west false
6154 purple_stained_glass_pane waterlogged false south false east true north false west true
6155 purple_stained_glass_pane waterlogged false south false east true north false west false
6156 purple_stained_glass_pane waterlogged true south true east false north true west true
6157 purple_stained_glass_pane waterlogged true south true east false north true west false
6158 purple_stained_glass_pane waterlogged false south true east false north true west true
6159 purple_stained_glass_pane waterlogged false south true east false north true west false
6160 purple_stained_glass_pane waterlogged true south false east false north true west true
6161 purple_stained_glass_pane waterlogged true south false east false north true west false
6162 purple_stained_glass_pane waterlogged false south false east false north true west true
6163 purple_stained_glass_pane waterlogged false south false east false north true west false
6164 purple_stained_glass_pane waterlogged true south true east false north false west true
6165 purple_stained_glass_pane waterlogged true south true east false north false west false
6166 purple_stained_glass_pane waterlogged false south true east false north false west true
6167 purple_stained_glass_pane waterlogged false south true east false north false west false
6168 purple_stained_glass_pane waterlogged true south false east false north false west true
6169 purple_stained_glass_pane waterlogged true south false east false north false west false
6170 purple_stained_glass_pane waterlogged false south false east false north false west true
6171 purple_stained_glass_pane waterlogged false south false east false north false west false
6172 blue_stained_glass_pane waterlogged true south true east true north true west true
6173 blue_stained_glass_pane waterlogged true south true east true north true west false
6174 blue_stained_glass_pane waterlogged false south true east true north true west true
6175 blue_stained_glass_pane waterlogged false south true east true north true west false
6176 blue_stained_glass_pane waterlogged true south false east true north true west true
6177 blue_stained_glass_pane waterlogged true south false east true north true west false
6178 blue_stained_glass_pane waterlogged false south false east true north true west true
6179 blue_stained_glass_pane waterlogged false south false east true north true west false
6180 blue_stained_glass_pane waterlogged true south true east true north false west true
6181 blue_stained_glass_pane waterlogged true south true east true north false west false
6182 blue_stained_glass_pane waterlogged false south true east true north false west true
6183 blue_stained_glass_pane waterlogged false south true east true north false west false
6184 blue_stained_glass_pane waterlogged true south false east true north false west true
6185 blue_stained_glass_pane waterlogged true south false east true north false west false
6186 blue_stained_glass_pane waterlogged false south false east true north false west true
6187 blue_stained_glass_pane waterlogged false south false east true north false west false
6188 blue_stained_glass_pane waterlogged true south true east false north true west true
6189 blue_stained_glass_pane waterlogged true south true east false north true west false
6190 blue_stained_glass_pane waterlogged false south true east false north true west true
6191 blue_stained_glass_pane waterlogged false south true east false north true west false
6192 blue_stained_glass_pane waterlogged true south false east false north true west true
6193 blue_stained_glass_pane waterlogged true south false east false north true west false
6194 blue_stained_glass_pane waterlogged false south false east false north true west true
6195 blue_stained_glass_pane waterlogged false south false east false north true west false
6196 blue_stained_glass_pane waterlogged true south true east false north false west true
6197 blue_stained_glass_pane waterlogged true south true east false north false west false
6198 blue_stained_glass_pane waterlogged false south true east false north false west true
6199 blue_stained_glass_pane waterlogged false south true east false north false west false
6200 blue_stained_glass_pane waterlogged true south false east false north false west true
6201 blue_stained_glass_pane waterlogged true south false east false north false west false
6202 blue_stained_glass_pane waterlogged false south false east false north false west true
6203 blue_stained_glass_pane waterlogged false south false east false north false west false
6204 brown_stained_glass_pane waterlogged true south true east true north true west true
6205 brown_stained_glass_pane waterlogged true south true east true north true west false
6206 brown_stained_glass_pane waterlogged false south true east true north true west true
6207 brown_stained_glass_pane waterlogged false south true east true north true west false
6208 brown_stained_glass_pane waterlogged true south false east true north true west true
6209 brown_stained_glass_pane waterlogged true south false east true north true west false
6210 brown_stained_glass_pane waterlogged false south false east true north true west true
6211 brown_stained_glass_pane waterlogged false south false east true north true west false
6212 brown_stained_glass_pane waterlogged true south true east true north false west true
6213 brown_stained_glass_pane waterlogged true south true east true north false west false
6214 brown_stained_glass_pane waterlogged false south true east true north false west true
6215 brown_stained_glass_pane waterlogged false south true east true north false west false
6216 brown_stained_glass_pane waterlogged true south false east true north false west true
6217 brown_stained_glass_pane waterlogged true south false east true north false west false
6218 brown_stained_glass_pane waterlogged false south false east true north false west true
6219 brown_stained_glass_pane waterlogged false south false east true north false west false
6220 brown_stained_glass_pane waterlogged true south true east false north true west true
6221 brown_stained_glass_pane waterlogged true south true east false north true west false
6222 brown_stained_glass_pane waterlogged false south true east false north true west true
6223 brown_stained_glass_pane waterlogged false south true east false north true west false
6224 brown_stained_glass_pane waterlogged true south false east false north true west true
6225 brown_stained_glass_pane waterlogged true south false east false north true west false
6226 brown_stained_glass_pane waterlogged false south false east false north true west true
6227 brown_stained_glass_pane waterlogged false south false east false north true west false
6228 brown_stained_glass_pane waterlogged true south true east false north false west true
6229 brown_stained_glass_pane waterlogged true south true east false north false west false
6230 brown_stained_glass_pane waterlogged false south true east false north false west true
6231 brown_stained_glass_pane waterlogged false south true east false north false west false
6232 brown_stained_glass_pane waterlogged true south false east false north false west true
6233 brown_stained_glass_pane waterlogged true south false east false north false west false
6234 brown_stained_glass_pane waterlogged false south false east false north false west true
6235 brown_stained_glass_pane waterlogged false south false east false north false west false
6236 green_stained_glass_pane waterlogged true south true east true north true west true
6237 green_stained_glass_pane waterlogged true south true east true north true west false
6238 green_stained_glass_pane waterlogged false south true east true north true west true
6239 green_stained_glass_pane waterlogged false south true east true north true west false
6240 green_stained_glass_pane waterlogged true south false east true north true west true
6241 green_stained_glass_pane waterlogged true south false east true north true west false
6242 green_stained_glass_pane waterlogged false south false east true north true west true
6243 green_stained_glass_pane waterlogged false south false east true north true west false
6244 green_stained_glass_pane waterlogged true south true east true north false west true
6245 green_stained_glass_pane waterlogged true south true east true north false west false
6246 green_stained_glass_pane waterlogged false south true east true north false west true
6247 green_stained_glass_pane waterlogged false south true east true north false west false
6248 green_stained_glass_pane waterlogged true south false east true north false west true
6249 green_stained_glass_pane waterlogged true south false east true north false west false
6250 green_stained_glass_pane waterlogged false south false east true north false west true
6251 green_stained_glass_pane waterlogged false south false east true north false west false
6252 green_stained_glass_pane waterlogged true south true east false north true west true
6253 green_stained_glass_pane waterlogged true south true east false north true west false
6254 green_stained_glass_pane waterlogged false south true east false north true west true
6255 green_stained_glass_pane waterlogged false south true east false north true west false
6256 green_stained_glass_pane waterlogged true south false east false north true west true
6257 green_stained_glass_pane waterlogged true south false east false north true west false
6258 green_stained_glass_pane waterlogged false south false east false north true west true
6259 green_stained_glass_pane waterlogged false south false east false north true west false
6260 green_stained_glass_pane waterlogged true south true east false north false west true
6261 green_stained_glass_pane waterlogged true south true east false north false west false
6262 green_stained_glass_pane waterlogged false south true east false north false west true
6263 green_stained_glass_pane waterlogged false south true east false north false west false
6264 green_stained_glass_pane waterlogged true south false east false north false west true
6265 green_stained_glass_pane waterlogged true south false east false north false west false
6266 green_stained_glass_pane waterlogged false south false east false north false west true
6267 green_stained_glass_pane waterlogged false south false east false north false west false
6268 red_stained_glass_pane waterlogged true south true east true north true west true
6269 red_stained_glass_pane waterlogged true south true east true north true west false
6270 red_stained_glass_pane waterlogged false south true east true north true west true
6271 red_stained_glass_pane waterlogged false south true east true north true west false
6272 red_stained_glass_pane waterlogged true south false east true north true west true
6273 red_stained_glass_pane waterlogged true south false east true north true west false
6274 red_stained_glass_pane waterlogged false south false east true north true west true
6275 red_stained_glass_pane waterlogged false south false east true north true west false
6276 red_stained_glass_pane waterlogged true south true east true north false west true
6277 red_stained_glass_pane waterlogged true south true east true north false west false
6278 red_stained_glass_pane waterlogged false south true east true north false west true
6279 red_stained_glass_pane waterlogged false south true east true north false west false
6280 red_stained_glass_pane waterlogged true south false east true north false west true
6281 red_stained_glass_pane waterlogged true south false east true north false west false
6282 red_stained_glass_pane waterlogged false south false east true north false west true
6283 red_stained_glass_pane waterlogged false south false east true north false west false
6284 red_stained_glass_pane waterlogged true south true east false north true west true
6285 red_stained_glass_pane waterlogged true south true east false north true west false
6286 red_stained_glass_pane waterlogged false south true east false north true west true
6287 red_stained_glass_pane waterlogged false south true east false north true west false
6288 red_stained_glass_pane waterlogged true south false east false north true west true
6289 red_stained_glass_pane waterlogged true south false east false north true west false
6290 red_stained_glass_pane waterlogged false south false east false north true west true
6291 red_stained_glass_pane waterlogged false south false east false north true west false
6292 red_stained_glass_pane waterlogged true south true east false north false west true
6293 red_stained_glass_pane waterlogged true south true east false north false west false
6294 red_stained_glass_pane waterlogged false south true east false north false west true
6295 red_stained_glass_pane waterlogged false south true east false north false west false
6296 red_stained_glass_pane waterlogged true south false east false north false west true
6297 red_stained_glass_pane waterlogged true south false east false north false west false
6298 red_stained_glass_pane waterlogged false south false east false north false west true
6299 red_stained_glass_pane waterlogged false south false east false north false west false
6300 black_stained_glass_pane waterlogged true south true east true north true west true
6301 black_stained_glass_pane waterlogged true south true east true north true west false
6302 black_stained_glass_pane waterlogged false south true east true north true west true
6303 black_stained_glass_pane waterlogged false south true east true north true west false
6304 black_stained_glass_pane waterlogged true south false east true north true west true
6305 black_stained_glass_pane waterlogged true south false east true north true west false
6306 black_stained_glass_pane waterlogged false south false east true north true west true
6307 black_stained_glass_pane waterlogged false south false east true north true west false
6308 black_stained_glass_pane waterlogged true south true east true north false west true
6309 black_stained_glass_pane waterlogged true south true east true north false west false
6310 black_stained_glass_pane waterlogged false south true east true north false west true
6311 black_stained_glass_pane waterlogged false south true east true north false west false
6312 black_stained_glass_pane waterlogged true south false east true north false west true
6313 black_stained_glass_pane waterlogged true south false east true north false west false
6314 black_stained_glass_pane waterlogged false south false east true north false west true
6315 black_stained_glass_pane waterlogged false south false east true north false west false
6316 black_stained_glass_pane waterlogged true south true east false north true west true
6317 black_stained_glass_pane waterlogged true south true east false north true west false
6318 black_stained_glass_pane waterlogged false south true east false north true west true
6319 black_stained_glass_pane waterlogged false south true east false north true west false
6320 black_stained_glass_pane waterlogged true south false east false north true west true
6321 black_stained_glass_pane waterlogged true south false east false north true west false
6322 black_stained_glass_pane waterlogged false south false east false north true west true
6323 black_stained_glass_pane waterlogged false south false east false north true west false
6324 black_stained_glass_pane waterlogged true south true east false north false west true
6325 black_stained_glass_pane waterlogged true south true east false north false west false
6326 black_stained_glass_pane waterlogged false south true east false north false west true
6327 black_stained_glass_pane waterlogged false south true east false north false west false
6328 black_stained_glass_pane waterlogged true south false east false north false west true
6329 black_stained_glass_pane waterlogged true south false east false north false west false
6330 black_stained_glass_pane waterlogged false south false east false north false west true
6331 black_stained_glass_pane waterlogged false south false east false north false west false
6332 acacia_stairs facing north waterlogged true shape straight half top
6333 acacia_stairs facing north waterlogged false shape straight half top
6334 acacia_stairs facing north waterlogged true shape inner_left half top
6335 acacia_stairs facing north waterlogged false shape inner_left half top
6336 acacia_stairs facing north waterlogged true shape inner_right half top
6337 acacia_stairs facing north waterlogged false shape inner_right half top
6338 acacia_stairs facing north waterlogged true shape outer_left half top
6339 acacia_stairs facing north waterlogged false shape outer_left half top
6340 acacia_stairs facing north waterlogged true shape outer_right half top
6341 acacia_stairs facing north waterlogged false shape outer_right half top
6342 acacia_stairs facing north waterlogged true shape straight half bottom
6343 acacia_stairs facing north waterlogged false shape straight half bottom
6344 acacia_stairs facing north waterlogged true shape inner_left half bottom
6345 acacia_stairs facing north waterlogged false shape inner_left half bottom
6346 acacia_stairs facing north waterlogged true shape inner_right half bottom
6347 acacia_stairs facing north waterlogged false shape inner_right half bottom
6348 acacia_stairs facing north waterlogged true shape outer_left half bottom
6349 acacia_stairs facing north waterlogged false shape outer_left half bottom
6350 acacia_stairs facing north waterlogged true shape outer_right half bottom
6351 acacia_stairs facing north waterlogged false shape outer_right half bottom
6352 acacia_stairs facing south waterlogged true shape straight half top
6353 acacia_stairs facing south waterlogged false shape straight half top
6354 acacia_stairs facing south waterlogged true shape inner_left half top
6355 acacia_stairs facing south waterlogged false shape inner_left half top
6356 acacia_stairs facing south waterlogged true shape inner_right half top
6357 acacia_stairs facing south waterlogged false shape inner_right half top
6358 acacia_stairs facing south waterlogged true shape outer_left half top
6359 acacia_stairs facing south waterlogged false shape outer_left half top
6360 acacia_stairs facing south waterlogged true shape outer_right half top
6361 acacia_stairs facing south waterlogged false shape outer_right half top
6362 acacia_stairs facing south waterlogged true shape straight half bottom
6363 acacia_stairs facing south waterlogged false shape straight half bottom
6364 acacia_stairs facing south waterlogged true shape inner_left half bottom
6365 acacia_stairs facing south waterlogged false shape inner_left half bottom
6366 acacia_stairs facing south waterlogged true shape inner_right half bottom
6367 acacia_stairs facing south waterlogged false shape inner_right half bottom
6368 acacia_stairs facing south waterlogged true shape outer_left half bottom
6369 acacia_stairs facing south waterlogged false shape outer_left half bottom
6370 acacia_stairs facing south waterlogged true shape outer_right half bottom
6371 acacia_stairs facing south waterlogged false shape outer_right half bottom
6372 acacia_stairs facing west waterlogged true shape straight half top
6373 acacia_stairs facing west waterlogged false shape straight half top
6374 acacia_stairs facing west waterlogged true shape inner_left half top
6375 acacia_stairs facing west waterlogged false shape inner_left half top
6376 acacia_stairs facing west waterlogged true shape inner_right half top
6377 acacia_stairs facing west waterlogged false shape inner_right half top
6378 acacia_stairs facing west waterlogged true shape outer_left half top
6379 acacia_stairs facing west waterlogged false shape outer_left half top
6380 acacia_stairs facing west waterlogged true shape outer_right half top
6381 acacia_stairs facing west waterlogged false shape outer_right half top
6382 acacia_stairs facing west waterlogged true shape straight half bottom
6383 acacia_stairs facing west waterlogged false shape straight half bottom
6384 acacia_stairs facing west waterlogged true shape inner_left half bottom
6385 acacia_stairs facing west waterlogged false shape inner_left half bottom
6386 acacia_stairs facing west waterlogged true shape inner_right half bottom
6387 acacia_stairs facing west waterlogged false shape inner_right half bottom
6388 acacia_stairs facing west waterlogged true shape outer_left half bottom
6389 acacia_stairs facing west waterlogged false shape outer_left half bottom
6390 acacia_stairs facing west waterlogged true shape outer_right half bottom
6391 acacia_stairs facing west waterlogged false shape outer_right half bottom
6392 acacia_stairs facing east waterlogged true shape straight half top
6393 acacia_stairs facing east waterlogged false shape straight half top
6394 acacia_stairs facing east waterlogged true shape inner_left half top
6395 acacia_stairs facing east waterlogged false shape inner_left half top
6396 acacia_stairs facing east waterlogged true shape inner_right half top
6397 acacia_stairs facing east waterlogged false shape inner_right half top
6398 acacia_stairs facing east waterlogged true shape outer_left half top
6399 acacia_stairs facing east waterlogged false shape outer_left half top
6400 acacia_stairs facing east waterlogged true shape outer_right half top
6401 acacia_stairs facing east waterlogged false shape outer_right half top
6402 acacia_stairs facing east waterlogged true shape straight half bottom
6403 acacia_stairs facing east waterlogged false shape straight half bottom
6404 acacia_stairs facing east waterlogged true shape inner_left half bottom
6405 acacia_stairs facing east waterlogged false shape inner_left half bottom
6406 acacia_stairs facing east waterlogged true shape inner_right half bottom
6407 acacia_stairs facing east waterlogged false shape inner_right half bottom
6408 acacia_stairs facing east waterlogged true shape outer_left half bottom
6409 acacia_stairs facing east waterlogged false shape outer_left half bottom
6410 acacia_stairs facing east waterlogged true shape outer_right half bottom
6411 acacia_stairs facing east waterlogged false shape outer_right half bottom
6412 dark_oak_stairs facing north waterlogged true shape straight half top
6413 dark_oak_stairs facing north waterlogged false shape straight half top
6414 dark_oak_stairs facing north waterlogged true shape inner_left half top
6415 dark_oak_stairs facing north waterlogged false shape inner_left half top
6416 dark_oak_stairs facing north waterlogged true shape inner_right half top
6417 dark_oak_stairs facing north waterlogged false shape inner_right half top
6418 dark_oak_stairs facing north waterlogged true shape outer_left half top
6419 dark_oak_stairs facing north waterlogged false shape outer_left half top
6420 dark_oak_stairs facing north waterlogged true shape outer_right half top
6421 dark_oak_stairs facing north waterlogged false shape outer_right half top
6422 dark_oak_stairs facing north waterlogged true shape straight half bottom
6423 dark_oak_stairs facing north waterlogged false shape straight half bottom
6424 dark_oak_stairs facing north waterlogged true shape inner_left half bottom
6425 dark_oak_stairs facing north waterlogged false shape inner_left half bottom
6426 dark_oak_stairs facing north waterlogged true shape inner_right half bottom
6427 dark_oak_stairs facing north waterlogged false shape inner_right half bottom
6428 dark_oak_stairs facing north waterlogged true shape outer_left half bottom
6429 dark_oak_stairs facing north waterlogged false shape outer_left half bottom
6430 dark_oak_stairs facing north waterlogged true shape outer_right half bottom
6431 dark_oak_stairs facing north waterlogged false shape outer_right half bottom
6432 dark_oak_stairs facing south waterlogged true shape straight half top
6433 dark_oak_stairs facing south waterlogged false shape straight half top
6434 dark_oak_stairs facing south waterlogged true shape inner_left half top
6435 dark_oak_stairs facing south waterlogged false shape inner_left half top
6436 dark_oak_stairs facing south waterlogged true shape inner_right half top
6437 dark_oak_stairs facing south waterlogged false shape inner_right half top
6438 dark_oak_stairs facing south waterlogged true shape outer_left half top
6439 dark_oak_stairs facing south waterlogged false shape outer_left half top
6440 dark_oak_stairs facing south waterlogged true shape outer_right half top
6441 dark_oak_stairs facing south waterlogged false shape outer_right half top
6442 dark_oak_stairs facing south waterlogged true shape straight half bottom
6443 dark_oak_stairs facing south waterlogged false shape straight half bottom
6444 dark_oak_stairs facing south waterlogged true shape inner_left half bottom
6445 dark_oak_stairs facing south waterlogged false shape inner_left half bottom
6446 dark_oak_stairs facing south waterlogged true shape inner_right half bottom
6447 dark_oak_stairs facing south waterlogged false shape inner_right half bottom
6448 dark_oak_stairs facing south waterlogged true shape outer_left half bottom
6449 dark_oak_stairs facing south waterlogged false shape outer_left half bottom
6450 dark_oak_stairs facing south waterlogged true shape outer_right half bottom
6451 dark_oak_stairs facing south waterlogged false shape outer_right half bottom
6452 dark_oak_stairs facing west waterlogged true shape straight half top
6453 dark_oak_stairs facing west waterlogged false shape straight half top
6454 dark_oak_stairs facing west waterlogged true shape inner_left half top
6455 dark_oak_stairs facing west waterlogged false shape inner_left half top
6456 dark_oak_stairs facing west waterlogged true shape inner_right half top
6457 dark_oak_stairs facing west waterlogged false shape inner_right half top
6458 dark_oak_stairs facing west waterlogged true shape outer_left half top
6459 dark_oak_stairs facing west waterlogged false shape outer_left half top
6460 dark_oak_stairs facing west waterlogged true shape outer_right half top
6461 dark_oak_stairs facing west waterlogged false shape outer_right half top
6462 dark_oak_stairs facing west waterlogged true shape straight half bottom
6463 dark_oak_stairs facing west waterlogged false shape straight half bottom
6464 dark_oak_stairs facing west waterlogged true shape inner_left half bottom
6465 dark_oak_stairs facing west waterlogged false shape inner_left half bottom
6466 dark_oak_stairs facing west waterlogged true shape inner_right half bottom
6467 dark_oak_stairs facing west waterlogged false shape inner_right half bottom
6468 dark_oak_stairs facing west waterlogged true shape outer_left half bottom
6469 dark_oak_stairs facing west waterlogged false shape outer_left half bottom
6470 dark_oak_stairs facing west waterlogged true shape outer_right half bottom
6471 dark_oak_stairs facing west waterlogged false shape outer_right half bottom
6472 dark_oak_stairs facing east waterlogged true shape straight half top
6473 dark_oak_stairs facing east waterlogged false shape straight half top
6474 dark_oak_stairs facing east waterlogged true shape inner_left half top
6475 dark_oak_stairs facing east waterlogged false shape inner_left half top
6476 dark_oak_stairs facing east waterlogged true shape inner_right half top
6477 dark_oak_stairs facing east waterlogged false shape inner_right half top
6478 dark_oak_stairs facing east waterlogged true shape outer_left half top
6479 dark_oak_stairs facing east waterlogged false shape outer_left half top
6480 dark_oak_stairs facing east waterlogged true shape outer_right half top
6481 dark_oak_stairs facing east waterlogged false shape outer_right half top
6482 dark_oak_stairs facing east waterlogged true shape straight half bottom
6483 dark_oak_stairs facing east waterlogged false shape straight half bottom
6484 dark_oak_stairs facing east waterlogged true shape inner_left half bottom
6485 dark_oak_stairs facing east waterlogged false shape inner_left half bottom
6486 dark_oak_stairs facing east waterlogged true shape inner_right half bottom
6487 dark_oak_stairs facing east waterlogged false shape inner_right half bottom
6488 dark_oak_stairs facing east waterlogged true shape outer_left half bottom
6489 dark_oak_stairs facing east waterlogged false shape outer_left half bottom
6490 dark_oak_stairs facing east waterlogged true shape outer_right half bottom
6491 dark_oak_stairs facing east waterlogged false shape outer_right half bottom
6492 slime_block
6493 barrier
6494 iron_trapdoor waterlogged true powered true facing north half top open true
6495 iron_trapdoor waterlogged false powered true facing north half top open true
6496 iron_trapdoor waterlogged true powered false facing north half top open true
6497 iron_trapdoor waterlogged false powered false facing north half top open true
6498 iron_trapdoor waterlogged true powered true facing north half top open false
6499 iron_trapdoor waterlogged false powered true facing north half top open false
6500 iron_trapdoor waterlogged true powered false facing north half top open false
6501 iron_trapdoor waterlogged false powered false facing north half top open false
6502 iron_trapdoor waterlogged true powered true facing north half bottom open true
6503 iron_trapdoor waterlogged false powered true facing north half bottom open true
6504 iron_trapdoor waterlogged true powered false facing north half bottom open true
6505 iron_trapdoor waterlogged false powered false facing north half bottom open true
6506 iron_trapdoor waterlogged true powered true facing north half bottom open false
6507 iron_trapdoor waterlogged false powered true facing north half bottom open false
6508 iron_trapdoor waterlogged true powered false facing north half bottom open false
6509 iron_trapdoor waterlogged false powered false facing north half bottom open false
6510 iron_trapdoor waterlogged true powered true facing south half top open true
6511 iron_trapdoor waterlogged false powered true facing south half top open true
6512 iron_trapdoor waterlogged true powered false facing south half top open true
6513 iron_trapdoor waterlogged false powered false facing south half top open true
6514 iron_trapdoor waterlogged true powered true facing south half top open false
6515 iron_trapdoor waterlogged false powered true facing south half top open false
6516 iron_trapdoor waterlogged true powered false facing south half top open false
6517 iron_trapdoor waterlogged false powered false facing south half top open false
6518 iron_trapdoor waterlogged true powered true facing south half bottom open true
6519 iron_trapdoor waterlogged false powered true facing south half bottom open true
6520 iron_trapdoor waterlogged true powered false facing south half bottom open true
6521 iron_trapdoor waterlogged false powered false facing south half bottom open true
6522 iron_trapdoor waterlogged true powered true facing south half bottom open false
6523 iron_trapdoor waterlogged false powered true facing south half bottom open false
6524 iron_trapdoor waterlogged true powered false facing south half bottom open false
6525 iron_trapdoor waterlogged false powered false facing south half bottom open false
6526 iron_trapdoor waterlogged true powered true facing west half top open true
6527 iron_trapdoor waterlogged false powered true facing west half top open true
6528 iron_trapdoor waterlogged true powered false facing west half top open true
6529 iron_trapdoor waterlogged false powered false facing west half top open true
6530 iron_trapdoor waterlogged true powered true facing west half top open false
6531 iron_trapdoor waterlogged false powered true facing west half top open false
6532 iron_trapdoor waterlogged true powered false facing west half top open false
6533 iron_trapdoor waterlogged false powered false facing west half top open false
6534 iron_trapdoor waterlogged true powered true facing west half bottom open true
6535 iron_trapdoor waterlogged false powered true facing west half bottom open true
6536 iron_trapdoor waterlogged true powered false facing west half bottom open true
6537 iron_trapdoor waterlogged false powered false facing west half bottom open true
6538 iron_trapdoor waterlogged true powered true facing west half bottom open false
6539 iron_trapdoor waterlogged false powered true facing west half bottom open false
6540 iron_trapdoor waterlogged true powered false facing west half bottom open false
6541 iron_trapdoor waterlogged false powered false facing west half bottom open false
6542 iron_trapdoor waterlogged true powered true facing east half top open true
6543 iron_trapdoor waterlogged false powered true facing east half top open true
6544 iron_trapdoor waterlogged true powered false facing east half top open true
6545 iron_trapdoor waterlogged false powered false facing east half top open true
6546 iron_trapdoor waterlogged true powered true facing east half top open false
6547 iron_trapdoor waterlogged false powered true facing east half top open false
6548 iron_trapdoor waterlogged true powered false facing east half top open false
6549 iron_trapdoor waterlogged false powered false facing east half top open false
6550 iron_trapdoor waterlogged true powered true facing east half bottom open true
6551 iron_trapdoor waterlogged false powered true facing east half bottom open true
6552 iron_trapdoor waterlogged true powered false facing east half bottom open true
6553 iron_trapdoor waterlogged false powered false facing east half bottom open true
6554 iron_trapdoor waterlogged true powered true facing east half bottom open false
6555 iron_trapdoor waterlogged false powered true facing east half bottom open false
6556 iron_trapdoor waterlogged true powered false facing east half bottom open false
6557 iron_trapdoor waterlogged false powered false facing east half bottom open false
6558 prismarine
6559 prismarine_bricks
6560 dark_prismarine
6561 prismarine_stairs facing north waterlogged true shape straight half top
6562 prismarine_stairs facing north waterlogged false shape straight half top
6563 prismarine_stairs facing north waterlogged true shape inner_left half top
6564 prismarine_stairs facing north waterlogged false shape inner_left half top
6565 prismarine_stairs facing north waterlogged true shape inner_right half top
6566 prismarine_stairs facing north waterlogged false shape inner_right half top
6567 prismarine_stairs facing north waterlogged true shape outer_left half top
6568 prismarine_stairs facing north waterlogged false shape outer_left half top
6569 prismarine_stairs facing north waterlogged true shape outer_right half top
6570 prismarine_stairs facing north waterlogged false shape outer_right half top
6571 prismarine_stairs facing north waterlogged true shape straight half bottom
6572 prismarine_stairs facing north waterlogged false shape straight half bottom
6573 prismarine_stairs facing north waterlogged true shape inner_left half bottom
6574 prismarine_stairs facing north waterlogged false shape inner_left half bottom
6575 prismarine_stairs facing north waterlogged true shape inner_right half bottom
6576 prismarine_stairs facing north waterlogged false shape inner_right half bottom
6577 prismarine_stairs facing north waterlogged true shape outer_left half bottom
6578 prismarine_stairs facing north waterlogged false shape outer_left half bottom
6579 prismarine_stairs facing north waterlogged true shape outer_right half bottom
6580 prismarine_stairs facing north waterlogged false shape outer_right half bottom
6581 prismarine_stairs facing south waterlogged true shape straight half top
6582 prismarine_stairs facing south waterlogged false shape straight half top
6583 prismarine_stairs facing south waterlogged true shape inner_left half top
6584 prismarine_stairs facing south waterlogged false shape inner_left half top
6585 prismarine_stairs facing south waterlogged true shape inner_right half top
6586 prismarine_stairs facing south waterlogged false shape inner_right half top
6587 prismarine_stairs facing south waterlogged true shape outer_left half top
6588 prismarine_stairs facing south waterlogged false shape outer_left half top
6589 prismarine_stairs facing south waterlogged true shape outer_right half top
6590 prismarine_stairs facing south waterlogged false shape outer_right half top
6591 prismarine_stairs facing south waterlogged true shape straight half bottom
6592 prismarine_stairs facing south waterlogged false shape straight half bottom
6593 prismarine_stairs facing south waterlogged true shape inner_left half bottom
6594 prismarine_stairs facing south waterlogged false shape inner_left half bottom
6595 prismarine_stairs facing south waterlogged true shape inner_right half bottom
6596 prismarine_stairs facing south waterlogged false shape inner_right half bottom
6597 prismarine_stairs facing south waterlogged true shape outer_left half bottom
6598 prismarine_stairs facing south waterlogged false shape outer_left half bottom
6599 prismarine_stairs facing south waterlogged true shape outer_right half bottom
6600 prismarine_stairs facing south waterlogged false shape outer_right half bottom
6601 prismarine_stairs facing west waterlogged true shape straight half top
6602 prismarine_stairs facing west waterlogged false shape straight half top
6603 prismarine_stairs facing west waterlogged true shape inner_left half top
6604 prismarine_stairs facing west waterlogged false shape inner_left half top
6605 prismarine_stairs facing west waterlogged true shape inner_right half top
6606 prismarine_stairs facing west waterlogged false shape inner_right half top
6607 prismarine_stairs facing west waterlogged true shape outer_left half top
6608 prismarine_stairs facing west waterlogged false shape outer_left half top
6609 prismarine_stairs facing west waterlogged true shape outer_right half top
6610 prismarine_stairs facing west waterlogged false shape outer_right half top
6611 prismarine_stairs facing west waterlogged true shape straight half bottom
6612 prismarine_stairs facing west waterlogged false shape straight half bottom
6613 prismarine_stairs facing west waterlogged true shape inner_left half bottom
6614 prismarine_stairs facing west waterlogged false shape inner_left half bottom
6615 prismarine_stairs facing west waterlogged true shape inner_right half bottom
6616 prismarine_stairs facing west waterlogged false shape inner_right half bottom
6617 prismarine_stairs facing west waterlogged true shape outer_left half bottom
6618 prismarine_stairs facing west waterlogged false shape outer_left half bottom
6619 prismarine_stairs facing west waterlogged true shape outer_right half bottom
6620 prismarine_stairs facing west waterlogged false shape outer_right half bottom
6621 prismarine_stairs facing east waterlogged true shape straight half top
6622 prismarine_stairs facing east waterlogged false shape straight half top
6623 prismarine_stairs facing east waterlogged true shape inner_left half top
6624 prismarine_stairs facing east waterlogged false shape inner_left half top
6625 prismarine_stairs facing east waterlogged true shape inner_right half top
6626 prismarine_stairs facing east waterlogged false shape inner_right half top
6627 prismarine_stairs facing east waterlogged true shape outer_left half top
6628 prismarine_stairs facing east waterlogged false shape outer_left half top
6629 prismarine_stairs facing east waterlogged true shape outer_right half top
6630 prismarine_stairs facing east waterlogged false shape outer_right half top
6631 prismarine_stairs facing east waterlogged true shape straight half bottom
6632 prismarine_stairs facing east waterlogged false shape straight half bottom
6633 prismarine_stairs facing east waterlogged true shape inner_left half bottom
6634 prismarine_stairs facing east waterlogged false shape inner_left half bottom
6635 prismarine_stairs facing east waterlogged true shape inner_right half bottom
6636 prismarine_stairs facing east waterlogged false shape inner_right half bottom
6637 prismarine_stairs facing east waterlogged true shape outer_left half bottom
6638 prismarine_stairs facing east waterlogged false shape outer_left half bottom
6639 prismarine_stairs facing east waterlogged true shape outer_right half bottom
6640 prismarine_stairs facing east waterlogged false shape outer_right half bottom
6641 prismarine_brick_stairs facing north waterlogged true shape straight half top
6642 prismarine_brick_stairs facing north waterlogged false shape straight half top
6643 prismarine_brick_stairs facing north waterlogged true shape inner_left half top
6644 prismarine_brick_stairs facing north waterlogged false shape inner_left half top
6645 prismarine_brick_stairs facing north waterlogged true shape inner_right half top
6646 prismarine_brick_stairs facing north waterlogged false shape inner_right half top
6647 prismarine_brick_stairs facing north waterlogged true shape outer_left half top
6648 prismarine_brick_stairs facing north waterlogged false shape outer_left half top
6649 prismarine_brick_stairs facing north waterlogged true shape outer_right half top
6650 prismarine_brick_stairs facing north waterlogged false shape outer_right half top
6651 prismarine_brick_stairs facing north waterlogged true shape straight half bottom
6652 prismarine_brick_stairs facing north waterlogged false shape straight half bottom
6653 prismarine_brick_stairs facing north waterlogged true shape inner_left half bottom
6654 prismarine_brick_stairs facing north waterlogged false shape inner_left half bottom
6655 prismarine_brick_stairs facing north waterlogged true shape inner_right half bottom
6656 prismarine_brick_stairs facing north waterlogged false shape inner_right half bottom
6657 prismarine_brick_stairs facing north waterlogged true shape outer_left half bottom
6658 prismarine_brick_stairs facing north waterlogged false shape outer_left half bottom
6659 prismarine_brick_stairs facing north waterlogged true shape outer_right half bottom
6660 prismarine_brick_stairs facing north waterlogged false shape outer_right half bottom
6661 prismarine_brick_stairs facing south waterlogged true shape straight half top
6662 prismarine_brick_stairs facing south waterlogged false shape straight half top
6663 prismarine_brick_stairs facing south waterlogged true shape inner_left half top
6664 prismarine_brick_stairs facing south waterlogged false shape inner_left half top
6665 prismarine_brick_stairs facing south waterlogged true shape inner_right half top
6666 prismarine_brick_stairs facing south waterlogged false shape inner_right half top
6667 prismarine_brick_stairs facing south waterlogged true shape outer_left half top
6668 prismarine_brick_stairs facing south waterlogged false shape outer_left half top
6669 prismarine_brick_stairs facing south waterlogged true shape outer_right half top
6670 prismarine_brick_stairs facing south waterlogged false shape outer_right half top
6671 prismarine_brick_stairs facing south waterlogged true shape straight half bottom
6672 prismarine_brick_stairs facing south waterlogged false shape straight half bottom
6673 prismarine_brick_stairs facing south waterlogged true shape inner_left half bottom
6674 prismarine_brick_stairs facing south waterlogged false shape inner_left half bottom
6675 prismarine_brick_stairs facing south waterlogged true shape inner_right half bottom
6676 prismarine_brick_stairs facing south waterlogged false shape inner_right half bottom
6677 prismarine_brick_stairs facing south waterlogged true shape outer_left half bottom
6678 prismarine_brick_stairs facing south waterlogged false shape outer_left half bottom
6679 prismarine_brick_stairs facing south waterlogged true shape outer_right half bottom
6680 prismarine_brick_stairs facing south waterlogged false shape outer_right half bottom
6681 prismarine_brick_stairs facing west waterlogged true shape straight half top
6682 prismarine_brick_stairs facing west waterlogged false shape straight half top
6683 prismarine_brick_stairs facing west waterlogged true shape inner_left half top
6684 prismarine_brick_stairs facing west waterlogged false shape inner_left half top
6685 prismarine_brick_stairs facing west waterlogged true shape inner_right half top
6686 prismarine_brick_stairs facing west waterlogged false shape inner_right half top
6687 prismarine_brick_stairs facing west waterlogged true shape outer_left half top
6688 prismarine_brick_stairs facing west waterlogged false shape outer_left half top
6689 prismarine_brick_stairs facing west waterlogged true shape outer_right half top
6690 prismarine_brick_stairs facing west waterlogged false shape outer_right half top
6691 prismarine_brick_stairs facing west waterlogged true shape straight half bottom
6692 prismarine_brick_stairs facing west waterlogged false shape straight half bottom
6693 prismarine_brick_stairs facing west waterlogged true shape inner_left half bottom
6694 prismarine_brick_stairs facing west waterlogged false shape inner_left half bottom
6695 prismarine_brick_stairs facing west waterlogged true shape inner_right half bottom
6696 prismarine_brick_stairs facing west waterlogged false shape inner_right half bottom
6697 prismarine_brick_stairs facing west waterlogged true shape outer_left half bottom
6698 prismarine_brick_stairs facing west waterlogged false shape outer_left half bottom
6699 prismarine_brick_stairs facing west waterlogged true shape outer_right half bottom
6700 prismarine_brick_stairs facing west waterlogged false shape outer_right half bottom
6701 prismarine_brick_stairs facing east waterlogged true shape straight half top
6702 prismarine_brick_stairs facing east waterlogged false shape straight half top
6703 prismarine_brick_stairs facing east waterlogged true shape inner_left half top
6704 prismarine_brick_stairs facing east waterlogged false shape inner_left half top
6705 prismarine_brick_stairs facing east waterlogged true shape inner_right half top
6706 prismarine_brick_stairs facing east waterlogged false shape inner_right half top
6707 prismarine_brick_stairs facing east waterlogged true shape outer_left half top
6708 prismarine_brick_stairs facing east waterlogged false shape outer_left half top
6709 prismarine_brick_stairs facing east waterlogged true shape outer_right half top
6710 prismarine_brick_stairs facing east waterlogged false shape outer_right half top
6711 prismarine_brick_stairs facing east waterlogged true shape straight half bottom
6712 prismarine_brick_stairs facing east waterlogged false shape straight half bottom
6713 prismarine_brick_stairs facing east waterlogged true shape inner_left half bottom
6714 prismarine_brick_stairs facing east waterlogged false shape inner_left half bottom
6715 prismarine_brick_stairs facing east waterlogged true shape inner_right half bottom
6716 prismarine_brick_stairs facing east waterlogged false shape inner_right half bottom
6717 prismarine_brick_stairs facing east waterlogged true shape outer_left half bottom
6718 prismarine_brick_stairs facing east waterlogged false shape outer_left half bottom
6719 prismarine_brick_stairs facing east waterlogged true shape outer_right half bottom
6720 prismarine_brick_stairs facing east waterlogged false shape outer_right half bottom
6721 dark_prismarine_stairs facing north waterlogged true shape straight half top
6722 dark_prismarine_stairs facing north waterlogged false shape straight half top
6723 dark_prismarine_stairs facing north waterlogged true shape inner_left half top
6724 dark_prismarine_stairs facing north waterlogged false shape inner_left half top
6725 dark_prismarine_stairs facing north waterlogged true shape inner_right half top
6726 dark_prismarine_stairs facing north waterlogged false shape inner_right half top
6727 dark_prismarine_stairs facing north waterlogged true shape outer_left half top
6728 dark_prismarine_stairs facing north waterlogged false shape outer_left half top
6729 dark_prismarine_stairs facing north waterlogged true shape outer_right half top
6730 dark_prismarine_stairs facing north waterlogged false shape outer_right half top
6731 dark_prismarine_stairs facing north waterlogged true shape straight half bottom
6732 dark_prismarine_stairs facing north waterlogged false shape straight half bottom
6733 dark_prismarine_stairs facing north waterlogged true shape inner_left half bottom
6734 dark_prismarine_stairs facing north waterlogged false shape inner_left half bottom
6735 dark_prismarine_stairs facing north waterlogged true shape inner_right half bottom
6736 dark_prismarine_stairs facing north waterlogged false shape inner_right half bottom
6737 dark_prismarine_stairs facing north waterlogged true shape outer_left half bottom
6738 dark_prismarine_stairs facing north waterlogged false shape outer_left half bottom
6739 dark_prismarine_stairs facing north waterlogged true shape outer_right half bottom
6740 dark_prismarine_stairs facing north waterlogged false shape outer_right half bottom
6741 dark_prismarine_stairs facing south waterlogged true shape straight half top
6742 dark_prismarine_stairs facing south waterlogged false shape straight half top
6743 dark_prismarine_stairs facing south waterlogged true shape inner_left half top
6744 dark_prismarine_stairs facing south waterlogged false shape inner_left half top
6745 dark_prismarine_stairs facing south waterlogged true shape inner_right half top
6746 dark_prismarine_stairs facing south waterlogged false shape inner_right half top
6747 dark_prismarine_stairs facing south waterlogged true shape outer_left half top
6748 dark_prismarine_stairs facing south waterlogged false shape outer_left half top
6749 dark_prismarine_stairs facing south waterlogged true shape outer_right half top
6750 dark_prismarine_stairs facing south waterlogged false shape outer_right half top
6751 dark_prismarine_stairs facing south waterlogged true shape straight half bottom
6752 dark_prismarine_stairs facing south waterlogged false shape straight half bottom
6753 dark_prismarine_stairs facing south waterlogged true shape inner_left half bottom
6754 dark_prismarine_stairs facing south waterlogged false shape inner_left half bottom
6755 dark_prismarine_stairs facing south waterlogged true shape inner_right half bottom
6756 dark_prismarine_stairs facing south waterlogged false shape inner_right half bottom
6757 dark_prismarine_stairs facing south waterlogged true shape outer_left half bottom
6758 dark_prismarine_stairs facing south waterlogged false shape outer_left half bottom
6759 dark_prismarine_stairs facing south waterlogged true shape outer_right half bottom
6760 dark_prismarine_stairs facing south waterlogged false shape outer_right half bottom
6761 dark_prismarine_stairs facing west waterlogged true shape straight half top
6762 dark_prismarine_stairs facing west waterlogged false shape straight half top
6763 dark_prismarine_stairs facing west waterlogged true shape inner_left half top
6764 dark_prismarine_stairs facing west waterlogged false shape inner_left half top
6765 dark_prismarine_stairs facing west waterlogged true shape inner_right half top
6766 dark_prismarine_stairs facing west waterlogged false shape inner_right half top
6767 dark_prismarine_stairs facing west waterlogged true shape outer_left half top
6768 dark_prismarine_stairs facing west waterlogged false shape outer_left half top
6769 dark_prismarine_stairs facing west waterlogged true shape outer_right half top
6770 dark_prismarine_stairs facing west waterlogged false shape outer_right half top
6771 dark_prismarine_stairs facing west waterlogged true shape straight half bottom
6772 dark_prismarine_stairs facing west waterlogged false shape straight half bottom
6773 dark_prismarine_stairs facing west waterlogged true shape inner_left half bottom
6774 dark_prismarine_stairs facing west waterlogged false shape inner_left half bottom
6775 dark_prismarine_stairs facing west waterlogged true shape inner_right half bottom
6776 dark_prismarine_stairs facing west waterlogged false shape inner_right half bottom
6777 dark_prismarine_stairs facing west waterlogged true shape outer_left half bottom
6778 dark_prismarine_stairs facing west waterlogged false shape outer_left half bottom
6779 dark_prismarine_stairs facing west waterlogged true shape outer_right half bottom
6780 dark_prismarine_stairs facing west waterlogged false shape outer_right half bottom
6781 dark_prismarine_stairs facing east waterlogged true shape straight half top
6782 dark_prismarine_stairs facing east waterlogged false shape straight half top
6783 dark_prismarine_stairs facing east waterlogged true shape inner_left half top
6784 dark_prismarine_stairs facing east waterlogged false shape inner_left half top
6785 dark_prismarine_stairs facing east waterlogged true shape inner_right half top
6786 dark_prismarine_stairs facing east waterlogged false shape inner_right half top
6787 dark_prismarine_stairs facing east waterlogged true shape outer_left half top
6788 dark_prismarine_stairs facing east waterlogged false shape outer_left half top
6789 dark_prismarine_stairs facing east waterlogged true shape outer_right half top
6790 dark_prismarine_stairs facing east waterlogged false shape outer_right half top
6791 dark_prismarine_stairs facing east waterlogged true shape straight half bottom
6792 dark_prismarine_stairs facing east waterlogged false shape straight half bottom
6793 dark_prismarine_stairs facing east waterlogged true shape inner_left half bottom
6794 dark_prismarine_stairs facing east waterlogged false shape inner_left half bottom
6795 dark_prismarine_stairs facing east waterlogged true shape inner_right half bottom
6796 dark_prismarine_stairs facing east waterlogged false shape inner_right half bottom
6797 dark_prismarine_stairs facing east waterlogged true shape outer_left half bottom
6798 dark_prismarine_stairs facing east waterlogged false shape outer_left half bottom
6799 dark_prismarine_stairs facing east waterlogged true shape outer_right half bottom
6800 dark_prismarine_stairs facing east waterlogged false shape outer_right half bottom
6801 prismarine_slab type top waterlogged true
6802 prismarine_slab type top waterlogged false
6803 prismarine_slab type bottom waterlogged true
6804 prismarine_slab type bottom waterlogged false
6805 prismarine_slab type double waterlogged true
6806 prismarine_slab type double waterlogged false
6807 prismarine_brick_slab type top waterlogged true
6808 prismarine_brick_slab type top waterlogged false
6809 prismarine_brick_slab type bottom waterlogged true
6810 prismarine_brick_slab type bottom waterlogged false
6811 prismarine_brick_slab type double waterlogged true
6812 prismarine_brick_slab type double waterlogged false
6813 dark_prismarine_slab type top waterlogged true
6814 dark_prismarine_slab type top waterlogged false
6815 dark_prismarine_slab type bottom waterlogged true
6816 dark_prismarine_slab type bottom waterlogged false
6817 dark_prismarine_slab type double waterlogged true
6818 dark_prismarine_slab type double waterlogged false
6819 sea_lantern
6820 hay_block axis x
6821 hay_block axis y
6822 hay_block axis z
6823 white_carpet
6824 orange_carpet
6825 magenta_carpet
6826 light_blue_carpet
6827 yellow_carpet
6828 lime_carpet
6829 pink_carpet
6830 gray_carpet
6831 light_gray_carpet
6832 cyan_carpet
6833 purple_carpet
6834 blue_carpet
6835 brown_carpet
6836 green_carpet
6837 red_carpet
6838 black_carpet
6839 terracotta
6840 coal_block
6841 packed_ice
6842 sunflower half upper
6843 sunflower half lower
6844 lilac half upper
6845 lilac half lower
6846 rose_bush half upper
6847 rose_bush half lower
6848 peony half upper
6849 peony half lower
6850 tall_grass half upper
6851 tall_grass half lower
6852 large_fern half upper
6853 large_fern half lower
6854 white_banner rotation 0
6855 white_banner rotation 1
6856 white_banner rotation 2
6857 white_banner rotation 3
6858 white_banner rotation 4
6859 white_banner rotation 5
6860 white_banner rotation 6
6861 white_banner rotation 7
6862 white_banner rotation 8
6863 white_banner rotation 9
6864 white_banner rotation 10
6865 white_banner rotation 11
6866 white_banner rotation 12
6867 white_banner rotation 13
6868 white_banner rotation 14
6869 white_banner rotation 15
6870 orange_banner rotation 0
6871 orange_banner rotation 1
6872 orange_banner rotation 2
6873 orange_banner rotation 3
6874 orange_banner rotation 4
6875 orange_banner rotation 5
6876 orange_banner rotation 6
6877 orange_banner rotation 7
6878 orange_banner rotation 8
6879 orange_banner rotation 9
6880 orange_banner rotation 10
6881 orange_banner rotation 11
6882 orange_banner rotation 12
6883 orange_banner rotation 13
6884 orange_banner rotation 14
6885 orange_banner rotation 15
6886 magenta_banner rotation 0
6887 magenta_banner rotation 1
6888 magenta_banner rotation 2
6889 magenta_banner rotation 3
6890 magenta_banner rotation 4
6891 magenta_banner rotation 5
6892 magenta_banner rotation 6
6893 magenta_banner rotation 7
6894 magenta_banner rotation 8
6895 magenta_banner rotation 9
6896 magenta_banner rotation 10
6897 magenta_banner rotation 11
6898 magenta_banner rotation 12
6899 magenta_banner rotation 13
6900 magenta_banner rotation 14
6901 magenta_banner rotation 15
6902 light_blue_banner rotation 0
6903 light_blue_banner rotation 1
6904 light_blue_banner rotation 2
6905 light_blue_banner rotation 3
6906 light_blue_banner rotation 4
6907 light_blue_banner rotation 5
6908 light_blue_banner rotation 6
6909 light_blue_banner rotation 7
6910 light_blue_banner rotation 8
6911 light_blue_banner rotation 9
6912 light_blue_banner rotation 10
6913 light_blue_banner rotation 11
6914 light_blue_banner rotation 12
6915 light_blue_banner rotation 13
6916 light_blue_banner rotation 14
6917 light_blue_banner rotation 15
6918 yellow_banner rotation 0
6919 yellow_banner rotation 1
6920 yellow_banner rotation 2
6921 yellow_banner rotation 3
6922 yellow_banner rotation 4
6923 yellow_banner rotation 5
6924 yellow_banner rotation 6
6925 yellow_banner rotation 7
6926 yellow_banner rotation 8
6927 yellow_banner rotation 9
6928 yellow_banner rotation 10
6929 yellow_banner rotation 11
6930 yellow_banner rotation 12
6931 yellow_banner rotation 13
6932 yellow_banner rotation 14
6933 yellow_banner rotation 15
6934 lime_banner rotation 0
6935 lime_banner rotation 1
6936 lime_banner rotation 2
6937 lime_banner rotation 3
6938 lime_banner rotation 4
6939 lime_banner rotation 5
6940 lime_banner rotation 6
6941 lime_banner rotation 7
6942 lime_banner rotation 8
6943 lime_banner rotation 9
6944 lime_banner rotation 10
6945 lime_banner rotation 11
6946 lime_banner rotation 12
6947 lime_banner rotation 13
6948 lime_banner rotation 14
6949 lime_banner rotation 15
6950 pink_banner rotation 0
6951 pink_banner rotation 1
6952 pink_banner rotation 2
6953 pink_banner rotation 3
6954 pink_banner rotation 4
6955 pink_banner rotation 5
6956 pink_banner rotation 6
6957 pink_banner rotation 7
6958 pink_banner rotation 8
6959 pink_banner rotation 9
6960 pink_banner rotation 10
6961 pink_banner rotation 11
6962 pink_banner rotation 12
6963 pink_banner rotation 13
6964 pink_banner rotation 14
6965 pink_banner rotation 15
6966 gray_banner rotation 0
6967 gray_banner rotation 1
6968 gray_banner rotation 2
6969 gray_banner rotation 3
6970 gray_banner rotation 4
6971 gray_banner rotation 5
6972 gray_banner rotation 6
6973 gray_banner rotation 7
6974 gray_banner rotation 8
6975 gray_banner rotation 9
6976 gray_banner rotation 10
6977 gray_banner rotation 11
6978 gray_banner rotation 12
6979 gray_banner rotation 13
6980 gray_banner rotation 14
6981 gray_banner rotation 15
6982 light_gray_banner rotation 0
6983 light_gray_banner rotation 1
6984 light_gray_banner rotation 2
6985 light_gray_banner rotation 3
6986 light_gray_banner rotation 4
6987 light_gray_banner rotation 5
6988 light_gray_banner rotation 6
6989 light_gray_banner rotation 7
6990 light_gray_banner rotation 8
6991 light_gray_banner rotation 9
6992 light_gray_banner rotation 10
6993 light_gray_banner rotation 11
6994 light_gray_banner rotation 12
6995 light_gray_banner rotation 13
6996 light_gray_banner rotation 14
6997 light_gray_banner rotation 15
6998 cyan_banner rotation 0
6999 cyan_banner rotation 1
7000 cyan_banner rotation 2
7001 cyan_banner rotation 3
7002 cyan_banner rotation 4
7003 cyan_banner rotation 5
7004 cyan_banner rotation 6
7005 cyan_banner rotation 7
7006 cyan_banner rotation 8
7007 cyan_banner rotation 9
7008 cyan_banner rotation 10
7009 cyan_banner rotation 11
7010 cyan_banner rotation 12
7011 cyan_banner rotation 13
7012 cyan_banner rotation 14
7013 cyan_banner rotation 15
7014 purple_banner rotation 0
7015 purple_banner rotation 1
7016 purple_banner rotation 2
7017 purple_banner rotation 3
7018 purple_banner rotation 4
7019 purple_banner rotation 5
7020 purple_banner rotation 6
7021 purple_banner rotation 7
7022 purple_banner rotation 8
7023 purple_banner rotation 9
7024 purple_banner rotation 10
7025 purple_banner rotation 11
7026 purple_banner rotation 12
7027 purple_banner rotation 13
7028 purple_banner rotation 14
7029 purple_banner rotation 15
7030 blue_banner rotation 0
7031 blue_banner rotation 1
7032 blue_banner rotation 2
7033 blue_banner rotation 3
7034 blue_banner rotation 4
7035 blue_banner rotation 5
7036 blue_banner rotation 6
7037 blue_banner rotation 7
7038 blue_banner rotation 8
7039 blue_banner rotation 9
7040 blue_banner rotation 10
7041 blue_banner rotation 11
7042 blue_banner rotation 12
7043 blue_banner rotation 13
7044 blue_banner rotation 14
7045 blue_banner rotation 15
7046 brown_banner rotation 0
7047 brown_banner rotation 1
7048 brown_banner rotation 2
7049 brown_banner rotation 3
7050 brown_banner rotation 4
7051 brown_banner rotation 5
7052 brown_banner rotation 6
7053 brown_banner rotation 7
7054 brown_banner rotation 8
7055 brown_banner rotation 9
7056 brown_banner rotation 10
7057 brown_banner rotation 11
7058 brown_banner rotation 12
7059 brown_banner rotation 13
7060 brown_banner rotation 14
7061 brown_banner rotation 15
7062 green_banner rotation 0
7063 green_banner rotation 1
7064 green_banner rotation 2
7065 green_banner rotation 3
7066 green_banner rotation 4
7067 green_banner rotation 5
7068 green_banner rotation 6
7069 green_banner rotation 7
7070 green_banner rotation 8
7071 green_banner rotation 9
7072 green_banner rotation 10
7073 green_banner rotation 11
7074 green_banner rotation 12
7075 green_banner rotation 13
7076 green_banner rotation 14
7077 green_banner rotation 15
7078 red_banner rotation 0
7079 red_banner rotation 1
7080 red_banner rotation 2
7081 red_banner rotation 3
7082 red_banner rotation 4
7083 red_banner rotation 5
7084 red_banner rotation 6
7085 red_banner rotation 7
7086 red_banner rotation 8
7087 red_banner rotation 9
7088 red_banner rotation 10
7089 red_banner rotation 11
7090 red_banner rotation 12
7091 red_banner rotation 13
7092 red_banner rotation 14
7093 red_banner rotation 15
7094 black_banner rotation 0
7095 black_banner rotation 1
7096 black_banner rotation 2
7097 black_banner rotation 3
7098 black_banner rotation 4
7099 black_banner rotation 5
7100 black_banner rotation 6
7101 black_banner rotation 7
7102 black_banner rotation 8
7103 black_banner rotation 9
7104 black_banner rotation 10
7105 black_banner rotation 11
7106 black_banner rotation 12
7107 black_banner rotation 13
7108 black_banner rotation 14
7109 black_banner rotation 15
7110 white_wall_banner facing north
7111 white_wall_banner facing south
7112 white_wall_banner facing west
7113 white_wall_banner facing east
7114 orange_wall_banner facing north
7115 orange_wall_banner facing south
7116 orange_wall_banner facing west
7117 orange_wall_banner facing east
7118 magenta_wall_banner facing north
7119 magenta_wall_banner facing south
7120 magenta_wall_banner facing west
7121 magenta_wall_banner facing east
7122 light_blue_wall_banner facing north
7123 light_blue_wall_banner facing south
7124 light_blue_wall_banner facing west
7125 light_blue_wall_banner facing east
7126 yellow_wall_banner facing north
7127 yellow_wall_banner facing south
7128 yellow_wall_banner facing west
7129 yellow_wall_banner facing east
7130 lime_wall_banner facing north
7131 lime_wall_banner facing south
7132 lime_wall_banner facing west
7133 lime_wall_banner facing east
7134 pink_wall_banner facing north
7135 pink_wall_banner facing south
7136 pink_wall_banner facing west
7137 pink_wall_banner facing east
7138 gray_wall_banner facing north
7139 gray_wall_banner facing south
7140 gray_wall_banner facing west
7141 gray_wall_banner facing east
7142 light_gray_wall_banner facing north
7143 light_gray_wall_banner facing south
7144 light_gray_wall_banner facing west
7145 light_gray_wall_banner facing east
7146 cyan_wall_banner facing north
7147 cyan_wall_banner facing south
7148 cyan_wall_banner facing west
7149 cyan_wall_banner facing east
7150 purple_wall_banner facing north
7151 purple_wall_banner facing south
7152 purple_wall_banner facing west
7153 purple_wall_banner facing east
7154 blue_wall_banner facing north
7155 blue_wall_banner facing south
7156 blue_wall_banner facing west
7157 blue_wall_banner facing east
7158 brown_wall_banner facing north
7159 brown_wall_banner facing south
7160 brown_wall_banner facing west
7161 brown_wall_banner facing east
7162 green_wall_banner facing north
7163 green_wall_banner facing south
7164 green_wall_banner facing west
7165 green_wall_banner facing east
7166 red_wall_banner facing north
7167 red_wall_banner facing south
7168 red_wall_banner facing west
7169 red_wall_banner facing east
7170 black_wall_banner facing north
7171 black_wall_banner facing south
7172 black_wall_banner facing west
7173 black_wall_banner facing east
7174 red_sandstone
7175 chiseled_red_sandstone
7176 cut_red_sandstone
7177 red_sandstone_stairs facing north waterlogged true shape straight half top
7178 red_sandstone_stairs facing north waterlogged false shape straight half top
7179 red_sandstone_stairs facing north waterlogged true shape inner_left half top
7180 red_sandstone_stairs facing north waterlogged false shape inner_left half top
7181 red_sandstone_stairs facing north waterlogged true shape inner_right half top
7182 red_sandstone_stairs facing north waterlogged false shape inner_right half top
7183 red_sandstone_stairs facing north waterlogged true shape outer_left half top
7184 red_sandstone_stairs facing north waterlogged false shape outer_left half top
7185 red_sandstone_stairs facing north waterlogged true shape outer_right half top
7186 red_sandstone_stairs facing north waterlogged false shape outer_right half top
7187 red_sandstone_stairs facing north waterlogged true shape straight half bottom
7188 red_sandstone_stairs facing north waterlogged false shape straight half bottom
7189 red_sandstone_stairs facing north waterlogged true shape inner_left half bottom
7190 red_sandstone_stairs facing north waterlogged false shape inner_left half bottom
7191 red_sandstone_stairs facing north waterlogged true shape inner_right half bottom
7192 red_sandstone_stairs facing north waterlogged false shape inner_right half bottom
7193 red_sandstone_stairs facing north waterlogged true shape outer_left half bottom
7194 red_sandstone_stairs facing north waterlogged false shape outer_left half bottom
7195 red_sandstone_stairs facing north waterlogged true shape outer_right half bottom
7196 red_sandstone_stairs facing north waterlogged false shape outer_right half bottom
7197 red_sandstone_stairs facing south waterlogged true shape straight half top
7198 red_sandstone_stairs facing south waterlogged false shape straight half top
7199 red_sandstone_stairs facing south waterlogged true shape inner_left half top
7200 red_sandstone_stairs facing south waterlogged false shape inner_left half top
7201 red_sandstone_stairs facing south waterlogged true shape inner_right half top
7202 red_sandstone_stairs facing south waterlogged false shape inner_right half top
7203 red_sandstone_stairs facing south waterlogged true shape outer_left half top
7204 red_sandstone_stairs facing south waterlogged false shape outer_left half top
7205 red_sandstone_stairs facing south waterlogged true shape outer_right half top
7206 red_sandstone_stairs facing south waterlogged false shape outer_right half top
7207 red_sandstone_stairs facing south waterlogged true shape straight half bottom
7208 red_sandstone_stairs facing south waterlogged false shape straight half bottom
7209 red_sandstone_stairs facing south waterlogged true shape inner_left half bottom
7210 red_sandstone_stairs facing south waterlogged false shape inner_left half bottom
7211 red_sandstone_stairs facing south waterlogged true shape inner_right half bottom
7212 red_sandstone_stairs facing south waterlogged false shape inner_right half bottom
7213 red_sandstone_stairs facing south waterlogged true shape outer_left half bottom
7214 red_sandstone_stairs facing south waterlogged false shape outer_left half bottom
7215 red_sandstone_stairs facing south waterlogged true shape outer_right half bottom
7216 red_sandstone_stairs facing south waterlogged false shape outer_right half bottom
7217 red_sandstone_stairs facing west waterlogged true shape straight half top
7218 red_sandstone_stairs facing west waterlogged false shape straight half top
7219 red_sandstone_stairs facing west waterlogged true shape inner_left half top
7220 red_sandstone_stairs facing west waterlogged false shape inner_left half top
7221 red_sandstone_stairs facing west waterlogged true shape inner_right half top
7222 red_sandstone_stairs facing west waterlogged false shape inner_right half top
7223 red_sandstone_stairs facing west waterlogged true shape outer_left half top
7224 red_sandstone_stairs facing west waterlogged false shape outer_left half top
7225 red_sandstone_stairs facing west waterlogged true shape outer_right half top
7226 red_sandstone_stairs facing west waterlogged false shape outer_right half top
7227 red_sandstone_stairs facing west waterlogged true shape straight half bottom
7228 red_sandstone_stairs facing west waterlogged false shape straight half bottom
7229 red_sandstone_stairs facing west waterlogged true shape inner_left half bottom
7230 red_sandstone_stairs facing west waterlogged false shape inner_left half bottom
7231 red_sandstone_stairs facing west waterlogged true shape inner_right half bottom
7232 red_sandstone_stairs facing west waterlogged false shape inner_right half bottom
7233 red_sandstone_stairs facing west waterlogged true shape outer_left half bottom
7234 red_sandstone_stairs facing west waterlogged false shape outer_left half bottom
7235 red_sandstone_stairs facing west waterlogged true shape outer_right half bottom
7236 red_sandstone_stairs facing west waterlogged false shape outer_right half bottom
7237 red_sandstone_stairs facing east waterlogged true shape straight half top
7238 red_sandstone_stairs facing east waterlogged false shape straight half top
7239 red_sandstone_stairs facing east waterlogged true shape inner_left half top
7240 red_sandstone_stairs facing east waterlogged false shape inner_left half top
7241 red_sandstone_stairs facing east waterlogged true shape inner_right half top
7242 red_sandstone_stairs facing east waterlogged false shape inner_right half top
7243 red_sandstone_stairs facing east waterlogged true shape outer_left half top
7244 red_sandstone_stairs facing east waterlogged false shape outer_left half top
7245 red_sandstone_stairs facing east waterlogged true shape outer_right half top
7246 red_sandstone_stairs facing east waterlogged false shape outer_right half top
7247 red_sandstone_stairs facing east waterlogged true shape straight half bottom
7248 red_sandstone_stairs facing east waterlogged false shape straight half bottom
7249 red_sandstone_stairs facing east waterlogged true shape inner_left half bottom
7250 red_sandstone_stairs facing east waterlogged false shape inner_left half bottom
7251 red_sandstone_stairs facing east waterlogged true shape inner_right half bottom
7252 red_sandstone_stairs facing east waterlogged false shape inner_right half bottom
7253 red_sandstone_stairs facing east waterlogged true shape outer_left half bottom
7254 red_sandstone_stairs facing east waterlogged false shape outer_left half bottom
7255 red_sandstone_stairs facing east waterlogged true shape outer_right half bottom
7256 red_sandstone_stairs facing east waterlogged false shape outer_right half bottom
7257 oak_slab type top waterlogged true
7258 oak_slab type top waterlogged false
7259 oak_slab type bottom waterlogged true
7260 oak_slab type bottom waterlogged false
7261 oak_slab type double waterlogged true
7262 oak_slab type double waterlogged false
7263 spruce_slab type top waterlogged true
7264 spruce_slab type top waterlogged false
7265 spruce_slab type bottom waterlogged true
7266 spruce_slab type bottom waterlogged false
7267 spruce_slab type double waterlogged true
7268 spruce_slab type double waterlogged false
7269 birch_slab type top waterlogged true
7270 birch_slab type top waterlogged false
7271 birch_slab type bottom waterlogged true
7272 birch_slab type bottom waterlogged false
7273 birch_slab type double waterlogged true
7274 birch_slab type double waterlogged false
7275 jungle_slab type top waterlogged true
7276 jungle_slab type top waterlogged false
7277 jungle_slab type bottom waterlogged true
7278 jungle_slab type bottom waterlogged false
7279 jungle_slab type double waterlogged true
7280 jungle_slab type double waterlogged false
7281 acacia_slab type top waterlogged true
7282 acacia_slab type top waterlogged false
7283 acacia_slab type bottom waterlogged true
7284 acacia_slab type bottom waterlogged false
7285 acacia_slab type double waterlogged true
7286 acacia_slab type double waterlogged false
7287 dark_oak_slab type top waterlogged true
7288 dark_oak_slab type top waterlogged false
7289 dark_oak_slab type bottom waterlogged true
7290 dark_oak_slab type bottom waterlogged false
7291 dark_oak_slab type double waterlogged true
7292 dark_oak_slab type double waterlogged false
7293 stone_slab type top waterlogged true
7294 stone_slab type top waterlogged false
7295 stone_slab type bottom waterlogged true
7296 stone_slab type bottom waterlogged false
7297 stone_slab type double waterlogged true
7298 stone_slab type double waterlogged false
7299 sandstone_slab type top waterlogged true
7300 sandstone_slab type top waterlogged false
7301 sandstone_slab type bottom waterlogged true
7302 sandstone_slab type bottom waterlogged false
7303 sandstone_slab type double waterlogged true
7304 sandstone_slab type double waterlogged false
7305 petrified_oak_slab type top waterlogged true
7306 petrified_oak_slab type top waterlogged false
7307 petrified_oak_slab type bottom waterlogged true
7308 petrified_oak_slab type bottom waterlogged false
7309 petrified_oak_slab type double waterlogged true
7310 petrified_oak_slab type double waterlogged false
7311 cobblestone_slab type top waterlogged true
7312 cobblestone_slab type top waterlogged false
7313 cobblestone_slab type bottom waterlogged true
7314 cobblestone_slab type bottom waterlogged false
7315 cobblestone_slab type double waterlogged true
7316 cobblestone_slab type double waterlogged false
7317 brick_slab type top waterlogged true
7318 brick_slab type top waterlogged false
7319 brick_slab type bottom waterlogged true
7320 brick_slab type bottom waterlogged false
7321 brick_slab type double waterlogged true
7322 brick_slab type double waterlogged false
7323 stone_brick_slab type top waterlogged true
7324 stone_brick_slab type top waterlogged false
7325 stone_brick_slab type bottom waterlogged true
7326 stone_brick_slab type bottom waterlogged false
7327 stone_brick_slab type double waterlogged true
7328 stone_brick_slab type double waterlogged false
7329 nether_brick_slab type top waterlogged true
7330 nether_brick_slab type top waterlogged false
7331 nether_brick_slab type bottom waterlogged true
7332 nether_brick_slab type bottom waterlogged false
7333 nether_brick_slab type double waterlogged true
7334 nether_brick_slab type double waterlogged false
7335 quartz_slab type top waterlogged true
7336 quartz_slab type top waterlogged false
7337 quartz_slab type bottom waterlogged true
7338 quartz_slab type bottom waterlogged false
7339 quartz_slab type double waterlogged true
7340 quartz_slab type double waterlogged false
7341 red_sandstone_slab type top waterlogged true
7342 red_sandstone_slab type top waterlogged false
7343 red_sandstone_slab type bottom waterlogged true
7344 red_sandstone_slab type bottom waterlogged false
7345 red_sandstone_slab type double waterlogged true
7346 red_sandstone_slab type double waterlogged false
7347 purpur_slab type top waterlogged true
7348 purpur_slab type top waterlogged false
7349 purpur_slab type bottom waterlogged true
7350 purpur_slab type bottom waterlogged false
7351 purpur_slab type double waterlogged true
7352 purpur_slab type double waterlogged false
7353 smooth_stone
7354 smooth_sandstone
7355 smooth_quartz
7356 smooth_red_sandstone
7357 spruce_fence_gate facing north powered true open true in_wall true
7358 spruce_fence_gate facing north powered false open true in_wall true
7359 spruce_fence_gate facing north powered true open false in_wall true
7360 spruce_fence_gate facing north powered false open false in_wall true
7361 spruce_fence_gate facing north powered true open true in_wall false
7362 spruce_fence_gate facing north powered false open true in_wall false
7363 spruce_fence_gate facing north powered true open false in_wall false
7364 spruce_fence_gate facing north powered false open false in_wall false
7365 spruce_fence_gate facing south powered true open true in_wall true
7366 spruce_fence_gate facing south powered false open true in_wall true
7367 spruce_fence_gate facing south powered true open false in_wall true
7368 spruce_fence_gate facing south powered false open false in_wall true
7369 spruce_fence_gate facing south powered true open true in_wall false
7370 spruce_fence_gate facing south powered false open true in_wall false
7371 spruce_fence_gate facing south powered true open false in_wall false
7372 spruce_fence_gate facing south powered false open false in_wall false
7373 spruce_fence_gate facing west powered true open true in_wall true
7374 spruce_fence_gate facing west powered false open true in_wall true
7375 spruce_fence_gate facing west powered true open false in_wall true
7376 spruce_fence_gate facing west powered false open false in_wall true
7377 spruce_fence_gate facing west powered true open true in_wall false
7378 spruce_fence_gate facing west powered false open true in_wall false
7379 spruce_fence_gate facing west powered true open false in_wall false
7380 spruce_fence_gate facing west powered false open false in_wall false
7381 spruce_fence_gate facing east powered true open true in_wall true
7382 spruce_fence_gate facing east powered false open true in_wall true
7383 spruce_fence_gate facing east powered true open false in_wall true
7384 spruce_fence_gate facing east powered false open false in_wall true
7385 spruce_fence_gate facing east powered true open true in_wall false
7386 spruce_fence_gate facing east powered false open true in_wall false
7387 spruce_fence_gate facing east powered true open false in_wall false
7388 spruce_fence_gate facing east powered false open false in_wall false
7389 birch_fence_gate facing north powered true open true in_wall true
7390 birch_fence_gate facing north powered false open true in_wall true
7391 birch_fence_gate facing north powered true open false in_wall true
7392 birch_fence_gate facing north powered false open false in_wall true
7393 birch_fence_gate facing north powered true open true in_wall false
7394 birch_fence_gate facing north powered false open true in_wall false
7395 birch_fence_gate facing north powered true open false in_wall false
7396 birch_fence_gate facing north powered false open false in_wall false
7397 birch_fence_gate facing south powered true open true in_wall true
7398 birch_fence_gate facing south powered false open true in_wall true
7399 birch_fence_gate facing south powered true open false in_wall true
7400 birch_fence_gate facing south powered false open false in_wall true
7401 birch_fence_gate facing south powered true open true in_wall false
7402 birch_fence_gate facing south powered false open true in_wall false
7403 birch_fence_gate facing south powered true open false in_wall false
7404 birch_fence_gate facing south powered false open false in_wall false
7405 birch_fence_gate facing west powered true open true in_wall true
7406 birch_fence_gate facing west powered false open true in_wall true
7407 birch_fence_gate facing west powered true open false in_wall true
7408 birch_fence_gate facing west powered false open false in_wall true
7409 birch_fence_gate facing west powered true open true in_wall false
7410 birch_fence_gate facing west powered false open true in_wall false
7411 birch_fence_gate facing west powered true open false in_wall false
7412 birch_fence_gate facing west powered false open false in_wall false
7413 birch_fence_gate facing east powered true open true in_wall true
7414 birch_fence_gate facing east powered false open true in_wall true
7415 birch_fence_gate facing east powered true open false in_wall true
7416 birch_fence_gate facing east powered false open false in_wall true
7417 birch_fence_gate facing east powered true open true in_wall false
7418 birch_fence_gate facing east powered false open true in_wall false
7419 birch_fence_gate facing east powered true open false in_wall false
7420 birch_fence_gate facing east powered false open false in_wall false
7421 jungle_fence_gate facing north powered true open true in_wall true
7422 jungle_fence_gate facing north powered false open true in_wall true
7423 jungle_fence_gate facing north powered true open false in_wall true
7424 jungle_fence_gate facing north powered false open false in_wall true
7425 jungle_fence_gate facing north powered true open true in_wall false
7426 jungle_fence_gate facing north powered false open true in_wall false
7427 jungle_fence_gate facing north powered true open false in_wall false
7428 jungle_fence_gate facing north powered false open false in_wall false
7429 jungle_fence_gate facing south powered true open true in_wall true
7430 jungle_fence_gate facing south powered false open true in_wall true
7431 jungle_fence_gate facing south powered true open false in_wall true
7432 jungle_fence_gate facing south powered false open false in_wall true
7433 jungle_fence_gate facing south powered true open true in_wall false
7434 jungle_fence_gate facing south powered false open true in_wall false
7435 jungle_fence_gate facing south powered true open false in_wall false
7436 jungle_fence_gate facing south powered false open false in_wall false
7437 jungle_fence_gate facing west powered true open true in_wall true
7438 jungle_fence_gate facing west powered false open true in_wall true
7439 jungle_fence_gate facing west powered true open false in_wall true
7440 jungle_fence_gate facing west powered false open false in_wall true
7441 jungle_fence_gate facing west powered true open true in_wall false
7442 jungle_fence_gate facing west powered false open true in_wall false
7443 jungle_fence_gate facing west powered true open false in_wall false
7444 jungle_fence_gate facing west powered false open false in_wall false
7445 jungle_fence_gate facing east powered true open true in_wall true
7446 jungle_fence_gate facing east powered false open true in_wall true
7447 jungle_fence_gate facing east powered true open false in_wall true
7448 jungle_fence_gate facing east powered false open false in_wall true
7449 jungle_fence_gate facing east powered true open true in_wall false
7450 jungle_fence_gate facing east powered false open true in_wall false
7451 jungle_fence_gate facing east powered true open false in_wall false
7452 jungle_fence_gate facing east powered false open false in_wall false
7453 acacia_fence_gate facing north powered true open true in_wall true
7454 acacia_fence_gate facing north powered false open true in_wall true
7455 acacia_fence_gate facing north powered true open false in_wall true
7456 acacia_fence_gate facing north powered false open false in_wall true
7457 acacia_fence_gate facing north powered true open true in_wall false
7458 acacia_fence_gate facing north powered false open true in_wall false
7459 acacia_fence_gate facing north powered true open false in_wall false
7460 acacia_fence_gate facing north powered false open false in_wall false
7461 acacia_fence_gate facing south powered true open true in_wall true
7462 acacia_fence_gate facing south powered false open true in_wall true
7463 acacia_fence_gate facing south powered true open false in_wall true
7464 acacia_fence_gate facing south powered false open false in_wall true
7465 acacia_fence_gate facing south powered true open true in_wall false
7466 acacia_fence_gate facing south powered false open true in_wall false
7467 acacia_fence_gate facing south powered true open false in_wall false
7468 acacia_fence_gate facing south powered false open false in_wall false
7469 acacia_fence_gate facing west powered true open true in_wall true
7470 acacia_fence_gate facing west powered false open true in_wall true
7471 acacia_fence_gate facing west powered true open false in_wall true
7472 acacia_fence_gate facing west powered false open false in_wall true
7473 acacia_fence_gate facing west powered true open true in_wall false
7474 acacia_fence_gate facing west powered false open true in_wall false
7475 acacia_fence_gate facing west powered true open false in_wall false
7476 acacia_fence_gate facing west powered false open false in_wall false
7477 acacia_fence_gate facing east powered true open true in_wall true
7478 acacia_fence_gate facing east powered false open true in_wall true
7479 acacia_fence_gate facing east powered true open false in_wall true
7480 acacia_fence_gate facing east powered false open false in_wall true
7481 acacia_fence_gate facing east powered true open true in_wall false
7482 acacia_fence_gate facing east powered false open true in_wall false
7483 acacia_fence_gate facing east powered true open false in_wall false
7484 acacia_fence_gate facing east powered false open false in_wall false
7485 dark_oak_fence_gate facing north powered true open true in_wall true
7486 dark_oak_fence_gate facing north powered false open true in_wall true
7487 dark_oak_fence_gate facing north powered true open false in_wall true
7488 dark_oak_fence_gate facing north powered false open false in_wall true
7489 dark_oak_fence_gate facing north powered true open true in_wall false
7490 dark_oak_fence_gate facing north powered false open true in_wall false
7491 dark_oak_fence_gate facing north powered true open false in_wall false
7492 dark_oak_fence_gate facing north powered false open false in_wall false
7493 dark_oak_fence_gate facing south powered true open true in_wall true
7494 dark_oak_fence_gate facing south powered false open true in_wall true
7495 dark_oak_fence_gate facing south powered true open false in_wall true
7496 dark_oak_fence_gate facing south powered false open false in_wall true
7497 dark_oak_fence_gate facing south powered true open true in_wall false
7498 dark_oak_fence_gate facing south powered false open true in_wall false
7499 dark_oak_fence_gate facing south powered true open false in_wall false
7500 dark_oak_fence_gate facing south powered false open false in_wall false
7501 dark_oak_fence_gate facing west powered true open true in_wall true
7502 dark_oak_fence_gate facing west powered false open true in_wall true
7503 dark_oak_fence_gate facing west powered true open false in_wall true
7504 dark_oak_fence_gate facing west powered false open false in_wall true
7505 dark_oak_fence_gate facing west powered true open true in_wall false
7506 dark_oak_fence_gate facing west powered false open true in_wall false
7507 dark_oak_fence_gate facing west powered true open false in_wall false
7508 dark_oak_fence_gate facing west powered false open false in_wall false
7509 dark_oak_fence_gate facing east powered true open true in_wall true
7510 dark_oak_fence_gate facing east powered false open true in_wall true
7511 dark_oak_fence_gate facing east powered true open false in_wall true
7512 dark_oak_fence_gate facing east powered false open false in_wall true
7513 dark_oak_fence_gate facing east powered true open true in_wall false
7514 dark_oak_fence_gate facing east powered false open true in_wall false
7515 dark_oak_fence_gate facing east powered true open false in_wall false
7516 dark_oak_fence_gate facing east powered false open false in_wall false
7517 spruce_fence waterlogged true south true east true north true west true
7518 spruce_fence waterlogged true south true east true north true west false
7519 spruce_fence waterlogged false south true east true north true west true
7520 spruce_fence waterlogged false south true east true north true west false
7521 spruce_fence waterlogged true south false east true north true west true
7522 spruce_fence waterlogged true south false east true north true west false
7523 spruce_fence waterlogged false south false east true north true west true
7524 spruce_fence waterlogged false south false east true north true west false
7525 spruce_fence waterlogged true south true east true north false west true
7526 spruce_fence waterlogged true south true east true north false west false
7527 spruce_fence waterlogged false south true east true north false west true
7528 spruce_fence waterlogged false south true east true north false west false
7529 spruce_fence waterlogged true south false east true north false west true
7530 spruce_fence waterlogged true south false east true north false west false
7531 spruce_fence waterlogged false south false east true north false west true
7532 spruce_fence waterlogged false south false east true north false west false
7533 spruce_fence waterlogged true south true east false north true west true
7534 spruce_fence waterlogged true south true east false north true west false
7535 spruce_fence waterlogged false south true east false north true west true
7536 spruce_fence waterlogged false south true east false north true west false
7537 spruce_fence waterlogged true south false east false north true west true
7538 spruce_fence waterlogged true south false east false north true west false
7539 spruce_fence waterlogged false south false east false north true west true
7540 spruce_fence waterlogged false south false east false north true west false
7541 spruce_fence waterlogged true south true east false north false west true
7542 spruce_fence waterlogged true south true east false north false west false
7543 spruce_fence waterlogged false south true east false north false west true
7544 spruce_fence waterlogged false south true east false north false west false
7545 spruce_fence waterlogged true south false east false north false west true
7546 spruce_fence waterlogged true south false east false north false west false
7547 spruce_fence waterlogged false south false east false north false west true
7548 spruce_fence waterlogged false south false east false north false west false
7549 birch_fence waterlogged true south true east true north true west true
7550 birch_fence waterlogged true south true east true north true west false
7551 birch_fence waterlogged false south true east true north true west true
7552 birch_fence waterlogged false south true east true north true west false
7553 birch_fence waterlogged true south false east true north true west true
7554 birch_fence waterlogged true south false east true north true west false
7555 birch_fence waterlogged false south false east true north true west true
7556 birch_fence waterlogged false south false east true north true west false
7557 birch_fence waterlogged true south true east true north false west true
7558 birch_fence waterlogged true south true east true north false west false
7559 birch_fence waterlogged false south true east true north false west true
7560 birch_fence waterlogged false south true east true north false west false
7561 birch_fence waterlogged true south false east true north false west true
7562 birch_fence waterlogged true south false east true north false west false
7563 birch_fence waterlogged false south false east true north false west true
7564 birch_fence waterlogged false south false east true north false west false
7565 birch_fence waterlogged true south true east false north true west true
7566 birch_fence waterlogged true south true east false north true west false
7567 birch_fence waterlogged false south true east false north true west true
7568 birch_fence waterlogged false south true east false north true west false
7569 birch_fence waterlogged true south false east false north true west true
7570 birch_fence waterlogged true south false east false north true west false
7571 birch_fence waterlogged false south false east false north true west true
7572 birch_fence waterlogged false south false east false north true west false
7573 birch_fence waterlogged true south true east false north false west true
7574 birch_fence waterlogged true south true east false north false west false
7575 birch_fence waterlogged false south true east false north false west true
7576 birch_fence waterlogged false south true east false north false west false
7577 birch_fence waterlogged true south false east false north false west true
7578 birch_fence waterlogged true south false east false north false west false
7579 birch_fence waterlogged false south false east false north false west true
7580 birch_fence waterlogged false south false east false north false west false
7581 jungle_fence waterlogged true south true east true north true west true
7582 jungle_fence waterlogged true south true east true north true west false
7583 jungle_fence waterlogged false south true east true north true west true
7584 jungle_fence waterlogged false south true east true north true west false
7585 jungle_fence waterlogged true south false east true north true west true
7586 jungle_fence waterlogged true south false east true north true west false
7587 jungle_fence waterlogged false south false east true north true west true
7588 jungle_fence waterlogged false south false east true north true west false
7589 jungle_fence waterlogged true south true east true north false west true
7590 jungle_fence waterlogged true south true east true north false west false
7591 jungle_fence waterlogged false south true east true north false west true
7592 jungle_fence waterlogged false south true east true north false west false
7593 jungle_fence waterlogged true south false east true north false west true
7594 jungle_fence waterlogged true south false east true north false west false
7595 jungle_fence waterlogged false south false east true north false west true
7596 jungle_fence waterlogged false south false east true north false west false
7597 jungle_fence waterlogged true south true east false north true west true
7598 jungle_fence waterlogged true south true east false north true west false
7599 jungle_fence waterlogged false south true east false north true west true
7600 jungle_fence waterlogged false south true east false north true west false
7601 jungle_fence waterlogged true south false east false north true west true
7602 jungle_fence waterlogged true south false east false north true west false
7603 jungle_fence waterlogged false south false east false north true west true
7604 jungle_fence waterlogged false south false east false north true west false
7605 jungle_fence waterlogged true south true east false north false west true
7606 jungle_fence waterlogged true south true east false north false west false
7607 jungle_fence waterlogged false south true east false north false west true
7608 jungle_fence waterlogged false south true east false north false west false
7609 jungle_fence waterlogged true south false east false north false west true
7610 jungle_fence waterlogged true south false east false north false west false
7611 jungle_fence waterlogged false south false east false north false west true
7612 jungle_fence waterlogged false south false east false north false west false
7613 acacia_fence waterlogged true south true east true north true west true
7614 acacia_fence waterlogged true south true east true north true west false
7615 acacia_fence waterlogged false south true east true north true west true
7616 acacia_fence waterlogged false south true east true north true west false
7617 acacia_fence waterlogged true south false east true north true west true
7618 acacia_fence waterlogged true south false east true north true west false
7619 acacia_fence waterlogged false south false east true north true west true
7620 acacia_fence waterlogged false south false east true north true west false
7621 acacia_fence waterlogged true south true east true north false west true
7622 acacia_fence waterlogged true south true east true north false west false
7623 acacia_fence waterlogged false south true east true north false west true
7624 acacia_fence waterlogged false south true east true north false west false
7625 acacia_fence waterlogged true south false east true north false west true
7626 acacia_fence waterlogged true south false east true north false west false
7627 acacia_fence waterlogged false south false east true north false west true
7628 acacia_fence waterlogged false south false east true north false west false
7629 acacia_fence waterlogged true south true east false north true west true
7630 acacia_fence waterlogged true south true east false north true west false
7631 acacia_fence waterlogged false south true east false north true west true
7632 acacia_fence waterlogged false south true east false north true west false
7633 acacia_fence waterlogged true south false east false north true west true
7634 acacia_fence waterlogged true south false east false north true west false
7635 acacia_fence waterlogged false south false east false north true west true
7636 acacia_fence waterlogged false south false east false north true west false
7637 acacia_fence waterlogged true south true east false north false west true
7638 acacia_fence waterlogged true south true east false north false west false
7639 acacia_fence waterlogged false south true east false north false west true
7640 acacia_fence waterlogged false south true east false north false west false
7641 acacia_fence waterlogged true south false east false north false west true
7642 acacia_fence waterlogged true south false east false north false west false
7643 acacia_fence waterlogged false south false east false north false west true
7644 acacia_fence waterlogged false south false east false north false west false
7645 dark_oak_fence waterlogged true south true east true north true west true
7646 dark_oak_fence waterlogged true south true east true north true west false
7647 dark_oak_fence waterlogged false south true east true north true west true
7648 dark_oak_fence waterlogged false south true east true north true west false
7649 dark_oak_fence waterlogged true south false east true north true west true
7650 dark_oak_fence waterlogged true south false east true north true west false
7651 dark_oak_fence waterlogged false south false east true north true west true
7652 dark_oak_fence waterlogged false south false east true north true west false
7653 dark_oak_fence waterlogged true south true east true north false west true
7654 dark_oak_fence waterlogged true south true east true north false west false
7655 dark_oak_fence waterlogged false south true east true north false west true
7656 dark_oak_fence waterlogged false south true east true north false west false
7657 dark_oak_fence waterlogged true south false east true north false west true
7658 dark_oak_fence waterlogged true south false east true north false west false
7659 dark_oak_fence waterlogged false south false east true north false west true
7660 dark_oak_fence waterlogged false south false east true north false west false
7661 dark_oak_fence waterlogged true south true east false north true west true
7662 dark_oak_fence waterlogged true south true east false north true west false
7663 dark_oak_fence waterlogged false south true east false north true west true
7664 dark_oak_fence waterlogged false south true east false north true west false
7665 dark_oak_fence waterlogged true south false east false north true west true
7666 dark_oak_fence waterlogged true south false east false north true west false
7667 dark_oak_fence waterlogged false south false east false north true west true
7668 dark_oak_fence waterlogged false south false east false north true west false
7669 dark_oak_fence waterlogged true south true east false north false west true
7670 dark_oak_fence waterlogged true south true east false north false west false
7671 dark_oak_fence waterlogged false south true east false north false west true
7672 dark_oak_fence waterlogged false south true east false north false west false
7673 dark_oak_fence waterlogged true south false east false north false west true
7674 dark_oak_fence waterlogged true south false east false north false west false
7675 dark_oak_fence waterlogged false south false east false north false west true
7676 dark_oak_fence waterlogged false south false east false north false west false
7677 spruce_door hinge left half upper facing north powered true open true
7678 spruce_door hinge left half upper facing north powered false open true
7679 spruce_door hinge left half upper facing north powered true open false
7680 spruce_door hinge left half upper facing north powered false open false
7681 spruce_door hinge right half upper facing north powered true open true
7682 spruce_door hinge right half upper facing north powered false open true
7683 spruce_door hinge right half upper facing north powered true open false
7684 spruce_door hinge right half upper facing north powered false open false
7685 spruce_door hinge left half lower facing north powered true open true
7686 spruce_door hinge left half lower facing north powered false open true
7687 spruce_door hinge left half lower facing north powered true open false
7688 spruce_door hinge left half lower facing north powered false open false
7689 spruce_door hinge right half lower facing north powered true open true
7690 spruce_door hinge right half lower facing north powered false open true
7691 spruce_door hinge right half lower facing north powered true open false
7692 spruce_door hinge right half lower facing north powered false open false
7693 spruce_door hinge left half upper facing south powered true open true
7694 spruce_door hinge left half upper facing south powered false open true
7695 spruce_door hinge left half upper facing south powered true open false
7696 spruce_door hinge left half upper facing south powered false open false
7697 spruce_door hinge right half upper facing south powered true open true
7698 spruce_door hinge right half upper facing south powered false open true
7699 spruce_door hinge right half upper facing south powered true open false
7700 spruce_door hinge right half upper facing south powered false open false
7701 spruce_door hinge left half lower facing south powered true open true
7702 spruce_door hinge left half lower facing south powered false open true
7703 spruce_door hinge left half lower facing south powered true open false
7704 spruce_door hinge left half lower facing south powered false open false
7705 spruce_door hinge right half lower facing south powered true open true
7706 spruce_door hinge right half lower facing south powered false open true
7707 spruce_door hinge right half lower facing south powered true open false
7708 spruce_door hinge right half lower facing south powered false open false
7709 spruce_door hinge left half upper facing west powered true open true
7710 spruce_door hinge left half upper facing west powered false open true
7711 spruce_door hinge left half upper facing west powered true open false
7712 spruce_door hinge left half upper facing west powered false open false
7713 spruce_door hinge right half upper facing west powered true open true
7714 spruce_door hinge right half upper facing west powered false open true
7715 spruce_door hinge right half upper facing west powered true open false
7716 spruce_door hinge right half upper facing west powered false open false
7717 spruce_door hinge left half lower facing west powered true open true
7718 spruce_door hinge left half lower facing west powered false open true
7719 spruce_door hinge left half lower facing west powered true open false
7720 spruce_door hinge left half lower facing west powered false open false
7721 spruce_door hinge right half lower facing west powered true open true
7722 spruce_door hinge right half lower facing west powered false open true
7723 spruce_door hinge right half lower facing west powered true open false
7724 spruce_door hinge right half lower facing west powered false open false
7725 spruce_door hinge left half upper facing east powered true open true
7726 spruce_door hinge left half upper facing east powered false open true
7727 spruce_door hinge left half upper facing east powered true open false
7728 spruce_door hinge left half upper facing east powered false open false
7729 spruce_door hinge right half upper facing east powered true open true
7730 spruce_door hinge right half upper facing east powered false open true
7731 spruce_door hinge right half upper facing east powered true open false
7732 spruce_door hinge right half upper facing east powered false open false
7733 spruce_door hinge left half lower facing east powered true open true
7734 spruce_door hinge left half lower facing east powered false open true
7735 spruce_door hinge left half lower facing east powered true open false
7736 spruce_door hinge left half lower facing east powered false open false
7737 spruce_door hinge right half lower facing east powered true open true
7738 spruce_door hinge right half lower facing east powered false open true
7739 spruce_door hinge right half lower facing east powered true open false
7740 spruce_door hinge right half lower facing east powered false open false
7741 birch_door hinge left half upper facing north powered true open true
7742 birch_door hinge left half upper facing north powered false open true
7743 birch_door hinge left half upper facing north powered true open false
7744 birch_door hinge left half upper facing north powered false open false
7745 birch_door hinge right half upper facing north powered true open true
7746 birch_door hinge right half upper facing north powered false open true
7747 birch_door hinge right half upper facing north powered true open false
7748 birch_door hinge right half upper facing north powered false open false
7749 birch_door hinge left half lower facing north powered true open true
7750 birch_door hinge left half lower facing north powered false open true
7751 birch_door hinge left half lower facing north powered true open false
7752 birch_door hinge left half lower facing north powered false open false
7753 birch_door hinge right half lower facing north powered true open true
7754 birch_door hinge right half lower facing north powered false open true
7755 birch_door hinge right half lower facing north powered true open false
7756 birch_door hinge right half lower facing north powered false open false
7757 birch_door hinge left half upper facing south powered true open true
7758 birch_door hinge left half upper facing south powered false open true
7759 birch_door hinge left half upper facing south powered true open false
7760 birch_door hinge left half upper facing south powered false open false
7761 birch_door hinge right half upper facing south powered true open true
7762 birch_door hinge right half upper facing south powered false open true
7763 birch_door hinge right half upper facing south powered true open false
7764 birch_door hinge right half upper facing south powered false open false
7765 birch_door hinge left half lower facing south powered true open true
7766 birch_door hinge left half lower facing south powered false open true
7767 birch_door hinge left half lower facing south powered true open false
7768 birch_door hinge left half lower facing south powered false open false
7769 birch_door hinge right half lower facing south powered true open true
7770 birch_door hinge right half lower facing south powered false open true
7771 birch_door hinge right half lower facing south powered true open false
7772 birch_door hinge right half lower facing south powered false open false
7773 birch_door hinge left half upper facing west powered true open true
7774 birch_door hinge left half upper facing west powered false open true
7775 birch_door hinge left half upper facing west powered true open false
7776 birch_door hinge left half upper facing west powered false open false
7777 birch_door hinge right half upper facing west powered true open true
7778 birch_door hinge right half upper facing west powered false open true
7779 birch_door hinge right half upper facing west powered true open false
7780 birch_door hinge right half upper facing west powered false open false
7781 birch_door hinge left half lower facing west powered true open true
7782 birch_door hinge left half lower facing west powered false open true
7783 birch_door hinge left half lower facing west powered true open false
7784 birch_door hinge left half lower facing west powered false open false
7785 birch_door hinge right half lower facing west powered true open true
7786 birch_door hinge right half lower facing west powered false open true
7787 birch_door hinge right half lower facing west powered true open false
7788 birch_door hinge right half lower facing west powered false open false
7789 birch_door hinge left half upper facing east powered true open true
7790 birch_door hinge left half upper facing east powered false open true
7791 birch_door hinge left half upper facing east powered true open false
7792 birch_door hinge left half upper facing east powered false open false
7793 birch_door hinge right half upper facing east powered true open true
7794 birch_door hinge right half upper facing east powered false open true
7795 birch_door hinge right half upper facing east powered true open false
7796 birch_door hinge right half upper facing east powered false open false
7797 birch_door hinge left half lower facing east powered true open true
7798 birch_door hinge left half lower facing east powered false open true
7799 birch_door hinge left half lower facing east powered true open false
7800 birch_door hinge left half lower facing east powered false open false
7801 birch_door hinge right half lower facing east powered true open true
7802 birch_door hinge right half lower facing east powered false open true
7803 birch_door hinge right half lower facing east powered true open false
7804 birch_door hinge right half lower facing east powered false open false
7805 jungle_door hinge left half upper facing north powered true open true
7806 jungle_door hinge left half upper facing north powered false open true
7807 jungle_door hinge left half upper facing north powered true open false
7808 jungle_door hinge left half upper facing north powered false open false
7809 jungle_door hinge right half upper facing north powered true open true
7810 jungle_door hinge right half upper facing north powered false open true
7811 jungle_door hinge right half upper facing north powered true open false
7812 jungle_door hinge right half upper facing north powered false open false
7813 jungle_door hinge left half lower facing north powered true open true
7814 jungle_door hinge left half lower facing north powered false open true
7815 jungle_door hinge left half lower facing north powered true open false
7816 jungle_door hinge left half lower facing north powered false open false
7817 jungle_door hinge right half lower facing north powered true open true
7818 jungle_door hinge right half lower facing north powered false open true
7819 jungle_door hinge right half lower facing north powered true open false
7820 jungle_door hinge right half lower facing north powered false open false
7821 jungle_door hinge left half upper facing south powered true open true
7822 jungle_door hinge left half upper facing south powered false open true
7823 jungle_door hinge left half upper facing south powered true open false
7824 jungle_door hinge left half upper facing south powered false open false
7825 jungle_door hinge right half upper facing south powered true open true
7826 jungle_door hinge right half upper facing south powered false open true
7827 jungle_door hinge right half upper facing south powered true open false
7828 jungle_door hinge right half upper facing south powered false open false
7829 jungle_door hinge left half lower facing south powered true open true
7830 jungle_door hinge left half lower facing south powered false open true
7831 jungle_door hinge left half lower facing south powered true open false
7832 jungle_door hinge left half lower facing south powered false open false
7833 jungle_door hinge right half lower facing south powered true open true
7834 jungle_door hinge right half lower facing south powered false open true
7835 jungle_door hinge right half lower facing south powered true open false
7836 jungle_door hinge right half lower facing south powered false open false
7837 jungle_door hinge left half upper facing west powered true open true
7838 jungle_door hinge left half upper facing west powered false open true
7839 jungle_door hinge left half upper facing west powered true open false
7840 jungle_door hinge left half upper facing west powered false open false
7841 jungle_door hinge right half upper facing west powered true open true
7842 jungle_door hinge right half upper facing west powered false open true
7843 jungle_door hinge right half upper facing west powered true open false
7844 jungle_door hinge right half upper facing west powered false open false
7845 jungle_door hinge left half lower facing west powered true open true
7846 jungle_door hinge left half lower facing west powered false open true
7847 jungle_door hinge left half lower facing west powered true open false
7848 jungle_door hinge left half lower facing west powered false open false
7849 jungle_door hinge right half lower facing west powered true open true
7850 jungle_door hinge right half lower facing west powered false open true
7851 jungle_door hinge right half lower facing west powered true open false
7852 jungle_door hinge right half lower facing west powered false open false
7853 jungle_door hinge left half upper facing east powered true open true
7854 jungle_door hinge left half upper facing east powered false open true
7855 jungle_door hinge left half upper facing east powered true open false
7856 jungle_door hinge left half upper facing east powered false open false
7857 jungle_door hinge right half upper facing east powered true open true
7858 jungle_door hinge right half upper facing east powered false open true
7859 jungle_door hinge right half upper facing east powered true open false
7860 jungle_door hinge right half upper facing east powered false open false
7861 jungle_door hinge left half lower facing east powered true open true
7862 jungle_door hinge left half lower facing east powered false open true
7863 jungle_door hinge left half lower facing east powered true open false
7864 jungle_door hinge left half lower facing east powered false open false
7865 jungle_door hinge right half lower facing east powered true open true
7866 jungle_door hinge right half lower facing east powered false open true
7867 jungle_door hinge right half lower facing east powered true open false
7868 jungle_door hinge right half lower facing east powered false open false
7869 acacia_door hinge left half upper facing north powered true open true
7870 acacia_door hinge left half upper facing north powered false open true
7871 acacia_door hinge left half upper facing north powered true open false
7872 acacia_door hinge left half upper facing north powered false open false
7873 acacia_door hinge right half upper facing north powered true open true
7874 acacia_door hinge right half upper facing north powered false open true
7875 acacia_door hinge right half upper facing north powered true open false
7876 acacia_door hinge right half upper facing north powered false open false
7877 acacia_door hinge left half lower facing north powered true open true
7878 acacia_door hinge left half lower facing north powered false open true
7879 acacia_door hinge left half lower facing north powered true open false
7880 acacia_door hinge left half lower facing north powered false open false
7881 acacia_door hinge right half lower facing north powered true open true
7882 acacia_door hinge right half lower facing north powered false open true
7883 acacia_door hinge right half lower facing north powered true open false
7884 acacia_door hinge right half lower facing north powered false open false
7885 acacia_door hinge left half upper facing south powered true open true
7886 acacia_door hinge left half upper facing south powered false open true
7887 acacia_door hinge left half upper facing south powered true open false
7888 acacia_door hinge left half upper facing south powered false open false
7889 acacia_door hinge right half upper facing south powered true open true
7890 acacia_door hinge right half upper facing south powered false open true
7891 acacia_door hinge right half upper facing south powered true open false
7892 acacia_door hinge right half upper facing south powered false open false
7893 acacia_door hinge left half lower facing south powered true open true
7894 acacia_door hinge left half lower facing south powered false open true
7895 acacia_door hinge left half lower facing south powered true open false
7896 acacia_door hinge left half lower facing south powered false open false
7897 acacia_door hinge right half lower facing south powered true open true
7898 acacia_door hinge right half lower facing south powered false open true
7899 acacia_door hinge right half lower facing south powered true open false
7900 acacia_door hinge right half lower facing south powered false open false
7901 acacia_door hinge left half upper facing west powered true open true
7902 acacia_door hinge left half upper facing west powered false open true
7903 acacia_door hinge left half upper facing west powered true open false
7904 acacia_door hinge left half upper facing west powered false open false
7905 acacia_door hinge right half upper facing west powered true open true
7906 acacia_door hinge right half upper facing west powered false open true
7907 acacia_door hinge right half upper facing west powered true open false
7908 acacia_door hinge right half upper facing west powered false open false
7909 acacia_door hinge left half lower facing west powered true open true
7910 acacia_door hinge left half lower facing west powered false open true
7911 acacia_door hinge left half lower facing west powered true open false
7912 acacia_door hinge left half lower facing west powered false open false
7913 acacia_door hinge right half lower facing west powered true open true
7914 acacia_door hinge right half lower facing west powered false open true
7915 acacia_door hinge right half lower facing west powered true open false
7916 acacia_door hinge right half lower facing west powered false open false
7917 acacia_door hinge left half upper facing east powered true open true
7918 acacia_door hinge left half upper facing east powered false open true
7919 acacia_door hinge left half upper facing east powered true open false
7920 acacia_door hinge left half upper facing east powered false open false
7921 acacia_door hinge right half upper facing east powered true open true
7922 acacia_door hinge right half upper facing east powered false open true
7923 acacia_door hinge right half upper facing east powered true open false
7924 acacia_door hinge right half upper facing east powered false open false
7925 acacia_door hinge left half lower facing east powered true open true
7926 acacia_door hinge left half lower facing east powered false open true
7927 acacia_door hinge left half lower facing east powered true open false
7928 acacia_door hinge left half lower facing east powered false open false
7929 acacia_door hinge right half lower facing east powered true open true
7930 acacia_door hinge right half lower facing east powered false open true
7931 acacia_door hinge right half lower facing east powered true open false
7932 acacia_door hinge right half lower facing east powered false open false
7933 dark_oak_door hinge left half upper facing north powered true open true
7934 dark_oak_door hinge left half upper facing north powered false open true
7935 dark_oak_door hinge left half upper facing north powered true open false
7936 dark_oak_door hinge left half upper facing north powered false open false
7937 dark_oak_door hinge right half upper facing north powered true open true
7938 dark_oak_door hinge right half upper facing north powered false open true
7939 dark_oak_door hinge right half upper facing north powered true open false
7940 dark_oak_door hinge right half upper facing north powered false open false
7941 dark_oak_door hinge left half lower facing north powered true open true
7942 dark_oak_door hinge left half lower facing north powered false open true
7943 dark_oak_door hinge left half lower facing north powered true open false
7944 dark_oak_door hinge left half lower facing north powered false open false
7945 dark_oak_door hinge right half lower facing north powered true open true
7946 dark_oak_door hinge right half lower facing north powered false open true
7947 dark_oak_door hinge right half lower facing north powered true open false
7948 dark_oak_door hinge right half lower facing north powered false open false
7949 dark_oak_door hinge left half upper facing south powered true open true
7950 dark_oak_door hinge left half upper facing south powered false open true
7951 dark_oak_door hinge left half upper facing south powered true open false
7952 dark_oak_door hinge left half upper facing south powered false open false
7953 dark_oak_door hinge right half upper facing south powered true open true
7954 dark_oak_door hinge right half upper facing south powered false open true
7955 dark_oak_door hinge right half upper facing south powered true open false
7956 dark_oak_door hinge right half upper facing south powered false open false
7957 dark_oak_door hinge left half lower facing south powered true open true
7958 dark_oak_door hinge left half lower facing south powered false open true
7959 dark_oak_door hinge left half lower facing south powered true open false
7960 dark_oak_door hinge left half lower facing south powered false open false
7961 dark_oak_door hinge right half lower facing south powered true open true
7962 dark_oak_door hinge right half lower facing south powered false open true
7963 dark_oak_door hinge right half lower facing south powered true open false
7964 dark_oak_door hinge right half lower facing south powered false open false
7965 dark_oak_door hinge left half upper facing west powered true open true
7966 dark_oak_door hinge left half upper facing west powered false open true
7967 dark_oak_door hinge left half upper facing west powered true open false
7968 dark_oak_door hinge left half upper facing west powered false open false
7969 dark_oak_door hinge right half upper facing west powered true open true
7970 dark_oak_door hinge right half upper facing west powered false open true
7971 dark_oak_door hinge right half upper facing west powered true open false
7972 dark_oak_door hinge right half upper facing west powered false open false
7973 dark_oak_door hinge left half lower facing west powered true open true
7974 dark_oak_door hinge left half lower facing west powered false open true
7975 dark_oak_door hinge left half lower facing west powered true open false
7976 dark_oak_door hinge left half lower facing west powered false open false
7977 dark_oak_door hinge right half lower facing west powered true open true
7978 dark_oak_door hinge right half lower facing west powered false open true
7979 dark_oak_door hinge right half lower facing west powered true open false
7980 dark_oak_door hinge right half lower facing west powered false open false
7981 dark_oak_door hinge left half upper facing east powered true open true
7982 dark_oak_door hinge left half upper facing east powered false open true
7983 dark_oak_door hinge left half upper facing east powered true open false
7984 dark_oak_door hinge left half upper facing east powered false open false
7985 dark_oak_door hinge right half upper facing east powered true open true
7986 dark_oak_door hinge right half upper facing east powered false open true
7987 dark_oak_door hinge right half upper facing east powered true open false
7988 dark_oak_door hinge right half upper facing east powered false open false
7989 dark_oak_door hinge left half lower facing east powered true open true
7990 dark_oak_door hinge left half lower facing east powered false open true
7991 dark_oak_door hinge left half lower facing east powered true open false
7992 dark_oak_door hinge left half lower facing east powered false open false
7993 dark_oak_door hinge right half lower facing east powered true open true
7994 dark_oak_door hinge right half lower facing east powered false open true
7995 dark_oak_door hinge right half lower facing east powered true open false
7996 dark_oak_door hinge right half lower facing east powered false open false
7997 end_rod facing north
7998 end_rod facing east
7999 end_rod facing south
8000 end_rod facing west
8001 end_rod facing up
8002 end_rod facing down
8003 chorus_plant up true south true east true north true down true west true
8004 chorus_plant up true south true east true north true down true west false
8005 chorus_plant up false south true east true north true down true west true
8006 chorus_plant up false south true east true north true down true west false
8007 chorus_plant up true south false east true north true down true west true
8008 chorus_plant up true south false east true north true down true west false
8009 chorus_plant up false south false east true north true down true west true
8010 chorus_plant up false south false east true north true down true west false
8011 chorus_plant up true south true east true north false down true west true
8012 chorus_plant up true south true east true north false down true west false
8013 chorus_plant up false south true east true north false down true west true
8014 chorus_plant up false south true east true north false down true west false
8015 chorus_plant up true south false east true north false down true west true
8016 chorus_plant up true south false east true north false down true west false
8017 chorus_plant up false south false east true north false down true west true
8018 chorus_plant up false south false east true north false down true west false
8019 chorus_plant up true south true east false north true down true west true
8020 chorus_plant up true south true east false north true down true west false
8021 chorus_plant up false south true east false north true down true west true
8022 chorus_plant up false south true east false north true down true west false
8023 chorus_plant up true south false east false north true down true west true
8024 chorus_plant up true south false east false north true down true west false
8025 chorus_plant up false south false east false north true down true west true
8026 chorus_plant up false south false east false north true down true west false
8027 chorus_plant up true south true east false north false down true west true
8028 chorus_plant up true south true east false north false down true west false
8029 chorus_plant up false south true east false north false down true west true
8030 chorus_plant up false south true east false north false down true west false
8031 chorus_plant up true south false east false north false down true west true
8032 chorus_plant up true south false east false north false down true west false
8033 chorus_plant up false south false east false north false down true west true
8034 chorus_plant up false south false east false north false down true west false
8035 chorus_plant up true south true east true north true down false west true
8036 chorus_plant up true south true east true north true down false west false
8037 chorus_plant up false south true east true north true down false west true
8038 chorus_plant up false south true east true north true down false west false
8039 chorus_plant up true south false east true north true down false west true
8040 chorus_plant up true south false east true north true down false west false
8041 chorus_plant up false south false east true north true down false west true
8042 chorus_plant up false south false east true north true down false west false
8043 chorus_plant up true south true east true north false down false west true
8044 chorus_plant up true south true east true north false down false west false
8045 chorus_plant up false south true east true north false down false west true
8046 chorus_plant up false south true east true north false down false west false
8047 chorus_plant up true south false east true north false down false west true
8048 chorus_plant up true south false east true north false down false west false
8049 chorus_plant up false south false east true north false down false west true
8050 chorus_plant up false south false east true north false down false west false
8051 chorus_plant up true south true east false north true down false west true
8052 chorus_plant up true south true east false north true down false west false
8053 chorus_plant up false south true east false north true down false west true
8054 chorus_plant up false south true east false north true down false west false
8055 chorus_plant up true south false east false north true down false west true
8056 chorus_plant up true south false east false north true down false west false
8057 chorus_plant up false south false east false north true down false west true
8058 chorus_plant up false south false east false north true down false west false
8059 chorus_plant up true south true east false north false down false west true
8060 chorus_plant up true south true east false north false down false west false
8061 chorus_plant up false south true east false north false down false west true
8062 chorus_plant up false south true east false north false down false west false
8063 chorus_plant up true south false east false north false down false west true
8064 chorus_plant up true south false east false north false down false west false
8065 chorus_plant up false south false east false north false down false west true
8066 chorus_plant up false south false east false north false down false west false
8067 chorus_flower age 0
8068 chorus_flower age 1
8069 chorus_flower age 2
8070 chorus_flower age 3
8071 chorus_flower age 4
8072 chorus_flower age 5
8073 purpur_block
8074 purpur_pillar axis x
8075 purpur_pillar axis y
8076 purpur_pillar axis z
8077 purpur_stairs facing north waterlogged true shape straight half top
8078 purpur_stairs facing north waterlogged false shape straight half top
8079 purpur_stairs facing north waterlogged true shape inner_left half top
8080 purpur_stairs facing north waterlogged false shape inner_left half top
8081 purpur_stairs facing north waterlogged true shape inner_right half top
8082 purpur_stairs facing north waterlogged false shape inner_right half top
8083 purpur_stairs facing north waterlogged true shape outer_left half top
8084 purpur_stairs facing north waterlogged false shape outer_left half top
8085 purpur_stairs facing north waterlogged true shape outer_right half top
8086 purpur_stairs facing north waterlogged false shape outer_right half top
8087 purpur_stairs facing north waterlogged true shape straight half bottom
8088 purpur_stairs facing north waterlogged false shape straight half bottom
8089 purpur_stairs facing north waterlogged true shape inner_left half bottom
8090 purpur_stairs facing north waterlogged false shape inner_left half bottom
8091 purpur_stairs facing north waterlogged true shape inner_right half bottom
8092 purpur_stairs facing north waterlogged false shape inner_right half bottom
8093 purpur_stairs facing north waterlogged true shape outer_left half bottom
8094 purpur_stairs facing north waterlogged false shape outer_left half bottom
8095 purpur_stairs facing north waterlogged true shape outer_right half bottom
8096 purpur_stairs facing north waterlogged false shape outer_right half bottom
8097 purpur_stairs facing south waterlogged true shape straight half top
8098 purpur_stairs facing south waterlogged false shape straight half top
8099 purpur_stairs facing south waterlogged true shape inner_left half top
8100 purpur_stairs facing south waterlogged false shape inner_left half top
8101 purpur_stairs facing south waterlogged true shape inner_right half top
8102 purpur_stairs facing south waterlogged false shape inner_right half top
8103 purpur_stairs facing south waterlogged true shape outer_left half top
8104 purpur_stairs facing south waterlogged false shape outer_left half top
8105 purpur_stairs facing south waterlogged true shape outer_right half top
8106 purpur_stairs facing south waterlogged false shape outer_right half top
8107 purpur_stairs facing south waterlogged true shape straight half bottom
8108 purpur_stairs facing south waterlogged false shape straight half bottom
8109 purpur_stairs facing south waterlogged true shape inner_left half bottom
8110 purpur_stairs facing south waterlogged false shape inner_left half bottom
8111 purpur_stairs facing south waterlogged true shape inner_right half bottom
8112 purpur_stairs facing south waterlogged false shape inner_right half bottom
8113 purpur_stairs facing south waterlogged true shape outer_left half bottom
8114 purpur_stairs facing south waterlogged false shape outer_left half bottom
8115 purpur_stairs facing south waterlogged true shape outer_right half bottom
8116 purpur_stairs facing south waterlogged false shape outer_right half bottom
8117 purpur_stairs facing west waterlogged true shape straight half top
8118 purpur_stairs facing west waterlogged false shape straight half top
8119 purpur_stairs facing west waterlogged true shape inner_left half top
8120 purpur_stairs facing west waterlogged false shape inner_left half top
8121 purpur_stairs facing west waterlogged true shape inner_right half top
8122 purpur_stairs facing west waterlogged false shape inner_right half top
8123 purpur_stairs facing west waterlogged true shape outer_left half top
8124 purpur_stairs facing west waterlogged false shape outer_left half top
8125 purpur_stairs facing west waterlogged true shape outer_right half top
8126 purpur_stairs facing west waterlogged false shape outer_right half top
8127 purpur_stairs facing west waterlogged true shape straight half bottom
8128 purpur_stairs facing west waterlogged false shape straight half bottom
8129 purpur_stairs facing west waterlogged true shape inner_left half bottom
8130 purpur_stairs facing west waterlogged false shape inner_left half bottom
8131 purpur_stairs facing west waterlogged true shape inner_right half bottom
8132 purpur_stairs facing west waterlogged false shape inner_right half bottom
8133 purpur_stairs facing west waterlogged true shape outer_left half bottom
8134 purpur_stairs facing west waterlogged false shape outer_left half bottom
8135 purpur_stairs facing west waterlogged true shape outer_right half bottom
8136 purpur_stairs facing west waterlogged false shape outer_right half bottom
8137 purpur_stairs facing east waterlogged true shape straight half top
8138 purpur_stairs facing east waterlogged false shape straight half top
8139 purpur_stairs facing east waterlogged true shape inner_left half top
8140 purpur_stairs facing east waterlogged false shape inner_left half top
8141 purpur_stairs facing east waterlogged true shape inner_right half top
8142 purpur_stairs facing east waterlogged false shape inner_right half top
8143 purpur_stairs facing east waterlogged true shape outer_left half top
8144 purpur_stairs facing east waterlogged false shape outer_left half top
8145 purpur_stairs facing east waterlogged true shape outer_right half top
8146 purpur_stairs facing east waterlogged false shape outer_right half top
8147 purpur_stairs facing east waterlogged true shape straight half bottom
8148 purpur_stairs facing east waterlogged false shape straight half bottom
8149 purpur_stairs facing east waterlogged true shape inner_left half bottom
8150 purpur_stairs facing east waterlogged false shape inner_left half bottom
8151 purpur_stairs facing east waterlogged true shape inner_right half bottom
8152 purpur_stairs facing east waterlogged false shape inner_right half bottom
8153 purpur_stairs facing east waterlogged true shape outer_left half bottom
8154 purpur_stairs facing east waterlogged false shape outer_left half bottom
8155 purpur_stairs facing east waterlogged true shape outer_right half bottom
8156 purpur_stairs facing east waterlogged false shape outer_right half bottom
8157 end_stone_bricks
8158 beetroots age 0
8159 beetroots age 1
8160 beetroots age 2
8161 beetroots age 3
8162 grass_path
8163 end_gateway
8164 repeating_command_block conditional true facing north
8165 repeating_command_block conditional true facing east
8166 repeating_command_block conditional true facing south
8167 repeating_command_block conditional true facing west
8168 repeating_command_block conditional true facing up
8169 repeating_command_block conditional true facing down
8170 repeating_command_block conditional false facing north
8171 repeating_command_block conditional false facing east
8172 repeating_command_block conditional false facing south
8173 repeating_command_block conditional false facing west
8174 repeating_command_block conditional false facing up
8175 repeating_command_block conditional false facing down
8176 chain_command_block conditional true facing north
8177 chain_command_block conditional true facing east
8178 chain_command_block conditional true facing south
8179 chain_command_block conditional true facing west
8180 chain_command_block conditional true facing up
8181 chain_command_block conditional true facing down
8182 chain_command_block conditional false facing north
8183 chain_command_block conditional false facing east
8184 chain_command_block conditional false facing south
8185 chain_command_block conditional false facing west
8186 chain_command_block conditional false facing up
8187 chain_command_block conditional false facing down
8188 frosted_ice age 0
8189 frosted_ice age 1
8190 frosted_ice age 2
8191 frosted_ice age 3
8192 magma_block
8193 nether_wart_block
8194 red_nether_bricks
8195 bone_block axis x
8196 bone_block axis y
8197 bone_block axis z
8198 structure_void
8199 observer facing north powered true
8200 observer facing north powered false
8201 observer facing east powered true
8202 observer facing east powered false
8203 observer facing south powered true
8204 observer facing south powered false
8205 observer facing west powered true
8206 observer facing west powered false
8207 observer facing up powered true
8208 observer facing up powered false
8209 observer facing down powered true
8210 observer facing down powered false
8211 shulker_box facing north
8212 shulker_box facing east
8213 shulker_box facing south
8214 shulker_box facing west
8215 shulker_box facing up
8216 shulker_box facing down
8217 white_shulker_box facing north
8218 white_shulker_box facing east
8219 white_shulker_box facing south
8220 white_shulker_box facing west
8221 white_shulker_box facing up
8222 white_shulker_box facing down
8223 orange_shulker_box facing north
8224 orange_shulker_box facing east
8225 orange_shulker_box facing south
8226 orange_shulker_box facing west
8227 orange_shulker_box facing up
8228 orange_shulker_box facing down
8229 magenta_shulker_box facing north
8230 magenta_shulker_box facing east
8231 magenta_shulker_box facing south
8232 magenta_shulker_box facing west
8233 magenta_shulker_box facing up
8234 magenta_shulker_box facing down
8235 light_blue_shulker_box facing north
8236 light_blue_shulker_box facing east
8237 light_blue_shulker_box facing south
8238 light_blue_shulker_box facing west
8239 light_blue_shulker_box facing up
8240 light_blue_shulker_box facing down
8241 yellow_shulker_box facing north
8242 yellow_shulker_box facing east
8243 yellow_shulker_box facing south
8244 yellow_shulker_box facing west
8245 yellow_shulker_box facing up
8246 yellow_shulker_box facing down
8247 lime_shulker_box facing north
8248 lime_shulker_box facing east
8249 lime_shulker_box facing south
8250 lime_shulker_box facing west
8251 lime_shulker_box facing up
8252 lime_shulker_box facing down
8253 pink_shulker_box facing north
8254 pink_shulker_box facing east
8255 pink_shulker_box facing south
8256 pink_shulker_box facing west
8257 pink_shulker_box facing up
8258 pink_shulker_box facing down
8259 gray_shulker_box facing north
8260 gray_shulker_box facing east
8261 gray_shulker_box facing south
8262 gray_shulker_box facing west
8263 gray_shulker_box facing up
8264 gray_shulker_box facing down
8265 light_gray_shulker_box facing north
8266 light_gray_shulker_box facing east
8267 light_gray_shulker_box facing south
8268 light_gray_shulker_box facing west
8269 light_gray_shulker_box facing up
8270 light_gray_shulker_box facing down
8271 cyan_shulker_box facing north
8272 cyan_shulker_box facing east
8273 cyan_shulker_box facing south
8274 cyan_shulker_box facing west
8275 cyan_shulker_box facing up
8276 cyan_shulker_box facing down
8277 purple_shulker_box facing north
8278 purple_shulker_box facing east
8279 purple_shulker_box facing south
8280 purple_shulker_box facing west
8281 purple_shulker_box facing up
8282 purple_shulker_box facing down
8283 blue_shulker_box facing north
8284 blue_shulker_box facing east
8285 blue_shulker_box facing south
8286 blue_shulker_box facing west
8287 blue_shulker_box facing up
8288 blue_shulker_box facing down
8289 brown_shulker_box facing north
8290 brown_shulker_box facing east
8291 brown_shulker_box facing south
8292 brown_shulker_box facing west
8293 brown_shulker_box facing up
8294 brown_shulker_box facing down
8295 green_shulker_box facing north
8296 green_shulker_box facing east
8297 green_shulker_box facing south
8298 green_shulker_box facing west
8299 green_shulker_box facing up
8300 green_shulker_box facing down
8301 red_shulker_box facing north
8302 red_shulker_box facing east
8303 red_shulker_box facing south
8304 red_shulker_box facing west
8305 red_shulker_box facing up
8306 red_shulker_box facing down
8307 black_shulker_box facing north
8308 black_shulker_box facing east
8309 black_shulker_box facing south
8310 black_shulker_box facing west
8311 black_shulker_box facing up
8312 black_shulker_box facing down
8313 white_glazed_terracotta facing north
8314 white_glazed_terracotta facing south
8315 white_glazed_terracotta facing west
8316 white_glazed_terracotta facing east
8317 orange_glazed_terracotta facing north
8318 orange_glazed_terracotta facing south
8319 orange_glazed_terracotta facing west
8320 orange_glazed_terracotta facing east
8321 magenta_glazed_terracotta facing north
8322 magenta_glazed_terracotta facing south
8323 magenta_glazed_terracotta facing west
8324 magenta_glazed_terracotta facing east
8325 light_blue_glazed_terracotta facing north
8326 light_blue_glazed_terracotta facing south
8327 light_blue_glazed_terracotta facing west
8328 light_blue_glazed_terracotta facing east
8329 yellow_glazed_terracotta facing north
8330 yellow_glazed_terracotta facing south
8331 yellow_glazed_terracotta facing west
8332 yellow_glazed_terracotta facing east
8333 lime_glazed_terracotta facing north
8334 lime_glazed_terracotta facing south
8335 lime_glazed_terracotta facing west
8336 lime_glazed_terracotta facing east
8337 pink_glazed_terracotta facing north
8338 pink_glazed_terracotta facing south
8339 pink_glazed_terracotta facing west
8340 pink_glazed_terracotta facing east
8341 gray_glazed_terracotta facing north
8342 gray_glazed_terracotta facing south
8343 gray_glazed_terracotta facing west
8344 gray_glazed_terracotta facing east
8345 light_gray_glazed_terracotta facing north
8346 light_gray_glazed_terracotta facing south
8347 light_gray_glazed_terracotta facing west
8348 light_gray_glazed_terracotta facing east
8349 cyan_glazed_terracotta facing north
8350 cyan_glazed_terracotta facing south
8351 cyan_glazed_terracotta facing west
8352 cyan_glazed_terracotta facing east
8353 purple_glazed_terracotta facing north
8354 purple_glazed_terracotta facing south
8355 purple_glazed_terracotta facing west
8356 purple_glazed_terracotta facing east
8357 blue_glazed_terracotta facing north
8358 blue_glazed_terracotta facing south
8359 blue_glazed_terracotta facing west
8360 blue_glazed_terracotta facing east
8361 brown_glazed_terracotta facing north
8362 brown_glazed_terracotta facing south
8363 brown_glazed_terracotta facing west
8364 brown_glazed_terracotta facing east
8365 green_glazed_terracotta facing north
8366 green_glazed_terracotta facing south
8367 green_glazed_terracotta facing west
8368 green_glazed_terracotta facing east
8369 red_glazed_terracotta facing north
8370 red_glazed_terracotta facing south
8371 red_glazed_terracotta facing west
8372 red_glazed_terracotta facing east
8373 black_glazed_terracotta facing north
8374 black_glazed_terracotta facing south
8375 black_glazed_terracotta facing west
8376 black_glazed_terracotta facing east
8377 white_concrete
8378 orange_concrete
8379 magenta_concrete
8380 light_blue_concrete
8381 yellow_concrete
8382 lime_concrete
8383 pink_concrete
8384 gray_concrete
8385 light_gray_concrete
8386 cyan_concrete
8387 purple_concrete
8388 blue_concrete
8389 brown_concrete
8390 green_concrete
8391 red_concrete
8392 black_concrete
8393 white_concrete_powder
8394 orange_concrete_powder
8395 magenta_concrete_powder
8396 light_blue_concrete_powder
8397 yellow_concrete_powder
8398 lime_concrete_powder
8399 pink_concrete_powder
8400 gray_concrete_powder
8401 light_gray_concrete_powder
8402 cyan_concrete_powder
8403 purple_concrete_powder
8404 blue_concrete_powder
8405 brown_concrete_powder
8406 green_concrete_powder
8407 red_concrete_powder
8408 black_concrete_powder
8409 kelp age 0
8410 kelp age 1
8411 kelp age 2
8412 kelp age 3
8413 kelp age 4
8414 kelp age 5
8415 kelp age 6
8416 kelp age 7
8417 kelp age 8
8418 kelp age 9
8419 kelp age 10
8420 kelp age 11
8421 kelp age 12
8422 kelp age 13
8423 kelp age 14
8424 kelp age 15
8425 kelp age 16
8426 kelp age 17
8427 kelp age 18
8428 kelp age 19
8429 kelp age 20
8430 kelp age 21
8431 kelp age 22
8432 kelp age 23
8433 kelp age 24
8434 kelp age 25
8435 kelp_plant
8436 dried_kelp_block
8437 turtle_egg eggs 1 hatch 0
8438 turtle_egg eggs 1 hatch 1
8439 turtle_egg eggs 1 hatch 2
8440 turtle_egg eggs 2 hatch 0
8441 turtle_egg eggs 2 hatch 1
8442 turtle_egg eggs 2 hatch 2
8443 turtle_egg eggs 3 hatch 0
8444 turtle_egg eggs 3 hatch 1
8445 turtle_egg eggs 3 hatch 2
8446 turtle_egg eggs 4 hatch 0
8447 turtle_egg eggs 4 hatch 1
8448 turtle_egg eggs 4 hatch 2
8449 dead_tube_coral_block
8450 dead_brain_coral_block
8451 dead_bubble_coral_block
8452 dead_fire_coral_block
8453 dead_horn_coral_block
8454 tube_coral_block
8455 brain_coral_block
8456 bubble_coral_block
8457 fire_coral_block
8458 horn_coral_block
8459 tube_coral
8460 brain_coral
8461 bubble_coral
8462 fire_coral
8463 horn_coral
8464 dead_tube_coral_wall_fan facing north waterlogged true
8465 dead_tube_coral_wall_fan facing north waterlogged false
8466 dead_tube_coral_wall_fan facing south waterlogged true
8467 dead_tube_coral_wall_fan facing south waterlogged false
8468 dead_tube_coral_wall_fan facing west waterlogged true
8469 dead_tube_coral_wall_fan facing west waterlogged false
8470 dead_tube_coral_wall_fan facing east waterlogged true
8471 dead_tube_coral_wall_fan facing east waterlogged false
8472 dead_brain_coral_wall_fan facing north waterlogged true
8473 dead_brain_coral_wall_fan facing north waterlogged false
8474 dead_brain_coral_wall_fan facing south waterlogged true
8475 dead_brain_coral_wall_fan facing south waterlogged false
8476 dead_brain_coral_wall_fan facing west waterlogged true
8477 dead_brain_coral_wall_fan facing west waterlogged false
8478 dead_brain_coral_wall_fan facing east waterlogged true
8479 dead_brain_coral_wall_fan facing east waterlogged false
8480 dead_bubble_coral_wall_fan facing north waterlogged true
8481 dead_bubble_coral_wall_fan facing north waterlogged false
8482 dead_bubble_coral_wall_fan facing south waterlogged true
8483 dead_bubble_coral_wall_fan facing south waterlogged false
8484 dead_bubble_coral_wall_fan facing west waterlogged true
8485 dead_bubble_coral_wall_fan facing west waterlogged false
8486 dead_bubble_coral_wall_fan facing east waterlogged true
8487 dead_bubble_coral_wall_fan facing east waterlogged false
8488 dead_fire_coral_wall_fan facing north waterlogged true
8489 dead_fire_coral_wall_fan facing north waterlogged false
8490 dead_fire_coral_wall_fan facing south waterlogged true
8491 dead_fire_coral_wall_fan facing south waterlogged false
8492 dead_fire_coral_wall_fan facing west waterlogged true
8493 dead_fire_coral_wall_fan facing west waterlogged false
8494 dead_fire_coral_wall_fan facing east waterlogged true
8495 dead_fire_coral_wall_fan facing east waterlogged false
8496 dead_horn_coral_wall_fan facing north waterlogged true
8497 dead_horn_coral_wall_fan facing north waterlogged false
8498 dead_horn_coral_wall_fan facing south waterlogged true
8499 dead_horn_coral_wall_fan facing south waterlogged false
8500 dead_horn_coral_wall_fan facing west waterlogged true
8501 dead_horn_coral_wall_fan facing west waterlogged false
8502 dead_horn_coral_wall_fan facing east waterlogged true
8503 dead_horn_coral_wall_fan facing east waterlogged false
8504 tube_coral_wall_fan facing north waterlogged true
8505 tube_coral_wall_fan facing north waterlogged false
8506 tube_coral_wall_fan facing south waterlogged true
8507 tube_coral_wall_fan facing south waterlogged false
8508 tube_coral_wall_fan facing west waterlogged true
8509 tube_coral_wall_fan facing west waterlogged false
8510 tube_coral_wall_fan facing east waterlogged true
8511 tube_coral_wall_fan facing east waterlogged false
8512 brain_coral_wall_fan facing north waterlogged true
8513 brain_coral_wall_fan facing north waterlogged false
8514 brain_coral_wall_fan facing south waterlogged true
8515 brain_coral_wall_fan facing south waterlogged false
8516 brain_coral_wall_fan facing west waterlogged true
8517 brain_coral_wall_fan facing west waterlogged false
8518 brain_coral_wall_fan facing east waterlogged true
8519 brain_coral_wall_fan facing east waterlogged false
8520 bubble_coral_wall_fan facing north waterlogged true
8521 bubble_coral_wall_fan facing north waterlogged false
8522 bubble_coral_wall_fan facing south waterlogged true
8523 bubble_coral_wall_fan facing south waterlogged false
8524 bubble_coral_wall_fan facing west waterlogged true
8525 bubble_coral_wall_fan facing west waterlogged false
8526 bubble_coral_wall_fan facing east waterlogged true
8527 bubble_coral_wall_fan facing east waterlogged false
8528 fire_coral_wall_fan facing north waterlogged true
8529 fire_coral_wall_fan facing north waterlogged false
8530 fire_coral_wall_fan facing south waterlogged true
8531 fire_coral_wall_fan facing south waterlogged false
8532 fire_coral_wall_fan facing west waterlogged true
8533 fire_coral_wall_fan facing west waterlogged false
8534 fire_coral_wall_fan facing east waterlogged true
8535 fire_coral_wall_fan facing east waterlogged false
8536 horn_coral_wall_fan facing north waterlogged true
8537 horn_coral_wall_fan facing north waterlogged false
8538 horn_coral_wall_fan facing south waterlogged true
8539 horn_coral_wall_fan facing south waterlogged false
8540 horn_coral_wall_fan facing west waterlogged true
8541 horn_coral_wall_fan facing west waterlogged false
8542 horn_coral_wall_fan facing east waterlogged true
8543 horn_coral_wall_fan facing east waterlogged false
8544 dead_tube_coral_fan waterlogged true
8545 dead_tube_coral_fan waterlogged false
8546 dead_brain_coral_fan waterlogged true
8547 dead_brain_coral_fan waterlogged false
8548 dead_bubble_coral_fan waterlogged true
8549 dead_bubble_coral_fan waterlogged false
8550 dead_fire_coral_fan waterlogged true
8551 dead_fire_coral_fan waterlogged false
8552 dead_horn_coral_fan waterlogged true
8553 dead_horn_coral_fan waterlogged false
8554 tube_coral_fan waterlogged true
8555 tube_coral_fan waterlogged false
8556 brain_coral_fan waterlogged true
8557 brain_coral_fan waterlogged false
8558 bubble_coral_fan waterlogged true
8559 bubble_coral_fan waterlogged false
8560 fire_coral_fan waterlogged true
8561 fire_coral_fan waterlogged false
8562 horn_coral_fan waterlogged true
8563 horn_coral_fan waterlogged false
8564 sea_pickle waterlogged true pickles 1
8565 sea_pickle waterlogged false pickles 1
8566 sea_pickle waterlogged true pickles 2
8567 sea_pickle waterlogged false pickles 2
8568 sea_pickle waterlogged true pickles 3
8569 sea_pickle waterlogged false pickles 3
8570 sea_pickle waterlogged true pickles 4
8571 sea_pickle waterlogged false pickles 4
8572 blue_ice
8573 conduit
8574 void_air
8575 cave_air
8576 bubble_column drag true
8577 bubble_column drag false
8578 structure_block mode save
8579 structure_block mode load
8580 structure_block mode corner
8581 structure_block mode data
================================================
FILE: Server/Protocol/1.14.4/base.btp.txt
================================================
BlockTypePalette
FileVersion 1
CommonPrefix minecraft:
0 air
1 stone
2 granite
3 polished_granite
4 diorite
5 polished_diorite
6 andesite
7 polished_andesite
8 grass_block snowy true
9 grass_block snowy false
10 dirt
11 coarse_dirt
12 podzol snowy true
13 podzol snowy false
14 cobblestone
15 oak_planks
16 spruce_planks
17 birch_planks
18 jungle_planks
19 acacia_planks
20 dark_oak_planks
21 oak_sapling stage 0
22 oak_sapling stage 1
23 spruce_sapling stage 0
24 spruce_sapling stage 1
25 birch_sapling stage 0
26 birch_sapling stage 1
27 jungle_sapling stage 0
28 jungle_sapling stage 1
29 acacia_sapling stage 0
30 acacia_sapling stage 1
31 dark_oak_sapling stage 0
32 dark_oak_sapling stage 1
33 bedrock
34 water level 0
35 water level 1
36 water level 2
37 water level 3
38 water level 4
39 water level 5
40 water level 6
41 water level 7
42 water level 8
43 water level 9
44 water level 10
45 water level 11
46 water level 12
47 water level 13
48 water level 14
49 water level 15
50 lava level 0
51 lava level 1
52 lava level 2
53 lava level 3
54 lava level 4
55 lava level 5
56 lava level 6
57 lava level 7
58 lava level 8
59 lava level 9
60 lava level 10
61 lava level 11
62 lava level 12
63 lava level 13
64 lava level 14
65 lava level 15
66 sand
67 red_sand
68 gravel
69 gold_ore
70 iron_ore
71 coal_ore
72 oak_log axis x
73 oak_log axis y
74 oak_log axis z
75 spruce_log axis x
76 spruce_log axis y
77 spruce_log axis z
78 birch_log axis x
79 birch_log axis y
80 birch_log axis z
81 jungle_log axis x
82 jungle_log axis y
83 jungle_log axis z
84 acacia_log axis x
85 acacia_log axis y
86 acacia_log axis z
87 dark_oak_log axis x
88 dark_oak_log axis y
89 dark_oak_log axis z
90 stripped_spruce_log axis x
91 stripped_spruce_log axis y
92 stripped_spruce_log axis z
93 stripped_birch_log axis x
94 stripped_birch_log axis y
95 stripped_birch_log axis z
96 stripped_jungle_log axis x
97 stripped_jungle_log axis y
98 stripped_jungle_log axis z
99 stripped_acacia_log axis x
100 stripped_acacia_log axis y
101 stripped_acacia_log axis z
102 stripped_dark_oak_log axis x
103 stripped_dark_oak_log axis y
104 stripped_dark_oak_log axis z
105 stripped_oak_log axis x
106 stripped_oak_log axis y
107 stripped_oak_log axis z
108 oak_wood axis x
109 oak_wood axis y
110 oak_wood axis z
111 spruce_wood axis x
112 spruce_wood axis y
113 spruce_wood axis z
114 birch_wood axis x
115 birch_wood axis y
116 birch_wood axis z
117 jungle_wood axis x
118 jungle_wood axis y
119 jungle_wood axis z
120 acacia_wood axis x
121 acacia_wood axis y
122 acacia_wood axis z
123 dark_oak_wood axis x
124 dark_oak_wood axis y
125 dark_oak_wood axis z
126 stripped_oak_wood axis x
127 stripped_oak_wood axis y
128 stripped_oak_wood axis z
129 stripped_spruce_wood axis x
130 stripped_spruce_wood axis y
131 stripped_spruce_wood axis z
132 stripped_birch_wood axis x
133 stripped_birch_wood axis y
134 stripped_birch_wood axis z
135 stripped_jungle_wood axis x
136 stripped_jungle_wood axis y
137 stripped_jungle_wood axis z
138 stripped_acacia_wood axis x
139 stripped_acacia_wood axis y
140 stripped_acacia_wood axis z
141 stripped_dark_oak_wood axis x
142 stripped_dark_oak_wood axis y
143 stripped_dark_oak_wood axis z
144 oak_leaves persistent true distance 1
145 oak_leaves persistent false distance 1
146 oak_leaves persistent true distance 2
147 oak_leaves persistent false distance 2
148 oak_leaves persistent true distance 3
149 oak_leaves persistent false distance 3
150 oak_leaves persistent true distance 4
151 oak_leaves persistent false distance 4
152 oak_leaves persistent true distance 5
153 oak_leaves persistent false distance 5
154 oak_leaves persistent true distance 6
155 oak_leaves persistent false distance 6
156 oak_leaves persistent true distance 7
157 oak_leaves persistent false distance 7
158 spruce_leaves persistent true distance 1
159 spruce_leaves persistent false distance 1
160 spruce_leaves persistent true distance 2
161 spruce_leaves persistent false distance 2
162 spruce_leaves persistent true distance 3
163 spruce_leaves persistent false distance 3
164 spruce_leaves persistent true distance 4
165 spruce_leaves persistent false distance 4
166 spruce_leaves persistent true distance 5
167 spruce_leaves persistent false distance 5
168 spruce_leaves persistent true distance 6
169 spruce_leaves persistent false distance 6
170 spruce_leaves persistent true distance 7
171 spruce_leaves persistent false distance 7
172 birch_leaves persistent true distance 1
173 birch_leaves persistent false distance 1
174 birch_leaves persistent true distance 2
175 birch_leaves persistent false distance 2
176 birch_leaves persistent true distance 3
177 birch_leaves persistent false distance 3
178 birch_leaves persistent true distance 4
179 birch_leaves persistent false distance 4
180 birch_leaves persistent true distance 5
181 birch_leaves persistent false distance 5
182 birch_leaves persistent true distance 6
183 birch_leaves persistent false distance 6
184 birch_leaves persistent true distance 7
185 birch_leaves persistent false distance 7
186 jungle_leaves persistent true distance 1
187 jungle_leaves persistent false distance 1
188 jungle_leaves persistent true distance 2
189 jungle_leaves persistent false distance 2
190 jungle_leaves persistent true distance 3
191 jungle_leaves persistent false distance 3
192 jungle_leaves persistent true distance 4
193 jungle_leaves persistent false distance 4
194 jungle_leaves persistent true distance 5
195 jungle_leaves persistent false distance 5
196 jungle_leaves persistent true distance 6
197 jungle_leaves persistent false distance 6
198 jungle_leaves persistent true distance 7
199 jungle_leaves persistent false distance 7
200 acacia_leaves persistent true distance 1
201 acacia_leaves persistent false distance 1
202 acacia_leaves persistent true distance 2
203 acacia_leaves persistent false distance 2
204 acacia_leaves persistent true distance 3
205 acacia_leaves persistent false distance 3
206 acacia_leaves persistent true distance 4
207 acacia_leaves persistent false distance 4
208 acacia_leaves persistent true distance 5
209 acacia_leaves persistent false distance 5
210 acacia_leaves persistent true distance 6
211 acacia_leaves persistent false distance 6
212 acacia_leaves persistent true distance 7
213 acacia_leaves persistent false distance 7
214 dark_oak_leaves persistent true distance 1
215 dark_oak_leaves persistent false distance 1
216 dark_oak_leaves persistent true distance 2
217 dark_oak_leaves persistent false distance 2
218 dark_oak_leaves persistent true distance 3
219 dark_oak_leaves persistent false distance 3
220 dark_oak_leaves persistent true distance 4
221 dark_oak_leaves persistent false distance 4
222 dark_oak_leaves persistent true distance 5
223 dark_oak_leaves persistent false distance 5
224 dark_oak_leaves persistent true distance 6
225 dark_oak_leaves persistent false distance 6
226 dark_oak_leaves persistent true distance 7
227 dark_oak_leaves persistent false distance 7
228 sponge
229 wet_sponge
230 glass
231 lapis_ore
232 lapis_block
233 dispenser facing north triggered true
234 dispenser facing north triggered false
235 dispenser facing east triggered true
236 dispenser facing east triggered false
237 dispenser facing south triggered true
238 dispenser facing south triggered false
239 dispenser facing west triggered true
240 dispenser facing west triggered false
241 dispenser facing up triggered true
242 dispenser facing up triggered false
243 dispenser facing down triggered true
244 dispenser facing down triggered false
245 sandstone
246 chiseled_sandstone
247 cut_sandstone
248 note_block instrument harp powered true note 0
249 note_block instrument harp powered false note 0
250 note_block instrument harp powered true note 1
251 note_block instrument harp powered false note 1
252 note_block instrument harp powered true note 2
253 note_block instrument harp powered false note 2
254 note_block instrument harp powered true note 3
255 note_block instrument harp powered false note 3
256 note_block instrument harp powered true note 4
257 note_block instrument harp powered false note 4
258 note_block instrument harp powered true note 5
259 note_block instrument harp powered false note 5
260 note_block instrument harp powered true note 6
261 note_block instrument harp powered false note 6
262 note_block instrument harp powered true note 7
263 note_block instrument harp powered false note 7
264 note_block instrument harp powered true note 8
265 note_block instrument harp powered false note 8
266 note_block instrument harp powered true note 9
267 note_block instrument harp powered false note 9
268 note_block instrument harp powered true note 10
269 note_block instrument harp powered false note 10
270 note_block instrument harp powered true note 11
271 note_block instrument harp powered false note 11
272 note_block instrument harp powered true note 12
273 note_block instrument harp powered false note 12
274 note_block instrument harp powered true note 13
275 note_block instrument harp powered false note 13
276 note_block instrument harp powered true note 14
277 note_block instrument harp powered false note 14
278 note_block instrument harp powered true note 15
279 note_block instrument harp powered false note 15
280 note_block instrument harp powered true note 16
281 note_block instrument harp powered false note 16
282 note_block instrument harp powered true note 17
283 note_block instrument harp powered false note 17
284 note_block instrument harp powered true note 18
285 note_block instrument harp powered false note 18
286 note_block instrument harp powered true note 19
287 note_block instrument harp powered false note 19
288 note_block instrument harp powered true note 20
289 note_block instrument harp powered false note 20
290 note_block instrument harp powered true note 21
291 note_block instrument harp powered false note 21
292 note_block instrument harp powered true note 22
293 note_block instrument harp powered false note 22
294 note_block instrument harp powered true note 23
295 note_block instrument harp powered false note 23
296 note_block instrument harp powered true note 24
297 note_block instrument harp powered false note 24
298 note_block instrument basedrum powered true note 0
299 note_block instrument basedrum powered false note 0
300 note_block instrument basedrum powered true note 1
301 note_block instrument basedrum powered false note 1
302 note_block instrument basedrum powered true note 2
303 note_block instrument basedrum powered false note 2
304 note_block instrument basedrum powered true note 3
305 note_block instrument basedrum powered false note 3
306 note_block instrument basedrum powered true note 4
307 note_block instrument basedrum powered false note 4
308 note_block instrument basedrum powered true note 5
309 note_block instrument basedrum powered false note 5
310 note_block instrument basedrum powered true note 6
311 note_block instrument basedrum powered false note 6
312 note_block instrument basedrum powered true note 7
313 note_block instrument basedrum powered false note 7
314 note_block instrument basedrum powered true note 8
315 note_block instrument basedrum powered false note 8
316 note_block instrument basedrum powered true note 9
317 note_block instrument basedrum powered false note 9
318 note_block instrument basedrum powered true note 10
319 note_block instrument basedrum powered false note 10
320 note_block instrument basedrum powered true note 11
321 note_block instrument basedrum powered false note 11
322 note_block instrument basedrum powered true note 12
323 note_block instrument basedrum powered false note 12
324 note_block instrument basedrum powered true note 13
325 note_block instrument basedrum powered false note 13
326 note_block instrument basedrum powered true note 14
327 note_block instrument basedrum powered false note 14
328 note_block instrument basedrum powered true note 15
329 note_block instrument basedrum powered false note 15
330 note_block instrument basedrum powered true note 16
331 note_block instrument basedrum powered false note 16
332 note_block instrument basedrum powered true note 17
333 note_block instrument basedrum powered false note 17
334 note_block instrument basedrum powered true note 18
335 note_block instrument basedrum powered false note 18
336 note_block instrument basedrum powered true note 19
337 note_block instrument basedrum powered false note 19
338 note_block instrument basedrum powered true note 20
339 note_block instrument basedrum powered false note 20
340 note_block instrument basedrum powered true note 21
341 note_block instrument basedrum powered false note 21
342 note_block instrument basedrum powered true note 22
343 note_block instrument basedrum powered false note 22
344 note_block instrument basedrum powered true note 23
345 note_block instrument basedrum powered false note 23
346 note_block instrument basedrum powered true note 24
347 note_block instrument basedrum powered false note 24
348 note_block instrument snare powered true note 0
349 note_block instrument snare powered false note 0
350 note_block instrument snare powered true note 1
351 note_block instrument snare powered false note 1
352 note_block instrument snare powered true note 2
353 note_block instrument snare powered false note 2
354 note_block instrument snare powered true note 3
355 note_block instrument snare powered false note 3
356 note_block instrument snare powered true note 4
357 note_block instrument snare powered false note 4
358 note_block instrument snare powered true note 5
359 note_block instrument snare powered false note 5
360 note_block instrument snare powered true note 6
361 note_block instrument snare powered false note 6
362 note_block instrument snare powered true note 7
363 note_block instrument snare powered false note 7
364 note_block instrument snare powered true note 8
365 note_block instrument snare powered false note 8
366 note_block instrument snare powered true note 9
367 note_block instrument snare powered false note 9
368 note_block instrument snare powered true note 10
369 note_block instrument snare powered false note 10
370 note_block instrument snare powered true note 11
371 note_block instrument snare powered false note 11
372 note_block instrument snare powered true note 12
373 note_block instrument snare powered false note 12
374 note_block instrument snare powered true note 13
375 note_block instrument snare powered false note 13
376 note_block instrument snare powered true note 14
377 note_block instrument snare powered false note 14
378 note_block instrument snare powered true note 15
379 note_block instrument snare powered false note 15
380 note_block instrument snare powered true note 16
381 note_block instrument snare powered false note 16
382 note_block instrument snare powered true note 17
383 note_block instrument snare powered false note 17
384 note_block instrument snare powered true note 18
385 note_block instrument snare powered false note 18
386 note_block instrument snare powered true note 19
387 note_block instrument snare powered false note 19
388 note_block instrument snare powered true note 20
389 note_block instrument snare powered false note 20
390 note_block instrument snare powered true note 21
391 note_block instrument snare powered false note 21
392 note_block instrument snare powered true note 22
393 note_block instrument snare powered false note 22
394 note_block instrument snare powered true note 23
395 note_block instrument snare powered false note 23
396 note_block instrument snare powered true note 24
397 note_block instrument snare powered false note 24
398 note_block instrument hat powered true note 0
399 note_block instrument hat powered false note 0
400 note_block instrument hat powered true note 1
401 note_block instrument hat powered false note 1
402 note_block instrument hat powered true note 2
403 note_block instrument hat powered false note 2
404 note_block instrument hat powered true note 3
405 note_block instrument hat powered false note 3
406 note_block instrument hat powered true note 4
407 note_block instrument hat powered false note 4
408 note_block instrument hat powered true note 5
409 note_block instrument hat powered false note 5
410 note_block instrument hat powered true note 6
411 note_block instrument hat powered false note 6
412 note_block instrument hat powered true note 7
413 note_block instrument hat powered false note 7
414 note_block instrument hat powered true note 8
415 note_block instrument hat powered false note 8
416 note_block instrument hat powered true note 9
417 note_block instrument hat powered false note 9
418 note_block instrument hat powered true note 10
419 note_block instrument hat powered false note 10
420 note_block instrument hat powered true note 11
421 note_block instrument hat powered false note 11
422 note_block instrument hat powered true note 12
423 note_block instrument hat powered false note 12
424 note_block instrument hat powered true note 13
425 note_block instrument hat powered false note 13
426 note_block instrument hat powered true note 14
427 note_block instrument hat powered false note 14
428 note_block instrument hat powered true note 15
429 note_block instrument hat powered false note 15
430 note_block instrument hat powered true note 16
431 note_block instrument hat powered false note 16
432 note_block instrument hat powered true note 17
433 note_block instrument hat powered false note 17
434 note_block instrument hat powered true note 18
435 note_block instrument hat powered false note 18
436 note_block instrument hat powered true note 19
437 note_block instrument hat powered false note 19
438 note_block instrument hat powered true note 20
439 note_block instrument hat powered false note 20
440 note_block instrument hat powered true note 21
441 note_block instrument hat powered false note 21
442 note_block instrument hat powered true note 22
443 note_block instrument hat powered false note 22
444 note_block instrument hat powered true note 23
445 note_block instrument hat powered false note 23
446 note_block instrument hat powered true note 24
447 note_block instrument hat powered false note 24
448 note_block instrument bass powered true note 0
449 note_block instrument bass powered false note 0
450 note_block instrument bass powered true note 1
451 note_block instrument bass powered false note 1
452 note_block instrument bass powered true note 2
453 note_block instrument bass powered false note 2
454 note_block instrument bass powered true note 3
455 note_block instrument bass powered false note 3
456 note_block instrument bass powered true note 4
457 note_block instrument bass powered false note 4
458 note_block instrument bass powered true note 5
459 note_block instrument bass powered false note 5
460 note_block instrument bass powered true note 6
461 note_block instrument bass powered false note 6
462 note_block instrument bass powered true note 7
463 note_block instrument bass powered false note 7
464 note_block instrument bass powered true note 8
465 note_block instrument bass powered false note 8
466 note_block instrument bass powered true note 9
467 note_block instrument bass powered false note 9
468 note_block instrument bass powered true note 10
469 note_block instrument bass powered false note 10
470 note_block instrument bass powered true note 11
471 note_block instrument bass powered false note 11
472 note_block instrument bass powered true note 12
473 note_block instrument bass powered false note 12
474 note_block instrument bass powered true note 13
475 note_block instrument bass powered false note 13
476 note_block instrument bass powered true note 14
477 note_block instrument bass powered false note 14
478 note_block instrument bass powered true note 15
479 note_block instrument bass powered false note 15
480 note_block instrument bass powered true note 16
481 note_block instrument bass powered false note 16
482 note_block instrument bass powered true note 17
483 note_block instrument bass powered false note 17
484 note_block instrument bass powered true note 18
485 note_block instrument bass powered false note 18
486 note_block instrument bass powered true note 19
487 note_block instrument bass powered false note 19
488 note_block instrument bass powered true note 20
489 note_block instrument bass powered false note 20
490 note_block instrument bass powered true note 21
491 note_block instrument bass powered false note 21
492 note_block instrument bass powered true note 22
493 note_block instrument bass powered false note 22
494 note_block instrument bass powered true note 23
495 note_block instrument bass powered false note 23
496 note_block instrument bass powered true note 24
497 note_block instrument bass powered false note 24
498 note_block instrument flute powered true note 0
499 note_block instrument flute powered false note 0
500 note_block instrument flute powered true note 1
501 note_block instrument flute powered false note 1
502 note_block instrument flute powered true note 2
503 note_block instrument flute powered false note 2
504 note_block instrument flute powered true note 3
505 note_block instrument flute powered false note 3
506 note_block instrument flute powered true note 4
507 note_block instrument flute powered false note 4
508 note_block instrument flute powered true note 5
509 note_block instrument flute powered false note 5
510 note_block instrument flute powered true note 6
511 note_block instrument flute powered false note 6
512 note_block instrument flute powered true note 7
513 note_block instrument flute powered false note 7
514 note_block instrument flute powered true note 8
515 note_block instrument flute powered false note 8
516 note_block instrument flute powered true note 9
517 note_block instrument flute powered false note 9
518 note_block instrument flute powered true note 10
519 note_block instrument flute powered false note 10
520 note_block instrument flute powered true note 11
521 note_block instrument flute powered false note 11
522 note_block instrument flute powered true note 12
523 note_block instrument flute powered false note 12
524 note_block instrument flute powered true note 13
525 note_block instrument flute powered false note 13
526 note_block instrument flute powered true note 14
527 note_block instrument flute powered false note 14
528 note_block instrument flute powered true note 15
529 note_block instrument flute powered false note 15
530 note_block instrument flute powered true note 16
531 note_block instrument flute powered false note 16
532 note_block instrument flute powered true note 17
533 note_block instrument flute powered false note 17
534 note_block instrument flute powered true note 18
535 note_block instrument flute powered false note 18
536 note_block instrument flute powered true note 19
537 note_block instrument flute powered false note 19
538 note_block instrument flute powered true note 20
539 note_block instrument flute powered false note 20
540 note_block instrument flute powered true note 21
541 note_block instrument flute powered false note 21
542 note_block instrument flute powered true note 22
543 note_block instrument flute powered false note 22
544 note_block instrument flute powered true note 23
545 note_block instrument flute powered false note 23
546 note_block instrument flute powered true note 24
547 note_block instrument flute powered false note 24
548 note_block instrument bell powered true note 0
549 note_block instrument bell powered false note 0
550 note_block instrument bell powered true note 1
551 note_block instrument bell powered false note 1
552 note_block instrument bell powered true note 2
553 note_block instrument bell powered false note 2
554 note_block instrument bell powered true note 3
555 note_block instrument bell powered false note 3
556 note_block instrument bell powered true note 4
557 note_block instrument bell powered false note 4
558 note_block instrument bell powered true note 5
559 note_block instrument bell powered false note 5
560 note_block instrument bell powered true note 6
561 note_block instrument bell powered false note 6
562 note_block instrument bell powered true note 7
563 note_block instrument bell powered false note 7
564 note_block instrument bell powered true note 8
565 note_block instrument bell powered false note 8
566 note_block instrument bell powered true note 9
567 note_block instrument bell powered false note 9
568 note_block instrument bell powered true note 10
569 note_block instrument bell powered false note 10
570 note_block instrument bell powered true note 11
571 note_block instrument bell powered false note 11
572 note_block instrument bell powered true note 12
573 note_block instrument bell powered false note 12
574 note_block instrument bell powered true note 13
575 note_block instrument bell powered false note 13
576 note_block instrument bell powered true note 14
577 note_block instrument bell powered false note 14
578 note_block instrument bell powered true note 15
579 note_block instrument bell powered false note 15
580 note_block instrument bell powered true note 16
581 note_block instrument bell powered false note 16
582 note_block instrument bell powered true note 17
583 note_block instrument bell powered false note 17
584 note_block instrument bell powered true note 18
585 note_block instrument bell powered false note 18
586 note_block instrument bell powered true note 19
587 note_block instrument bell powered false note 19
588 note_block instrument bell powered true note 20
589 note_block instrument bell powered false note 20
590 note_block instrument bell powered true note 21
591 note_block instrument bell powered false note 21
592 note_block instrument bell powered true note 22
593 note_block instrument bell powered false note 22
594 note_block instrument bell powered true note 23
595 note_block instrument bell powered false note 23
596 note_block instrument bell powered true note 24
597 note_block instrument bell powered false note 24
598 note_block instrument guitar powered true note 0
599 note_block instrument guitar powered false note 0
600 note_block instrument guitar powered true note 1
601 note_block instrument guitar powered false note 1
602 note_block instrument guitar powered true note 2
603 note_block instrument guitar powered false note 2
604 note_block instrument guitar powered true note 3
605 note_block instrument guitar powered false note 3
606 note_block instrument guitar powered true note 4
607 note_block instrument guitar powered false note 4
608 note_block instrument guitar powered true note 5
609 note_block instrument guitar powered false note 5
610 note_block instrument guitar powered true note 6
611 note_block instrument guitar powered false note 6
612 note_block instrument guitar powered true note 7
613 note_block instrument guitar powered false note 7
614 note_block instrument guitar powered true note 8
615 note_block instrument guitar powered false note 8
616 note_block instrument guitar powered true note 9
617 note_block instrument guitar powered false note 9
618 note_block instrument guitar powered true note 10
619 note_block instrument guitar powered false note 10
620 note_block instrument guitar powered true note 11
621 note_block instrument guitar powered false note 11
622 note_block instrument guitar powered true note 12
623 note_block instrument guitar powered false note 12
624 note_block instrument guitar powered true note 13
625 note_block instrument guitar powered false note 13
626 note_block instrument guitar powered true note 14
627 note_block instrument guitar powered false note 14
628 note_block instrument guitar powered true note 15
629 note_block instrument guitar powered false note 15
630 note_block instrument guitar powered true note 16
631 note_block instrument guitar powered false note 16
632 note_block instrument guitar powered true note 17
633 note_block instrument guitar powered false note 17
634 note_block instrument guitar powered true note 18
635 note_block instrument guitar powered false note 18
636 note_block instrument guitar powered true note 19
637 note_block instrument guitar powered false note 19
638 note_block instrument guitar powered true note 20
639 note_block instrument guitar powered false note 20
640 note_block instrument guitar powered true note 21
641 note_block instrument guitar powered false note 21
642 note_block instrument guitar powered true note 22
643 note_block instrument guitar powered false note 22
644 note_block instrument guitar powered true note 23
645 note_block instrument guitar powered false note 23
646 note_block instrument guitar powered true note 24
647 note_block instrument guitar powered false note 24
648 note_block instrument chime powered true note 0
649 note_block instrument chime powered false note 0
650 note_block instrument chime powered true note 1
651 note_block instrument chime powered false note 1
652 note_block instrument chime powered true note 2
653 note_block instrument chime powered false note 2
654 note_block instrument chime powered true note 3
655 note_block instrument chime powered false note 3
656 note_block instrument chime powered true note 4
657 note_block instrument chime powered false note 4
658 note_block instrument chime powered true note 5
659 note_block instrument chime powered false note 5
660 note_block instrument chime powered true note 6
661 note_block instrument chime powered false note 6
662 note_block instrument chime powered true note 7
663 note_block instrument chime powered false note 7
664 note_block instrument chime powered true note 8
665 note_block instrument chime powered false note 8
666 note_block instrument chime powered true note 9
667 note_block instrument chime powered false note 9
668 note_block instrument chime powered true note 10
669 note_block instrument chime powered false note 10
670 note_block instrument chime powered true note 11
671 note_block instrument chime powered false note 11
672 note_block instrument chime powered true note 12
673 note_block instrument chime powered false note 12
674 note_block instrument chime powered true note 13
675 note_block instrument chime powered false note 13
676 note_block instrument chime powered true note 14
677 note_block instrument chime powered false note 14
678 note_block instrument chime powered true note 15
679 note_block instrument chime powered false note 15
680 note_block instrument chime powered true note 16
681 note_block instrument chime powered false note 16
682 note_block instrument chime powered true note 17
683 note_block instrument chime powered false note 17
684 note_block instrument chime powered true note 18
685 note_block instrument chime powered false note 18
686 note_block instrument chime powered true note 19
687 note_block instrument chime powered false note 19
688 note_block instrument chime powered true note 20
689 note_block instrument chime powered false note 20
690 note_block instrument chime powered true note 21
691 note_block instrument chime powered false note 21
692 note_block instrument chime powered true note 22
693 note_block instrument chime powered false note 22
694 note_block instrument chime powered true note 23
695 note_block instrument chime powered false note 23
696 note_block instrument chime powered true note 24
697 note_block instrument chime powered false note 24
698 note_block instrument xylophone powered true note 0
699 note_block instrument xylophone powered false note 0
700 note_block instrument xylophone powered true note 1
701 note_block instrument xylophone powered false note 1
702 note_block instrument xylophone powered true note 2
703 note_block instrument xylophone powered false note 2
704 note_block instrument xylophone powered true note 3
705 note_block instrument xylophone powered false note 3
706 note_block instrument xylophone powered true note 4
707 note_block instrument xylophone powered false note 4
708 note_block instrument xylophone powered true note 5
709 note_block instrument xylophone powered false note 5
710 note_block instrument xylophone powered true note 6
711 note_block instrument xylophone powered false note 6
712 note_block instrument xylophone powered true note 7
713 note_block instrument xylophone powered false note 7
714 note_block instrument xylophone powered true note 8
715 note_block instrument xylophone powered false note 8
716 note_block instrument xylophone powered true note 9
717 note_block instrument xylophone powered false note 9
718 note_block instrument xylophone powered true note 10
719 note_block instrument xylophone powered false note 10
720 note_block instrument xylophone powered true note 11
721 note_block instrument xylophone powered false note 11
722 note_block instrument xylophone powered true note 12
723 note_block instrument xylophone powered false note 12
724 note_block instrument xylophone powered true note 13
725 note_block instrument xylophone powered false note 13
726 note_block instrument xylophone powered true note 14
727 note_block instrument xylophone powered false note 14
728 note_block instrument xylophone powered true note 15
729 note_block instrument xylophone powered false note 15
730 note_block instrument xylophone powered true note 16
731 note_block instrument xylophone powered false note 16
732 note_block instrument xylophone powered true note 17
733 note_block instrument xylophone powered false note 17
734 note_block instrument xylophone powered true note 18
735 note_block instrument xylophone powered false note 18
736 note_block instrument xylophone powered true note 19
737 note_block instrument xylophone powered false note 19
738 note_block instrument xylophone powered true note 20
739 note_block instrument xylophone powered false note 20
740 note_block instrument xylophone powered true note 21
741 note_block instrument xylophone powered false note 21
742 note_block instrument xylophone powered true note 22
743 note_block instrument xylophone powered false note 22
744 note_block instrument xylophone powered true note 23
745 note_block instrument xylophone powered false note 23
746 note_block instrument xylophone powered true note 24
747 note_block instrument xylophone powered false note 24
748 note_block instrument iron_xylophone powered true note 0
749 note_block instrument iron_xylophone powered false note 0
750 note_block instrument iron_xylophone powered true note 1
751 note_block instrument iron_xylophone powered false note 1
752 note_block instrument iron_xylophone powered true note 2
753 note_block instrument iron_xylophone powered false note 2
754 note_block instrument iron_xylophone powered true note 3
755 note_block instrument iron_xylophone powered false note 3
756 note_block instrument iron_xylophone powered true note 4
757 note_block instrument iron_xylophone powered false note 4
758 note_block instrument iron_xylophone powered true note 5
759 note_block instrument iron_xylophone powered false note 5
760 note_block instrument iron_xylophone powered true note 6
761 note_block instrument iron_xylophone powered false note 6
762 note_block instrument iron_xylophone powered true note 7
763 note_block instrument iron_xylophone powered false note 7
764 note_block instrument iron_xylophone powered true note 8
765 note_block instrument iron_xylophone powered false note 8
766 note_block instrument iron_xylophone powered true note 9
767 note_block instrument iron_xylophone powered false note 9
768 note_block instrument iron_xylophone powered true note 10
769 note_block instrument iron_xylophone powered false note 10
770 note_block instrument iron_xylophone powered true note 11
771 note_block instrument iron_xylophone powered false note 11
772 note_block instrument iron_xylophone powered true note 12
773 note_block instrument iron_xylophone powered false note 12
774 note_block instrument iron_xylophone powered true note 13
775 note_block instrument iron_xylophone powered false note 13
776 note_block instrument iron_xylophone powered true note 14
777 note_block instrument iron_xylophone powered false note 14
778 note_block instrument iron_xylophone powered true note 15
779 note_block instrument iron_xylophone powered false note 15
780 note_block instrument iron_xylophone powered true note 16
781 note_block instrument iron_xylophone powered false note 16
782 note_block instrument iron_xylophone powered true note 17
783 note_block instrument iron_xylophone powered false note 17
784 note_block instrument iron_xylophone powered true note 18
785 note_block instrument iron_xylophone powered false note 18
786 note_block instrument iron_xylophone powered true note 19
787 note_block instrument iron_xylophone powered false note 19
788 note_block instrument iron_xylophone powered true note 20
789 note_block instrument iron_xylophone powered false note 20
790 note_block instrument iron_xylophone powered true note 21
791 note_block instrument iron_xylophone powered false note 21
792 note_block instrument iron_xylophone powered true note 22
793 note_block instrument iron_xylophone powered false note 22
794 note_block instrument iron_xylophone powered true note 23
795 note_block instrument iron_xylophone powered false note 23
796 note_block instrument iron_xylophone powered true note 24
797 note_block instrument iron_xylophone powered false note 24
798 note_block instrument cow_bell powered true note 0
799 note_block instrument cow_bell powered false note 0
800 note_block instrument cow_bell powered true note 1
801 note_block instrument cow_bell powered false note 1
802 note_block instrument cow_bell powered true note 2
803 note_block instrument cow_bell powered false note 2
804 note_block instrument cow_bell powered true note 3
805 note_block instrument cow_bell powered false note 3
806 note_block instrument cow_bell powered true note 4
807 note_block instrument cow_bell powered false note 4
808 note_block instrument cow_bell powered true note 5
809 note_block instrument cow_bell powered false note 5
810 note_block instrument cow_bell powered true note 6
811 note_block instrument cow_bell powered false note 6
812 note_block instrument cow_bell powered true note 7
813 note_block instrument cow_bell powered false note 7
814 note_block instrument cow_bell powered true note 8
815 note_block instrument cow_bell powered false note 8
816 note_block instrument cow_bell powered true note 9
817 note_block instrument cow_bell powered false note 9
818 note_block instrument cow_bell powered true note 10
819 note_block instrument cow_bell powered false note 10
820 note_block instrument cow_bell powered true note 11
821 note_block instrument cow_bell powered false note 11
822 note_block instrument cow_bell powered true note 12
823 note_block instrument cow_bell powered false note 12
824 note_block instrument cow_bell powered true note 13
825 note_block instrument cow_bell powered false note 13
826 note_block instrument cow_bell powered true note 14
827 note_block instrument cow_bell powered false note 14
828 note_block instrument cow_bell powered true note 15
829 note_block instrument cow_bell powered false note 15
830 note_block instrument cow_bell powered true note 16
831 note_block instrument cow_bell powered false note 16
832 note_block instrument cow_bell powered true note 17
833 note_block instrument cow_bell powered false note 17
834 note_block instrument cow_bell powered true note 18
835 note_block instrument cow_bell powered false note 18
836 note_block instrument cow_bell powered true note 19
837 note_block instrument cow_bell powered false note 19
838 note_block instrument cow_bell powered true note 20
839 note_block instrument cow_bell powered false note 20
840 note_block instrument cow_bell powered true note 21
841 note_block instrument cow_bell powered false note 21
842 note_block instrument cow_bell powered true note 22
843 note_block instrument cow_bell powered false note 22
844 note_block instrument cow_bell powered true note 23
845 note_block instrument cow_bell powered false note 23
846 note_block instrument cow_bell powered true note 24
847 note_block instrument cow_bell powered false note 24
848 note_block instrument didgeridoo powered true note 0
849 note_block instrument didgeridoo powered false note 0
850 note_block instrument didgeridoo powered true note 1
851 note_block instrument didgeridoo powered false note 1
852 note_block instrument didgeridoo powered true note 2
853 note_block instrument didgeridoo powered false note 2
854 note_block instrument didgeridoo powered true note 3
855 note_block instrument didgeridoo powered false note 3
856 note_block instrument didgeridoo powered true note 4
857 note_block instrument didgeridoo powered false note 4
858 note_block instrument didgeridoo powered true note 5
859 note_block instrument didgeridoo powered false note 5
860 note_block instrument didgeridoo powered true note 6
861 note_block instrument didgeridoo powered false note 6
862 note_block instrument didgeridoo powered true note 7
863 note_block instrument didgeridoo powered false note 7
864 note_block instrument didgeridoo powered true note 8
865 note_block instrument didgeridoo powered false note 8
866 note_block instrument didgeridoo powered true note 9
867 note_block instrument didgeridoo powered false note 9
868 note_block instrument didgeridoo powered true note 10
869 note_block instrument didgeridoo powered false note 10
870 note_block instrument didgeridoo powered true note 11
871 note_block instrument didgeridoo powered false note 11
872 note_block instrument didgeridoo powered true note 12
873 note_block instrument didgeridoo powered false note 12
874 note_block instrument didgeridoo powered true note 13
875 note_block instrument didgeridoo powered false note 13
876 note_block instrument didgeridoo powered true note 14
877 note_block instrument didgeridoo powered false note 14
878 note_block instrument didgeridoo powered true note 15
879 note_block instrument didgeridoo powered false note 15
880 note_block instrument didgeridoo powered true note 16
881 note_block instrument didgeridoo powered false note 16
882 note_block instrument didgeridoo powered true note 17
883 note_block instrument didgeridoo powered false note 17
884 note_block instrument didgeridoo powered true note 18
885 note_block instrument didgeridoo powered false note 18
886 note_block instrument didgeridoo powered true note 19
887 note_block instrument didgeridoo powered false note 19
888 note_block instrument didgeridoo powered true note 20
889 note_block instrument didgeridoo powered false note 20
890 note_block instrument didgeridoo powered true note 21
891 note_block instrument didgeridoo powered false note 21
892 note_block instrument didgeridoo powered true note 22
893 note_block instrument didgeridoo powered false note 22
894 note_block instrument didgeridoo powered true note 23
895 note_block instrument didgeridoo powered false note 23
896 note_block instrument didgeridoo powered true note 24
897 note_block instrument didgeridoo powered false note 24
898 note_block instrument bit powered true note 0
899 note_block instrument bit powered false note 0
900 note_block instrument bit powered true note 1
901 note_block instrument bit powered false note 1
902 note_block instrument bit powered true note 2
903 note_block instrument bit powered false note 2
904 note_block instrument bit powered true note 3
905 note_block instrument bit powered false note 3
906 note_block instrument bit powered true note 4
907 note_block instrument bit powered false note 4
908 note_block instrument bit powered true note 5
909 note_block instrument bit powered false note 5
910 note_block instrument bit powered true note 6
911 note_block instrument bit powered false note 6
912 note_block instrument bit powered true note 7
913 note_block instrument bit powered false note 7
914 note_block instrument bit powered true note 8
915 note_block instrument bit powered false note 8
916 note_block instrument bit powered true note 9
917 note_block instrument bit powered false note 9
918 note_block instrument bit powered true note 10
919 note_block instrument bit powered false note 10
920 note_block instrument bit powered true note 11
921 note_block instrument bit powered false note 11
922 note_block instrument bit powered true note 12
923 note_block instrument bit powered false note 12
924 note_block instrument bit powered true note 13
925 note_block instrument bit powered false note 13
926 note_block instrument bit powered true note 14
927 note_block instrument bit powered false note 14
928 note_block instrument bit powered true note 15
929 note_block instrument bit powered false note 15
930 note_block instrument bit powered true note 16
931 note_block instrument bit powered false note 16
932 note_block instrument bit powered true note 17
933 note_block instrument bit powered false note 17
934 note_block instrument bit powered true note 18
935 note_block instrument bit powered false note 18
936 note_block instrument bit powered true note 19
937 note_block instrument bit powered false note 19
938 note_block instrument bit powered true note 20
939 note_block instrument bit powered false note 20
940 note_block instrument bit powered true note 21
941 note_block instrument bit powered false note 21
942 note_block instrument bit powered true note 22
943 note_block instrument bit powered false note 22
944 note_block instrument bit powered true note 23
945 note_block instrument bit powered false note 23
946 note_block instrument bit powered true note 24
947 note_block instrument bit powered false note 24
948 note_block instrument banjo powered true note 0
949 note_block instrument banjo powered false note 0
950 note_block instrument banjo powered true note 1
951 note_block instrument banjo powered false note 1
952 note_block instrument banjo powered true note 2
953 note_block instrument banjo powered false note 2
954 note_block instrument banjo powered true note 3
955 note_block instrument banjo powered false note 3
956 note_block instrument banjo powered true note 4
957 note_block instrument banjo powered false note 4
958 note_block instrument banjo powered true note 5
959 note_block instrument banjo powered false note 5
960 note_block instrument banjo powered true note 6
961 note_block instrument banjo powered false note 6
962 note_block instrument banjo powered true note 7
963 note_block instrument banjo powered false note 7
964 note_block instrument banjo powered true note 8
965 note_block instrument banjo powered false note 8
966 note_block instrument banjo powered true note 9
967 note_block instrument banjo powered false note 9
968 note_block instrument banjo powered true note 10
969 note_block instrument banjo powered false note 10
970 note_block instrument banjo powered true note 11
971 note_block instrument banjo powered false note 11
972 note_block instrument banjo powered true note 12
973 note_block instrument banjo powered false note 12
974 note_block instrument banjo powered true note 13
975 note_block instrument banjo powered false note 13
976 note_block instrument banjo powered true note 14
977 note_block instrument banjo powered false note 14
978 note_block instrument banjo powered true note 15
979 note_block instrument banjo powered false note 15
980 note_block instrument banjo powered true note 16
981 note_block instrument banjo powered false note 16
982 note_block instrument banjo powered true note 17
983 note_block instrument banjo powered false note 17
984 note_block instrument banjo powered true note 18
985 note_block instrument banjo powered false note 18
986 note_block instrument banjo powered true note 19
987 note_block instrument banjo powered false note 19
988 note_block instrument banjo powered true note 20
989 note_block instrument banjo powered false note 20
990 note_block instrument banjo powered true note 21
991 note_block instrument banjo powered false note 21
992 note_block instrument banjo powered true note 22
993 note_block instrument banjo powered false note 22
994 note_block instrument banjo powered true note 23
995 note_block instrument banjo powered false note 23
996 note_block instrument banjo powered true note 24
997 note_block instrument banjo powered false note 24
998 note_block instrument pling powered true note 0
999 note_block instrument pling powered false note 0
1000 note_block instrument pling powered true note 1
1001 note_block instrument pling powered false note 1
1002 note_block instrument pling powered true note 2
1003 note_block instrument pling powered false note 2
1004 note_block instrument pling powered true note 3
1005 note_block instrument pling powered false note 3
1006 note_block instrument pling powered true note 4
1007 note_block instrument pling powered false note 4
1008 note_block instrument pling powered true note 5
1009 note_block instrument pling powered false note 5
1010 note_block instrument pling powered true note 6
1011 note_block instrument pling powered false note 6
1012 note_block instrument pling powered true note 7
1013 note_block instrument pling powered false note 7
1014 note_block instrument pling powered true note 8
1015 note_block instrument pling powered false note 8
1016 note_block instrument pling powered true note 9
1017 note_block instrument pling powered false note 9
1018 note_block instrument pling powered true note 10
1019 note_block instrument pling powered false note 10
1020 note_block instrument pling powered true note 11
1021 note_block instrument pling powered false note 11
1022 note_block instrument pling powered true note 12
1023 note_block instrument pling powered false note 12
1024 note_block instrument pling powered true note 13
1025 note_block instrument pling powered false note 13
1026 note_block instrument pling powered true note 14
1027 note_block instrument pling powered false note 14
1028 note_block instrument pling powered true note 15
1029 note_block instrument pling powered false note 15
1030 note_block instrument pling powered true note 16
1031 note_block instrument pling powered false note 16
1032 note_block instrument pling powered true note 17
1033 note_block instrument pling powered false note 17
1034 note_block instrument pling powered true note 18
1035 note_block instrument pling powered false note 18
1036 note_block instrument pling powered true note 19
1037 note_block instrument pling powered false note 19
1038 note_block instrument pling powered true note 20
1039 note_block instrument pling powered false note 20
1040 note_block instrument pling powered true note 21
1041 note_block instrument pling powered false note 21
1042 note_block instrument pling powered true note 22
1043 note_block instrument pling powered false note 22
1044 note_block instrument pling powered true note 23
1045 note_block instrument pling powered false note 23
1046 note_block instrument pling powered true note 24
1047 note_block instrument pling powered false note 24
1048 white_bed facing north occupied true part head
1049 white_bed facing north occupied true part foot
1050 white_bed facing north occupied false part head
1051 white_bed facing north occupied false part foot
1052 white_bed facing south occupied true part head
1053 white_bed facing south occupied true part foot
1054 white_bed facing south occupied false part head
1055 white_bed facing south occupied false part foot
1056 white_bed facing west occupied true part head
1057 white_bed facing west occupied true part foot
1058 white_bed facing west occupied false part head
1059 white_bed facing west occupied false part foot
1060 white_bed facing east occupied true part head
1061 white_bed facing east occupied true part foot
1062 white_bed facing east occupied false part head
1063 white_bed facing east occupied false part foot
1064 orange_bed facing north occupied true part head
1065 orange_bed facing north occupied true part foot
1066 orange_bed facing north occupied false part head
1067 orange_bed facing north occupied false part foot
1068 orange_bed facing south occupied true part head
1069 orange_bed facing south occupied true part foot
1070 orange_bed facing south occupied false part head
1071 orange_bed facing south occupied false part foot
1072 orange_bed facing west occupied true part head
1073 orange_bed facing west occupied true part foot
1074 orange_bed facing west occupied false part head
1075 orange_bed facing west occupied false part foot
1076 orange_bed facing east occupied true part head
1077 orange_bed facing east occupied true part foot
1078 orange_bed facing east occupied false part head
1079 orange_bed facing east occupied false part foot
1080 magenta_bed facing north occupied true part head
1081 magenta_bed facing north occupied true part foot
1082 magenta_bed facing north occupied false part head
1083 magenta_bed facing north occupied false part foot
1084 magenta_bed facing south occupied true part head
1085 magenta_bed facing south occupied true part foot
1086 magenta_bed facing south occupied false part head
1087 magenta_bed facing south occupied false part foot
1088 magenta_bed facing west occupied true part head
1089 magenta_bed facing west occupied true part foot
1090 magenta_bed facing west occupied false part head
1091 magenta_bed facing west occupied false part foot
1092 magenta_bed facing east occupied true part head
1093 magenta_bed facing east occupied true part foot
1094 magenta_bed facing east occupied false part head
1095 magenta_bed facing east occupied false part foot
1096 light_blue_bed facing north occupied true part head
1097 light_blue_bed facing north occupied true part foot
1098 light_blue_bed facing north occupied false part head
1099 light_blue_bed facing north occupied false part foot
1100 light_blue_bed facing south occupied true part head
1101 light_blue_bed facing south occupied true part foot
1102 light_blue_bed facing south occupied false part head
1103 light_blue_bed facing south occupied false part foot
1104 light_blue_bed facing west occupied true part head
1105 light_blue_bed facing west occupied true part foot
1106 light_blue_bed facing west occupied false part head
1107 light_blue_bed facing west occupied false part foot
1108 light_blue_bed facing east occupied true part head
1109 light_blue_bed facing east occupied true part foot
1110 light_blue_bed facing east occupied false part head
1111 light_blue_bed facing east occupied false part foot
1112 yellow_bed facing north occupied true part head
1113 yellow_bed facing north occupied true part foot
1114 yellow_bed facing north occupied false part head
1115 yellow_bed facing north occupied false part foot
1116 yellow_bed facing south occupied true part head
1117 yellow_bed facing south occupied true part foot
1118 yellow_bed facing south occupied false part head
1119 yellow_bed facing south occupied false part foot
1120 yellow_bed facing west occupied true part head
1121 yellow_bed facing west occupied true part foot
1122 yellow_bed facing west occupied false part head
1123 yellow_bed facing west occupied false part foot
1124 yellow_bed facing east occupied true part head
1125 yellow_bed facing east occupied true part foot
1126 yellow_bed facing east occupied false part head
1127 yellow_bed facing east occupied false part foot
1128 lime_bed facing north occupied true part head
1129 lime_bed facing north occupied true part foot
1130 lime_bed facing north occupied false part head
1131 lime_bed facing north occupied false part foot
1132 lime_bed facing south occupied true part head
1133 lime_bed facing south occupied true part foot
1134 lime_bed facing south occupied false part head
1135 lime_bed facing south occupied false part foot
1136 lime_bed facing west occupied true part head
1137 lime_bed facing west occupied true part foot
1138 lime_bed facing west occupied false part head
1139 lime_bed facing west occupied false part foot
1140 lime_bed facing east occupied true part head
1141 lime_bed facing east occupied true part foot
1142 lime_bed facing east occupied false part head
1143 lime_bed facing east occupied false part foot
1144 pink_bed facing north occupied true part head
1145 pink_bed facing north occupied true part foot
1146 pink_bed facing north occupied false part head
1147 pink_bed facing north occupied false part foot
1148 pink_bed facing south occupied true part head
1149 pink_bed facing south occupied true part foot
1150 pink_bed facing south occupied false part head
1151 pink_bed facing south occupied false part foot
1152 pink_bed facing west occupied true part head
1153 pink_bed facing west occupied true part foot
1154 pink_bed facing west occupied false part head
1155 pink_bed facing west occupied false part foot
1156 pink_bed facing east occupied true part head
1157 pink_bed facing east occupied true part foot
1158 pink_bed facing east occupied false part head
1159 pink_bed facing east occupied false part foot
1160 gray_bed facing north occupied true part head
1161 gray_bed facing north occupied true part foot
1162 gray_bed facing north occupied false part head
1163 gray_bed facing north occupied false part foot
1164 gray_bed facing south occupied true part head
1165 gray_bed facing south occupied true part foot
1166 gray_bed facing south occupied false part head
1167 gray_bed facing south occupied false part foot
1168 gray_bed facing west occupied true part head
1169 gray_bed facing west occupied true part foot
1170 gray_bed facing west occupied false part head
1171 gray_bed facing west occupied false part foot
1172 gray_bed facing east occupied true part head
1173 gray_bed facing east occupied true part foot
1174 gray_bed facing east occupied false part head
1175 gray_bed facing east occupied false part foot
1176 light_gray_bed facing north occupied true part head
1177 light_gray_bed facing north occupied true part foot
1178 light_gray_bed facing north occupied false part head
1179 light_gray_bed facing north occupied false part foot
1180 light_gray_bed facing south occupied true part head
1181 light_gray_bed facing south occupied true part foot
1182 light_gray_bed facing south occupied false part head
1183 light_gray_bed facing south occupied false part foot
1184 light_gray_bed facing west occupied true part head
1185 light_gray_bed facing west occupied true part foot
1186 light_gray_bed facing west occupied false part head
1187 light_gray_bed facing west occupied false part foot
1188 light_gray_bed facing east occupied true part head
1189 light_gray_bed facing east occupied true part foot
1190 light_gray_bed facing east occupied false part head
1191 light_gray_bed facing east occupied false part foot
1192 cyan_bed facing north occupied true part head
1193 cyan_bed facing north occupied true part foot
1194 cyan_bed facing north occupied false part head
1195 cyan_bed facing north occupied false part foot
1196 cyan_bed facing south occupied true part head
1197 cyan_bed facing south occupied true part foot
1198 cyan_bed facing south occupied false part head
1199 cyan_bed facing south occupied false part foot
1200 cyan_bed facing west occupied true part head
1201 cyan_bed facing west occupied true part foot
1202 cyan_bed facing west occupied false part head
1203 cyan_bed facing west occupied false part foot
1204 cyan_bed facing east occupied true part head
1205 cyan_bed facing east occupied true part foot
1206 cyan_bed facing east occupied false part head
1207 cyan_bed facing east occupied false part foot
1208 purple_bed facing north occupied true part head
1209 purple_bed facing north occupied true part foot
1210 purple_bed facing north occupied false part head
1211 purple_bed facing north occupied false part foot
1212 purple_bed facing south occupied true part head
1213 purple_bed facing south occupied true part foot
1214 purple_bed facing south occupied false part head
1215 purple_bed facing south occupied false part foot
1216 purple_bed facing west occupied true part head
1217 purple_bed facing west occupied true part foot
1218 purple_bed facing west occupied false part head
1219 purple_bed facing west occupied false part foot
1220 purple_bed facing east occupied true part head
1221 purple_bed facing east occupied true part foot
1222 purple_bed facing east occupied false part head
1223 purple_bed facing east occupied false part foot
1224 blue_bed facing north occupied true part head
1225 blue_bed facing north occupied true part foot
1226 blue_bed facing north occupied false part head
1227 blue_bed facing north occupied false part foot
1228 blue_bed facing south occupied true part head
1229 blue_bed facing south occupied true part foot
1230 blue_bed facing south occupied false part head
1231 blue_bed facing south occupied false part foot
1232 blue_bed facing west occupied true part head
1233 blue_bed facing west occupied true part foot
1234 blue_bed facing west occupied false part head
1235 blue_bed facing west occupied false part foot
1236 blue_bed facing east occupied true part head
1237 blue_bed facing east occupied true part foot
1238 blue_bed facing east occupied false part head
1239 blue_bed facing east occupied false part foot
1240 brown_bed facing north occupied true part head
1241 brown_bed facing north occupied true part foot
1242 brown_bed facing north occupied false part head
1243 brown_bed facing north occupied false part foot
1244 brown_bed facing south occupied true part head
1245 brown_bed facing south occupied true part foot
1246 brown_bed facing south occupied false part head
1247 brown_bed facing south occupied false part foot
1248 brown_bed facing west occupied true part head
1249 brown_bed facing west occupied true part foot
1250 brown_bed facing west occupied false part head
1251 brown_bed facing west occupied false part foot
1252 brown_bed facing east occupied true part head
1253 brown_bed facing east occupied true part foot
1254 brown_bed facing east occupied false part head
1255 brown_bed facing east occupied false part foot
1256 green_bed facing north occupied true part head
1257 green_bed facing north occupied true part foot
1258 green_bed facing north occupied false part head
1259 green_bed facing north occupied false part foot
1260 green_bed facing south occupied true part head
1261 green_bed facing south occupied true part foot
1262 green_bed facing south occupied false part head
1263 green_bed facing south occupied false part foot
1264 green_bed facing west occupied true part head
1265 green_bed facing west occupied true part foot
1266 green_bed facing west occupied false part head
1267 green_bed facing west occupied false part foot
1268 green_bed facing east occupied true part head
1269 green_bed facing east occupied true part foot
1270 green_bed facing east occupied false part head
1271 green_bed facing east occupied false part foot
1272 red_bed facing north occupied true part head
1273 red_bed facing north occupied true part foot
1274 red_bed facing north occupied false part head
1275 red_bed facing north occupied false part foot
1276 red_bed facing south occupied true part head
1277 red_bed facing south occupied true part foot
1278 red_bed facing south occupied false part head
1279 red_bed facing south occupied false part foot
1280 red_bed facing west occupied true part head
1281 red_bed facing west occupied true part foot
1282 red_bed facing west occupied false part head
1283 red_bed facing west occupied false part foot
1284 red_bed facing east occupied true part head
1285 red_bed facing east occupied true part foot
1286 red_bed facing east occupied false part head
1287 red_bed facing east occupied false part foot
1288 black_bed facing north occupied true part head
1289 black_bed facing north occupied true part foot
1290 black_bed facing north occupied false part head
1291 black_bed facing north occupied false part foot
1292 black_bed facing south occupied true part head
1293 black_bed facing south occupied true part foot
1294 black_bed facing south occupied false part head
1295 black_bed facing south occupied false part foot
1296 black_bed facing west occupied true part head
1297 black_bed facing west occupied true part foot
1298 black_bed facing west occupied false part head
1299 black_bed facing west occupied false part foot
1300 black_bed facing east occupied true part head
1301 black_bed facing east occupied true part foot
1302 black_bed facing east occupied false part head
1303 black_bed facing east occupied false part foot
1304 powered_rail shape north_south powered true
1305 powered_rail shape east_west powered true
1306 powered_rail shape ascending_east powered true
1307 powered_rail shape ascending_west powered true
1308 powered_rail shape ascending_north powered true
1309 powered_rail shape ascending_south powered true
1310 powered_rail shape north_south powered false
1311 powered_rail shape east_west powered false
1312 powered_rail shape ascending_east powered false
1313 powered_rail shape ascending_west powered false
1314 powered_rail shape ascending_north powered false
1315 powered_rail shape ascending_south powered false
1316 detector_rail shape north_south powered true
1317 detector_rail shape east_west powered true
1318 detector_rail shape ascending_east powered true
1319 detector_rail shape ascending_west powered true
1320 detector_rail shape ascending_north powered true
1321 detector_rail shape ascending_south powered true
1322 detector_rail shape north_south powered false
1323 detector_rail shape east_west powered false
1324 detector_rail shape ascending_east powered false
1325 detector_rail shape ascending_west powered false
1326 detector_rail shape ascending_north powered false
1327 detector_rail shape ascending_south powered false
1328 sticky_piston facing north extended true
1329 sticky_piston facing east extended true
1330 sticky_piston facing south extended true
1331 sticky_piston facing west extended true
1332 sticky_piston facing up extended true
1333 sticky_piston facing down extended true
1334 sticky_piston facing north extended false
1335 sticky_piston facing east extended false
1336 sticky_piston facing south extended false
1337 sticky_piston facing west extended false
1338 sticky_piston facing up extended false
1339 sticky_piston facing down extended false
1340 cobweb
1341 grass
1342 fern
1343 dead_bush
1344 seagrass
1345 tall_seagrass half upper
1346 tall_seagrass half lower
1347 piston facing north extended true
1348 piston facing east extended true
1349 piston facing south extended true
1350 piston facing west extended true
1351 piston facing up extended true
1352 piston facing down extended true
1353 piston facing north extended false
1354 piston facing east extended false
1355 piston facing south extended false
1356 piston facing west extended false
1357 piston facing up extended false
1358 piston facing down extended false
1359 piston_head facing north short true type normal
1360 piston_head facing north short true type sticky
1361 piston_head facing north short false type normal
1362 piston_head facing north short false type sticky
1363 piston_head facing east short true type normal
1364 piston_head facing east short true type sticky
1365 piston_head facing east short false type normal
1366 piston_head facing east short false type sticky
1367 piston_head facing south short true type normal
1368 piston_head facing south short true type sticky
1369 piston_head facing south short false type normal
1370 piston_head facing south short false type sticky
1371 piston_head facing west short true type normal
1372 piston_head facing west short true type sticky
1373 piston_head facing west short false type normal
1374 piston_head facing west short false type sticky
1375 piston_head facing up short true type normal
1376 piston_head facing up short true type sticky
1377 piston_head facing up short false type normal
1378 piston_head facing up short false type sticky
1379 piston_head facing down short true type normal
1380 piston_head facing down short true type sticky
1381 piston_head facing down short false type normal
1382 piston_head facing down short false type sticky
1383 white_wool
1384 orange_wool
1385 magenta_wool
1386 light_blue_wool
1387 yellow_wool
1388 lime_wool
1389 pink_wool
1390 gray_wool
1391 light_gray_wool
1392 cyan_wool
1393 purple_wool
1394 blue_wool
1395 brown_wool
1396 green_wool
1397 red_wool
1398 black_wool
1399 moving_piston facing north type normal
1400 moving_piston facing north type sticky
1401 moving_piston facing east type normal
1402 moving_piston facing east type sticky
1403 moving_piston facing south type normal
1404 moving_piston facing south type sticky
1405 moving_piston facing west type normal
1406 moving_piston facing west type sticky
1407 moving_piston facing up type normal
1408 moving_piston facing up type sticky
1409 moving_piston facing down type normal
1410 moving_piston facing down type sticky
1411 dandelion
1412 poppy
1413 blue_orchid
1414 allium
1415 azure_bluet
1416 red_tulip
1417 orange_tulip
1418 white_tulip
1419 pink_tulip
1420 oxeye_daisy
1421 cornflower
1422 wither_rose
1423 lily_of_the_valley
1424 brown_mushroom
1425 red_mushroom
1426 gold_block
1427 iron_block
1428 bricks
1429 tnt unstable true
1430 tnt unstable false
1431 bookshelf
1432 mossy_cobblestone
1433 obsidian
1434 torch
1435 wall_torch facing north
1436 wall_torch facing south
1437 wall_torch facing west
1438 wall_torch facing east
1439 fire north true south true east true age 0 up true west true
1440 fire north true south true east true age 0 up true west false
1441 fire north true south true east true age 0 up false west true
1442 fire north true south true east true age 0 up false west false
1443 fire north true south false east true age 0 up true west true
1444 fire north true south false east true age 0 up true west false
1445 fire north true south false east true age 0 up false west true
1446 fire north true south false east true age 0 up false west false
1447 fire north false south true east true age 0 up true west true
1448 fire north false south true east true age 0 up true west false
1449 fire north false south true east true age 0 up false west true
1450 fire north false south true east true age 0 up false west false
1451 fire north false south false east true age 0 up true west true
1452 fire north false south false east true age 0 up true west false
1453 fire north false south false east true age 0 up false west true
1454 fire north false south false east true age 0 up false west false
1455 fire north true south true east false age 0 up true west true
1456 fire north true south true east false age 0 up true west false
1457 fire north true south true east false age 0 up false west true
1458 fire north true south true east false age 0 up false west false
1459 fire north true south false east false age 0 up true west true
1460 fire north true south false east false age 0 up true west false
1461 fire north true south false east false age 0 up false west true
1462 fire north true south false east false age 0 up false west false
1463 fire north false south true east false age 0 up true west true
1464 fire north false south true east false age 0 up true west false
1465 fire north false south true east false age 0 up false west true
1466 fire north false south true east false age 0 up false west false
1467 fire north false south false east false age 0 up true west true
1468 fire north false south false east false age 0 up true west false
1469 fire north false south false east false age 0 up false west true
1470 fire north false south false east false age 0 up false west false
1471 fire north true south true east true age 1 up true west true
1472 fire north true south true east true age 1 up true west false
1473 fire north true south true east true age 1 up false west true
1474 fire north true south true east true age 1 up false west false
1475 fire north true south false east true age 1 up true west true
1476 fire north true south false east true age 1 up true west false
1477 fire north true south false east true age 1 up false west true
1478 fire north true south false east true age 1 up false west false
1479 fire north false south true east true age 1 up true west true
1480 fire north false south true east true age 1 up true west false
1481 fire north false south true east true age 1 up false west true
1482 fire north false south true east true age 1 up false west false
1483 fire north false south false east true age 1 up true west true
1484 fire north false south false east true age 1 up true west false
1485 fire north false south false east true age 1 up false west true
1486 fire north false south false east true age 1 up false west false
1487 fire north true south true east false age 1 up true west true
1488 fire north true south true east false age 1 up true west false
1489 fire north true south true east false age 1 up false west true
1490 fire north true south true east false age 1 up false west false
1491 fire north true south false east false age 1 up true west true
1492 fire north true south false east false age 1 up true west false
1493 fire north true south false east false age 1 up false west true
1494 fire north true south false east false age 1 up false west false
1495 fire north false south true east false age 1 up true west true
1496 fire north false south true east false age 1 up true west false
1497 fire north false south true east false age 1 up false west true
1498 fire north false south true east false age 1 up false west false
1499 fire north false south false east false age 1 up true west true
1500 fire north false south false east false age 1 up true west false
1501 fire north false south false east false age 1 up false west true
1502 fire north false south false east false age 1 up false west false
1503 fire north true south true east true age 2 up true west true
1504 fire north true south true east true age 2 up true west false
1505 fire north true south true east true age 2 up false west true
1506 fire north true south true east true age 2 up false west false
1507 fire north true south false east true age 2 up true west true
1508 fire north true south false east true age 2 up true west false
1509 fire north true south false east true age 2 up false west true
1510 fire north true south false east true age 2 up false west false
1511 fire north false south true east true age 2 up true west true
1512 fire north false south true east true age 2 up true west false
1513 fire north false south true east true age 2 up false west true
1514 fire north false south true east true age 2 up false west false
1515 fire north false south false east true age 2 up true west true
1516 fire north false south false east true age 2 up true west false
1517 fire north false south false east true age 2 up false west true
1518 fire north false south false east true age 2 up false west false
1519 fire north true south true east false age 2 up true west true
1520 fire north true south true east false age 2 up true west false
1521 fire north true south true east false age 2 up false west true
1522 fire north true south true east false age 2 up false west false
1523 fire north true south false east false age 2 up true west true
1524 fire north true south false east false age 2 up true west false
1525 fire north true south false east false age 2 up false west true
1526 fire north true south false east false age 2 up false west false
1527 fire north false south true east false age 2 up true west true
1528 fire north false south true east false age 2 up true west false
1529 fire north false south true east false age 2 up false west true
1530 fire north false south true east false age 2 up false west false
1531 fire north false south false east false age 2 up true west true
1532 fire north false south false east false age 2 up true west false
1533 fire north false south false east false age 2 up false west true
1534 fire north false south false east false age 2 up false west false
1535 fire north true south true east true age 3 up true west true
1536 fire north true south true east true age 3 up true west false
1537 fire north true south true east true age 3 up false west true
1538 fire north true south true east true age 3 up false west false
1539 fire north true south false east true age 3 up true west true
1540 fire north true south false east true age 3 up true west false
1541 fire north true south false east true age 3 up false west true
1542 fire north true south false east true age 3 up false west false
1543 fire north false south true east true age 3 up true west true
1544 fire north false south true east true age 3 up true west false
1545 fire north false south true east true age 3 up false west true
1546 fire north false south true east true age 3 up false west false
1547 fire north false south false east true age 3 up true west true
1548 fire north false south false east true age 3 up true west false
1549 fire north false south false east true age 3 up false west true
1550 fire north false south false east true age 3 up false west false
1551 fire north true south true east false age 3 up true west true
1552 fire north true south true east false age 3 up true west false
1553 fire north true south true east false age 3 up false west true
1554 fire north true south true east false age 3 up false west false
1555 fire north true south false east false age 3 up true west true
1556 fire north true south false east false age 3 up true west false
1557 fire north true south false east false age 3 up false west true
1558 fire north true south false east false age 3 up false west false
1559 fire north false south true east false age 3 up true west true
1560 fire north false south true east false age 3 up true west false
1561 fire north false south true east false age 3 up false west true
1562 fire north false south true east false age 3 up false west false
1563 fire north false south false east false age 3 up true west true
1564 fire north false south false east false age 3 up true west false
1565 fire north false south false east false age 3 up false west true
1566 fire north false south false east false age 3 up false west false
1567 fire north true south true east true age 4 up true west true
1568 fire north true south true east true age 4 up true west false
1569 fire north true south true east true age 4 up false west true
1570 fire north true south true east true age 4 up false west false
1571 fire north true south false east true age 4 up true west true
1572 fire north true south false east true age 4 up true west false
1573 fire north true south false east true age 4 up false west true
1574 fire north true south false east true age 4 up false west false
1575 fire north false south true east true age 4 up true west true
1576 fire north false south true east true age 4 up true west false
1577 fire north false south true east true age 4 up false west true
1578 fire north false south true east true age 4 up false west false
1579 fire north false south false east true age 4 up true west true
1580 fire north false south false east true age 4 up true west false
1581 fire north false south false east true age 4 up false west true
1582 fire north false south false east true age 4 up false west false
1583 fire north true south true east false age 4 up true west true
1584 fire north true south true east false age 4 up true west false
1585 fire north true south true east false age 4 up false west true
1586 fire north true south true east false age 4 up false west false
1587 fire north true south false east false age 4 up true west true
1588 fire north true south false east false age 4 up true west false
1589 fire north true south false east false age 4 up false west true
1590 fire north true south false east false age 4 up false west false
1591 fire north false south true east false age 4 up true west true
1592 fire north false south true east false age 4 up true west false
1593 fire north false south true east false age 4 up false west true
1594 fire north false south true east false age 4 up false west false
1595 fire north false south false east false age 4 up true west true
1596 fire north false south false east false age 4 up true west false
1597 fire north false south false east false age 4 up false west true
1598 fire north false south false east false age 4 up false west false
1599 fire north true south true east true age 5 up true west true
1600 fire north true south true east true age 5 up true west false
1601 fire north true south true east true age 5 up false west true
1602 fire north true south true east true age 5 up false west false
1603 fire north true south false east true age 5 up true west true
1604 fire north true south false east true age 5 up true west false
1605 fire north true south false east true age 5 up false west true
1606 fire north true south false east true age 5 up false west false
1607 fire north false south true east true age 5 up true west true
1608 fire north false south true east true age 5 up true west false
1609 fire north false south true east true age 5 up false west true
1610 fire north false south true east true age 5 up false west false
1611 fire north false south false east true age 5 up true west true
1612 fire north false south false east true age 5 up true west false
1613 fire north false south false east true age 5 up false west true
1614 fire north false south false east true age 5 up false west false
1615 fire north true south true east false age 5 up true west true
1616 fire north true south true east false age 5 up true west false
1617 fire north true south true east false age 5 up false west true
1618 fire north true south true east false age 5 up false west false
1619 fire north true south false east false age 5 up true west true
1620 fire north true south false east false age 5 up true west false
1621 fire north true south false east false age 5 up false west true
1622 fire north true south false east false age 5 up false west false
1623 fire north false south true east false age 5 up true west true
1624 fire north false south true east false age 5 up true west false
1625 fire north false south true east false age 5 up false west true
1626 fire north false south true east false age 5 up false west false
1627 fire north false south false east false age 5 up true west true
1628 fire north false south false east false age 5 up true west false
1629 fire north false south false east false age 5 up false west true
1630 fire north false south false east false age 5 up false west false
1631 fire north true south true east true age 6 up true west true
1632 fire north true south true east true age 6 up true west false
1633 fire north true south true east true age 6 up false west true
1634 fire north true south true east true age 6 up false west false
1635 fire north true south false east true age 6 up true west true
1636 fire north true south false east true age 6 up true west false
1637 fire north true south false east true age 6 up false west true
1638 fire north true south false east true age 6 up false west false
1639 fire north false south true east true age 6 up true west true
1640 fire north false south true east true age 6 up true west false
1641 fire north false south true east true age 6 up false west true
1642 fire north false south true east true age 6 up false west false
1643 fire north false south false east true age 6 up true west true
1644 fire north false south false east true age 6 up true west false
1645 fire north false south false east true age 6 up false west true
1646 fire north false south false east true age 6 up false west false
1647 fire north true south true east false age 6 up true west true
1648 fire north true south true east false age 6 up true west false
1649 fire north true south true east false age 6 up false west true
1650 fire north true south true east false age 6 up false west false
1651 fire north true south false east false age 6 up true west true
1652 fire north true south false east false age 6 up true west false
1653 fire north true south false east false age 6 up false west true
1654 fire north true south false east false age 6 up false west false
1655 fire north false south true east false age 6 up true west true
1656 fire north false south true east false age 6 up true west false
1657 fire north false south true east false age 6 up false west true
1658 fire north false south true east false age 6 up false west false
1659 fire north false south false east false age 6 up true west true
1660 fire north false south false east false age 6 up true west false
1661 fire north false south false east false age 6 up false west true
1662 fire north false south false east false age 6 up false west false
1663 fire north true south true east true age 7 up true west true
1664 fire north true south true east true age 7 up true west false
1665 fire north true south true east true age 7 up false west true
1666 fire north true south true east true age 7 up false west false
1667 fire north true south false east true age 7 up true west true
1668 fire north true south false east true age 7 up true west false
1669 fire north true south false east true age 7 up false west true
1670 fire north true south false east true age 7 up false west false
1671 fire north false south true east true age 7 up true west true
1672 fire north false south true east true age 7 up true west false
1673 fire north false south true east true age 7 up false west true
1674 fire north false south true east true age 7 up false west false
1675 fire north false south false east true age 7 up true west true
1676 fire north false south false east true age 7 up true west false
1677 fire north false south false east true age 7 up false west true
1678 fire north false south false east true age 7 up false west false
1679 fire north true south true east false age 7 up true west true
1680 fire north true south true east false age 7 up true west false
1681 fire north true south true east false age 7 up false west true
1682 fire north true south true east false age 7 up false west false
1683 fire north true south false east false age 7 up true west true
1684 fire north true south false east false age 7 up true west false
1685 fire north true south false east false age 7 up false west true
1686 fire north true south false east false age 7 up false west false
1687 fire north false south true east false age 7 up true west true
1688 fire north false south true east false age 7 up true west false
1689 fire north false south true east false age 7 up false west true
1690 fire north false south true east false age 7 up false west false
1691 fire north false south false east false age 7 up true west true
1692 fire north false south false east false age 7 up true west false
1693 fire north false south false east false age 7 up false west true
1694 fire north false south false east false age 7 up false west false
1695 fire north true south true east true age 8 up true west true
1696 fire north true south true east true age 8 up true west false
1697 fire north true south true east true age 8 up false west true
1698 fire north true south true east true age 8 up false west false
1699 fire north true south false east true age 8 up true west true
1700 fire north true south false east true age 8 up true west false
1701 fire north true south false east true age 8 up false west true
1702 fire north true south false east true age 8 up false west false
1703 fire north false south true east true age 8 up true west true
1704 fire north false south true east true age 8 up true west false
1705 fire north false south true east true age 8 up false west true
1706 fire north false south true east true age 8 up false west false
1707 fire north false south false east true age 8 up true west true
1708 fire north false south false east true age 8 up true west false
1709 fire north false south false east true age 8 up false west true
1710 fire north false south false east true age 8 up false west false
1711 fire north true south true east false age 8 up true west true
1712 fire north true south true east false age 8 up true west false
1713 fire north true south true east false age 8 up false west true
1714 fire north true south true east false age 8 up false west false
1715 fire north true south false east false age 8 up true west true
1716 fire north true south false east false age 8 up true west false
1717 fire north true south false east false age 8 up false west true
1718 fire north true south false east false age 8 up false west false
1719 fire north false south true east false age 8 up true west true
1720 fire north false south true east false age 8 up true west false
1721 fire north false south true east false age 8 up false west true
1722 fire north false south true east false age 8 up false west false
1723 fire north false south false east false age 8 up true west true
1724 fire north false south false east false age 8 up true west false
1725 fire north false south false east false age 8 up false west true
1726 fire north false south false east false age 8 up false west false
1727 fire north true south true east true age 9 up true west true
1728 fire north true south true east true age 9 up true west false
1729 fire north true south true east true age 9 up false west true
1730 fire north true south true east true age 9 up false west false
1731 fire north true south false east true age 9 up true west true
1732 fire north true south false east true age 9 up true west false
1733 fire north true south false east true age 9 up false west true
1734 fire north true south false east true age 9 up false west false
1735 fire north false south true east true age 9 up true west true
1736 fire north false south true east true age 9 up true west false
1737 fire north false south true east true age 9 up false west true
1738 fire north false south true east true age 9 up false west false
1739 fire north false south false east true age 9 up true west true
1740 fire north false south false east true age 9 up true west false
1741 fire north false south false east true age 9 up false west true
1742 fire north false south false east true age 9 up false west false
1743 fire north true south true east false age 9 up true west true
1744 fire north true south true east false age 9 up true west false
1745 fire north true south true east false age 9 up false west true
1746 fire north true south true east false age 9 up false west false
1747 fire north true south false east false age 9 up true west true
1748 fire north true south false east false age 9 up true west false
1749 fire north true south false east false age 9 up false west true
1750 fire north true south false east false age 9 up false west false
1751 fire north false south true east false age 9 up true west true
1752 fire north false south true east false age 9 up true west false
1753 fire north false south true east false age 9 up false west true
1754 fire north false south true east false age 9 up false west false
1755 fire north false south false east false age 9 up true west true
1756 fire north false south false east false age 9 up true west false
1757 fire north false south false east false age 9 up false west true
1758 fire north false south false east false age 9 up false west false
1759 fire north true south true east true age 10 up true west true
1760 fire north true south true east true age 10 up true west false
1761 fire north true south true east true age 10 up false west true
1762 fire north true south true east true age 10 up false west false
1763 fire north true south false east true age 10 up true west true
1764 fire north true south false east true age 10 up true west false
1765 fire north true south false east true age 10 up false west true
1766 fire north true south false east true age 10 up false west false
1767 fire north false south true east true age 10 up true west true
1768 fire north false south true east true age 10 up true west false
1769 fire north false south true east true age 10 up false west true
1770 fire north false south true east true age 10 up false west false
1771 fire north false south false east true age 10 up true west true
1772 fire north false south false east true age 10 up true west false
1773 fire north false south false east true age 10 up false west true
1774 fire north false south false east true age 10 up false west false
1775 fire north true south true east false age 10 up true west true
1776 fire north true south true east false age 10 up true west false
1777 fire north true south true east false age 10 up false west true
1778 fire north true south true east false age 10 up false west false
1779 fire north true south false east false age 10 up true west true
1780 fire north true south false east false age 10 up true west false
1781 fire north true south false east false age 10 up false west true
1782 fire north true south false east false age 10 up false west false
1783 fire north false south true east false age 10 up true west true
1784 fire north false south true east false age 10 up true west false
1785 fire north false south true east false age 10 up false west true
1786 fire north false south true east false age 10 up false west false
1787 fire north false south false east false age 10 up true west true
1788 fire north false south false east false age 10 up true west false
1789 fire north false south false east false age 10 up false west true
1790 fire north false south false east false age 10 up false west false
1791 fire north true south true east true age 11 up true west true
1792 fire north true south true east true age 11 up true west false
1793 fire north true south true east true age 11 up false west true
1794 fire north true south true east true age 11 up false west false
1795 fire north true south false east true age 11 up true west true
1796 fire north true south false east true age 11 up true west false
1797 fire north true south false east true age 11 up false west true
1798 fire north true south false east true age 11 up false west false
1799 fire north false south true east true age 11 up true west true
1800 fire north false south true east true age 11 up true west false
1801 fire north false south true east true age 11 up false west true
1802 fire north false south true east true age 11 up false west false
1803 fire north false south false east true age 11 up true west true
1804 fire north false south false east true age 11 up true west false
1805 fire north false south false east true age 11 up false west true
1806 fire north false south false east true age 11 up false west false
1807 fire north true south true east false age 11 up true west true
1808 fire north true south true east false age 11 up true west false
1809 fire north true south true east false age 11 up false west true
1810 fire north true south true east false age 11 up false west false
1811 fire north true south false east false age 11 up true west true
1812 fire north true south false east false age 11 up true west false
1813 fire north true south false east false age 11 up false west true
1814 fire north true south false east false age 11 up false west false
1815 fire north false south true east false age 11 up true west true
1816 fire north false south true east false age 11 up true west false
1817 fire north false south true east false age 11 up false west true
1818 fire north false south true east false age 11 up false west false
1819 fire north false south false east false age 11 up true west true
1820 fire north false south false east false age 11 up true west false
1821 fire north false south false east false age 11 up false west true
1822 fire north false south false east false age 11 up false west false
1823 fire north true south true east true age 12 up true west true
1824 fire north true south true east true age 12 up true west false
1825 fire north true south true east true age 12 up false west true
1826 fire north true south true east true age 12 up false west false
1827 fire north true south false east true age 12 up true west true
1828 fire north true south false east true age 12 up true west false
1829 fire north true south false east true age 12 up false west true
1830 fire north true south false east true age 12 up false west false
1831 fire north false south true east true age 12 up true west true
1832 fire north false south true east true age 12 up true west false
1833 fire north false south true east true age 12 up false west true
1834 fire north false south true east true age 12 up false west false
1835 fire north false south false east true age 12 up true west true
1836 fire north false south false east true age 12 up true west false
1837 fire north false south false east true age 12 up false west true
1838 fire north false south false east true age 12 up false west false
1839 fire north true south true east false age 12 up true west true
1840 fire north true south true east false age 12 up true west false
1841 fire north true south true east false age 12 up false west true
1842 fire north true south true east false age 12 up false west false
1843 fire north true south false east false age 12 up true west true
1844 fire north true south false east false age 12 up true west false
1845 fire north true south false east false age 12 up false west true
1846 fire north true south false east false age 12 up false west false
1847 fire north false south true east false age 12 up true west true
1848 fire north false south true east false age 12 up true west false
1849 fire north false south true east false age 12 up false west true
1850 fire north false south true east false age 12 up false west false
1851 fire north false south false east false age 12 up true west true
1852 fire north false south false east false age 12 up true west false
1853 fire north false south false east false age 12 up false west true
1854 fire north false south false east false age 12 up false west false
1855 fire north true south true east true age 13 up true west true
1856 fire north true south true east true age 13 up true west false
1857 fire north true south true east true age 13 up false west true
1858 fire north true south true east true age 13 up false west false
1859 fire north true south false east true age 13 up true west true
1860 fire north true south false east true age 13 up true west false
1861 fire north true south false east true age 13 up false west true
1862 fire north true south false east true age 13 up false west false
1863 fire north false south true east true age 13 up true west true
1864 fire north false south true east true age 13 up true west false
1865 fire north false south true east true age 13 up false west true
1866 fire north false south true east true age 13 up false west false
1867 fire north false south false east true age 13 up true west true
1868 fire north false south false east true age 13 up true west false
1869 fire north false south false east true age 13 up false west true
1870 fire north false south false east true age 13 up false west false
1871 fire north true south true east false age 13 up true west true
1872 fire north true south true east false age 13 up true west false
1873 fire north true south true east false age 13 up false west true
1874 fire north true south true east false age 13 up false west false
1875 fire north true south false east false age 13 up true west true
1876 fire north true south false east false age 13 up true west false
1877 fire north true south false east false age 13 up false west true
1878 fire north true south false east false age 13 up false west false
1879 fire north false south true east false age 13 up true west true
1880 fire north false south true east false age 13 up true west false
1881 fire north false south true east false age 13 up false west true
1882 fire north false south true east false age 13 up false west false
1883 fire north false south false east false age 13 up true west true
1884 fire north false south false east false age 13 up true west false
1885 fire north false south false east false age 13 up false west true
1886 fire north false south false east false age 13 up false west false
1887 fire north true south true east true age 14 up true west true
1888 fire north true south true east true age 14 up true west false
1889 fire north true south true east true age 14 up false west true
1890 fire north true south true east true age 14 up false west false
1891 fire north true south false east true age 14 up true west true
1892 fire north true south false east true age 14 up true west false
1893 fire north true south false east true age 14 up false west true
1894 fire north true south false east true age 14 up false west false
1895 fire north false south true east true age 14 up true west true
1896 fire north false south true east true age 14 up true west false
1897 fire north false south true east true age 14 up false west true
1898 fire north false south true east true age 14 up false west false
1899 fire north false south false east true age 14 up true west true
1900 fire north false south false east true age 14 up true west false
1901 fire north false south false east true age 14 up false west true
1902 fire north false south false east true age 14 up false west false
1903 fire north true south true east false age 14 up true west true
1904 fire north true south true east false age 14 up true west false
1905 fire north true south true east false age 14 up false west true
1906 fire north true south true east false age 14 up false west false
1907 fire north true south false east false age 14 up true west true
1908 fire north true south false east false age 14 up true west false
1909 fire north true south false east false age 14 up false west true
1910 fire north true south false east false age 14 up false west false
1911 fire north false south true east false age 14 up true west true
1912 fire north false south true east false age 14 up true west false
1913 fire north false south true east false age 14 up false west true
1914 fire north false south true east false age 14 up false west false
1915 fire north false south false east false age 14 up true west true
1916 fire north false south false east false age 14 up true west false
1917 fire north false south false east false age 14 up false west true
1918 fire north false south false east false age 14 up false west false
1919 fire north true south true east true age 15 up true west true
1920 fire north true south true east true age 15 up true west false
1921 fire north true south true east true age 15 up false west true
1922 fire north true south true east true age 15 up false west false
1923 fire north true south false east true age 15 up true west true
1924 fire north true south false east true age 15 up true west false
1925 fire north true south false east true age 15 up false west true
1926 fire north true south false east true age 15 up false west false
1927 fire north false south true east true age 15 up true west true
1928 fire north false south true east true age 15 up true west false
1929 fire north false south true east true age 15 up false west true
1930 fire north false south true east true age 15 up false west false
1931 fire north false south false east true age 15 up true west true
1932 fire north false south false east true age 15 up true west false
1933 fire north false south false east true age 15 up false west true
1934 fire north false south false east true age 15 up false west false
1935 fire north true south true east false age 15 up true west true
1936 fire north true south true east false age 15 up true west false
1937 fire north true south true east false age 15 up false west true
1938 fire north true south true east false age 15 up false west false
1939 fire north true south false east false age 15 up true west true
1940 fire north true south false east false age 15 up true west false
1941 fire north true south false east false age 15 up false west true
1942 fire north true south false east false age 15 up false west false
1943 fire north false south true east false age 15 up true west true
1944 fire north false south true east false age 15 up true west false
1945 fire north false south true east false age 15 up false west true
1946 fire north false south true east false age 15 up false west false
1947 fire north false south false east false age 15 up true west true
1948 fire north false south false east false age 15 up true west false
1949 fire north false south false east false age 15 up false west true
1950 fire north false south false east false age 15 up false west false
1951 spawner
1952 oak_stairs facing north waterlogged true shape straight half top
1953 oak_stairs facing north waterlogged false shape straight half top
1954 oak_stairs facing north waterlogged true shape inner_left half top
1955 oak_stairs facing north waterlogged false shape inner_left half top
1956 oak_stairs facing north waterlogged true shape inner_right half top
1957 oak_stairs facing north waterlogged false shape inner_right half top
1958 oak_stairs facing north waterlogged true shape outer_left half top
1959 oak_stairs facing north waterlogged false shape outer_left half top
1960 oak_stairs facing north waterlogged true shape outer_right half top
1961 oak_stairs facing north waterlogged false shape outer_right half top
1962 oak_stairs facing north waterlogged true shape straight half bottom
1963 oak_stairs facing north waterlogged false shape straight half bottom
1964 oak_stairs facing north waterlogged true shape inner_left half bottom
1965 oak_stairs facing north waterlogged false shape inner_left half bottom
1966 oak_stairs facing north waterlogged true shape inner_right half bottom
1967 oak_stairs facing north waterlogged false shape inner_right half bottom
1968 oak_stairs facing north waterlogged true shape outer_left half bottom
1969 oak_stairs facing north waterlogged false shape outer_left half bottom
1970 oak_stairs facing north waterlogged true shape outer_right half bottom
1971 oak_stairs facing north waterlogged false shape outer_right half bottom
1972 oak_stairs facing south waterlogged true shape straight half top
1973 oak_stairs facing south waterlogged false shape straight half top
1974 oak_stairs facing south waterlogged true shape inner_left half top
1975 oak_stairs facing south waterlogged false shape inner_left half top
1976 oak_stairs facing south waterlogged true shape inner_right half top
1977 oak_stairs facing south waterlogged false shape inner_right half top
1978 oak_stairs facing south waterlogged true shape outer_left half top
1979 oak_stairs facing south waterlogged false shape outer_left half top
1980 oak_stairs facing south waterlogged true shape outer_right half top
1981 oak_stairs facing south waterlogged false shape outer_right half top
1982 oak_stairs facing south waterlogged true shape straight half bottom
1983 oak_stairs facing south waterlogged false shape straight half bottom
1984 oak_stairs facing south waterlogged true shape inner_left half bottom
1985 oak_stairs facing south waterlogged false shape inner_left half bottom
1986 oak_stairs facing south waterlogged true shape inner_right half bottom
1987 oak_stairs facing south waterlogged false shape inner_right half bottom
1988 oak_stairs facing south waterlogged true shape outer_left half bottom
1989 oak_stairs facing south waterlogged false shape outer_left half bottom
1990 oak_stairs facing south waterlogged true shape outer_right half bottom
1991 oak_stairs facing south waterlogged false shape outer_right half bottom
1992 oak_stairs facing west waterlogged true shape straight half top
1993 oak_stairs facing west waterlogged false shape straight half top
1994 oak_stairs facing west waterlogged true shape inner_left half top
1995 oak_stairs facing west waterlogged false shape inner_left half top
1996 oak_stairs facing west waterlogged true shape inner_right half top
1997 oak_stairs facing west waterlogged false shape inner_right half top
1998 oak_stairs facing west waterlogged true shape outer_left half top
1999 oak_stairs facing west waterlogged false shape outer_left half top
2000 oak_stairs facing west waterlogged true shape outer_right half top
2001 oak_stairs facing west waterlogged false shape outer_right half top
2002 oak_stairs facing west waterlogged true shape straight half bottom
2003 oak_stairs facing west waterlogged false shape straight half bottom
2004 oak_stairs facing west waterlogged true shape inner_left half bottom
2005 oak_stairs facing west waterlogged false shape inner_left half bottom
2006 oak_stairs facing west waterlogged true shape inner_right half bottom
2007 oak_stairs facing west waterlogged false shape inner_right half bottom
2008 oak_stairs facing west waterlogged true shape outer_left half bottom
2009 oak_stairs facing west waterlogged false shape outer_left half bottom
2010 oak_stairs facing west waterlogged true shape outer_right half bottom
2011 oak_stairs facing west waterlogged false shape outer_right half bottom
2012 oak_stairs facing east waterlogged true shape straight half top
2013 oak_stairs facing east waterlogged false shape straight half top
2014 oak_stairs facing east waterlogged true shape inner_left half top
2015 oak_stairs facing east waterlogged false shape inner_left half top
2016 oak_stairs facing east waterlogged true shape inner_right half top
2017 oak_stairs facing east waterlogged false shape inner_right half top
2018 oak_stairs facing east waterlogged true shape outer_left half top
2019 oak_stairs facing east waterlogged false shape outer_left half top
2020 oak_stairs facing east waterlogged true shape outer_right half top
2021 oak_stairs facing east waterlogged false shape outer_right half top
2022 oak_stairs facing east waterlogged true shape straight half bottom
2023 oak_stairs facing east waterlogged false shape straight half bottom
2024 oak_stairs facing east waterlogged true shape inner_left half bottom
2025 oak_stairs facing east waterlogged false shape inner_left half bottom
2026 oak_stairs facing east waterlogged true shape inner_right half bottom
2027 oak_stairs facing east waterlogged false shape inner_right half bottom
2028 oak_stairs facing east waterlogged true shape outer_left half bottom
2029 oak_stairs facing east waterlogged false shape outer_left half bottom
2030 oak_stairs facing east waterlogged true shape outer_right half bottom
2031 oak_stairs facing east waterlogged false shape outer_right half bottom
2032 chest facing north waterlogged true type single
2033 chest facing north waterlogged false type single
2034 chest facing north waterlogged true type left
2035 chest facing north waterlogged false type left
2036 chest facing north waterlogged true type right
2037 chest facing north waterlogged false type right
2038 chest facing south waterlogged true type single
2039 chest facing south waterlogged false type single
2040 chest facing south waterlogged true type left
2041 chest facing south waterlogged false type left
2042 chest facing south waterlogged true type right
2043 chest facing south waterlogged false type right
2044 chest facing west waterlogged true type single
2045 chest facing west waterlogged false type single
2046 chest facing west waterlogged true type left
2047 chest facing west waterlogged false type left
2048 chest facing west waterlogged true type right
2049 chest facing west waterlogged false type right
2050 chest facing east waterlogged true type single
2051 chest facing east waterlogged false type single
2052 chest facing east waterlogged true type left
2053 chest facing east waterlogged false type left
2054 chest facing east waterlogged true type right
2055 chest facing east waterlogged false type right
2056 redstone_wire south up east up north up power 0 west up
2057 redstone_wire south up east up north up power 0 west side
2058 redstone_wire south up east up north up power 0 west none
2059 redstone_wire south side east up north up power 0 west up
2060 redstone_wire south side east up north up power 0 west side
2061 redstone_wire south side east up north up power 0 west none
2062 redstone_wire south none east up north up power 0 west up
2063 redstone_wire south none east up north up power 0 west side
2064 redstone_wire south none east up north up power 0 west none
2065 redstone_wire south up east up north up power 1 west up
2066 redstone_wire south up east up north up power 1 west side
2067 redstone_wire south up east up north up power 1 west none
2068 redstone_wire south side east up north up power 1 west up
2069 redstone_wire south side east up north up power 1 west side
2070 redstone_wire south side east up north up power 1 west none
2071 redstone_wire south none east up north up power 1 west up
2072 redstone_wire south none east up north up power 1 west side
2073 redstone_wire south none east up north up power 1 west none
2074 redstone_wire south up east up north up power 2 west up
2075 redstone_wire south up east up north up power 2 west side
2076 redstone_wire south up east up north up power 2 west none
2077 redstone_wire south side east up north up power 2 west up
2078 redstone_wire south side east up north up power 2 west side
2079 redstone_wire south side east up north up power 2 west none
2080 redstone_wire south none east up north up power 2 west up
2081 redstone_wire south none east up north up power 2 west side
2082 redstone_wire south none east up north up power 2 west none
2083 redstone_wire south up east up north up power 3 west up
2084 redstone_wire south up east up north up power 3 west side
2085 redstone_wire south up east up north up power 3 west none
2086 redstone_wire south side east up north up power 3 west up
2087 redstone_wire south side east up north up power 3 west side
2088 redstone_wire south side east up north up power 3 west none
2089 redstone_wire south none east up north up power 3 west up
2090 redstone_wire south none east up north up power 3 west side
2091 redstone_wire south none east up north up power 3 west none
2092 redstone_wire south up east up north up power 4 west up
2093 redstone_wire south up east up north up power 4 west side
2094 redstone_wire south up east up north up power 4 west none
2095 redstone_wire south side east up north up power 4 west up
2096 redstone_wire south side east up north up power 4 west side
2097 redstone_wire south side east up north up power 4 west none
2098 redstone_wire south none east up north up power 4 west up
2099 redstone_wire south none east up north up power 4 west side
2100 redstone_wire south none east up north up power 4 west none
2101 redstone_wire south up east up north up power 5 west up
2102 redstone_wire south up east up north up power 5 west side
2103 redstone_wire south up east up north up power 5 west none
2104 redstone_wire south side east up north up power 5 west up
2105 redstone_wire south side east up north up power 5 west side
2106 redstone_wire south side east up north up power 5 west none
2107 redstone_wire south none east up north up power 5 west up
2108 redstone_wire south none east up north up power 5 west side
2109 redstone_wire south none east up north up power 5 west none
2110 redstone_wire south up east up north up power 6 west up
2111 redstone_wire south up east up north up power 6 west side
2112 redstone_wire south up east up north up power 6 west none
2113 redstone_wire south side east up north up power 6 west up
2114 redstone_wire south side east up north up power 6 west side
2115 redstone_wire south side east up north up power 6 west none
2116 redstone_wire south none east up north up power 6 west up
2117 redstone_wire south none east up north up power 6 west side
2118 redstone_wire south none east up north up power 6 west none
2119 redstone_wire south up east up north up power 7 west up
2120 redstone_wire south up east up north up power 7 west side
2121 redstone_wire south up east up north up power 7 west none
2122 redstone_wire south side east up north up power 7 west up
2123 redstone_wire south side east up north up power 7 west side
2124 redstone_wire south side east up north up power 7 west none
2125 redstone_wire south none east up north up power 7 west up
2126 redstone_wire south none east up north up power 7 west side
2127 redstone_wire south none east up north up power 7 west none
2128 redstone_wire south up east up north up power 8 west up
2129 redstone_wire south up east up north up power 8 west side
2130 redstone_wire south up east up north up power 8 west none
2131 redstone_wire south side east up north up power 8 west up
2132 redstone_wire south side east up north up power 8 west side
2133 redstone_wire south side east up north up power 8 west none
2134 redstone_wire south none east up north up power 8 west up
2135 redstone_wire south none east up north up power 8 west side
2136 redstone_wire south none east up north up power 8 west none
2137 redstone_wire south up east up north up power 9 west up
2138 redstone_wire south up east up north up power 9 west side
2139 redstone_wire south up east up north up power 9 west none
2140 redstone_wire south side east up north up power 9 west up
2141 redstone_wire south side east up north up power 9 west side
2142 redstone_wire south side east up north up power 9 west none
2143 redstone_wire south none east up north up power 9 west up
2144 redstone_wire south none east up north up power 9 west side
2145 redstone_wire south none east up north up power 9 west none
2146 redstone_wire south up east up north up power 10 west up
2147 redstone_wire south up east up north up power 10 west side
2148 redstone_wire south up east up north up power 10 west none
2149 redstone_wire south side east up north up power 10 west up
2150 redstone_wire south side east up north up power 10 west side
2151 redstone_wire south side east up north up power 10 west none
2152 redstone_wire south none east up north up power 10 west up
2153 redstone_wire south none east up north up power 10 west side
2154 redstone_wire south none east up north up power 10 west none
2155 redstone_wire south up east up north up power 11 west up
2156 redstone_wire south up east up north up power 11 west side
2157 redstone_wire south up east up north up power 11 west none
2158 redstone_wire south side east up north up power 11 west up
2159 redstone_wire south side east up north up power 11 west side
2160 redstone_wire south side east up north up power 11 west none
2161 redstone_wire south none east up north up power 11 west up
2162 redstone_wire south none east up north up power 11 west side
2163 redstone_wire south none east up north up power 11 west none
2164 redstone_wire south up east up north up power 12 west up
2165 redstone_wire south up east up north up power 12 west side
2166 redstone_wire south up east up north up power 12 west none
2167 redstone_wire south side east up north up power 12 west up
2168 redstone_wire south side east up north up power 12 west side
2169 redstone_wire south side east up north up power 12 west none
2170 redstone_wire south none east up north up power 12 west up
2171 redstone_wire south none east up north up power 12 west side
2172 redstone_wire south none east up north up power 12 west none
2173 redstone_wire south up east up north up power 13 west up
2174 redstone_wire south up east up north up power 13 west side
2175 redstone_wire south up east up north up power 13 west none
2176 redstone_wire south side east up north up power 13 west up
2177 redstone_wire south side east up north up power 13 west side
2178 redstone_wire south side east up north up power 13 west none
2179 redstone_wire south none east up north up power 13 west up
2180 redstone_wire south none east up north up power 13 west side
2181 redstone_wire south none east up north up power 13 west none
2182 redstone_wire south up east up north up power 14 west up
2183 redstone_wire south up east up north up power 14 west side
2184 redstone_wire south up east up north up power 14 west none
2185 redstone_wire south side east up north up power 14 west up
2186 redstone_wire south side east up north up power 14 west side
2187 redstone_wire south side east up north up power 14 west none
2188 redstone_wire south none east up north up power 14 west up
2189 redstone_wire south none east up north up power 14 west side
2190 redstone_wire south none east up north up power 14 west none
2191 redstone_wire south up east up north up power 15 west up
2192 redstone_wire south up east up north up power 15 west side
2193 redstone_wire south up east up north up power 15 west none
2194 redstone_wire south side east up north up power 15 west up
2195 redstone_wire south side east up north up power 15 west side
2196 redstone_wire south side east up north up power 15 west none
2197 redstone_wire south none east up north up power 15 west up
2198 redstone_wire south none east up north up power 15 west side
2199 redstone_wire south none east up north up power 15 west none
2200 redstone_wire south up east up north side power 0 west up
2201 redstone_wire south up east up north side power 0 west side
2202 redstone_wire south up east up north side power 0 west none
2203 redstone_wire south side east up north side power 0 west up
2204 redstone_wire south side east up north side power 0 west side
2205 redstone_wire south side east up north side power 0 west none
2206 redstone_wire south none east up north side power 0 west up
2207 redstone_wire south none east up north side power 0 west side
2208 redstone_wire south none east up north side power 0 west none
2209 redstone_wire south up east up north side power 1 west up
2210 redstone_wire south up east up north side power 1 west side
2211 redstone_wire south up east up north side power 1 west none
2212 redstone_wire south side east up north side power 1 west up
2213 redstone_wire south side east up north side power 1 west side
2214 redstone_wire south side east up north side power 1 west none
2215 redstone_wire south none east up north side power 1 west up
2216 redstone_wire south none east up north side power 1 west side
2217 redstone_wire south none east up north side power 1 west none
2218 redstone_wire south up east up north side power 2 west up
2219 redstone_wire south up east up north side power 2 west side
2220 redstone_wire south up east up north side power 2 west none
2221 redstone_wire south side east up north side power 2 west up
2222 redstone_wire south side east up north side power 2 west side
2223 redstone_wire south side east up north side power 2 west none
2224 redstone_wire south none east up north side power 2 west up
2225 redstone_wire south none east up north side power 2 west side
2226 redstone_wire south none east up north side power 2 west none
2227 redstone_wire south up east up north side power 3 west up
2228 redstone_wire south up east up north side power 3 west side
2229 redstone_wire south up east up north side power 3 west none
2230 redstone_wire south side east up north side power 3 west up
2231 redstone_wire south side east up north side power 3 west side
2232 redstone_wire south side east up north side power 3 west none
2233 redstone_wire south none east up north side power 3 west up
2234 redstone_wire south none east up north side power 3 west side
2235 redstone_wire south none east up north side power 3 west none
2236 redstone_wire south up east up north side power 4 west up
2237 redstone_wire south up east up north side power 4 west side
2238 redstone_wire south up east up north side power 4 west none
2239 redstone_wire south side east up north side power 4 west up
2240 redstone_wire south side east up north side power 4 west side
2241 redstone_wire south side east up north side power 4 west none
2242 redstone_wire south none east up north side power 4 west up
2243 redstone_wire south none east up north side power 4 west side
2244 redstone_wire south none east up north side power 4 west none
2245 redstone_wire south up east up north side power 5 west up
2246 redstone_wire south up east up north side power 5 west side
2247 redstone_wire south up east up north side power 5 west none
2248 redstone_wire south side east up north side power 5 west up
2249 redstone_wire south side east up north side power 5 west side
2250 redstone_wire south side east up north side power 5 west none
2251 redstone_wire south none east up north side power 5 west up
2252 redstone_wire south none east up north side power 5 west side
2253 redstone_wire south none east up north side power 5 west none
2254 redstone_wire south up east up north side power 6 west up
2255 redstone_wire south up east up north side power 6 west side
2256 redstone_wire south up east up north side power 6 west none
2257 redstone_wire south side east up north side power 6 west up
2258 redstone_wire south side east up north side power 6 west side
2259 redstone_wire south side east up north side power 6 west none
2260 redstone_wire south none east up north side power 6 west up
2261 redstone_wire south none east up north side power 6 west side
2262 redstone_wire south none east up north side power 6 west none
2263 redstone_wire south up east up north side power 7 west up
2264 redstone_wire south up east up north side power 7 west side
2265 redstone_wire south up east up north side power 7 west none
2266 redstone_wire south side east up north side power 7 west up
2267 redstone_wire south side east up north side power 7 west side
2268 redstone_wire south side east up north side power 7 west none
2269 redstone_wire south none east up north side power 7 west up
2270 redstone_wire south none east up north side power 7 west side
2271 redstone_wire south none east up north side power 7 west none
2272 redstone_wire south up east up north side power 8 west up
2273 redstone_wire south up east up north side power 8 west side
2274 redstone_wire south up east up north side power 8 west none
2275 redstone_wire south side east up north side power 8 west up
2276 redstone_wire south side east up north side power 8 west side
2277 redstone_wire south side east up north side power 8 west none
2278 redstone_wire south none east up north side power 8 west up
2279 redstone_wire south none east up north side power 8 west side
2280 redstone_wire south none east up north side power 8 west none
2281 redstone_wire south up east up north side power 9 west up
2282 redstone_wire south up east up north side power 9 west side
2283 redstone_wire south up east up north side power 9 west none
2284 redstone_wire south side east up north side power 9 west up
2285 redstone_wire south side east up north side power 9 west side
2286 redstone_wire south side east up north side power 9 west none
2287 redstone_wire south none east up north side power 9 west up
2288 redstone_wire south none east up north side power 9 west side
2289 redstone_wire south none east up north side power 9 west none
2290 redstone_wire south up east up north side power 10 west up
2291 redstone_wire south up east up north side power 10 west side
2292 redstone_wire south up east up north side power 10 west none
2293 redstone_wire south side east up north side power 10 west up
2294 redstone_wire south side east up north side power 10 west side
2295 redstone_wire south side east up north side power 10 west none
2296 redstone_wire south none east up north side power 10 west up
2297 redstone_wire south none east up north side power 10 west side
2298 redstone_wire south none east up north side power 10 west none
2299 redstone_wire south up east up north side power 11 west up
2300 redstone_wire south up east up north side power 11 west side
2301 redstone_wire south up east up north side power 11 west none
2302 redstone_wire south side east up north side power 11 west up
2303 redstone_wire south side east up north side power 11 west side
2304 redstone_wire south side east up north side power 11 west none
2305 redstone_wire south none east up north side power 11 west up
2306 redstone_wire south none east up north side power 11 west side
2307 redstone_wire south none east up north side power 11 west none
2308 redstone_wire south up east up north side power 12 west up
2309 redstone_wire south up east up north side power 12 west side
2310 redstone_wire south up east up north side power 12 west none
2311 redstone_wire south side east up north side power 12 west up
2312 redstone_wire south side east up north side power 12 west side
2313 redstone_wire south side east up north side power 12 west none
2314 redstone_wire south none east up north side power 12 west up
2315 redstone_wire south none east up north side power 12 west side
2316 redstone_wire south none east up north side power 12 west none
2317 redstone_wire south up east up north side power 13 west up
2318 redstone_wire south up east up north side power 13 west side
2319 redstone_wire south up east up north side power 13 west none
2320 redstone_wire south side east up north side power 13 west up
2321 redstone_wire south side east up north side power 13 west side
2322 redstone_wire south side east up north side power 13 west none
2323 redstone_wire south none east up north side power 13 west up
2324 redstone_wire south none east up north side power 13 west side
2325 redstone_wire south none east up north side power 13 west none
2326 redstone_wire south up east up north side power 14 west up
2327 redstone_wire south up east up north side power 14 west side
2328 redstone_wire south up east up north side power 14 west none
2329 redstone_wire south side east up north side power 14 west up
2330 redstone_wire south side east up north side power 14 west side
2331 redstone_wire south side east up north side power 14 west none
2332 redstone_wire south none east up north side power 14 west up
2333 redstone_wire south none east up north side power 14 west side
2334 redstone_wire south none east up north side power 14 west none
2335 redstone_wire south up east up north side power 15 west up
2336 redstone_wire south up east up north side power 15 west side
2337 redstone_wire south up east up north side power 15 west none
2338 redstone_wire south side east up north side power 15 west up
2339 redstone_wire south side east up north side power 15 west side
2340 redstone_wire south side east up north side power 15 west none
2341 redstone_wire south none east up north side power 15 west up
2342 redstone_wire south none east up north side power 15 west side
2343 redstone_wire south none east up north side power 15 west none
2344 redstone_wire south up east up north none power 0 west up
2345 redstone_wire south up east up north none power 0 west side
2346 redstone_wire south up east up north none power 0 west none
2347 redstone_wire south side east up north none power 0 west up
2348 redstone_wire south side east up north none power 0 west side
2349 redstone_wire south side east up north none power 0 west none
2350 redstone_wire south none east up north none power 0 west up
2351 redstone_wire south none east up north none power 0 west side
2352 redstone_wire south none east up north none power 0 west none
2353 redstone_wire south up east up north none power 1 west up
2354 redstone_wire south up east up north none power 1 west side
2355 redstone_wire south up east up north none power 1 west none
2356 redstone_wire south side east up north none power 1 west up
2357 redstone_wire south side east up north none power 1 west side
2358 redstone_wire south side east up north none power 1 west none
2359 redstone_wire south none east up north none power 1 west up
2360 redstone_wire south none east up north none power 1 west side
2361 redstone_wire south none east up north none power 1 west none
2362 redstone_wire south up east up north none power 2 west up
2363 redstone_wire south up east up north none power 2 west side
2364 redstone_wire south up east up north none power 2 west none
2365 redstone_wire south side east up north none power 2 west up
2366 redstone_wire south side east up north none power 2 west side
2367 redstone_wire south side east up north none power 2 west none
2368 redstone_wire south none east up north none power 2 west up
2369 redstone_wire south none east up north none power 2 west side
2370 redstone_wire south none east up north none power 2 west none
2371 redstone_wire south up east up north none power 3 west up
2372 redstone_wire south up east up north none power 3 west side
2373 redstone_wire south up east up north none power 3 west none
2374 redstone_wire south side east up north none power 3 west up
2375 redstone_wire south side east up north none power 3 west side
2376 redstone_wire south side east up north none power 3 west none
2377 redstone_wire south none east up north none power 3 west up
2378 redstone_wire south none east up north none power 3 west side
2379 redstone_wire south none east up north none power 3 west none
2380 redstone_wire south up east up north none power 4 west up
2381 redstone_wire south up east up north none power 4 west side
2382 redstone_wire south up east up north none power 4 west none
2383 redstone_wire south side east up north none power 4 west up
2384 redstone_wire south side east up north none power 4 west side
2385 redstone_wire south side east up north none power 4 west none
2386 redstone_wire south none east up north none power 4 west up
2387 redstone_wire south none east up north none power 4 west side
2388 redstone_wire south none east up north none power 4 west none
2389 redstone_wire south up east up north none power 5 west up
2390 redstone_wire south up east up north none power 5 west side
2391 redstone_wire south up east up north none power 5 west none
2392 redstone_wire south side east up north none power 5 west up
2393 redstone_wire south side east up north none power 5 west side
2394 redstone_wire south side east up north none power 5 west none
2395 redstone_wire south none east up north none power 5 west up
2396 redstone_wire south none east up north none power 5 west side
2397 redstone_wire south none east up north none power 5 west none
2398 redstone_wire south up east up north none power 6 west up
2399 redstone_wire south up east up north none power 6 west side
2400 redstone_wire south up east up north none power 6 west none
2401 redstone_wire south side east up north none power 6 west up
2402 redstone_wire south side east up north none power 6 west side
2403 redstone_wire south side east up north none power 6 west none
2404 redstone_wire south none east up north none power 6 west up
2405 redstone_wire south none east up north none power 6 west side
2406 redstone_wire south none east up north none power 6 west none
2407 redstone_wire south up east up north none power 7 west up
2408 redstone_wire south up east up north none power 7 west side
2409 redstone_wire south up east up north none power 7 west none
2410 redstone_wire south side east up north none power 7 west up
2411 redstone_wire south side east up north none power 7 west side
2412 redstone_wire south side east up north none power 7 west none
2413 redstone_wire south none east up north none power 7 west up
2414 redstone_wire south none east up north none power 7 west side
2415 redstone_wire south none east up north none power 7 west none
2416 redstone_wire south up east up north none power 8 west up
2417 redstone_wire south up east up north none power 8 west side
2418 redstone_wire south up east up north none power 8 west none
2419 redstone_wire south side east up north none power 8 west up
2420 redstone_wire south side east up north none power 8 west side
2421 redstone_wire south side east up north none power 8 west none
2422 redstone_wire south none east up north none power 8 west up
2423 redstone_wire south none east up north none power 8 west side
2424 redstone_wire south none east up north none power 8 west none
2425 redstone_wire south up east up north none power 9 west up
2426 redstone_wire south up east up north none power 9 west side
2427 redstone_wire south up east up north none power 9 west none
2428 redstone_wire south side east up north none power 9 west up
2429 redstone_wire south side east up north none power 9 west side
2430 redstone_wire south side east up north none power 9 west none
2431 redstone_wire south none east up north none power 9 west up
2432 redstone_wire south none east up north none power 9 west side
2433 redstone_wire south none east up north none power 9 west none
2434 redstone_wire south up east up north none power 10 west up
2435 redstone_wire south up east up north none power 10 west side
2436 redstone_wire south up east up north none power 10 west none
2437 redstone_wire south side east up north none power 10 west up
2438 redstone_wire south side east up north none power 10 west side
2439 redstone_wire south side east up north none power 10 west none
2440 redstone_wire south none east up north none power 10 west up
2441 redstone_wire south none east up north none power 10 west side
2442 redstone_wire south none east up north none power 10 west none
2443 redstone_wire south up east up north none power 11 west up
2444 redstone_wire south up east up north none power 11 west side
2445 redstone_wire south up east up north none power 11 west none
2446 redstone_wire south side east up north none power 11 west up
2447 redstone_wire south side east up north none power 11 west side
2448 redstone_wire south side east up north none power 11 west none
2449 redstone_wire south none east up north none power 11 west up
2450 redstone_wire south none east up north none power 11 west side
2451 redstone_wire south none east up north none power 11 west none
2452 redstone_wire south up east up north none power 12 west up
2453 redstone_wire south up east up north none power 12 west side
2454 redstone_wire south up east up north none power 12 west none
2455 redstone_wire south side east up north none power 12 west up
2456 redstone_wire south side east up north none power 12 west side
2457 redstone_wire south side east up north none power 12 west none
2458 redstone_wire south none east up north none power 12 west up
2459 redstone_wire south none east up north none power 12 west side
2460 redstone_wire south none east up north none power 12 west none
2461 redstone_wire south up east up north none power 13 west up
2462 redstone_wire south up east up north none power 13 west side
2463 redstone_wire south up east up north none power 13 west none
2464 redstone_wire south side east up north none power 13 west up
2465 redstone_wire south side east up north none power 13 west side
2466 redstone_wire south side east up north none power 13 west none
2467 redstone_wire south none east up north none power 13 west up
2468 redstone_wire south none east up north none power 13 west side
2469 redstone_wire south none east up north none power 13 west none
2470 redstone_wire south up east up north none power 14 west up
2471 redstone_wire south up east up north none power 14 west side
2472 redstone_wire south up east up north none power 14 west none
2473 redstone_wire south side east up north none power 14 west up
2474 redstone_wire south side east up north none power 14 west side
2475 redstone_wire south side east up north none power 14 west none
2476 redstone_wire south none east up north none power 14 west up
2477 redstone_wire south none east up north none power 14 west side
2478 redstone_wire south none east up north none power 14 west none
2479 redstone_wire south up east up north none power 15 west up
2480 redstone_wire south up east up north none power 15 west side
2481 redstone_wire south up east up north none power 15 west none
2482 redstone_wire south side east up north none power 15 west up
2483 redstone_wire south side east up north none power 15 west side
2484 redstone_wire south side east up north none power 15 west none
2485 redstone_wire south none east up north none power 15 west up
2486 redstone_wire south none east up north none power 15 west side
2487 redstone_wire south none east up north none power 15 west none
2488 redstone_wire south up east side north up power 0 west up
2489 redstone_wire south up east side north up power 0 west side
2490 redstone_wire south up east side north up power 0 west none
2491 redstone_wire south side east side north up power 0 west up
2492 redstone_wire south side east side north up power 0 west side
2493 redstone_wire south side east side north up power 0 west none
2494 redstone_wire south none east side north up power 0 west up
2495 redstone_wire south none east side north up power 0 west side
2496 redstone_wire south none east side north up power 0 west none
2497 redstone_wire south up east side north up power 1 west up
2498 redstone_wire south up east side north up power 1 west side
2499 redstone_wire south up east side north up power 1 west none
2500 redstone_wire south side east side north up power 1 west up
2501 redstone_wire south side east side north up power 1 west side
2502 redstone_wire south side east side north up power 1 west none
2503 redstone_wire south none east side north up power 1 west up
2504 redstone_wire south none east side north up power 1 west side
2505 redstone_wire south none east side north up power 1 west none
2506 redstone_wire south up east side north up power 2 west up
2507 redstone_wire south up east side north up power 2 west side
2508 redstone_wire south up east side north up power 2 west none
2509 redstone_wire south side east side north up power 2 west up
2510 redstone_wire south side east side north up power 2 west side
2511 redstone_wire south side east side north up power 2 west none
2512 redstone_wire south none east side north up power 2 west up
2513 redstone_wire south none east side north up power 2 west side
2514 redstone_wire south none east side north up power 2 west none
2515 redstone_wire south up east side north up power 3 west up
2516 redstone_wire south up east side north up power 3 west side
2517 redstone_wire south up east side north up power 3 west none
2518 redstone_wire south side east side north up power 3 west up
2519 redstone_wire south side east side north up power 3 west side
2520 redstone_wire south side east side north up power 3 west none
2521 redstone_wire south none east side north up power 3 west up
2522 redstone_wire south none east side north up power 3 west side
2523 redstone_wire south none east side north up power 3 west none
2524 redstone_wire south up east side north up power 4 west up
2525 redstone_wire south up east side north up power 4 west side
2526 redstone_wire south up east side north up power 4 west none
2527 redstone_wire south side east side north up power 4 west up
2528 redstone_wire south side east side north up power 4 west side
2529 redstone_wire south side east side north up power 4 west none
2530 redstone_wire south none east side north up power 4 west up
2531 redstone_wire south none east side north up power 4 west side
2532 redstone_wire south none east side north up power 4 west none
2533 redstone_wire south up east side north up power 5 west up
2534 redstone_wire south up east side north up power 5 west side
2535 redstone_wire south up east side north up power 5 west none
2536 redstone_wire south side east side north up power 5 west up
2537 redstone_wire south side east side north up power 5 west side
2538 redstone_wire south side east side north up power 5 west none
2539 redstone_wire south none east side north up power 5 west up
2540 redstone_wire south none east side north up power 5 west side
2541 redstone_wire south none east side north up power 5 west none
2542 redstone_wire south up east side north up power 6 west up
2543 redstone_wire south up east side north up power 6 west side
2544 redstone_wire south up east side north up power 6 west none
2545 redstone_wire south side east side north up power 6 west up
2546 redstone_wire south side east side north up power 6 west side
2547 redstone_wire south side east side north up power 6 west none
2548 redstone_wire south none east side north up power 6 west up
2549 redstone_wire south none east side north up power 6 west side
2550 redstone_wire south none east side north up power 6 west none
2551 redstone_wire south up east side north up power 7 west up
2552 redstone_wire south up east side north up power 7 west side
2553 redstone_wire south up east side north up power 7 west none
2554 redstone_wire south side east side north up power 7 west up
2555 redstone_wire south side east side north up power 7 west side
2556 redstone_wire south side east side north up power 7 west none
2557 redstone_wire south none east side north up power 7 west up
2558 redstone_wire south none east side north up power 7 west side
2559 redstone_wire south none east side north up power 7 west none
2560 redstone_wire south up east side north up power 8 west up
2561 redstone_wire south up east side north up power 8 west side
2562 redstone_wire south up east side north up power 8 west none
2563 redstone_wire south side east side north up power 8 west up
2564 redstone_wire south side east side north up power 8 west side
2565 redstone_wire south side east side north up power 8 west none
2566 redstone_wire south none east side north up power 8 west up
2567 redstone_wire south none east side north up power 8 west side
2568 redstone_wire south none east side north up power 8 west none
2569 redstone_wire south up east side north up power 9 west up
2570 redstone_wire south up east side north up power 9 west side
2571 redstone_wire south up east side north up power 9 west none
2572 redstone_wire south side east side north up power 9 west up
2573 redstone_wire south side east side north up power 9 west side
2574 redstone_wire south side east side north up power 9 west none
2575 redstone_wire south none east side north up power 9 west up
2576 redstone_wire south none east side north up power 9 west side
2577 redstone_wire south none east side north up power 9 west none
2578 redstone_wire south up east side north up power 10 west up
2579 redstone_wire south up east side north up power 10 west side
2580 redstone_wire south up east side north up power 10 west none
2581 redstone_wire south side east side north up power 10 west up
2582 redstone_wire south side east side north up power 10 west side
2583 redstone_wire south side east side north up power 10 west none
2584 redstone_wire south none east side north up power 10 west up
2585 redstone_wire south none east side north up power 10 west side
2586 redstone_wire south none east side north up power 10 west none
2587 redstone_wire south up east side north up power 11 west up
2588 redstone_wire south up east side north up power 11 west side
2589 redstone_wire south up east side north up power 11 west none
2590 redstone_wire south side east side north up power 11 west up
2591 redstone_wire south side east side north up power 11 west side
2592 redstone_wire south side east side north up power 11 west none
2593 redstone_wire south none east side north up power 11 west up
2594 redstone_wire south none east side north up power 11 west side
2595 redstone_wire south none east side north up power 11 west none
2596 redstone_wire south up east side north up power 12 west up
2597 redstone_wire south up east side north up power 12 west side
2598 redstone_wire south up east side north up power 12 west none
2599 redstone_wire south side east side north up power 12 west up
2600 redstone_wire south side east side north up power 12 west side
2601 redstone_wire south side east side north up power 12 west none
2602 redstone_wire south none east side north up power 12 west up
2603 redstone_wire south none east side north up power 12 west side
2604 redstone_wire south none east side north up power 12 west none
2605 redstone_wire south up east side north up power 13 west up
2606 redstone_wire south up east side north up power 13 west side
2607 redstone_wire south up east side north up power 13 west none
2608 redstone_wire south side east side north up power 13 west up
2609 redstone_wire south side east side north up power 13 west side
2610 redstone_wire south side east side north up power 13 west none
2611 redstone_wire south none east side north up power 13 west up
2612 redstone_wire south none east side north up power 13 west side
2613 redstone_wire south none east side north up power 13 west none
2614 redstone_wire south up east side north up power 14 west up
2615 redstone_wire south up east side north up power 14 west side
2616 redstone_wire south up east side north up power 14 west none
2617 redstone_wire south side east side north up power 14 west up
2618 redstone_wire south side east side north up power 14 west side
2619 redstone_wire south side east side north up power 14 west none
2620 redstone_wire south none east side north up power 14 west up
2621 redstone_wire south none east side north up power 14 west side
2622 redstone_wire south none east side north up power 14 west none
2623 redstone_wire south up east side north up power 15 west up
2624 redstone_wire south up east side north up power 15 west side
2625 redstone_wire south up east side north up power 15 west none
2626 redstone_wire south side east side north up power 15 west up
2627 redstone_wire south side east side north up power 15 west side
2628 redstone_wire south side east side north up power 15 west none
2629 redstone_wire south none east side north up power 15 west up
2630 redstone_wire south none east side north up power 15 west side
2631 redstone_wire south none east side north up power 15 west none
2632 redstone_wire south up east side north side power 0 west up
2633 redstone_wire south up east side north side power 0 west side
2634 redstone_wire south up east side north side power 0 west none
2635 redstone_wire south side east side north side power 0 west up
2636 redstone_wire south side east side north side power 0 west side
2637 redstone_wire south side east side north side power 0 west none
2638 redstone_wire south none east side north side power 0 west up
2639 redstone_wire south none east side north side power 0 west side
2640 redstone_wire south none east side north side power 0 west none
2641 redstone_wire south up east side north side power 1 west up
2642 redstone_wire south up east side north side power 1 west side
2643 redstone_wire south up east side north side power 1 west none
2644 redstone_wire south side east side north side power 1 west up
2645 redstone_wire south side east side north side power 1 west side
2646 redstone_wire south side east side north side power 1 west none
2647 redstone_wire south none east side north side power 1 west up
2648 redstone_wire south none east side north side power 1 west side
2649 redstone_wire south none east side north side power 1 west none
2650 redstone_wire south up east side north side power 2 west up
2651 redstone_wire south up east side north side power 2 west side
2652 redstone_wire south up east side north side power 2 west none
2653 redstone_wire south side east side north side power 2 west up
2654 redstone_wire south side east side north side power 2 west side
2655 redstone_wire south side east side north side power 2 west none
2656 redstone_wire south none east side north side power 2 west up
2657 redstone_wire south none east side north side power 2 west side
2658 redstone_wire south none east side north side power 2 west none
2659 redstone_wire south up east side north side power 3 west up
2660 redstone_wire south up east side north side power 3 west side
2661 redstone_wire south up east side north side power 3 west none
2662 redstone_wire south side east side north side power 3 west up
2663 redstone_wire south side east side north side power 3 west side
2664 redstone_wire south side east side north side power 3 west none
2665 redstone_wire south none east side north side power 3 west up
2666 redstone_wire south none east side north side power 3 west side
2667 redstone_wire south none east side north side power 3 west none
2668 redstone_wire south up east side north side power 4 west up
2669 redstone_wire south up east side north side power 4 west side
2670 redstone_wire south up east side north side power 4 west none
2671 redstone_wire south side east side north side power 4 west up
2672 redstone_wire south side east side north side power 4 west side
2673 redstone_wire south side east side north side power 4 west none
2674 redstone_wire south none east side north side power 4 west up
2675 redstone_wire south none east side north side power 4 west side
2676 redstone_wire south none east side north side power 4 west none
2677 redstone_wire south up east side north side power 5 west up
2678 redstone_wire south up east side north side power 5 west side
2679 redstone_wire south up east side north side power 5 west none
2680 redstone_wire south side east side north side power 5 west up
2681 redstone_wire south side east side north side power 5 west side
2682 redstone_wire south side east side north side power 5 west none
2683 redstone_wire south none east side north side power 5 west up
2684 redstone_wire south none east side north side power 5 west side
2685 redstone_wire south none east side north side power 5 west none
2686 redstone_wire south up east side north side power 6 west up
2687 redstone_wire south up east side north side power 6 west side
2688 redstone_wire south up east side north side power 6 west none
2689 redstone_wire south side east side north side power 6 west up
2690 redstone_wire south side east side north side power 6 west side
2691 redstone_wire south side east side north side power 6 west none
2692 redstone_wire south none east side north side power 6 west up
2693 redstone_wire south none east side north side power 6 west side
2694 redstone_wire south none east side north side power 6 west none
2695 redstone_wire south up east side north side power 7 west up
2696 redstone_wire south up east side north side power 7 west side
2697 redstone_wire south up east side north side power 7 west none
2698 redstone_wire south side east side north side power 7 west up
2699 redstone_wire south side east side north side power 7 west side
2700 redstone_wire south side east side north side power 7 west none
2701 redstone_wire south none east side north side power 7 west up
2702 redstone_wire south none east side north side power 7 west side
2703 redstone_wire south none east side north side power 7 west none
2704 redstone_wire south up east side north side power 8 west up
2705 redstone_wire south up east side north side power 8 west side
2706 redstone_wire south up east side north side power 8 west none
2707 redstone_wire south side east side north side power 8 west up
2708 redstone_wire south side east side north side power 8 west side
2709 redstone_wire south side east side north side power 8 west none
2710 redstone_wire south none east side north side power 8 west up
2711 redstone_wire south none east side north side power 8 west side
2712 redstone_wire south none east side north side power 8 west none
2713 redstone_wire south up east side north side power 9 west up
2714 redstone_wire south up east side north side power 9 west side
2715 redstone_wire south up east side north side power 9 west none
2716 redstone_wire south side east side north side power 9 west up
2717 redstone_wire south side east side north side power 9 west side
2718 redstone_wire south side east side north side power 9 west none
2719 redstone_wire south none east side north side power 9 west up
2720 redstone_wire south none east side north side power 9 west side
2721 redstone_wire south none east side north side power 9 west none
2722 redstone_wire south up east side north side power 10 west up
2723 redstone_wire south up east side north side power 10 west side
2724 redstone_wire south up east side north side power 10 west none
2725 redstone_wire south side east side north side power 10 west up
2726 redstone_wire south side east side north side power 10 west side
2727 redstone_wire south side east side north side power 10 west none
2728 redstone_wire south none east side north side power 10 west up
2729 redstone_wire south none east side north side power 10 west side
2730 redstone_wire south none east side north side power 10 west none
2731 redstone_wire south up east side north side power 11 west up
2732 redstone_wire south up east side north side power 11 west side
2733 redstone_wire south up east side north side power 11 west none
2734 redstone_wire south side east side north side power 11 west up
2735 redstone_wire south side east side north side power 11 west side
2736 redstone_wire south side east side north side power 11 west none
2737 redstone_wire south none east side north side power 11 west up
2738 redstone_wire south none east side north side power 11 west side
2739 redstone_wire south none east side north side power 11 west none
2740 redstone_wire south up east side north side power 12 west up
2741 redstone_wire south up east side north side power 12 west side
2742 redstone_wire south up east side north side power 12 west none
2743 redstone_wire south side east side north side power 12 west up
2744 redstone_wire south side east side north side power 12 west side
2745 redstone_wire south side east side north side power 12 west none
2746 redstone_wire south none east side north side power 12 west up
2747 redstone_wire south none east side north side power 12 west side
2748 redstone_wire south none east side north side power 12 west none
2749 redstone_wire south up east side north side power 13 west up
2750 redstone_wire south up east side north side power 13 west side
2751 redstone_wire south up east side north side power 13 west none
2752 redstone_wire south side east side north side power 13 west up
2753 redstone_wire south side east side north side power 13 west side
2754 redstone_wire south side east side north side power 13 west none
2755 redstone_wire south none east side north side power 13 west up
2756 redstone_wire south none east side north side power 13 west side
2757 redstone_wire south none east side north side power 13 west none
2758 redstone_wire south up east side north side power 14 west up
2759 redstone_wire south up east side north side power 14 west side
2760 redstone_wire south up east side north side power 14 west none
2761 redstone_wire south side east side north side power 14 west up
2762 redstone_wire south side east side north side power 14 west side
2763 redstone_wire south side east side north side power 14 west none
2764 redstone_wire south none east side north side power 14 west up
2765 redstone_wire south none east side north side power 14 west side
2766 redstone_wire south none east side north side power 14 west none
2767 redstone_wire south up east side north side power 15 west up
2768 redstone_wire south up east side north side power 15 west side
2769 redstone_wire south up east side north side power 15 west none
2770 redstone_wire south side east side north side power 15 west up
2771 redstone_wire south side east side north side power 15 west side
2772 redstone_wire south side east side north side power 15 west none
2773 redstone_wire south none east side north side power 15 west up
2774 redstone_wire south none east side north side power 15 west side
2775 redstone_wire south none east side north side power 15 west none
2776 redstone_wire south up east side north none power 0 west up
2777 redstone_wire south up east side north none power 0 west side
2778 redstone_wire south up east side north none power 0 west none
2779 redstone_wire south side east side north none power 0 west up
2780 redstone_wire south side east side north none power 0 west side
2781 redstone_wire south side east side north none power 0 west none
2782 redstone_wire south none east side north none power 0 west up
2783 redstone_wire south none east side north none power 0 west side
2784 redstone_wire south none east side north none power 0 west none
2785 redstone_wire south up east side north none power 1 west up
2786 redstone_wire south up east side north none power 1 west side
2787 redstone_wire south up east side north none power 1 west none
2788 redstone_wire south side east side north none power 1 west up
2789 redstone_wire south side east side north none power 1 west side
2790 redstone_wire south side east side north none power 1 west none
2791 redstone_wire south none east side north none power 1 west up
2792 redstone_wire south none east side north none power 1 west side
2793 redstone_wire south none east side north none power 1 west none
2794 redstone_wire south up east side north none power 2 west up
2795 redstone_wire south up east side north none power 2 west side
2796 redstone_wire south up east side north none power 2 west none
2797 redstone_wire south side east side north none power 2 west up
2798 redstone_wire south side east side north none power 2 west side
2799 redstone_wire south side east side north none power 2 west none
2800 redstone_wire south none east side north none power 2 west up
2801 redstone_wire south none east side north none power 2 west side
2802 redstone_wire south none east side north none power 2 west none
2803 redstone_wire south up east side north none power 3 west up
2804 redstone_wire south up east side north none power 3 west side
2805 redstone_wire south up east side north none power 3 west none
2806 redstone_wire south side east side north none power 3 west up
2807 redstone_wire south side east side north none power 3 west side
2808 redstone_wire south side east side north none power 3 west none
2809 redstone_wire south none east side north none power 3 west up
2810 redstone_wire south none east side north none power 3 west side
2811 redstone_wire south none east side north none power 3 west none
2812 redstone_wire south up east side north none power 4 west up
2813 redstone_wire south up east side north none power 4 west side
2814 redstone_wire south up east side north none power 4 west none
2815 redstone_wire south side east side north none power 4 west up
2816 redstone_wire south side east side north none power 4 west side
2817 redstone_wire south side east side north none power 4 west none
2818 redstone_wire south none east side north none power 4 west up
2819 redstone_wire south none east side north none power 4 west side
2820 redstone_wire south none east side north none power 4 west none
2821 redstone_wire south up east side north none power 5 west up
2822 redstone_wire south up east side north none power 5 west side
2823 redstone_wire south up east side north none power 5 west none
2824 redstone_wire south side east side north none power 5 west up
2825 redstone_wire south side east side north none power 5 west side
2826 redstone_wire south side east side north none power 5 west none
2827 redstone_wire south none east side north none power 5 west up
2828 redstone_wire south none east side north none power 5 west side
2829 redstone_wire south none east side north none power 5 west none
2830 redstone_wire south up east side north none power 6 west up
2831 redstone_wire south up east side north none power 6 west side
2832 redstone_wire south up east side north none power 6 west none
2833 redstone_wire south side east side north none power 6 west up
2834 redstone_wire south side east side north none power 6 west side
2835 redstone_wire south side east side north none power 6 west none
2836 redstone_wire south none east side north none power 6 west up
2837 redstone_wire south none east side north none power 6 west side
2838 redstone_wire south none east side north none power 6 west none
2839 redstone_wire south up east side north none power 7 west up
2840 redstone_wire south up east side north none power 7 west side
2841 redstone_wire south up east side north none power 7 west none
2842 redstone_wire south side east side north none power 7 west up
2843 redstone_wire south side east side north none power 7 west side
2844 redstone_wire south side east side north none power 7 west none
2845 redstone_wire south none east side north none power 7 west up
2846 redstone_wire south none east side north none power 7 west side
2847 redstone_wire south none east side north none power 7 west none
2848 redstone_wire south up east side north none power 8 west up
2849 redstone_wire south up east side north none power 8 west side
2850 redstone_wire south up east side north none power 8 west none
2851 redstone_wire south side east side north none power 8 west up
2852 redstone_wire south side east side north none power 8 west side
2853 redstone_wire south side east side north none power 8 west none
2854 redstone_wire south none east side north none power 8 west up
2855 redstone_wire south none east side north none power 8 west side
2856 redstone_wire south none east side north none power 8 west none
2857 redstone_wire south up east side north none power 9 west up
2858 redstone_wire south up east side north none power 9 west side
2859 redstone_wire south up east side north none power 9 west none
2860 redstone_wire south side east side north none power 9 west up
2861 redstone_wire south side east side north none power 9 west side
2862 redstone_wire south side east side north none power 9 west none
2863 redstone_wire south none east side north none power 9 west up
2864 redstone_wire south none east side north none power 9 west side
2865 redstone_wire south none east side north none power 9 west none
2866 redstone_wire south up east side north none power 10 west up
2867 redstone_wire south up east side north none power 10 west side
2868 redstone_wire south up east side north none power 10 west none
2869 redstone_wire south side east side north none power 10 west up
2870 redstone_wire south side east side north none power 10 west side
2871 redstone_wire south side east side north none power 10 west none
2872 redstone_wire south none east side north none power 10 west up
2873 redstone_wire south none east side north none power 10 west side
2874 redstone_wire south none east side north none power 10 west none
2875 redstone_wire south up east side north none power 11 west up
2876 redstone_wire south up east side north none power 11 west side
2877 redstone_wire south up east side north none power 11 west none
2878 redstone_wire south side east side north none power 11 west up
2879 redstone_wire south side east side north none power 11 west side
2880 redstone_wire south side east side north none power 11 west none
2881 redstone_wire south none east side north none power 11 west up
2882 redstone_wire south none east side north none power 11 west side
2883 redstone_wire south none east side north none power 11 west none
2884 redstone_wire south up east side north none power 12 west up
2885 redstone_wire south up east side north none power 12 west side
2886 redstone_wire south up east side north none power 12 west none
2887 redstone_wire south side east side north none power 12 west up
2888 redstone_wire south side east side north none power 12 west side
2889 redstone_wire south side east side north none power 12 west none
2890 redstone_wire south none east side north none power 12 west up
2891 redstone_wire south none east side north none power 12 west side
2892 redstone_wire south none east side north none power 12 west none
2893 redstone_wire south up east side north none power 13 west up
2894 redstone_wire south up east side north none power 13 west side
2895 redstone_wire south up east side north none power 13 west none
2896 redstone_wire south side east side north none power 13 west up
2897 redstone_wire south side east side north none power 13 west side
2898 redstone_wire south side east side north none power 13 west none
2899 redstone_wire south none east side north none power 13 west up
2900 redstone_wire south none east side north none power 13 west side
2901 redstone_wire south none east side north none power 13 west none
2902 redstone_wire south up east side north none power 14 west up
2903 redstone_wire south up east side north none power 14 west side
2904 redstone_wire south up east side north none power 14 west none
2905 redstone_wire south side east side north none power 14 west up
2906 redstone_wire south side east side north none power 14 west side
2907 redstone_wire south side east side north none power 14 west none
2908 redstone_wire south none east side north none power 14 west up
2909 redstone_wire south none east side north none power 14 west side
2910 redstone_wire south none east side north none power 14 west none
2911 redstone_wire south up east side north none power 15 west up
2912 redstone_wire south up east side north none power 15 west side
2913 redstone_wire south up east side north none power 15 west none
2914 redstone_wire south side east side north none power 15 west up
2915 redstone_wire south side east side north none power 15 west side
2916 redstone_wire south side east side north none power 15 west none
2917 redstone_wire south none east side north none power 15 west up
2918 redstone_wire south none east side north none power 15 west side
2919 redstone_wire south none east side north none power 15 west none
2920 redstone_wire south up east none north up power 0 west up
2921 redstone_wire south up east none north up power 0 west side
2922 redstone_wire south up east none north up power 0 west none
2923 redstone_wire south side east none north up power 0 west up
2924 redstone_wire south side east none north up power 0 west side
2925 redstone_wire south side east none north up power 0 west none
2926 redstone_wire south none east none north up power 0 west up
2927 redstone_wire south none east none north up power 0 west side
2928 redstone_wire south none east none north up power 0 west none
2929 redstone_wire south up east none north up power 1 west up
2930 redstone_wire south up east none north up power 1 west side
2931 redstone_wire south up east none north up power 1 west none
2932 redstone_wire south side east none north up power 1 west up
2933 redstone_wire south side east none north up power 1 west side
2934 redstone_wire south side east none north up power 1 west none
2935 redstone_wire south none east none north up power 1 west up
2936 redstone_wire south none east none north up power 1 west side
2937 redstone_wire south none east none north up power 1 west none
2938 redstone_wire south up east none north up power 2 west up
2939 redstone_wire south up east none north up power 2 west side
2940 redstone_wire south up east none north up power 2 west none
2941 redstone_wire south side east none north up power 2 west up
2942 redstone_wire south side east none north up power 2 west side
2943 redstone_wire south side east none north up power 2 west none
2944 redstone_wire south none east none north up power 2 west up
2945 redstone_wire south none east none north up power 2 west side
2946 redstone_wire south none east none north up power 2 west none
2947 redstone_wire south up east none north up power 3 west up
2948 redstone_wire south up east none north up power 3 west side
2949 redstone_wire south up east none north up power 3 west none
2950 redstone_wire south side east none north up power 3 west up
2951 redstone_wire south side east none north up power 3 west side
2952 redstone_wire south side east none north up power 3 west none
2953 redstone_wire south none east none north up power 3 west up
2954 redstone_wire south none east none north up power 3 west side
2955 redstone_wire south none east none north up power 3 west none
2956 redstone_wire south up east none north up power 4 west up
2957 redstone_wire south up east none north up power 4 west side
2958 redstone_wire south up east none north up power 4 west none
2959 redstone_wire south side east none north up power 4 west up
2960 redstone_wire south side east none north up power 4 west side
2961 redstone_wire south side east none north up power 4 west none
2962 redstone_wire south none east none north up power 4 west up
2963 redstone_wire south none east none north up power 4 west side
2964 redstone_wire south none east none north up power 4 west none
2965 redstone_wire south up east none north up power 5 west up
2966 redstone_wire south up east none north up power 5 west side
2967 redstone_wire south up east none north up power 5 west none
2968 redstone_wire south side east none north up power 5 west up
2969 redstone_wire south side east none north up power 5 west side
2970 redstone_wire south side east none north up power 5 west none
2971 redstone_wire south none east none north up power 5 west up
2972 redstone_wire south none east none north up power 5 west side
2973 redstone_wire south none east none north up power 5 west none
2974 redstone_wire south up east none north up power 6 west up
2975 redstone_wire south up east none north up power 6 west side
2976 redstone_wire south up east none north up power 6 west none
2977 redstone_wire south side east none north up power 6 west up
2978 redstone_wire south side east none north up power 6 west side
2979 redstone_wire south side east none north up power 6 west none
2980 redstone_wire south none east none north up power 6 west up
2981 redstone_wire south none east none north up power 6 west side
2982 redstone_wire south none east none north up power 6 west none
2983 redstone_wire south up east none north up power 7 west up
2984 redstone_wire south up east none north up power 7 west side
2985 redstone_wire south up east none north up power 7 west none
2986 redstone_wire south side east none north up power 7 west up
2987 redstone_wire south side east none north up power 7 west side
2988 redstone_wire south side east none north up power 7 west none
2989 redstone_wire south none east none north up power 7 west up
2990 redstone_wire south none east none north up power 7 west side
2991 redstone_wire south none east none north up power 7 west none
2992 redstone_wire south up east none north up power 8 west up
2993 redstone_wire south up east none north up power 8 west side
2994 redstone_wire south up east none north up power 8 west none
2995 redstone_wire south side east none north up power 8 west up
2996 redstone_wire south side east none north up power 8 west side
2997 redstone_wire south side east none north up power 8 west none
2998 redstone_wire south none east none north up power 8 west up
2999 redstone_wire south none east none north up power 8 west side
3000 redstone_wire south none east none north up power 8 west none
3001 redstone_wire south up east none north up power 9 west up
3002 redstone_wire south up east none north up power 9 west side
3003 redstone_wire south up east none north up power 9 west none
3004 redstone_wire south side east none north up power 9 west up
3005 redstone_wire south side east none north up power 9 west side
3006 redstone_wire south side east none north up power 9 west none
3007 redstone_wire south none east none north up power 9 west up
3008 redstone_wire south none east none north up power 9 west side
3009 redstone_wire south none east none north up power 9 west none
3010 redstone_wire south up east none north up power 10 west up
3011 redstone_wire south up east none north up power 10 west side
3012 redstone_wire south up east none north up power 10 west none
3013 redstone_wire south side east none north up power 10 west up
3014 redstone_wire south side east none north up power 10 west side
3015 redstone_wire south side east none north up power 10 west none
3016 redstone_wire south none east none north up power 10 west up
3017 redstone_wire south none east none north up power 10 west side
3018 redstone_wire south none east none north up power 10 west none
3019 redstone_wire south up east none north up power 11 west up
3020 redstone_wire south up east none north up power 11 west side
3021 redstone_wire south up east none north up power 11 west none
3022 redstone_wire south side east none north up power 11 west up
3023 redstone_wire south side east none north up power 11 west side
3024 redstone_wire south side east none north up power 11 west none
3025 redstone_wire south none east none north up power 11 west up
3026 redstone_wire south none east none north up power 11 west side
3027 redstone_wire south none east none north up power 11 west none
3028 redstone_wire south up east none north up power 12 west up
3029 redstone_wire south up east none north up power 12 west side
3030 redstone_wire south up east none north up power 12 west none
3031 redstone_wire south side east none north up power 12 west up
3032 redstone_wire south side east none north up power 12 west side
3033 redstone_wire south side east none north up power 12 west none
3034 redstone_wire south none east none north up power 12 west up
3035 redstone_wire south none east none north up power 12 west side
3036 redstone_wire south none east none north up power 12 west none
3037 redstone_wire south up east none north up power 13 west up
3038 redstone_wire south up east none north up power 13 west side
3039 redstone_wire south up east none north up power 13 west none
3040 redstone_wire south side east none north up power 13 west up
3041 redstone_wire south side east none north up power 13 west side
3042 redstone_wire south side east none north up power 13 west none
3043 redstone_wire south none east none north up power 13 west up
3044 redstone_wire south none east none north up power 13 west side
3045 redstone_wire south none east none north up power 13 west none
3046 redstone_wire south up east none north up power 14 west up
3047 redstone_wire south up east none north up power 14 west side
3048 redstone_wire south up east none north up power 14 west none
3049 redstone_wire south side east none north up power 14 west up
3050 redstone_wire south side east none north up power 14 west side
3051 redstone_wire south side east none north up power 14 west none
3052 redstone_wire south none east none north up power 14 west up
3053 redstone_wire south none east none north up power 14 west side
3054 redstone_wire south none east none north up power 14 west none
3055 redstone_wire south up east none north up power 15 west up
3056 redstone_wire south up east none north up power 15 west side
3057 redstone_wire south up east none north up power 15 west none
3058 redstone_wire south side east none north up power 15 west up
3059 redstone_wire south side east none north up power 15 west side
3060 redstone_wire south side east none north up power 15 west none
3061 redstone_wire south none east none north up power 15 west up
3062 redstone_wire south none east none north up power 15 west side
3063 redstone_wire south none east none north up power 15 west none
3064 redstone_wire south up east none north side power 0 west up
3065 redstone_wire south up east none north side power 0 west side
3066 redstone_wire south up east none north side power 0 west none
3067 redstone_wire south side east none north side power 0 west up
3068 redstone_wire south side east none north side power 0 west side
3069 redstone_wire south side east none north side power 0 west none
3070 redstone_wire south none east none north side power 0 west up
3071 redstone_wire south none east none north side power 0 west side
3072 redstone_wire south none east none north side power 0 west none
3073 redstone_wire south up east none north side power 1 west up
3074 redstone_wire south up east none north side power 1 west side
3075 redstone_wire south up east none north side power 1 west none
3076 redstone_wire south side east none north side power 1 west up
3077 redstone_wire south side east none north side power 1 west side
3078 redstone_wire south side east none north side power 1 west none
3079 redstone_wire south none east none north side power 1 west up
3080 redstone_wire south none east none north side power 1 west side
3081 redstone_wire south none east none north side power 1 west none
3082 redstone_wire south up east none north side power 2 west up
3083 redstone_wire south up east none north side power 2 west side
3084 redstone_wire south up east none north side power 2 west none
3085 redstone_wire south side east none north side power 2 west up
3086 redstone_wire south side east none north side power 2 west side
3087 redstone_wire south side east none north side power 2 west none
3088 redstone_wire south none east none north side power 2 west up
3089 redstone_wire south none east none north side power 2 west side
3090 redstone_wire south none east none north side power 2 west none
3091 redstone_wire south up east none north side power 3 west up
3092 redstone_wire south up east none north side power 3 west side
3093 redstone_wire south up east none north side power 3 west none
3094 redstone_wire south side east none north side power 3 west up
3095 redstone_wire south side east none north side power 3 west side
3096 redstone_wire south side east none north side power 3 west none
3097 redstone_wire south none east none north side power 3 west up
3098 redstone_wire south none east none north side power 3 west side
3099 redstone_wire south none east none north side power 3 west none
3100 redstone_wire south up east none north side power 4 west up
3101 redstone_wire south up east none north side power 4 west side
3102 redstone_wire south up east none north side power 4 west none
3103 redstone_wire south side east none north side power 4 west up
3104 redstone_wire south side east none north side power 4 west side
3105 redstone_wire south side east none north side power 4 west none
3106 redstone_wire south none east none north side power 4 west up
3107 redstone_wire south none east none north side power 4 west side
3108 redstone_wire south none east none north side power 4 west none
3109 redstone_wire south up east none north side power 5 west up
3110 redstone_wire south up east none north side power 5 west side
3111 redstone_wire south up east none north side power 5 west none
3112 redstone_wire south side east none north side power 5 west up
3113 redstone_wire south side east none north side power 5 west side
3114 redstone_wire south side east none north side power 5 west none
3115 redstone_wire south none east none north side power 5 west up
3116 redstone_wire south none east none north side power 5 west side
3117 redstone_wire south none east none north side power 5 west none
3118 redstone_wire south up east none north side power 6 west up
3119 redstone_wire south up east none north side power 6 west side
3120 redstone_wire south up east none north side power 6 west none
3121 redstone_wire south side east none north side power 6 west up
3122 redstone_wire south side east none north side power 6 west side
3123 redstone_wire south side east none north side power 6 west none
3124 redstone_wire south none east none north side power 6 west up
3125 redstone_wire south none east none north side power 6 west side
3126 redstone_wire south none east none north side power 6 west none
3127 redstone_wire south up east none north side power 7 west up
3128 redstone_wire south up east none north side power 7 west side
3129 redstone_wire south up east none north side power 7 west none
3130 redstone_wire south side east none north side power 7 west up
3131 redstone_wire south side east none north side power 7 west side
3132 redstone_wire south side east none north side power 7 west none
3133 redstone_wire south none east none north side power 7 west up
3134 redstone_wire south none east none north side power 7 west side
3135 redstone_wire south none east none north side power 7 west none
3136 redstone_wire south up east none north side power 8 west up
3137 redstone_wire south up east none north side power 8 west side
3138 redstone_wire south up east none north side power 8 west none
3139 redstone_wire south side east none north side power 8 west up
3140 redstone_wire south side east none north side power 8 west side
3141 redstone_wire south side east none north side power 8 west none
3142 redstone_wire south none east none north side power 8 west up
3143 redstone_wire south none east none north side power 8 west side
3144 redstone_wire south none east none north side power 8 west none
3145 redstone_wire south up east none north side power 9 west up
3146 redstone_wire south up east none north side power 9 west side
3147 redstone_wire south up east none north side power 9 west none
3148 redstone_wire south side east none north side power 9 west up
3149 redstone_wire south side east none north side power 9 west side
3150 redstone_wire south side east none north side power 9 west none
3151 redstone_wire south none east none north side power 9 west up
3152 redstone_wire south none east none north side power 9 west side
3153 redstone_wire south none east none north side power 9 west none
3154 redstone_wire south up east none north side power 10 west up
3155 redstone_wire south up east none north side power 10 west side
3156 redstone_wire south up east none north side power 10 west none
3157 redstone_wire south side east none north side power 10 west up
3158 redstone_wire south side east none north side power 10 west side
3159 redstone_wire south side east none north side power 10 west none
3160 redstone_wire south none east none north side power 10 west up
3161 redstone_wire south none east none north side power 10 west side
3162 redstone_wire south none east none north side power 10 west none
3163 redstone_wire south up east none north side power 11 west up
3164 redstone_wire south up east none north side power 11 west side
3165 redstone_wire south up east none north side power 11 west none
3166 redstone_wire south side east none north side power 11 west up
3167 redstone_wire south side east none north side power 11 west side
3168 redstone_wire south side east none north side power 11 west none
3169 redstone_wire south none east none north side power 11 west up
3170 redstone_wire south none east none north side power 11 west side
3171 redstone_wire south none east none north side power 11 west none
3172 redstone_wire south up east none north side power 12 west up
3173 redstone_wire south up east none north side power 12 west side
3174 redstone_wire south up east none north side power 12 west none
3175 redstone_wire south side east none north side power 12 west up
3176 redstone_wire south side east none north side power 12 west side
3177 redstone_wire south side east none north side power 12 west none
3178 redstone_wire south none east none north side power 12 west up
3179 redstone_wire south none east none north side power 12 west side
3180 redstone_wire south none east none north side power 12 west none
3181 redstone_wire south up east none north side power 13 west up
3182 redstone_wire south up east none north side power 13 west side
3183 redstone_wire south up east none north side power 13 west none
3184 redstone_wire south side east none north side power 13 west up
3185 redstone_wire south side east none north side power 13 west side
3186 redstone_wire south side east none north side power 13 west none
3187 redstone_wire south none east none north side power 13 west up
3188 redstone_wire south none east none north side power 13 west side
3189 redstone_wire south none east none north side power 13 west none
3190 redstone_wire south up east none north side power 14 west up
3191 redstone_wire south up east none north side power 14 west side
3192 redstone_wire south up east none north side power 14 west none
3193 redstone_wire south side east none north side power 14 west up
3194 redstone_wire south side east none north side power 14 west side
3195 redstone_wire south side east none north side power 14 west none
3196 redstone_wire south none east none north side power 14 west up
3197 redstone_wire south none east none north side power 14 west side
3198 redstone_wire south none east none north side power 14 west none
3199 redstone_wire south up east none north side power 15 west up
3200 redstone_wire south up east none north side power 15 west side
3201 redstone_wire south up east none north side power 15 west none
3202 redstone_wire south side east none north side power 15 west up
3203 redstone_wire south side east none north side power 15 west side
3204 redstone_wire south side east none north side power 15 west none
3205 redstone_wire south none east none north side power 15 west up
3206 redstone_wire south none east none north side power 15 west side
3207 redstone_wire south none east none north side power 15 west none
3208 redstone_wire south up east none north none power 0 west up
3209 redstone_wire south up east none north none power 0 west side
3210 redstone_wire south up east none north none power 0 west none
3211 redstone_wire south side east none north none power 0 west up
3212 redstone_wire south side east none north none power 0 west side
3213 redstone_wire south side east none north none power 0 west none
3214 redstone_wire south none east none north none power 0 west up
3215 redstone_wire south none east none north none power 0 west side
3216 redstone_wire south none east none north none power 0 west none
3217 redstone_wire south up east none north none power 1 west up
3218 redstone_wire south up east none north none power 1 west side
3219 redstone_wire south up east none north none power 1 west none
3220 redstone_wire south side east none north none power 1 west up
3221 redstone_wire south side east none north none power 1 west side
3222 redstone_wire south side east none north none power 1 west none
3223 redstone_wire south none east none north none power 1 west up
3224 redstone_wire south none east none north none power 1 west side
3225 redstone_wire south none east none north none power 1 west none
3226 redstone_wire south up east none north none power 2 west up
3227 redstone_wire south up east none north none power 2 west side
3228 redstone_wire south up east none north none power 2 west none
3229 redstone_wire south side east none north none power 2 west up
3230 redstone_wire south side east none north none power 2 west side
3231 redstone_wire south side east none north none power 2 west none
3232 redstone_wire south none east none north none power 2 west up
3233 redstone_wire south none east none north none power 2 west side
3234 redstone_wire south none east none north none power 2 west none
3235 redstone_wire south up east none north none power 3 west up
3236 redstone_wire south up east none north none power 3 west side
3237 redstone_wire south up east none north none power 3 west none
3238 redstone_wire south side east none north none power 3 west up
3239 redstone_wire south side east none north none power 3 west side
3240 redstone_wire south side east none north none power 3 west none
3241 redstone_wire south none east none north none power 3 west up
3242 redstone_wire south none east none north none power 3 west side
3243 redstone_wire south none east none north none power 3 west none
3244 redstone_wire south up east none north none power 4 west up
3245 redstone_wire south up east none north none power 4 west side
3246 redstone_wire south up east none north none power 4 west none
3247 redstone_wire south side east none north none power 4 west up
3248 redstone_wire south side east none north none power 4 west side
3249 redstone_wire south side east none north none power 4 west none
3250 redstone_wire south none east none north none power 4 west up
3251 redstone_wire south none east none north none power 4 west side
3252 redstone_wire south none east none north none power 4 west none
3253 redstone_wire south up east none north none power 5 west up
3254 redstone_wire south up east none north none power 5 west side
3255 redstone_wire south up east none north none power 5 west none
3256 redstone_wire south side east none north none power 5 west up
3257 redstone_wire south side east none north none power 5 west side
3258 redstone_wire south side east none north none power 5 west none
3259 redstone_wire south none east none north none power 5 west up
3260 redstone_wire south none east none north none power 5 west side
3261 redstone_wire south none east none north none power 5 west none
3262 redstone_wire south up east none north none power 6 west up
3263 redstone_wire south up east none north none power 6 west side
3264 redstone_wire south up east none north none power 6 west none
3265 redstone_wire south side east none north none power 6 west up
3266 redstone_wire south side east none north none power 6 west side
3267 redstone_wire south side east none north none power 6 west none
3268 redstone_wire south none east none north none power 6 west up
3269 redstone_wire south none east none north none power 6 west side
3270 redstone_wire south none east none north none power 6 west none
3271 redstone_wire south up east none north none power 7 west up
3272 redstone_wire south up east none north none power 7 west side
3273 redstone_wire south up east none north none power 7 west none
3274 redstone_wire south side east none north none power 7 west up
3275 redstone_wire south side east none north none power 7 west side
3276 redstone_wire south side east none north none power 7 west none
3277 redstone_wire south none east none north none power 7 west up
3278 redstone_wire south none east none north none power 7 west side
3279 redstone_wire south none east none north none power 7 west none
3280 redstone_wire south up east none north none power 8 west up
3281 redstone_wire south up east none north none power 8 west side
3282 redstone_wire south up east none north none power 8 west none
3283 redstone_wire south side east none north none power 8 west up
3284 redstone_wire south side east none north none power 8 west side
3285 redstone_wire south side east none north none power 8 west none
3286 redstone_wire south none east none north none power 8 west up
3287 redstone_wire south none east none north none power 8 west side
3288 redstone_wire south none east none north none power 8 west none
3289 redstone_wire south up east none north none power 9 west up
3290 redstone_wire south up east none north none power 9 west side
3291 redstone_wire south up east none north none power 9 west none
3292 redstone_wire south side east none north none power 9 west up
3293 redstone_wire south side east none north none power 9 west side
3294 redstone_wire south side east none north none power 9 west none
3295 redstone_wire south none east none north none power 9 west up
3296 redstone_wire south none east none north none power 9 west side
3297 redstone_wire south none east none north none power 9 west none
3298 redstone_wire south up east none north none power 10 west up
3299 redstone_wire south up east none north none power 10 west side
3300 redstone_wire south up east none north none power 10 west none
3301 redstone_wire south side east none north none power 10 west up
3302 redstone_wire south side east none north none power 10 west side
3303 redstone_wire south side east none north none power 10 west none
3304 redstone_wire south none east none north none power 10 west up
3305 redstone_wire south none east none north none power 10 west side
3306 redstone_wire south none east none north none power 10 west none
3307 redstone_wire south up east none north none power 11 west up
3308 redstone_wire south up east none north none power 11 west side
3309 redstone_wire south up east none north none power 11 west none
3310 redstone_wire south side east none north none power 11 west up
3311 redstone_wire south side east none north none power 11 west side
3312 redstone_wire south side east none north none power 11 west none
3313 redstone_wire south none east none north none power 11 west up
3314 redstone_wire south none east none north none power 11 west side
3315 redstone_wire south none east none north none power 11 west none
3316 redstone_wire south up east none north none power 12 west up
3317 redstone_wire south up east none north none power 12 west side
3318 redstone_wire south up east none north none power 12 west none
3319 redstone_wire south side east none north none power 12 west up
3320 redstone_wire south side east none north none power 12 west side
3321 redstone_wire south side east none north none power 12 west none
3322 redstone_wire south none east none north none power 12 west up
3323 redstone_wire south none east none north none power 12 west side
3324 redstone_wire south none east none north none power 12 west none
3325 redstone_wire south up east none north none power 13 west up
3326 redstone_wire south up east none north none power 13 west side
3327 redstone_wire south up east none north none power 13 west none
3328 redstone_wire south side east none north none power 13 west up
3329 redstone_wire south side east none north none power 13 west side
3330 redstone_wire south side east none north none power 13 west none
3331 redstone_wire south none east none north none power 13 west up
3332 redstone_wire south none east none north none power 13 west side
3333 redstone_wire south none east none north none power 13 west none
3334 redstone_wire south up east none north none power 14 west up
3335 redstone_wire south up east none north none power 14 west side
3336 redstone_wire south up east none north none power 14 west none
3337 redstone_wire south side east none north none power 14 west up
3338 redstone_wire south side east none north none power 14 west side
3339 redstone_wire south side east none north none power 14 west none
3340 redstone_wire south none east none north none power 14 west up
3341 redstone_wire south none east none north none power 14 west side
3342 redstone_wire south none east none north none power 14 west none
3343 redstone_wire south up east none north none power 15 west up
3344 redstone_wire south up east none north none power 15 west side
3345 redstone_wire south up east none north none power 15 west none
3346 redstone_wire south side east none north none power 15 west up
3347 redstone_wire south side east none north none power 15 west side
3348 redstone_wire south side east none north none power 15 west none
3349 redstone_wire south none east none north none power 15 west up
3350 redstone_wire south none east none north none power 15 west side
3351 redstone_wire south none east none north none power 15 west none
3352 diamond_ore
3353 diamond_block
3354 crafting_table
3355 wheat age 0
3356 wheat age 1
3357 wheat age 2
3358 wheat age 3
3359 wheat age 4
3360 wheat age 5
3361 wheat age 6
3362 wheat age 7
3363 farmland moisture 0
3364 farmland moisture 1
3365 farmland moisture 2
3366 farmland moisture 3
3367 farmland moisture 4
3368 farmland moisture 5
3369 farmland moisture 6
3370 farmland moisture 7
3371 furnace facing north lit true
3372 furnace facing north lit false
3373 furnace facing south lit true
3374 furnace facing south lit false
3375 furnace facing west lit true
3376 furnace facing west lit false
3377 furnace facing east lit true
3378 furnace facing east lit false
3379 oak_sign waterlogged true rotation 0
3380 oak_sign waterlogged false rotation 0
3381 oak_sign waterlogged true rotation 1
3382 oak_sign waterlogged false rotation 1
3383 oak_sign waterlogged true rotation 2
3384 oak_sign waterlogged false rotation 2
3385 oak_sign waterlogged true rotation 3
3386 oak_sign waterlogged false rotation 3
3387 oak_sign waterlogged true rotation 4
3388 oak_sign waterlogged false rotation 4
3389 oak_sign waterlogged true rotation 5
3390 oak_sign waterlogged false rotation 5
3391 oak_sign waterlogged true rotation 6
3392 oak_sign waterlogged false rotation 6
3393 oak_sign waterlogged true rotation 7
3394 oak_sign waterlogged false rotation 7
3395 oak_sign waterlogged true rotation 8
3396 oak_sign waterlogged false rotation 8
3397 oak_sign waterlogged true rotation 9
3398 oak_sign waterlogged false rotation 9
3399 oak_sign waterlogged true rotation 10
3400 oak_sign waterlogged false rotation 10
3401 oak_sign waterlogged true rotation 11
3402 oak_sign waterlogged false rotation 11
3403 oak_sign waterlogged true rotation 12
3404 oak_sign waterlogged false rotation 12
3405 oak_sign waterlogged true rotation 13
3406 oak_sign waterlogged false rotation 13
3407 oak_sign waterlogged true rotation 14
3408 oak_sign waterlogged false rotation 14
3409 oak_sign waterlogged true rotation 15
3410 oak_sign waterlogged false rotation 15
3411 spruce_sign waterlogged true rotation 0
3412 spruce_sign waterlogged false rotation 0
3413 spruce_sign waterlogged true rotation 1
3414 spruce_sign waterlogged false rotation 1
3415 spruce_sign waterlogged true rotation 2
3416 spruce_sign waterlogged false rotation 2
3417 spruce_sign waterlogged true rotation 3
3418 spruce_sign waterlogged false rotation 3
3419 spruce_sign waterlogged true rotation 4
3420 spruce_sign waterlogged false rotation 4
3421 spruce_sign waterlogged true rotation 5
3422 spruce_sign waterlogged false rotation 5
3423 spruce_sign waterlogged true rotation 6
3424 spruce_sign waterlogged false rotation 6
3425 spruce_sign waterlogged true rotation 7
3426 spruce_sign waterlogged false rotation 7
3427 spruce_sign waterlogged true rotation 8
3428 spruce_sign waterlogged false rotation 8
3429 spruce_sign waterlogged true rotation 9
3430 spruce_sign waterlogged false rotation 9
3431 spruce_sign waterlogged true rotation 10
3432 spruce_sign waterlogged false rotation 10
3433 spruce_sign waterlogged true rotation 11
3434 spruce_sign waterlogged false rotation 11
3435 spruce_sign waterlogged true rotation 12
3436 spruce_sign waterlogged false rotation 12
3437 spruce_sign waterlogged true rotation 13
3438 spruce_sign waterlogged false rotation 13
3439 spruce_sign waterlogged true rotation 14
3440 spruce_sign waterlogged false rotation 14
3441 spruce_sign waterlogged true rotation 15
3442 spruce_sign waterlogged false rotation 15
3443 birch_sign waterlogged true rotation 0
3444 birch_sign waterlogged false rotation 0
3445 birch_sign waterlogged true rotation 1
3446 birch_sign waterlogged false rotation 1
3447 birch_sign waterlogged true rotation 2
3448 birch_sign waterlogged false rotation 2
3449 birch_sign waterlogged true rotation 3
3450 birch_sign waterlogged false rotation 3
3451 birch_sign waterlogged true rotation 4
3452 birch_sign waterlogged false rotation 4
3453 birch_sign waterlogged true rotation 5
3454 birch_sign waterlogged false rotation 5
3455 birch_sign waterlogged true rotation 6
3456 birch_sign waterlogged false rotation 6
3457 birch_sign waterlogged true rotation 7
3458 birch_sign waterlogged false rotation 7
3459 birch_sign waterlogged true rotation 8
3460 birch_sign waterlogged false rotation 8
3461 birch_sign waterlogged true rotation 9
3462 birch_sign waterlogged false rotation 9
3463 birch_sign waterlogged true rotation 10
3464 birch_sign waterlogged false rotation 10
3465 birch_sign waterlogged true rotation 11
3466 birch_sign waterlogged false rotation 11
3467 birch_sign waterlogged true rotation 12
3468 birch_sign waterlogged false rotation 12
3469 birch_sign waterlogged true rotation 13
3470 birch_sign waterlogged false rotation 13
3471 birch_sign waterlogged true rotation 14
3472 birch_sign waterlogged false rotation 14
3473 birch_sign waterlogged true rotation 15
3474 birch_sign waterlogged false rotation 15
3475 acacia_sign waterlogged true rotation 0
3476 acacia_sign waterlogged false rotation 0
3477 acacia_sign waterlogged true rotation 1
3478 acacia_sign waterlogged false rotation 1
3479 acacia_sign waterlogged true rotation 2
3480 acacia_sign waterlogged false rotation 2
3481 acacia_sign waterlogged true rotation 3
3482 acacia_sign waterlogged false rotation 3
3483 acacia_sign waterlogged true rotation 4
3484 acacia_sign waterlogged false rotation 4
3485 acacia_sign waterlogged true rotation 5
3486 acacia_sign waterlogged false rotation 5
3487 acacia_sign waterlogged true rotation 6
3488 acacia_sign waterlogged false rotation 6
3489 acacia_sign waterlogged true rotation 7
3490 acacia_sign waterlogged false rotation 7
3491 acacia_sign waterlogged true rotation 8
3492 acacia_sign waterlogged false rotation 8
3493 acacia_sign waterlogged true rotation 9
3494 acacia_sign waterlogged false rotation 9
3495 acacia_sign waterlogged true rotation 10
3496 acacia_sign waterlogged false rotation 10
3497 acacia_sign waterlogged true rotation 11
3498 acacia_sign waterlogged false rotation 11
3499 acacia_sign waterlogged true rotation 12
3500 acacia_sign waterlogged false rotation 12
3501 acacia_sign waterlogged true rotation 13
3502 acacia_sign waterlogged false rotation 13
3503 acacia_sign waterlogged true rotation 14
3504 acacia_sign waterlogged false rotation 14
3505 acacia_sign waterlogged true rotation 15
3506 acacia_sign waterlogged false rotation 15
3507 jungle_sign waterlogged true rotation 0
3508 jungle_sign waterlogged false rotation 0
3509 jungle_sign waterlogged true rotation 1
3510 jungle_sign waterlogged false rotation 1
3511 jungle_sign waterlogged true rotation 2
3512 jungle_sign waterlogged false rotation 2
3513 jungle_sign waterlogged true rotation 3
3514 jungle_sign waterlogged false rotation 3
3515 jungle_sign waterlogged true rotation 4
3516 jungle_sign waterlogged false rotation 4
3517 jungle_sign waterlogged true rotation 5
3518 jungle_sign waterlogged false rotation 5
3519 jungle_sign waterlogged true rotation 6
3520 jungle_sign waterlogged false rotation 6
3521 jungle_sign waterlogged true rotation 7
3522 jungle_sign waterlogged false rotation 7
3523 jungle_sign waterlogged true rotation 8
3524 jungle_sign waterlogged false rotation 8
3525 jungle_sign waterlogged true rotation 9
3526 jungle_sign waterlogged false rotation 9
3527 jungle_sign waterlogged true rotation 10
3528 jungle_sign waterlogged false rotation 10
3529 jungle_sign waterlogged true rotation 11
3530 jungle_sign waterlogged false rotation 11
3531 jungle_sign waterlogged true rotation 12
3532 jungle_sign waterlogged false rotation 12
3533 jungle_sign waterlogged true rotation 13
3534 jungle_sign waterlogged false rotation 13
3535 jungle_sign waterlogged true rotation 14
3536 jungle_sign waterlogged false rotation 14
3537 jungle_sign waterlogged true rotation 15
3538 jungle_sign waterlogged false rotation 15
3539 dark_oak_sign waterlogged true rotation 0
3540 dark_oak_sign waterlogged false rotation 0
3541 dark_oak_sign waterlogged true rotation 1
3542 dark_oak_sign waterlogged false rotation 1
3543 dark_oak_sign waterlogged true rotation 2
3544 dark_oak_sign waterlogged false rotation 2
3545 dark_oak_sign waterlogged true rotation 3
3546 dark_oak_sign waterlogged false rotation 3
3547 dark_oak_sign waterlogged true rotation 4
3548 dark_oak_sign waterlogged false rotation 4
3549 dark_oak_sign waterlogged true rotation 5
3550 dark_oak_sign waterlogged false rotation 5
3551 dark_oak_sign waterlogged true rotation 6
3552 dark_oak_sign waterlogged false rotation 6
3553 dark_oak_sign waterlogged true rotation 7
3554 dark_oak_sign waterlogged false rotation 7
3555 dark_oak_sign waterlogged true rotation 8
3556 dark_oak_sign waterlogged false rotation 8
3557 dark_oak_sign waterlogged true rotation 9
3558 dark_oak_sign waterlogged false rotation 9
3559 dark_oak_sign waterlogged true rotation 10
3560 dark_oak_sign waterlogged false rotation 10
3561 dark_oak_sign waterlogged true rotation 11
3562 dark_oak_sign waterlogged false rotation 11
3563 dark_oak_sign waterlogged true rotation 12
3564 dark_oak_sign waterlogged false rotation 12
3565 dark_oak_sign waterlogged true rotation 13
3566 dark_oak_sign waterlogged false rotation 13
3567 dark_oak_sign waterlogged true rotation 14
3568 dark_oak_sign waterlogged false rotation 14
3569 dark_oak_sign waterlogged true rotation 15
3570 dark_oak_sign waterlogged false rotation 15
3571 oak_door hinge left half upper facing north powered true open true
3572 oak_door hinge left half upper facing north powered false open true
3573 oak_door hinge left half upper facing north powered true open false
3574 oak_door hinge left half upper facing north powered false open false
3575 oak_door hinge right half upper facing north powered true open true
3576 oak_door hinge right half upper facing north powered false open true
3577 oak_door hinge right half upper facing north powered true open false
3578 oak_door hinge right half upper facing north powered false open false
3579 oak_door hinge left half lower facing north powered true open true
3580 oak_door hinge left half lower facing north powered false open true
3581 oak_door hinge left half lower facing north powered true open false
3582 oak_door hinge left half lower facing north powered false open false
3583 oak_door hinge right half lower facing north powered true open true
3584 oak_door hinge right half lower facing north powered false open true
3585 oak_door hinge right half lower facing north powered true open false
3586 oak_door hinge right half lower facing north powered false open false
3587 oak_door hinge left half upper facing south powered true open true
3588 oak_door hinge left half upper facing south powered false open true
3589 oak_door hinge left half upper facing south powered true open false
3590 oak_door hinge left half upper facing south powered false open false
3591 oak_door hinge right half upper facing south powered true open true
3592 oak_door hinge right half upper facing south powered false open true
3593 oak_door hinge right half upper facing south powered true open false
3594 oak_door hinge right half upper facing south powered false open false
3595 oak_door hinge left half lower facing south powered true open true
3596 oak_door hinge left half lower facing south powered false open true
3597 oak_door hinge left half lower facing south powered true open false
3598 oak_door hinge left half lower facing south powered false open false
3599 oak_door hinge right half lower facing south powered true open true
3600 oak_door hinge right half lower facing south powered false open true
3601 oak_door hinge right half lower facing south powered true open false
3602 oak_door hinge right half lower facing south powered false open false
3603 oak_door hinge left half upper facing west powered true open true
3604 oak_door hinge left half upper facing west powered false open true
3605 oak_door hinge left half upper facing west powered true open false
3606 oak_door hinge left half upper facing west powered false open false
3607 oak_door hinge right half upper facing west powered true open true
3608 oak_door hinge right half upper facing west powered false open true
3609 oak_door hinge right half upper facing west powered true open false
3610 oak_door hinge right half upper facing west powered false open false
3611 oak_door hinge left half lower facing west powered true open true
3612 oak_door hinge left half lower facing west powered false open true
3613 oak_door hinge left half lower facing west powered true open false
3614 oak_door hinge left half lower facing west powered false open false
3615 oak_door hinge right half lower facing west powered true open true
3616 oak_door hinge right half lower facing west powered false open true
3617 oak_door hinge right half lower facing west powered true open false
3618 oak_door hinge right half lower facing west powered false open false
3619 oak_door hinge left half upper facing east powered true open true
3620 oak_door hinge left half upper facing east powered false open true
3621 oak_door hinge left half upper facing east powered true open false
3622 oak_door hinge left half upper facing east powered false open false
3623 oak_door hinge right half upper facing east powered true open true
3624 oak_door hinge right half upper facing east powered false open true
3625 oak_door hinge right half upper facing east powered true open false
3626 oak_door hinge right half upper facing east powered false open false
3627 oak_door hinge left half lower facing east powered true open true
3628 oak_door hinge left half lower facing east powered false open true
3629 oak_door hinge left half lower facing east powered true open false
3630 oak_door hinge left half lower facing east powered false open false
3631 oak_door hinge right half lower facing east powered true open true
3632 oak_door hinge right half lower facing east powered false open true
3633 oak_door hinge right half lower facing east powered true open false
3634 oak_door hinge right half lower facing east powered false open false
3635 ladder facing north waterlogged true
3636 ladder facing north waterlogged false
3637 ladder facing south waterlogged true
3638 ladder facing south waterlogged false
3639 ladder facing west waterlogged true
3640 ladder facing west waterlogged false
3641 ladder facing east waterlogged true
3642 ladder facing east waterlogged false
3643 rail shape north_south
3644 rail shape east_west
3645 rail shape ascending_east
3646 rail shape ascending_west
3647 rail shape ascending_north
3648 rail shape ascending_south
3649 rail shape south_east
3650 rail shape south_west
3651 rail shape north_west
3652 rail shape north_east
3653 cobblestone_stairs facing north waterlogged true shape straight half top
3654 cobblestone_stairs facing north waterlogged false shape straight half top
3655 cobblestone_stairs facing north waterlogged true shape inner_left half top
3656 cobblestone_stairs facing north waterlogged false shape inner_left half top
3657 cobblestone_stairs facing north waterlogged true shape inner_right half top
3658 cobblestone_stairs facing north waterlogged false shape inner_right half top
3659 cobblestone_stairs facing north waterlogged true shape outer_left half top
3660 cobblestone_stairs facing north waterlogged false shape outer_left half top
3661 cobblestone_stairs facing north waterlogged true shape outer_right half top
3662 cobblestone_stairs facing north waterlogged false shape outer_right half top
3663 cobblestone_stairs facing north waterlogged true shape straight half bottom
3664 cobblestone_stairs facing north waterlogged false shape straight half bottom
3665 cobblestone_stairs facing north waterlogged true shape inner_left half bottom
3666 cobblestone_stairs facing north waterlogged false shape inner_left half bottom
3667 cobblestone_stairs facing north waterlogged true shape inner_right half bottom
3668 cobblestone_stairs facing north waterlogged false shape inner_right half bottom
3669 cobblestone_stairs facing north waterlogged true shape outer_left half bottom
3670 cobblestone_stairs facing north waterlogged false shape outer_left half bottom
3671 cobblestone_stairs facing north waterlogged true shape outer_right half bottom
3672 cobblestone_stairs facing north waterlogged false shape outer_right half bottom
3673 cobblestone_stairs facing south waterlogged true shape straight half top
3674 cobblestone_stairs facing south waterlogged false shape straight half top
3675 cobblestone_stairs facing south waterlogged true shape inner_left half top
3676 cobblestone_stairs facing south waterlogged false shape inner_left half top
3677 cobblestone_stairs facing south waterlogged true shape inner_right half top
3678 cobblestone_stairs facing south waterlogged false shape inner_right half top
3679 cobblestone_stairs facing south waterlogged true shape outer_left half top
3680 cobblestone_stairs facing south waterlogged false shape outer_left half top
3681 cobblestone_stairs facing south waterlogged true shape outer_right half top
3682 cobblestone_stairs facing south waterlogged false shape outer_right half top
3683 cobblestone_stairs facing south waterlogged true shape straight half bottom
3684 cobblestone_stairs facing south waterlogged false shape straight half bottom
3685 cobblestone_stairs facing south waterlogged true shape inner_left half bottom
3686 cobblestone_stairs facing south waterlogged false shape inner_left half bottom
3687 cobblestone_stairs facing south waterlogged true shape inner_right half bottom
3688 cobblestone_stairs facing south waterlogged false shape inner_right half bottom
3689 cobblestone_stairs facing south waterlogged true shape outer_left half bottom
3690 cobblestone_stairs facing south waterlogged false shape outer_left half bottom
3691 cobblestone_stairs facing south waterlogged true shape outer_right half bottom
3692 cobblestone_stairs facing south waterlogged false shape outer_right half bottom
3693 cobblestone_stairs facing west waterlogged true shape straight half top
3694 cobblestone_stairs facing west waterlogged false shape straight half top
3695 cobblestone_stairs facing west waterlogged true shape inner_left half top
3696 cobblestone_stairs facing west waterlogged false shape inner_left half top
3697 cobblestone_stairs facing west waterlogged true shape inner_right half top
3698 cobblestone_stairs facing west waterlogged false shape inner_right half top
3699 cobblestone_stairs facing west waterlogged true shape outer_left half top
3700 cobblestone_stairs facing west waterlogged false shape outer_left half top
3701 cobblestone_stairs facing west waterlogged true shape outer_right half top
3702 cobblestone_stairs facing west waterlogged false shape outer_right half top
3703 cobblestone_stairs facing west waterlogged true shape straight half bottom
3704 cobblestone_stairs facing west waterlogged false shape straight half bottom
3705 cobblestone_stairs facing west waterlogged true shape inner_left half bottom
3706 cobblestone_stairs facing west waterlogged false shape inner_left half bottom
3707 cobblestone_stairs facing west waterlogged true shape inner_right half bottom
3708 cobblestone_stairs facing west waterlogged false shape inner_right half bottom
3709 cobblestone_stairs facing west waterlogged true shape outer_left half bottom
3710 cobblestone_stairs facing west waterlogged false shape outer_left half bottom
3711 cobblestone_stairs facing west waterlogged true shape outer_right half bottom
3712 cobblestone_stairs facing west waterlogged false shape outer_right half bottom
3713 cobblestone_stairs facing east waterlogged true shape straight half top
3714 cobblestone_stairs facing east waterlogged false shape straight half top
3715 cobblestone_stairs facing east waterlogged true shape inner_left half top
3716 cobblestone_stairs facing east waterlogged false shape inner_left half top
3717 cobblestone_stairs facing east waterlogged true shape inner_right half top
3718 cobblestone_stairs facing east waterlogged false shape inner_right half top
3719 cobblestone_stairs facing east waterlogged true shape outer_left half top
3720 cobblestone_stairs facing east waterlogged false shape outer_left half top
3721 cobblestone_stairs facing east waterlogged true shape outer_right half top
3722 cobblestone_stairs facing east waterlogged false shape outer_right half top
3723 cobblestone_stairs facing east waterlogged true shape straight half bottom
3724 cobblestone_stairs facing east waterlogged false shape straight half bottom
3725 cobblestone_stairs facing east waterlogged true shape inner_left half bottom
3726 cobblestone_stairs facing east waterlogged false shape inner_left half bottom
3727 cobblestone_stairs facing east waterlogged true shape inner_right half bottom
3728 cobblestone_stairs facing east waterlogged false shape inner_right half bottom
3729 cobblestone_stairs facing east waterlogged true shape outer_left half bottom
3730 cobblestone_stairs facing east waterlogged false shape outer_left half bottom
3731 cobblestone_stairs facing east waterlogged true shape outer_right half bottom
3732 cobblestone_stairs facing east waterlogged false shape outer_right half bottom
3733 oak_wall_sign facing north waterlogged true
3734 oak_wall_sign facing north waterlogged false
3735 oak_wall_sign facing south waterlogged true
3736 oak_wall_sign facing south waterlogged false
3737 oak_wall_sign facing west waterlogged true
3738 oak_wall_sign facing west waterlogged false
3739 oak_wall_sign facing east waterlogged true
3740 oak_wall_sign facing east waterlogged false
3741 spruce_wall_sign facing north waterlogged true
3742 spruce_wall_sign facing north waterlogged false
3743 spruce_wall_sign facing south waterlogged true
3744 spruce_wall_sign facing south waterlogged false
3745 spruce_wall_sign facing west waterlogged true
3746 spruce_wall_sign facing west waterlogged false
3747 spruce_wall_sign facing east waterlogged true
3748 spruce_wall_sign facing east waterlogged false
3749 birch_wall_sign facing north waterlogged true
3750 birch_wall_sign facing north waterlogged false
3751 birch_wall_sign facing south waterlogged true
3752 birch_wall_sign facing south waterlogged false
3753 birch_wall_sign facing west waterlogged true
3754 birch_wall_sign facing west waterlogged false
3755 birch_wall_sign facing east waterlogged true
3756 birch_wall_sign facing east waterlogged false
3757 acacia_wall_sign facing north waterlogged true
3758 acacia_wall_sign facing north waterlogged false
3759 acacia_wall_sign facing south waterlogged true
3760 acacia_wall_sign facing south waterlogged false
3761 acacia_wall_sign facing west waterlogged true
3762 acacia_wall_sign facing west waterlogged false
3763 acacia_wall_sign facing east waterlogged true
3764 acacia_wall_sign facing east waterlogged false
3765 jungle_wall_sign facing north waterlogged true
3766 jungle_wall_sign facing north waterlogged false
3767 jungle_wall_sign facing south waterlogged true
3768 jungle_wall_sign facing south waterlogged false
3769 jungle_wall_sign facing west waterlogged true
3770 jungle_wall_sign facing west waterlogged false
3771 jungle_wall_sign facing east waterlogged true
3772 jungle_wall_sign facing east waterlogged false
3773 dark_oak_wall_sign facing north waterlogged true
3774 dark_oak_wall_sign facing north waterlogged false
3775 dark_oak_wall_sign facing south waterlogged true
3776 dark_oak_wall_sign facing south waterlogged false
3777 dark_oak_wall_sign facing west waterlogged true
3778 dark_oak_wall_sign facing west waterlogged false
3779 dark_oak_wall_sign facing east waterlogged true
3780 dark_oak_wall_sign facing east waterlogged false
3781 lever facing north face floor powered true
3782 lever facing north face floor powered false
3783 lever facing south face floor powered true
3784 lever facing south face floor powered false
3785 lever facing west face floor powered true
3786 lever facing west face floor powered false
3787 lever facing east face floor powered true
3788 lever facing east face floor powered false
3789 lever facing north face wall powered true
3790 lever facing north face wall powered false
3791 lever facing south face wall powered true
3792 lever facing south face wall powered false
3793 lever facing west face wall powered true
3794 lever facing west face wall powered false
3795 lever facing east face wall powered true
3796 lever facing east face wall powered false
3797 lever facing north face ceiling powered true
3798 lever facing north face ceiling powered false
3799 lever facing south face ceiling powered true
3800 lever facing south face ceiling powered false
3801 lever facing west face ceiling powered true
3802 lever facing west face ceiling powered false
3803 lever facing east face ceiling powered true
3804 lever facing east face ceiling powered false
3805 stone_pressure_plate powered true
3806 stone_pressure_plate powered false
3807 iron_door hinge left half upper facing north powered true open true
3808 iron_door hinge left half upper facing north powered false open true
3809 iron_door hinge left half upper facing north powered true open false
3810 iron_door hinge left half upper facing north powered false open false
3811 iron_door hinge right half upper facing north powered true open true
3812 iron_door hinge right half upper facing north powered false open true
3813 iron_door hinge right half upper facing north powered true open false
3814 iron_door hinge right half upper facing north powered false open false
3815 iron_door hinge left half lower facing north powered true open true
3816 iron_door hinge left half lower facing north powered false open true
3817 iron_door hinge left half lower facing north powered true open false
3818 iron_door hinge left half lower facing north powered false open false
3819 iron_door hinge right half lower facing north powered true open true
3820 iron_door hinge right half lower facing north powered false open true
3821 iron_door hinge right half lower facing north powered true open false
3822 iron_door hinge right half lower facing north powered false open false
3823 iron_door hinge left half upper facing south powered true open true
3824 iron_door hinge left half upper facing south powered false open true
3825 iron_door hinge left half upper facing south powered true open false
3826 iron_door hinge left half upper facing south powered false open false
3827 iron_door hinge right half upper facing south powered true open true
3828 iron_door hinge right half upper facing south powered false open true
3829 iron_door hinge right half upper facing south powered true open false
3830 iron_door hinge right half upper facing south powered false open false
3831 iron_door hinge left half lower facing south powered true open true
3832 iron_door hinge left half lower facing south powered false open true
3833 iron_door hinge left half lower facing south powered true open false
3834 iron_door hinge left half lower facing south powered false open false
3835 iron_door hinge right half lower facing south powered true open true
3836 iron_door hinge right half lower facing south powered false open true
3837 iron_door hinge right half lower facing south powered true open false
3838 iron_door hinge right half lower facing south powered false open false
3839 iron_door hinge left half upper facing west powered true open true
3840 iron_door hinge left half upper facing west powered false open true
3841 iron_door hinge left half upper facing west powered true open false
3842 iron_door hinge left half upper facing west powered false open false
3843 iron_door hinge right half upper facing west powered true open true
3844 iron_door hinge right half upper facing west powered false open true
3845 iron_door hinge right half upper facing west powered true open false
3846 iron_door hinge right half upper facing west powered false open false
3847 iron_door hinge left half lower facing west powered true open true
3848 iron_door hinge left half lower facing west powered false open true
3849 iron_door hinge left half lower facing west powered true open false
3850 iron_door hinge left half lower facing west powered false open false
3851 iron_door hinge right half lower facing west powered true open true
3852 iron_door hinge right half lower facing west powered false open true
3853 iron_door hinge right half lower facing west powered true open false
3854 iron_door hinge right half lower facing west powered false open false
3855 iron_door hinge left half upper facing east powered true open true
3856 iron_door hinge left half upper facing east powered false open true
3857 iron_door hinge left half upper facing east powered true open false
3858 iron_door hinge left half upper facing east powered false open false
3859 iron_door hinge right half upper facing east powered true open true
3860 iron_door hinge right half upper facing east powered false open true
3861 iron_door hinge right half upper facing east powered true open false
3862 iron_door hinge right half upper facing east powered false open false
3863 iron_door hinge left half lower facing east powered true open true
3864 iron_door hinge left half lower facing east powered false open true
3865 iron_door hinge left half lower facing east powered true open false
3866 iron_door hinge left half lower facing east powered false open false
3867 iron_door hinge right half lower facing east powered true open true
3868 iron_door hinge right half lower facing east powered false open true
3869 iron_door hinge right half lower facing east powered true open false
3870 iron_door hinge right half lower facing east powered false open false
3871 oak_pressure_plate powered true
3872 oak_pressure_plate powered false
3873 spruce_pressure_plate powered true
3874 spruce_pressure_plate powered false
3875 birch_pressure_plate powered true
3876 birch_pressure_plate powered false
3877 jungle_pressure_plate powered true
3878 jungle_pressure_plate powered false
3879 acacia_pressure_plate powered true
3880 acacia_pressure_plate powered false
3881 dark_oak_pressure_plate powered true
3882 dark_oak_pressure_plate powered false
3883 redstone_ore lit true
3884 redstone_ore lit false
3885 redstone_torch lit true
3886 redstone_torch lit false
3887 redstone_wall_torch facing north lit true
3888 redstone_wall_torch facing north lit false
3889 redstone_wall_torch facing south lit true
3890 redstone_wall_torch facing south lit false
3891 redstone_wall_torch facing west lit true
3892 redstone_wall_torch facing west lit false
3893 redstone_wall_torch facing east lit true
3894 redstone_wall_torch facing east lit false
3895 stone_button facing north face floor powered true
3896 stone_button facing north face floor powered false
3897 stone_button facing south face floor powered true
3898 stone_button facing south face floor powered false
3899 stone_button facing west face floor powered true
3900 stone_button facing west face floor powered false
3901 stone_button facing east face floor powered true
3902 stone_button facing east face floor powered false
3903 stone_button facing north face wall powered true
3904 stone_button facing north face wall powered false
3905 stone_button facing south face wall powered true
3906 stone_button facing south face wall powered false
3907 stone_button facing west face wall powered true
3908 stone_button facing west face wall powered false
3909 stone_button facing east face wall powered true
3910 stone_button facing east face wall powered false
3911 stone_button facing north face ceiling powered true
3912 stone_button facing north face ceiling powered false
3913 stone_button facing south face ceiling powered true
3914 stone_button facing south face ceiling powered false
3915 stone_button facing west face ceiling powered true
3916 stone_button facing west face ceiling powered false
3917 stone_button facing east face ceiling powered true
3918 stone_button facing east face ceiling powered false
3919 snow layers 1
3920 snow layers 2
3921 snow layers 3
3922 snow layers 4
3923 snow layers 5
3924 snow layers 6
3925 snow layers 7
3926 snow layers 8
3927 ice
3928 snow_block
3929 cactus age 0
3930 cactus age 1
3931 cactus age 2
3932 cactus age 3
3933 cactus age 4
3934 cactus age 5
3935 cactus age 6
3936 cactus age 7
3937 cactus age 8
3938 cactus age 9
3939 cactus age 10
3940 cactus age 11
3941 cactus age 12
3942 cactus age 13
3943 cactus age 14
3944 cactus age 15
3945 clay
3946 sugar_cane age 0
3947 sugar_cane age 1
3948 sugar_cane age 2
3949 sugar_cane age 3
3950 sugar_cane age 4
3951 sugar_cane age 5
3952 sugar_cane age 6
3953 sugar_cane age 7
3954 sugar_cane age 8
3955 sugar_cane age 9
3956 sugar_cane age 10
3957 sugar_cane age 11
3958 sugar_cane age 12
3959 sugar_cane age 13
3960 sugar_cane age 14
3961 sugar_cane age 15
3962 jukebox has_record true
3963 jukebox has_record false
3964 oak_fence waterlogged true south true east true north true west true
3965 oak_fence waterlogged true south true east true north true west false
3966 oak_fence waterlogged false south true east true north true west true
3967 oak_fence waterlogged false south true east true north true west false
3968 oak_fence waterlogged true south false east true north true west true
3969 oak_fence waterlogged true south false east true north true west false
3970 oak_fence waterlogged false south false east true north true west true
3971 oak_fence waterlogged false south false east true north true west false
3972 oak_fence waterlogged true south true east true north false west true
3973 oak_fence waterlogged true south true east true north false west false
3974 oak_fence waterlogged false south true east true north false west true
3975 oak_fence waterlogged false south true east true north false west false
3976 oak_fence waterlogged true south false east true north false west true
3977 oak_fence waterlogged true south false east true north false west false
3978 oak_fence waterlogged false south false east true north false west true
3979 oak_fence waterlogged false south false east true north false west false
3980 oak_fence waterlogged true south true east false north true west true
3981 oak_fence waterlogged true south true east false north true west false
3982 oak_fence waterlogged false south true east false north true west true
3983 oak_fence waterlogged false south true east false north true west false
3984 oak_fence waterlogged true south false east false north true west true
3985 oak_fence waterlogged true south false east false north true west false
3986 oak_fence waterlogged false south false east false north true west true
3987 oak_fence waterlogged false south false east false north true west false
3988 oak_fence waterlogged true south true east false north false west true
3989 oak_fence waterlogged true south true east false north false west false
3990 oak_fence waterlogged false south true east false north false west true
3991 oak_fence waterlogged false south true east false north false west false
3992 oak_fence waterlogged true south false east false north false west true
3993 oak_fence waterlogged true south false east false north false west false
3994 oak_fence waterlogged false south false east false north false west true
3995 oak_fence waterlogged false south false east false north false west false
3996 pumpkin
3997 netherrack
3998 soul_sand
3999 glowstone
4000 nether_portal axis x
4001 nether_portal axis z
4002 carved_pumpkin facing north
4003 carved_pumpkin facing south
4004 carved_pumpkin facing west
4005 carved_pumpkin facing east
4006 jack_o_lantern facing north
4007 jack_o_lantern facing south
4008 jack_o_lantern facing west
4009 jack_o_lantern facing east
4010 cake bites 0
4011 cake bites 1
4012 cake bites 2
4013 cake bites 3
4014 cake bites 4
4015 cake bites 5
4016 cake bites 6
4017 repeater facing north powered true locked true delay 1
4018 repeater facing north powered false locked true delay 1
4019 repeater facing north powered true locked false delay 1
4020 repeater facing north powered false locked false delay 1
4021 repeater facing south powered true locked true delay 1
4022 repeater facing south powered false locked true delay 1
4023 repeater facing south powered true locked false delay 1
4024 repeater facing south powered false locked false delay 1
4025 repeater facing west powered true locked true delay 1
4026 repeater facing west powered false locked true delay 1
4027 repeater facing west powered true locked false delay 1
4028 repeater facing west powered false locked false delay 1
4029 repeater facing east powered true locked true delay 1
4030 repeater facing east powered false locked true delay 1
4031 repeater facing east powered true locked false delay 1
4032 repeater facing east powered false locked false delay 1
4033 repeater facing north powered true locked true delay 2
4034 repeater facing north powered false locked true delay 2
4035 repeater facing north powered true locked false delay 2
4036 repeater facing north powered false locked false delay 2
4037 repeater facing south powered true locked true delay 2
4038 repeater facing south powered false locked true delay 2
4039 repeater facing south powered true locked false delay 2
4040 repeater facing south powered false locked false delay 2
4041 repeater facing west powered true locked true delay 2
4042 repeater facing west powered false locked true delay 2
4043 repeater facing west powered true locked false delay 2
4044 repeater facing west powered false locked false delay 2
4045 repeater facing east powered true locked true delay 2
4046 repeater facing east powered false locked true delay 2
4047 repeater facing east powered true locked false delay 2
4048 repeater facing east powered false locked false delay 2
4049 repeater facing north powered true locked true delay 3
4050 repeater facing north powered false locked true delay 3
4051 repeater facing north powered true locked false delay 3
4052 repeater facing north powered false locked false delay 3
4053 repeater facing south powered true locked true delay 3
4054 repeater facing south powered false locked true delay 3
4055 repeater facing south powered true locked false delay 3
4056 repeater facing south powered false locked false delay 3
4057 repeater facing west powered true locked true delay 3
4058 repeater facing west powered false locked true delay 3
4059 repeater facing west powered true locked false delay 3
4060 repeater facing west powered false locked false delay 3
4061 repeater facing east powered true locked true delay 3
4062 repeater facing east powered false locked true delay 3
4063 repeater facing east powered true locked false delay 3
4064 repeater facing east powered false locked false delay 3
4065 repeater facing north powered true locked true delay 4
4066 repeater facing north powered false locked true delay 4
4067 repeater facing north powered true locked false delay 4
4068 repeater facing north powered false locked false delay 4
4069 repeater facing south powered true locked true delay 4
4070 repeater facing south powered false locked true delay 4
4071 repeater facing south powered true locked false delay 4
4072 repeater facing south powered false locked false delay 4
4073 repeater facing west powered true locked true delay 4
4074 repeater facing west powered false locked true delay 4
4075 repeater facing west powered true locked false delay 4
4076 repeater facing west powered false locked false delay 4
4077 repeater facing east powered true locked true delay 4
4078 repeater facing east powered false locked true delay 4
4079 repeater facing east powered true locked false delay 4
4080 repeater facing east powered false locked false delay 4
4081 white_stained_glass
4082 orange_stained_glass
4083 magenta_stained_glass
4084 light_blue_stained_glass
4085 yellow_stained_glass
4086 lime_stained_glass
4087 pink_stained_glass
4088 gray_stained_glass
4089 light_gray_stained_glass
4090 cyan_stained_glass
4091 purple_stained_glass
4092 blue_stained_glass
4093 brown_stained_glass
4094 green_stained_glass
4095 red_stained_glass
4096 black_stained_glass
4097 oak_trapdoor waterlogged true powered true facing north half top open true
4098 oak_trapdoor waterlogged false powered true facing north half top open true
4099 oak_trapdoor waterlogged true powered false facing north half top open true
4100 oak_trapdoor waterlogged false powered false facing north half top open true
4101 oak_trapdoor waterlogged true powered true facing north half top open false
4102 oak_trapdoor waterlogged false powered true facing north half top open false
4103 oak_trapdoor waterlogged true powered false facing north half top open false
4104 oak_trapdoor waterlogged false powered false facing north half top open false
4105 oak_trapdoor waterlogged true powered true facing north half bottom open true
4106 oak_trapdoor waterlogged false powered true facing north half bottom open true
4107 oak_trapdoor waterlogged true powered false facing north half bottom open true
4108 oak_trapdoor waterlogged false powered false facing north half bottom open true
4109 oak_trapdoor waterlogged true powered true facing north half bottom open false
4110 oak_trapdoor waterlogged false powered true facing north half bottom open false
4111 oak_trapdoor waterlogged true powered false facing north half bottom open false
4112 oak_trapdoor waterlogged false powered false facing north half bottom open false
4113 oak_trapdoor waterlogged true powered true facing south half top open true
4114 oak_trapdoor waterlogged false powered true facing south half top open true
4115 oak_trapdoor waterlogged true powered false facing south half top open true
4116 oak_trapdoor waterlogged false powered false facing south half top open true
4117 oak_trapdoor waterlogged true powered true facing south half top open false
4118 oak_trapdoor waterlogged false powered true facing south half top open false
4119 oak_trapdoor waterlogged true powered false facing south half top open false
4120 oak_trapdoor waterlogged false powered false facing south half top open false
4121 oak_trapdoor waterlogged true powered true facing south half bottom open true
4122 oak_trapdoor waterlogged false powered true facing south half bottom open true
4123 oak_trapdoor waterlogged true powered false facing south half bottom open true
4124 oak_trapdoor waterlogged false powered false facing south half bottom open true
4125 oak_trapdoor waterlogged true powered true facing south half bottom open false
4126 oak_trapdoor waterlogged false powered true facing south half bottom open false
4127 oak_trapdoor waterlogged true powered false facing south half bottom open false
4128 oak_trapdoor waterlogged false powered false facing south half bottom open false
4129 oak_trapdoor waterlogged true powered true facing west half top open true
4130 oak_trapdoor waterlogged false powered true facing west half top open true
4131 oak_trapdoor waterlogged true powered false facing west half top open true
4132 oak_trapdoor waterlogged false powered false facing west half top open true
4133 oak_trapdoor waterlogged true powered true facing west half top open false
4134 oak_trapdoor waterlogged false powered true facing west half top open false
4135 oak_trapdoor waterlogged true powered false facing west half top open false
4136 oak_trapdoor waterlogged false powered false facing west half top open false
4137 oak_trapdoor waterlogged true powered true facing west half bottom open true
4138 oak_trapdoor waterlogged false powered true facing west half bottom open true
4139 oak_trapdoor waterlogged true powered false facing west half bottom open true
4140 oak_trapdoor waterlogged false powered false facing west half bottom open true
4141 oak_trapdoor waterlogged true powered true facing west half bottom open false
4142 oak_trapdoor waterlogged false powered true facing west half bottom open false
4143 oak_trapdoor waterlogged true powered false facing west half bottom open false
4144 oak_trapdoor waterlogged false powered false facing west half bottom open false
4145 oak_trapdoor waterlogged true powered true facing east half top open true
4146 oak_trapdoor waterlogged false powered true facing east half top open true
4147 oak_trapdoor waterlogged true powered false facing east half top open true
4148 oak_trapdoor waterlogged false powered false facing east half top open true
4149 oak_trapdoor waterlogged true powered true facing east half top open false
4150 oak_trapdoor waterlogged false powered true facing east half top open false
4151 oak_trapdoor waterlogged true powered false facing east half top open false
4152 oak_trapdoor waterlogged false powered false facing east half top open false
4153 oak_trapdoor waterlogged true powered true facing east half bottom open true
4154 oak_trapdoor waterlogged false powered true facing east half bottom open true
4155 oak_trapdoor waterlogged true powered false facing east half bottom open true
4156 oak_trapdoor waterlogged false powered false facing east half bottom open true
4157 oak_trapdoor waterlogged true powered true facing east half bottom open false
4158 oak_trapdoor waterlogged false powered true facing east half bottom open false
4159 oak_trapdoor waterlogged true powered false facing east half bottom open false
4160 oak_trapdoor waterlogged false powered false facing east half bottom open false
4161 spruce_trapdoor waterlogged true powered true facing north half top open true
4162 spruce_trapdoor waterlogged false powered true facing north half top open true
4163 spruce_trapdoor waterlogged true powered false facing north half top open true
4164 spruce_trapdoor waterlogged false powered false facing north half top open true
4165 spruce_trapdoor waterlogged true powered true facing north half top open false
4166 spruce_trapdoor waterlogged false powered true facing north half top open false
4167 spruce_trapdoor waterlogged true powered false facing north half top open false
4168 spruce_trapdoor waterlogged false powered false facing north half top open false
4169 spruce_trapdoor waterlogged true powered true facing north half bottom open true
4170 spruce_trapdoor waterlogged false powered true facing north half bottom open true
4171 spruce_trapdoor waterlogged true powered false facing north half bottom open true
4172 spruce_trapdoor waterlogged false powered false facing north half bottom open true
4173 spruce_trapdoor waterlogged true powered true facing north half bottom open false
4174 spruce_trapdoor waterlogged false powered true facing north half bottom open false
4175 spruce_trapdoor waterlogged true powered false facing north half bottom open false
4176 spruce_trapdoor waterlogged false powered false facing north half bottom open false
4177 spruce_trapdoor waterlogged true powered true facing south half top open true
4178 spruce_trapdoor waterlogged false powered true facing south half top open true
4179 spruce_trapdoor waterlogged true powered false facing south half top open true
4180 spruce_trapdoor waterlogged false powered false facing south half top open true
4181 spruce_trapdoor waterlogged true powered true facing south half top open false
4182 spruce_trapdoor waterlogged false powered true facing south half top open false
4183 spruce_trapdoor waterlogged true powered false facing south half top open false
4184 spruce_trapdoor waterlogged false powered false facing south half top open false
4185 spruce_trapdoor waterlogged true powered true facing south half bottom open true
4186 spruce_trapdoor waterlogged false powered true facing south half bottom open true
4187 spruce_trapdoor waterlogged true powered false facing south half bottom open true
4188 spruce_trapdoor waterlogged false powered false facing south half bottom open true
4189 spruce_trapdoor waterlogged true powered true facing south half bottom open false
4190 spruce_trapdoor waterlogged false powered true facing south half bottom open false
4191 spruce_trapdoor waterlogged true powered false facing south half bottom open false
4192 spruce_trapdoor waterlogged false powered false facing south half bottom open false
4193 spruce_trapdoor waterlogged true powered true facing west half top open true
4194 spruce_trapdoor waterlogged false powered true facing west half top open true
4195 spruce_trapdoor waterlogged true powered false facing west half top open true
4196 spruce_trapdoor waterlogged false powered false facing west half top open true
4197 spruce_trapdoor waterlogged true powered true facing west half top open false
4198 spruce_trapdoor waterlogged false powered true facing west half top open false
4199 spruce_trapdoor waterlogged true powered false facing west half top open false
4200 spruce_trapdoor waterlogged false powered false facing west half top open false
4201 spruce_trapdoor waterlogged true powered true facing west half bottom open true
4202 spruce_trapdoor waterlogged false powered true facing west half bottom open true
4203 spruce_trapdoor waterlogged true powered false facing west half bottom open true
4204 spruce_trapdoor waterlogged false powered false facing west half bottom open true
4205 spruce_trapdoor waterlogged true powered true facing west half bottom open false
4206 spruce_trapdoor waterlogged false powered true facing west half bottom open false
4207 spruce_trapdoor waterlogged true powered false facing west half bottom open false
4208 spruce_trapdoor waterlogged false powered false facing west half bottom open false
4209 spruce_trapdoor waterlogged true powered true facing east half top open true
4210 spruce_trapdoor waterlogged false powered true facing east half top open true
4211 spruce_trapdoor waterlogged true powered false facing east half top open true
4212 spruce_trapdoor waterlogged false powered false facing east half top open true
4213 spruce_trapdoor waterlogged true powered true facing east half top open false
4214 spruce_trapdoor waterlogged false powered true facing east half top open false
4215 spruce_trapdoor waterlogged true powered false facing east half top open false
4216 spruce_trapdoor waterlogged false powered false facing east half top open false
4217 spruce_trapdoor waterlogged true powered true facing east half bottom open true
4218 spruce_trapdoor waterlogged false powered true facing east half bottom open true
4219 spruce_trapdoor waterlogged true powered false facing east half bottom open true
4220 spruce_trapdoor waterlogged false powered false facing east half bottom open true
4221 spruce_trapdoor waterlogged true powered true facing east half bottom open false
4222 spruce_trapdoor waterlogged false powered true facing east half bottom open false
4223 spruce_trapdoor waterlogged true powered false facing east half bottom open false
4224 spruce_trapdoor waterlogged false powered false facing east half bottom open false
4225 birch_trapdoor waterlogged true powered true facing north half top open true
4226 birch_trapdoor waterlogged false powered true facing north half top open true
4227 birch_trapdoor waterlogged true powered false facing north half top open true
4228 birch_trapdoor waterlogged false powered false facing north half top open true
4229 birch_trapdoor waterlogged true powered true facing north half top open false
4230 birch_trapdoor waterlogged false powered true facing north half top open false
4231 birch_trapdoor waterlogged true powered false facing north half top open false
4232 birch_trapdoor waterlogged false powered false facing north half top open false
4233 birch_trapdoor waterlogged true powered true facing north half bottom open true
4234 birch_trapdoor waterlogged false powered true facing north half bottom open true
4235 birch_trapdoor waterlogged true powered false facing north half bottom open true
4236 birch_trapdoor waterlogged false powered false facing north half bottom open true
4237 birch_trapdoor waterlogged true powered true facing north half bottom open false
4238 birch_trapdoor waterlogged false powered true facing north half bottom open false
4239 birch_trapdoor waterlogged true powered false facing north half bottom open false
4240 birch_trapdoor waterlogged false powered false facing north half bottom open false
4241 birch_trapdoor waterlogged true powered true facing south half top open true
4242 birch_trapdoor waterlogged false powered true facing south half top open true
4243 birch_trapdoor waterlogged true powered false facing south half top open true
4244 birch_trapdoor waterlogged false powered false facing south half top open true
4245 birch_trapdoor waterlogged true powered true facing south half top open false
4246 birch_trapdoor waterlogged false powered true facing south half top open false
4247 birch_trapdoor waterlogged true powered false facing south half top open false
4248 birch_trapdoor waterlogged false powered false facing south half top open false
4249 birch_trapdoor waterlogged true powered true facing south half bottom open true
4250 birch_trapdoor waterlogged false powered true facing south half bottom open true
4251 birch_trapdoor waterlogged true powered false facing south half bottom open true
4252 birch_trapdoor waterlogged false powered false facing south half bottom open true
4253 birch_trapdoor waterlogged true powered true facing south half bottom open false
4254 birch_trapdoor waterlogged false powered true facing south half bottom open false
4255 birch_trapdoor waterlogged true powered false facing south half bottom open false
4256 birch_trapdoor waterlogged false powered false facing south half bottom open false
4257 birch_trapdoor waterlogged true powered true facing west half top open true
4258 birch_trapdoor waterlogged false powered true facing west half top open true
4259 birch_trapdoor waterlogged true powered false facing west half top open true
4260 birch_trapdoor waterlogged false powered false facing west half top open true
4261 birch_trapdoor waterlogged true powered true facing west half top open false
4262 birch_trapdoor waterlogged false powered true facing west half top open false
4263 birch_trapdoor waterlogged true powered false facing west half top open false
4264 birch_trapdoor waterlogged false powered false facing west half top open false
4265 birch_trapdoor waterlogged true powered true facing west half bottom open true
4266 birch_trapdoor waterlogged false powered true facing west half bottom open true
4267 birch_trapdoor waterlogged true powered false facing west half bottom open true
4268 birch_trapdoor waterlogged false powered false facing west half bottom open true
4269 birch_trapdoor waterlogged true powered true facing west half bottom open false
4270 birch_trapdoor waterlogged false powered true facing west half bottom open false
4271 birch_trapdoor waterlogged true powered false facing west half bottom open false
4272 birch_trapdoor waterlogged false powered false facing west half bottom open false
4273 birch_trapdoor waterlogged true powered true facing east half top open true
4274 birch_trapdoor waterlogged false powered true facing east half top open true
4275 birch_trapdoor waterlogged true powered false facing east half top open true
4276 birch_trapdoor waterlogged false powered false facing east half top open true
4277 birch_trapdoor waterlogged true powered true facing east half top open false
4278 birch_trapdoor waterlogged false powered true facing east half top open false
4279 birch_trapdoor waterlogged true powered false facing east half top open false
4280 birch_trapdoor waterlogged false powered false facing east half top open false
4281 birch_trapdoor waterlogged true powered true facing east half bottom open true
4282 birch_trapdoor waterlogged false powered true facing east half bottom open true
4283 birch_trapdoor waterlogged true powered false facing east half bottom open true
4284 birch_trapdoor waterlogged false powered false facing east half bottom open true
4285 birch_trapdoor waterlogged true powered true facing east half bottom open false
4286 birch_trapdoor waterlogged false powered true facing east half bottom open false
4287 birch_trapdoor waterlogged true powered false facing east half bottom open false
4288 birch_trapdoor waterlogged false powered false facing east half bottom open false
4289 jungle_trapdoor waterlogged true powered true facing north half top open true
4290 jungle_trapdoor waterlogged false powered true facing north half top open true
4291 jungle_trapdoor waterlogged true powered false facing north half top open true
4292 jungle_trapdoor waterlogged false powered false facing north half top open true
4293 jungle_trapdoor waterlogged true powered true facing north half top open false
4294 jungle_trapdoor waterlogged false powered true facing north half top open false
4295 jungle_trapdoor waterlogged true powered false facing north half top open false
4296 jungle_trapdoor waterlogged false powered false facing north half top open false
4297 jungle_trapdoor waterlogged true powered true facing north half bottom open true
4298 jungle_trapdoor waterlogged false powered true facing north half bottom open true
4299 jungle_trapdoor waterlogged true powered false facing north half bottom open true
4300 jungle_trapdoor waterlogged false powered false facing north half bottom open true
4301 jungle_trapdoor waterlogged true powered true facing north half bottom open false
4302 jungle_trapdoor waterlogged false powered true facing north half bottom open false
4303 jungle_trapdoor waterlogged true powered false facing north half bottom open false
4304 jungle_trapdoor waterlogged false powered false facing north half bottom open false
4305 jungle_trapdoor waterlogged true powered true facing south half top open true
4306 jungle_trapdoor waterlogged false powered true facing south half top open true
4307 jungle_trapdoor waterlogged true powered false facing south half top open true
4308 jungle_trapdoor waterlogged false powered false facing south half top open true
4309 jungle_trapdoor waterlogged true powered true facing south half top open false
4310 jungle_trapdoor waterlogged false powered true facing south half top open false
4311 jungle_trapdoor waterlogged true powered false facing south half top open false
4312 jungle_trapdoor waterlogged false powered false facing south half top open false
4313 jungle_trapdoor waterlogged true powered true facing south half bottom open true
4314 jungle_trapdoor waterlogged false powered true facing south half bottom open true
4315 jungle_trapdoor waterlogged true powered false facing south half bottom open true
4316 jungle_trapdoor waterlogged false powered false facing south half bottom open true
4317 jungle_trapdoor waterlogged true powered true facing south half bottom open false
4318 jungle_trapdoor waterlogged false powered true facing south half bottom open false
4319 jungle_trapdoor waterlogged true powered false facing south half bottom open false
4320 jungle_trapdoor waterlogged false powered false facing south half bottom open false
4321 jungle_trapdoor waterlogged true powered true facing west half top open true
4322 jungle_trapdoor waterlogged false powered true facing west half top open true
4323 jungle_trapdoor waterlogged true powered false facing west half top open true
4324 jungle_trapdoor waterlogged false powered false facing west half top open true
4325 jungle_trapdoor waterlogged true powered true facing west half top open false
4326 jungle_trapdoor waterlogged false powered true facing west half top open false
4327 jungle_trapdoor waterlogged true powered false facing west half top open false
4328 jungle_trapdoor waterlogged false powered false facing west half top open false
4329 jungle_trapdoor waterlogged true powered true facing west half bottom open true
4330 jungle_trapdoor waterlogged false powered true facing west half bottom open true
4331 jungle_trapdoor waterlogged true powered false facing west half bottom open true
4332 jungle_trapdoor waterlogged false powered false facing west half bottom open true
4333 jungle_trapdoor waterlogged true powered true facing west half bottom open false
4334 jungle_trapdoor waterlogged false powered true facing west half bottom open false
4335 jungle_trapdoor waterlogged true powered false facing west half bottom open false
4336 jungle_trapdoor waterlogged false powered false facing west half bottom open false
4337 jungle_trapdoor waterlogged true powered true facing east half top open true
4338 jungle_trapdoor waterlogged false powered true facing east half top open true
4339 jungle_trapdoor waterlogged true powered false facing east half top open true
4340 jungle_trapdoor waterlogged false powered false facing east half top open true
4341 jungle_trapdoor waterlogged true powered true facing east half top open false
4342 jungle_trapdoor waterlogged false powered true facing east half top open false
4343 jungle_trapdoor waterlogged true powered false facing east half top open false
4344 jungle_trapdoor waterlogged false powered false facing east half top open false
4345 jungle_trapdoor waterlogged true powered true facing east half bottom open true
4346 jungle_trapdoor waterlogged false powered true facing east half bottom open true
4347 jungle_trapdoor waterlogged true powered false facing east half bottom open true
4348 jungle_trapdoor waterlogged false powered false facing east half bottom open true
4349 jungle_trapdoor waterlogged true powered true facing east half bottom open false
4350 jungle_trapdoor waterlogged false powered true facing east half bottom open false
4351 jungle_trapdoor waterlogged true powered false facing east half bottom open false
4352 jungle_trapdoor waterlogged false powered false facing east half bottom open false
4353 acacia_trapdoor waterlogged true powered true facing north half top open true
4354 acacia_trapdoor waterlogged false powered true facing north half top open true
4355 acacia_trapdoor waterlogged true powered false facing north half top open true
4356 acacia_trapdoor waterlogged false powered false facing north half top open true
4357 acacia_trapdoor waterlogged true powered true facing north half top open false
4358 acacia_trapdoor waterlogged false powered true facing north half top open false
4359 acacia_trapdoor waterlogged true powered false facing north half top open false
4360 acacia_trapdoor waterlogged false powered false facing north half top open false
4361 acacia_trapdoor waterlogged true powered true facing north half bottom open true
4362 acacia_trapdoor waterlogged false powered true facing north half bottom open true
4363 acacia_trapdoor waterlogged true powered false facing north half bottom open true
4364 acacia_trapdoor waterlogged false powered false facing north half bottom open true
4365 acacia_trapdoor waterlogged true powered true facing north half bottom open false
4366 acacia_trapdoor waterlogged false powered true facing north half bottom open false
4367 acacia_trapdoor waterlogged true powered false facing north half bottom open false
4368 acacia_trapdoor waterlogged false powered false facing north half bottom open false
4369 acacia_trapdoor waterlogged true powered true facing south half top open true
4370 acacia_trapdoor waterlogged false powered true facing south half top open true
4371 acacia_trapdoor waterlogged true powered false facing south half top open true
4372 acacia_trapdoor waterlogged false powered false facing south half top open true
4373 acacia_trapdoor waterlogged true powered true facing south half top open false
4374 acacia_trapdoor waterlogged false powered true facing south half top open false
4375 acacia_trapdoor waterlogged true powered false facing south half top open false
4376 acacia_trapdoor waterlogged false powered false facing south half top open false
4377 acacia_trapdoor waterlogged true powered true facing south half bottom open true
4378 acacia_trapdoor waterlogged false powered true facing south half bottom open true
4379 acacia_trapdoor waterlogged true powered false facing south half bottom open true
4380 acacia_trapdoor waterlogged false powered false facing south half bottom open true
4381 acacia_trapdoor waterlogged true powered true facing south half bottom open false
4382 acacia_trapdoor waterlogged false powered true facing south half bottom open false
4383 acacia_trapdoor waterlogged true powered false facing south half bottom open false
4384 acacia_trapdoor waterlogged false powered false facing south half bottom open false
4385 acacia_trapdoor waterlogged true powered true facing west half top open true
4386 acacia_trapdoor waterlogged false powered true facing west half top open true
4387 acacia_trapdoor waterlogged true powered false facing west half top open true
4388 acacia_trapdoor waterlogged false powered false facing west half top open true
4389 acacia_trapdoor waterlogged true powered true facing west half top open false
4390 acacia_trapdoor waterlogged false powered true facing west half top open false
4391 acacia_trapdoor waterlogged true powered false facing west half top open false
4392 acacia_trapdoor waterlogged false powered false facing west half top open false
4393 acacia_trapdoor waterlogged true powered true facing west half bottom open true
4394 acacia_trapdoor waterlogged false powered true facing west half bottom open true
4395 acacia_trapdoor waterlogged true powered false facing west half bottom open true
4396 acacia_trapdoor waterlogged false powered false facing west half bottom open true
4397 acacia_trapdoor waterlogged true powered true facing west half bottom open false
4398 acacia_trapdoor waterlogged false powered true facing west half bottom open false
4399 acacia_trapdoor waterlogged true powered false facing west half bottom open false
4400 acacia_trapdoor waterlogged false powered false facing west half bottom open false
4401 acacia_trapdoor waterlogged true powered true facing east half top open true
4402 acacia_trapdoor waterlogged false powered true facing east half top open true
4403 acacia_trapdoor waterlogged true powered false facing east half top open true
4404 acacia_trapdoor waterlogged false powered false facing east half top open true
4405 acacia_trapdoor waterlogged true powered true facing east half top open false
4406 acacia_trapdoor waterlogged false powered true facing east half top open false
4407 acacia_trapdoor waterlogged true powered false facing east half top open false
4408 acacia_trapdoor waterlogged false powered false facing east half top open false
4409 acacia_trapdoor waterlogged true powered true facing east half bottom open true
4410 acacia_trapdoor waterlogged false powered true facing east half bottom open true
4411 acacia_trapdoor waterlogged true powered false facing east half bottom open true
4412 acacia_trapdoor waterlogged false powered false facing east half bottom open true
4413 acacia_trapdoor waterlogged true powered true facing east half bottom open false
4414 acacia_trapdoor waterlogged false powered true facing east half bottom open false
4415 acacia_trapdoor waterlogged true powered false facing east half bottom open false
4416 acacia_trapdoor waterlogged false powered false facing east half bottom open false
4417 dark_oak_trapdoor waterlogged true powered true facing north half top open true
4418 dark_oak_trapdoor waterlogged false powered true facing north half top open true
4419 dark_oak_trapdoor waterlogged true powered false facing north half top open true
4420 dark_oak_trapdoor waterlogged false powered false facing north half top open true
4421 dark_oak_trapdoor waterlogged true powered true facing north half top open false
4422 dark_oak_trapdoor waterlogged false powered true facing north half top open false
4423 dark_oak_trapdoor waterlogged true powered false facing north half top open false
4424 dark_oak_trapdoor waterlogged false powered false facing north half top open false
4425 dark_oak_trapdoor waterlogged true powered true facing north half bottom open true
4426 dark_oak_trapdoor waterlogged false powered true facing north half bottom open true
4427 dark_oak_trapdoor waterlogged true powered false facing north half bottom open true
4428 dark_oak_trapdoor waterlogged false powered false facing north half bottom open true
4429 dark_oak_trapdoor waterlogged true powered true facing north half bottom open false
4430 dark_oak_trapdoor waterlogged false powered true facing north half bottom open false
4431 dark_oak_trapdoor waterlogged true powered false facing north half bottom open false
4432 dark_oak_trapdoor waterlogged false powered false facing north half bottom open false
4433 dark_oak_trapdoor waterlogged true powered true facing south half top open true
4434 dark_oak_trapdoor waterlogged false powered true facing south half top open true
4435 dark_oak_trapdoor waterlogged true powered false facing south half top open true
4436 dark_oak_trapdoor waterlogged false powered false facing south half top open true
4437 dark_oak_trapdoor waterlogged true powered true facing south half top open false
4438 dark_oak_trapdoor waterlogged false powered true facing south half top open false
4439 dark_oak_trapdoor waterlogged true powered false facing south half top open false
4440 dark_oak_trapdoor waterlogged false powered false facing south half top open false
4441 dark_oak_trapdoor waterlogged true powered true facing south half bottom open true
4442 dark_oak_trapdoor waterlogged false powered true facing south half bottom open true
4443 dark_oak_trapdoor waterlogged true powered false facing south half bottom open true
4444 dark_oak_trapdoor waterlogged false powered false facing south half bottom open true
4445 dark_oak_trapdoor waterlogged true powered true facing south half bottom open false
4446 dark_oak_trapdoor waterlogged false powered true facing south half bottom open false
4447 dark_oak_trapdoor waterlogged true powered false facing south half bottom open false
4448 dark_oak_trapdoor waterlogged false powered false facing south half bottom open false
4449 dark_oak_trapdoor waterlogged true powered true facing west half top open true
4450 dark_oak_trapdoor waterlogged false powered true facing west half top open true
4451 dark_oak_trapdoor waterlogged true powered false facing west half top open true
4452 dark_oak_trapdoor waterlogged false powered false facing west half top open true
4453 dark_oak_trapdoor waterlogged true powered true facing west half top open false
4454 dark_oak_trapdoor waterlogged false powered true facing west half top open false
4455 dark_oak_trapdoor waterlogged true powered false facing west half top open false
4456 dark_oak_trapdoor waterlogged false powered false facing west half top open false
4457 dark_oak_trapdoor waterlogged true powered true facing west half bottom open true
4458 dark_oak_trapdoor waterlogged false powered true facing west half bottom open true
4459 dark_oak_trapdoor waterlogged true powered false facing west half bottom open true
4460 dark_oak_trapdoor waterlogged false powered false facing west half bottom open true
4461 dark_oak_trapdoor waterlogged true powered true facing west half bottom open false
4462 dark_oak_trapdoor waterlogged false powered true facing west half bottom open false
4463 dark_oak_trapdoor waterlogged true powered false facing west half bottom open false
4464 dark_oak_trapdoor waterlogged false powered false facing west half bottom open false
4465 dark_oak_trapdoor waterlogged true powered true facing east half top open true
4466 dark_oak_trapdoor waterlogged false powered true facing east half top open true
4467 dark_oak_trapdoor waterlogged true powered false facing east half top open true
4468 dark_oak_trapdoor waterlogged false powered false facing east half top open true
4469 dark_oak_trapdoor waterlogged true powered true facing east half top open false
4470 dark_oak_trapdoor waterlogged false powered true facing east half top open false
4471 dark_oak_trapdoor waterlogged true powered false facing east half top open false
4472 dark_oak_trapdoor waterlogged false powered false facing east half top open false
4473 dark_oak_trapdoor waterlogged true powered true facing east half bottom open true
4474 dark_oak_trapdoor waterlogged false powered true facing east half bottom open true
4475 dark_oak_trapdoor waterlogged true powered false facing east half bottom open true
4476 dark_oak_trapdoor waterlogged false powered false facing east half bottom open true
4477 dark_oak_trapdoor waterlogged true powered true facing east half bottom open false
4478 dark_oak_trapdoor waterlogged false powered true facing east half bottom open false
4479 dark_oak_trapdoor waterlogged true powered false facing east half bottom open false
4480 dark_oak_trapdoor waterlogged false powered false facing east half bottom open false
4481 stone_bricks
4482 mossy_stone_bricks
4483 cracked_stone_bricks
4484 chiseled_stone_bricks
4485 infested_stone
4486 infested_cobblestone
4487 infested_stone_bricks
4488 infested_mossy_stone_bricks
4489 infested_cracked_stone_bricks
4490 infested_chiseled_stone_bricks
4491 brown_mushroom_block up true south true east true north true down true west true
4492 brown_mushroom_block up true south true east true north true down true west false
4493 brown_mushroom_block up false south true east true north true down true west true
4494 brown_mushroom_block up false south true east true north true down true west false
4495 brown_mushroom_block up true south false east true north true down true west true
4496 brown_mushroom_block up true south false east true north true down true west false
4497 brown_mushroom_block up false south false east true north true down true west true
4498 brown_mushroom_block up false south false east true north true down true west false
4499 brown_mushroom_block up true south true east true north false down true west true
4500 brown_mushroom_block up true south true east true north false down true west false
4501 brown_mushroom_block up false south true east true north false down true west true
4502 brown_mushroom_block up false south true east true north false down true west false
4503 brown_mushroom_block up true south false east true north false down true west true
4504 brown_mushroom_block up true south false east true north false down true west false
4505 brown_mushroom_block up false south false east true north false down true west true
4506 brown_mushroom_block up false south false east true north false down true west false
4507 brown_mushroom_block up true south true east false north true down true west true
4508 brown_mushroom_block up true south true east false north true down true west false
4509 brown_mushroom_block up false south true east false north true down true west true
4510 brown_mushroom_block up false south true east false north true down true west false
4511 brown_mushroom_block up true south false east false north true down true west true
4512 brown_mushroom_block up true south false east false north true down true west false
4513 brown_mushroom_block up false south false east false north true down true west true
4514 brown_mushroom_block up false south false east false north true down true west false
4515 brown_mushroom_block up true south true east false north false down true west true
4516 brown_mushroom_block up true south true east false north false down true west false
4517 brown_mushroom_block up false south true east false north false down true west true
4518 brown_mushroom_block up false south true east false north false down true west false
4519 brown_mushroom_block up true south false east false north false down true west true
4520 brown_mushroom_block up true south false east false north false down true west false
4521 brown_mushroom_block up false south false east false north false down true west true
4522 brown_mushroom_block up false south false east false north false down true west false
4523 brown_mushroom_block up true south true east true north true down false west true
4524 brown_mushroom_block up true south true east true north true down false west false
4525 brown_mushroom_block up false south true east true north true down false west true
4526 brown_mushroom_block up false south true east true north true down false west false
4527 brown_mushroom_block up true south false east true north true down false west true
4528 brown_mushroom_block up true south false east true north true down false west false
4529 brown_mushroom_block up false south false east true north true down false west true
4530 brown_mushroom_block up false south false east true north true down false west false
4531 brown_mushroom_block up true south true east true north false down false west true
4532 brown_mushroom_block up true south true east true north false down false west false
4533 brown_mushroom_block up false south true east true north false down false west true
4534 brown_mushroom_block up false south true east true north false down false west false
4535 brown_mushroom_block up true south false east true north false down false west true
4536 brown_mushroom_block up true south false east true north false down false west false
4537 brown_mushroom_block up false south false east true north false down false west true
4538 brown_mushroom_block up false south false east true north false down false west false
4539 brown_mushroom_block up true south true east false north true down false west true
4540 brown_mushroom_block up true south true east false north true down false west false
4541 brown_mushroom_block up false south true east false north true down false west true
4542 brown_mushroom_block up false south true east false north true down false west false
4543 brown_mushroom_block up true south false east false north true down false west true
4544 brown_mushroom_block up true south false east false north true down false west false
4545 brown_mushroom_block up false south false east false north true down false west true
4546 brown_mushroom_block up false south false east false north true down false west false
4547 brown_mushroom_block up true south true east false north false down false west true
4548 brown_mushroom_block up true south true east false north false down false west false
4549 brown_mushroom_block up false south true east false north false down false west true
4550 brown_mushroom_block up false south true east false north false down false west false
4551 brown_mushroom_block up true south false east false north false down false west true
4552 brown_mushroom_block up true south false east false north false down false west false
4553 brown_mushroom_block up false south false east false north false down false west true
4554 brown_mushroom_block up false south false east false north false down false west false
4555 red_mushroom_block up true south true east true north true down true west true
4556 red_mushroom_block up true south true east true north true down true west false
4557 red_mushroom_block up false south true east true north true down true west true
4558 red_mushroom_block up false south true east true north true down true west false
4559 red_mushroom_block up true south false east true north true down true west true
4560 red_mushroom_block up true south false east true north true down true west false
4561 red_mushroom_block up false south false east true north true down true west true
4562 red_mushroom_block up false south false east true north true down true west false
4563 red_mushroom_block up true south true east true north false down true west true
4564 red_mushroom_block up true south true east true north false down true west false
4565 red_mushroom_block up false south true east true north false down true west true
4566 red_mushroom_block up false south true east true north false down true west false
4567 red_mushroom_block up true south false east true north false down true west true
4568 red_mushroom_block up true south false east true north false down true west false
4569 red_mushroom_block up false south false east true north false down true west true
4570 red_mushroom_block up false south false east true north false down true west false
4571 red_mushroom_block up true south true east false north true down true west true
4572 red_mushroom_block up true south true east false north true down true west false
4573 red_mushroom_block up false south true east false north true down true west true
4574 red_mushroom_block up false south true east false north true down true west false
4575 red_mushroom_block up true south false east false north true down true west true
4576 red_mushroom_block up true south false east false north true down true west false
4577 red_mushroom_block up false south false east false north true down true west true
4578 red_mushroom_block up false south false east false north true down true west false
4579 red_mushroom_block up true south true east false north false down true west true
4580 red_mushroom_block up true south true east false north false down true west false
4581 red_mushroom_block up false south true east false north false down true west true
4582 red_mushroom_block up false south true east false north false down true west false
4583 red_mushroom_block up true south false east false north false down true west true
4584 red_mushroom_block up true south false east false north false down true west false
4585 red_mushroom_block up false south false east false north false down true west true
4586 red_mushroom_block up false south false east false north false down true west false
4587 red_mushroom_block up true south true east true north true down false west true
4588 red_mushroom_block up true south true east true north true down false west false
4589 red_mushroom_block up false south true east true north true down false west true
4590 red_mushroom_block up false south true east true north true down false west false
4591 red_mushroom_block up true south false east true north true down false west true
4592 red_mushroom_block up true south false east true north true down false west false
4593 red_mushroom_block up false south false east true north true down false west true
4594 red_mushroom_block up false south false east true north true down false west false
4595 red_mushroom_block up true south true east true north false down false west true
4596 red_mushroom_block up true south true east true north false down false west false
4597 red_mushroom_block up false south true east true north false down false west true
4598 red_mushroom_block up false south true east true north false down false west false
4599 red_mushroom_block up true south false east true north false down false west true
4600 red_mushroom_block up true south false east true north false down false west false
4601 red_mushroom_block up false south false east true north false down false west true
4602 red_mushroom_block up false south false east true north false down false west false
4603 red_mushroom_block up true south true east false north true down false west true
4604 red_mushroom_block up true south true east false north true down false west false
4605 red_mushroom_block up false south true east false north true down false west true
4606 red_mushroom_block up false south true east false north true down false west false
4607 red_mushroom_block up true south false east false north true down false west true
4608 red_mushroom_block up true south false east false north true down false west false
4609 red_mushroom_block up false south false east false north true down false west true
4610 red_mushroom_block up false south false east false north true down false west false
4611 red_mushroom_block up true south true east false north false down false west true
4612 red_mushroom_block up true south true east false north false down false west false
4613 red_mushroom_block up false south true east false north false down false west true
4614 red_mushroom_block up false south true east false north false down false west false
4615 red_mushroom_block up true south false east false north false down false west true
4616 red_mushroom_block up true south false east false north false down false west false
4617 red_mushroom_block up false south false east false north false down false west true
4618 red_mushroom_block up false south false east false north false down false west false
4619 mushroom_stem up true south true east true north true down true west true
4620 mushroom_stem up true south true east true north true down true west false
4621 mushroom_stem up false south true east true north true down true west true
4622 mushroom_stem up false south true east true north true down true west false
4623 mushroom_stem up true south false east true north true down true west true
4624 mushroom_stem up true south false east true north true down true west false
4625 mushroom_stem up false south false east true north true down true west true
4626 mushroom_stem up false south false east true north true down true west false
4627 mushroom_stem up true south true east true north false down true west true
4628 mushroom_stem up true south true east true north false down true west false
4629 mushroom_stem up false south true east true north false down true west true
4630 mushroom_stem up false south true east true north false down true west false
4631 mushroom_stem up true south false east true north false down true west true
4632 mushroom_stem up true south false east true north false down true west false
4633 mushroom_stem up false south false east true north false down true west true
4634 mushroom_stem up false south false east true north false down true west false
4635 mushroom_stem up true south true east false north true down true west true
4636 mushroom_stem up true south true east false north true down true west false
4637 mushroom_stem up false south true east false north true down true west true
4638 mushroom_stem up false south true east false north true down true west false
4639 mushroom_stem up true south false east false north true down true west true
4640 mushroom_stem up true south false east false north true down true west false
4641 mushroom_stem up false south false east false north true down true west true
4642 mushroom_stem up false south false east false north true down true west false
4643 mushroom_stem up true south true east false north false down true west true
4644 mushroom_stem up true south true east false north false down true west false
4645 mushroom_stem up false south true east false north false down true west true
4646 mushroom_stem up false south true east false north false down true west false
4647 mushroom_stem up true south false east false north false down true west true
4648 mushroom_stem up true south false east false north false down true west false
4649 mushroom_stem up false south false east false north false down true west true
4650 mushroom_stem up false south false east false north false down true west false
4651 mushroom_stem up true south true east true north true down false west true
4652 mushroom_stem up true south true east true north true down false west false
4653 mushroom_stem up false south true east true north true down false west true
4654 mushroom_stem up false south true east true north true down false west false
4655 mushroom_stem up true south false east true north true down false west true
4656 mushroom_stem up true south false east true north true down false west false
4657 mushroom_stem up false south false east true north true down false west true
4658 mushroom_stem up false south false east true north true down false west false
4659 mushroom_stem up true south true east true north false down false west true
4660 mushroom_stem up true south true east true north false down false west false
4661 mushroom_stem up false south true east true north false down false west true
4662 mushroom_stem up false south true east true north false down false west false
4663 mushroom_stem up true south false east true north false down false west true
4664 mushroom_stem up true south false east true north false down false west false
4665 mushroom_stem up false south false east true north false down false west true
4666 mushroom_stem up false south false east true north false down false west false
4667 mushroom_stem up true south true east false north true down false west true
4668 mushroom_stem up true south true east false north true down false west false
4669 mushroom_stem up false south true east false north true down false west true
4670 mushroom_stem up false south true east false north true down false west false
4671 mushroom_stem up true south false east false north true down false west true
4672 mushroom_stem up true south false east false north true down false west false
4673 mushroom_stem up false south false east false north true down false west true
4674 mushroom_stem up false south false east false north true down false west false
4675 mushroom_stem up true south true east false north false down false west true
4676 mushroom_stem up true south true east false north false down false west false
4677 mushroom_stem up false south true east false north false down false west true
4678 mushroom_stem up false south true east false north false down false west false
4679 mushroom_stem up true south false east false north false down false west true
4680 mushroom_stem up true south false east false north false down false west false
4681 mushroom_stem up false south false east false north false down false west true
4682 mushroom_stem up false south false east false north false down false west false
4683 iron_bars waterlogged true south true east true north true west true
4684 iron_bars waterlogged true south true east true north true west false
4685 iron_bars waterlogged false south true east true north true west true
4686 iron_bars waterlogged false south true east true north true west false
4687 iron_bars waterlogged true south false east true north true west true
4688 iron_bars waterlogged true south false east true north true west false
4689 iron_bars waterlogged false south false east true north true west true
4690 iron_bars waterlogged false south false east true north true west false
4691 iron_bars waterlogged true south true east true north false west true
4692 iron_bars waterlogged true south true east true north false west false
4693 iron_bars waterlogged false south true east true north false west true
4694 iron_bars waterlogged false south true east true north false west false
4695 iron_bars waterlogged true south false east true north false west true
4696 iron_bars waterlogged true south false east true north false west false
4697 iron_bars waterlogged false south false east true north false west true
4698 iron_bars waterlogged false south false east true north false west false
4699 iron_bars waterlogged true south true east false north true west true
4700 iron_bars waterlogged true south true east false north true west false
4701 iron_bars waterlogged false south true east false north true west true
4702 iron_bars waterlogged false south true east false north true west false
4703 iron_bars waterlogged true south false east false north true west true
4704 iron_bars waterlogged true south false east false north true west false
4705 iron_bars waterlogged false south false east false north true west true
4706 iron_bars waterlogged false south false east false north true west false
4707 iron_bars waterlogged true south true east false north false west true
4708 iron_bars waterlogged true south true east false north false west false
4709 iron_bars waterlogged false south true east false north false west true
4710 iron_bars waterlogged false south true east false north false west false
4711 iron_bars waterlogged true south false east false north false west true
4712 iron_bars waterlogged true south false east false north false west false
4713 iron_bars waterlogged false south false east false north false west true
4714 iron_bars waterlogged false south false east false north false west false
4715 glass_pane waterlogged true south true east true north true west true
4716 glass_pane waterlogged true south true east true north true west false
4717 glass_pane waterlogged false south true east true north true west true
4718 glass_pane waterlogged false south true east true north true west false
4719 glass_pane waterlogged true south false east true north true west true
4720 glass_pane waterlogged true south false east true north true west false
4721 glass_pane waterlogged false south false east true north true west true
4722 glass_pane waterlogged false south false east true north true west false
4723 glass_pane waterlogged true south true east true north false west true
4724 glass_pane waterlogged true south true east true north false west false
4725 glass_pane waterlogged false south true east true north false west true
4726 glass_pane waterlogged false south true east true north false west false
4727 glass_pane waterlogged true south false east true north false west true
4728 glass_pane waterlogged true south false east true north false west false
4729 glass_pane waterlogged false south false east true north false west true
4730 glass_pane waterlogged false south false east true north false west false
4731 glass_pane waterlogged true south true east false north true west true
4732 glass_pane waterlogged true south true east false north true west false
4733 glass_pane waterlogged false south true east false north true west true
4734 glass_pane waterlogged false south true east false north true west false
4735 glass_pane waterlogged true south false east false north true west true
4736 glass_pane waterlogged true south false east false north true west false
4737 glass_pane waterlogged false south false east false north true west true
4738 glass_pane waterlogged false south false east false north true west false
4739 glass_pane waterlogged true south true east false north false west true
4740 glass_pane waterlogged true south true east false north false west false
4741 glass_pane waterlogged false south true east false north false west true
4742 glass_pane waterlogged false south true east false north false west false
4743 glass_pane waterlogged true south false east false north false west true
4744 glass_pane waterlogged true south false east false north false west false
4745 glass_pane waterlogged false south false east false north false west true
4746 glass_pane waterlogged false south false east false north false west false
4747 melon
4748 attached_pumpkin_stem facing north
4749 attached_pumpkin_stem facing south
4750 attached_pumpkin_stem facing west
4751 attached_pumpkin_stem facing east
4752 attached_melon_stem facing north
4753 attached_melon_stem facing south
4754 attached_melon_stem facing west
4755 attached_melon_stem facing east
4756 pumpkin_stem age 0
4757 pumpkin_stem age 1
4758 pumpkin_stem age 2
4759 pumpkin_stem age 3
4760 pumpkin_stem age 4
4761 pumpkin_stem age 5
4762 pumpkin_stem age 6
4763 pumpkin_stem age 7
4764 melon_stem age 0
4765 melon_stem age 1
4766 melon_stem age 2
4767 melon_stem age 3
4768 melon_stem age 4
4769 melon_stem age 5
4770 melon_stem age 6
4771 melon_stem age 7
4772 vine south true east true north true up true west true
4773 vine south true east true north true up true west false
4774 vine south true east true north true up false west true
4775 vine south true east true north true up false west false
4776 vine south false east true north true up true west true
4777 vine south false east true north true up true west false
4778 vine south false east true north true up false west true
4779 vine south false east true north true up false west false
4780 vine south true east true north false up true west true
4781 vine south true east true north false up true west false
4782 vine south true east true north false up false west true
4783 vine south true east true north false up false west false
4784 vine south false east true north false up true west true
4785 vine south false east true north false up true west false
4786 vine south false east true north false up false west true
4787 vine south false east true north false up false west false
4788 vine south true east false north true up true west true
4789 vine south true east false north true up true west false
4790 vine south true east false north true up false west true
4791 vine south true east false north true up false west false
4792 vine south false east false north true up true west true
4793 vine south false east false north true up true west false
4794 vine south false east false north true up false west true
4795 vine south false east false north true up false west false
4796 vine south true east false north false up true west true
4797 vine south true east false north false up true west false
4798 vine south true east false north false up false west true
4799 vine south true east false north false up false west false
4800 vine south false east false north false up true west true
4801 vine south false east false north false up true west false
4802 vine south false east false north false up false west true
4803 vine south false east false north false up false west false
4804 oak_fence_gate facing north powered true open true in_wall true
4805 oak_fence_gate facing north powered false open true in_wall true
4806 oak_fence_gate facing north powered true open false in_wall true
4807 oak_fence_gate facing north powered false open false in_wall true
4808 oak_fence_gate facing north powered true open true in_wall false
4809 oak_fence_gate facing north powered false open true in_wall false
4810 oak_fence_gate facing north powered true open false in_wall false
4811 oak_fence_gate facing north powered false open false in_wall false
4812 oak_fence_gate facing south powered true open true in_wall true
4813 oak_fence_gate facing south powered false open true in_wall true
4814 oak_fence_gate facing south powered true open false in_wall true
4815 oak_fence_gate facing south powered false open false in_wall true
4816 oak_fence_gate facing south powered true open true in_wall false
4817 oak_fence_gate facing south powered false open true in_wall false
4818 oak_fence_gate facing south powered true open false in_wall false
4819 oak_fence_gate facing south powered false open false in_wall false
4820 oak_fence_gate facing west powered true open true in_wall true
4821 oak_fence_gate facing west powered false open true in_wall true
4822 oak_fence_gate facing west powered true open false in_wall true
4823 oak_fence_gate facing west powered false open false in_wall true
4824 oak_fence_gate facing west powered true open true in_wall false
4825 oak_fence_gate facing west powered false open true in_wall false
4826 oak_fence_gate facing west powered true open false in_wall false
4827 oak_fence_gate facing west powered false open false in_wall false
4828 oak_fence_gate facing east powered true open true in_wall true
4829 oak_fence_gate facing east powered false open true in_wall true
4830 oak_fence_gate facing east powered true open false in_wall true
4831 oak_fence_gate facing east powered false open false in_wall true
4832 oak_fence_gate facing east powered true open true in_wall false
4833 oak_fence_gate facing east powered false open true in_wall false
4834 oak_fence_gate facing east powered true open false in_wall false
4835 oak_fence_gate facing east powered false open false in_wall false
4836 brick_stairs facing north waterlogged true shape straight half top
4837 brick_stairs facing north waterlogged false shape straight half top
4838 brick_stairs facing north waterlogged true shape inner_left half top
4839 brick_stairs facing north waterlogged false shape inner_left half top
4840 brick_stairs facing north waterlogged true shape inner_right half top
4841 brick_stairs facing north waterlogged false shape inner_right half top
4842 brick_stairs facing north waterlogged true shape outer_left half top
4843 brick_stairs facing north waterlogged false shape outer_left half top
4844 brick_stairs facing north waterlogged true shape outer_right half top
4845 brick_stairs facing north waterlogged false shape outer_right half top
4846 brick_stairs facing north waterlogged true shape straight half bottom
4847 brick_stairs facing north waterlogged false shape straight half bottom
4848 brick_stairs facing north waterlogged true shape inner_left half bottom
4849 brick_stairs facing north waterlogged false shape inner_left half bottom
4850 brick_stairs facing north waterlogged true shape inner_right half bottom
4851 brick_stairs facing north waterlogged false shape inner_right half bottom
4852 brick_stairs facing north waterlogged true shape outer_left half bottom
4853 brick_stairs facing north waterlogged false shape outer_left half bottom
4854 brick_stairs facing north waterlogged true shape outer_right half bottom
4855 brick_stairs facing north waterlogged false shape outer_right half bottom
4856 brick_stairs facing south waterlogged true shape straight half top
4857 brick_stairs facing south waterlogged false shape straight half top
4858 brick_stairs facing south waterlogged true shape inner_left half top
4859 brick_stairs facing south waterlogged false shape inner_left half top
4860 brick_stairs facing south waterlogged true shape inner_right half top
4861 brick_stairs facing south waterlogged false shape inner_right half top
4862 brick_stairs facing south waterlogged true shape outer_left half top
4863 brick_stairs facing south waterlogged false shape outer_left half top
4864 brick_stairs facing south waterlogged true shape outer_right half top
4865 brick_stairs facing south waterlogged false shape outer_right half top
4866 brick_stairs facing south waterlogged true shape straight half bottom
4867 brick_stairs facing south waterlogged false shape straight half bottom
4868 brick_stairs facing south waterlogged true shape inner_left half bottom
4869 brick_stairs facing south waterlogged false shape inner_left half bottom
4870 brick_stairs facing south waterlogged true shape inner_right half bottom
4871 brick_stairs facing south waterlogged false shape inner_right half bottom
4872 brick_stairs facing south waterlogged true shape outer_left half bottom
4873 brick_stairs facing south waterlogged false shape outer_left half bottom
4874 brick_stairs facing south waterlogged true shape outer_right half bottom
4875 brick_stairs facing south waterlogged false shape outer_right half bottom
4876 brick_stairs facing west waterlogged true shape straight half top
4877 brick_stairs facing west waterlogged false shape straight half top
4878 brick_stairs facing west waterlogged true shape inner_left half top
4879 brick_stairs facing west waterlogged false shape inner_left half top
4880 brick_stairs facing west waterlogged true shape inner_right half top
4881 brick_stairs facing west waterlogged false shape inner_right half top
4882 brick_stairs facing west waterlogged true shape outer_left half top
4883 brick_stairs facing west waterlogged false shape outer_left half top
4884 brick_stairs facing west waterlogged true shape outer_right half top
4885 brick_stairs facing west waterlogged false shape outer_right half top
4886 brick_stairs facing west waterlogged true shape straight half bottom
4887 brick_stairs facing west waterlogged false shape straight half bottom
4888 brick_stairs facing west waterlogged true shape inner_left half bottom
4889 brick_stairs facing west waterlogged false shape inner_left half bottom
4890 brick_stairs facing west waterlogged true shape inner_right half bottom
4891 brick_stairs facing west waterlogged false shape inner_right half bottom
4892 brick_stairs facing west waterlogged true shape outer_left half bottom
4893 brick_stairs facing west waterlogged false shape outer_left half bottom
4894 brick_stairs facing west waterlogged true shape outer_right half bottom
4895 brick_stairs facing west waterlogged false shape outer_right half bottom
4896 brick_stairs facing east waterlogged true shape straight half top
4897 brick_stairs facing east waterlogged false shape straight half top
4898 brick_stairs facing east waterlogged true shape inner_left half top
4899 brick_stairs facing east waterlogged false shape inner_left half top
4900 brick_stairs facing east waterlogged true shape inner_right half top
4901 brick_stairs facing east waterlogged false shape inner_right half top
4902 brick_stairs facing east waterlogged true shape outer_left half top
4903 brick_stairs facing east waterlogged false shape outer_left half top
4904 brick_stairs facing east waterlogged true shape outer_right half top
4905 brick_stairs facing east waterlogged false shape outer_right half top
4906 brick_stairs facing east waterlogged true shape straight half bottom
4907 brick_stairs facing east waterlogged false shape straight half bottom
4908 brick_stairs facing east waterlogged true shape inner_left half bottom
4909 brick_stairs facing east waterlogged false shape inner_left half bottom
4910 brick_stairs facing east waterlogged true shape inner_right half bottom
4911 brick_stairs facing east waterlogged false shape inner_right half bottom
4912 brick_stairs facing east waterlogged true shape outer_left half bottom
4913 brick_stairs facing east waterlogged false shape outer_left half bottom
4914 brick_stairs facing east waterlogged true shape outer_right half bottom
4915 brick_stairs facing east waterlogged false shape outer_right half bottom
4916 stone_brick_stairs facing north waterlogged true shape straight half top
4917 stone_brick_stairs facing north waterlogged false shape straight half top
4918 stone_brick_stairs facing north waterlogged true shape inner_left half top
4919 stone_brick_stairs facing north waterlogged false shape inner_left half top
4920 stone_brick_stairs facing north waterlogged true shape inner_right half top
4921 stone_brick_stairs facing north waterlogged false shape inner_right half top
4922 stone_brick_stairs facing north waterlogged true shape outer_left half top
4923 stone_brick_stairs facing north waterlogged false shape outer_left half top
4924 stone_brick_stairs facing north waterlogged true shape outer_right half top
4925 stone_brick_stairs facing north waterlogged false shape outer_right half top
4926 stone_brick_stairs facing north waterlogged true shape straight half bottom
4927 stone_brick_stairs facing north waterlogged false shape straight half bottom
4928 stone_brick_stairs facing north waterlogged true shape inner_left half bottom
4929 stone_brick_stairs facing north waterlogged false shape inner_left half bottom
4930 stone_brick_stairs facing north waterlogged true shape inner_right half bottom
4931 stone_brick_stairs facing north waterlogged false shape inner_right half bottom
4932 stone_brick_stairs facing north waterlogged true shape outer_left half bottom
4933 stone_brick_stairs facing north waterlogged false shape outer_left half bottom
4934 stone_brick_stairs facing north waterlogged true shape outer_right half bottom
4935 stone_brick_stairs facing north waterlogged false shape outer_right half bottom
4936 stone_brick_stairs facing south waterlogged true shape straight half top
4937 stone_brick_stairs facing south waterlogged false shape straight half top
4938 stone_brick_stairs facing south waterlogged true shape inner_left half top
4939 stone_brick_stairs facing south waterlogged false shape inner_left half top
4940 stone_brick_stairs facing south waterlogged true shape inner_right half top
4941 stone_brick_stairs facing south waterlogged false shape inner_right half top
4942 stone_brick_stairs facing south waterlogged true shape outer_left half top
4943 stone_brick_stairs facing south waterlogged false shape outer_left half top
4944 stone_brick_stairs facing south waterlogged true shape outer_right half top
4945 stone_brick_stairs facing south waterlogged false shape outer_right half top
4946 stone_brick_stairs facing south waterlogged true shape straight half bottom
4947 stone_brick_stairs facing south waterlogged false shape straight half bottom
4948 stone_brick_stairs facing south waterlogged true shape inner_left half bottom
4949 stone_brick_stairs facing south waterlogged false shape inner_left half bottom
4950 stone_brick_stairs facing south waterlogged true shape inner_right half bottom
4951 stone_brick_stairs facing south waterlogged false shape inner_right half bottom
4952 stone_brick_stairs facing south waterlogged true shape outer_left half bottom
4953 stone_brick_stairs facing south waterlogged false shape outer_left half bottom
4954 stone_brick_stairs facing south waterlogged true shape outer_right half bottom
4955 stone_brick_stairs facing south waterlogged false shape outer_right half bottom
4956 stone_brick_stairs facing west waterlogged true shape straight half top
4957 stone_brick_stairs facing west waterlogged false shape straight half top
4958 stone_brick_stairs facing west waterlogged true shape inner_left half top
4959 stone_brick_stairs facing west waterlogged false shape inner_left half top
4960 stone_brick_stairs facing west waterlogged true shape inner_right half top
4961 stone_brick_stairs facing west waterlogged false shape inner_right half top
4962 stone_brick_stairs facing west waterlogged true shape outer_left half top
4963 stone_brick_stairs facing west waterlogged false shape outer_left half top
4964 stone_brick_stairs facing west waterlogged true shape outer_right half top
4965 stone_brick_stairs facing west waterlogged false shape outer_right half top
4966 stone_brick_stairs facing west waterlogged true shape straight half bottom
4967 stone_brick_stairs facing west waterlogged false shape straight half bottom
4968 stone_brick_stairs facing west waterlogged true shape inner_left half bottom
4969 stone_brick_stairs facing west waterlogged false shape inner_left half bottom
4970 stone_brick_stairs facing west waterlogged true shape inner_right half bottom
4971 stone_brick_stairs facing west waterlogged false shape inner_right half bottom
4972 stone_brick_stairs facing west waterlogged true shape outer_left half bottom
4973 stone_brick_stairs facing west waterlogged false shape outer_left half bottom
4974 stone_brick_stairs facing west waterlogged true shape outer_right half bottom
4975 stone_brick_stairs facing west waterlogged false shape outer_right half bottom
4976 stone_brick_stairs facing east waterlogged true shape straight half top
4977 stone_brick_stairs facing east waterlogged false shape straight half top
4978 stone_brick_stairs facing east waterlogged true shape inner_left half top
4979 stone_brick_stairs facing east waterlogged false shape inner_left half top
4980 stone_brick_stairs facing east waterlogged true shape inner_right half top
4981 stone_brick_stairs facing east waterlogged false shape inner_right half top
4982 stone_brick_stairs facing east waterlogged true shape outer_left half top
4983 stone_brick_stairs facing east waterlogged false shape outer_left half top
4984 stone_brick_stairs facing east waterlogged true shape outer_right half top
4985 stone_brick_stairs facing east waterlogged false shape outer_right half top
4986 stone_brick_stairs facing east waterlogged true shape straight half bottom
4987 stone_brick_stairs facing east waterlogged false shape straight half bottom
4988 stone_brick_stairs facing east waterlogged true shape inner_left half bottom
4989 stone_brick_stairs facing east waterlogged false shape inner_left half bottom
4990 stone_brick_stairs facing east waterlogged true shape inner_right half bottom
4991 stone_brick_stairs facing east waterlogged false shape inner_right half bottom
4992 stone_brick_stairs facing east waterlogged true shape outer_left half bottom
4993 stone_brick_stairs facing east waterlogged false shape outer_left half bottom
4994 stone_brick_stairs facing east waterlogged true shape outer_right half bottom
4995 stone_brick_stairs facing east waterlogged false shape outer_right half bottom
4996 mycelium snowy true
4997 mycelium snowy false
4998 lily_pad
4999 nether_bricks
5000 nether_brick_fence waterlogged true south true east true north true west true
5001 nether_brick_fence waterlogged true south true east true north true west false
5002 nether_brick_fence waterlogged false south true east true north true west true
5003 nether_brick_fence waterlogged false south true east true north true west false
5004 nether_brick_fence waterlogged true south false east true north true west true
5005 nether_brick_fence waterlogged true south false east true north true west false
5006 nether_brick_fence waterlogged false south false east true north true west true
5007 nether_brick_fence waterlogged false south false east true north true west false
5008 nether_brick_fence waterlogged true south true east true north false west true
5009 nether_brick_fence waterlogged true south true east true north false west false
5010 nether_brick_fence waterlogged false south true east true north false west true
5011 nether_brick_fence waterlogged false south true east true north false west false
5012 nether_brick_fence waterlogged true south false east true north false west true
5013 nether_brick_fence waterlogged true south false east true north false west false
5014 nether_brick_fence waterlogged false south false east true north false west true
5015 nether_brick_fence waterlogged false south false east true north false west false
5016 nether_brick_fence waterlogged true south true east false north true west true
5017 nether_brick_fence waterlogged true south true east false north true west false
5018 nether_brick_fence waterlogged false south true east false north true west true
5019 nether_brick_fence waterlogged false south true east false north true west false
5020 nether_brick_fence waterlogged true south false east false north true west true
5021 nether_brick_fence waterlogged true south false east false north true west false
5022 nether_brick_fence waterlogged false south false east false north true west true
5023 nether_brick_fence waterlogged false south false east false north true west false
5024 nether_brick_fence waterlogged true south true east false north false west true
5025 nether_brick_fence waterlogged true south true east false north false west false
5026 nether_brick_fence waterlogged false south true east false north false west true
5027 nether_brick_fence waterlogged false south true east false north false west false
5028 nether_brick_fence waterlogged true south false east false north false west true
5029 nether_brick_fence waterlogged true south false east false north false west false
5030 nether_brick_fence waterlogged false south false east false north false west true
5031 nether_brick_fence waterlogged false south false east false north false west false
5032 nether_brick_stairs facing north waterlogged true shape straight half top
5033 nether_brick_stairs facing north waterlogged false shape straight half top
5034 nether_brick_stairs facing north waterlogged true shape inner_left half top
5035 nether_brick_stairs facing north waterlogged false shape inner_left half top
5036 nether_brick_stairs facing north waterlogged true shape inner_right half top
5037 nether_brick_stairs facing north waterlogged false shape inner_right half top
5038 nether_brick_stairs facing north waterlogged true shape outer_left half top
5039 nether_brick_stairs facing north waterlogged false shape outer_left half top
5040 nether_brick_stairs facing north waterlogged true shape outer_right half top
5041 nether_brick_stairs facing north waterlogged false shape outer_right half top
5042 nether_brick_stairs facing north waterlogged true shape straight half bottom
5043 nether_brick_stairs facing north waterlogged false shape straight half bottom
5044 nether_brick_stairs facing north waterlogged true shape inner_left half bottom
5045 nether_brick_stairs facing north waterlogged false shape inner_left half bottom
5046 nether_brick_stairs facing north waterlogged true shape inner_right half bottom
5047 nether_brick_stairs facing north waterlogged false shape inner_right half bottom
5048 nether_brick_stairs facing north waterlogged true shape outer_left half bottom
5049 nether_brick_stairs facing north waterlogged false shape outer_left half bottom
5050 nether_brick_stairs facing north waterlogged true shape outer_right half bottom
5051 nether_brick_stairs facing north waterlogged false shape outer_right half bottom
5052 nether_brick_stairs facing south waterlogged true shape straight half top
5053 nether_brick_stairs facing south waterlogged false shape straight half top
5054 nether_brick_stairs facing south waterlogged true shape inner_left half top
5055 nether_brick_stairs facing south waterlogged false shape inner_left half top
5056 nether_brick_stairs facing south waterlogged true shape inner_right half top
5057 nether_brick_stairs facing south waterlogged false shape inner_right half top
5058 nether_brick_stairs facing south waterlogged true shape outer_left half top
5059 nether_brick_stairs facing south waterlogged false shape outer_left half top
5060 nether_brick_stairs facing south waterlogged true shape outer_right half top
5061 nether_brick_stairs facing south waterlogged false shape outer_right half top
5062 nether_brick_stairs facing south waterlogged true shape straight half bottom
5063 nether_brick_stairs facing south waterlogged false shape straight half bottom
5064 nether_brick_stairs facing south waterlogged true shape inner_left half bottom
5065 nether_brick_stairs facing south waterlogged false shape inner_left half bottom
5066 nether_brick_stairs facing south waterlogged true shape inner_right half bottom
5067 nether_brick_stairs facing south waterlogged false shape inner_right half bottom
5068 nether_brick_stairs facing south waterlogged true shape outer_left half bottom
5069 nether_brick_stairs facing south waterlogged false shape outer_left half bottom
5070 nether_brick_stairs facing south waterlogged true shape outer_right half bottom
5071 nether_brick_stairs facing south waterlogged false shape outer_right half bottom
5072 nether_brick_stairs facing west waterlogged true shape straight half top
5073 nether_brick_stairs facing west waterlogged false shape straight half top
5074 nether_brick_stairs facing west waterlogged true shape inner_left half top
5075 nether_brick_stairs facing west waterlogged false shape inner_left half top
5076 nether_brick_stairs facing west waterlogged true shape inner_right half top
5077 nether_brick_stairs facing west waterlogged false shape inner_right half top
5078 nether_brick_stairs facing west waterlogged true shape outer_left half top
5079 nether_brick_stairs facing west waterlogged false shape outer_left half top
5080 nether_brick_stairs facing west waterlogged true shape outer_right half top
5081 nether_brick_stairs facing west waterlogged false shape outer_right half top
5082 nether_brick_stairs facing west waterlogged true shape straight half bottom
5083 nether_brick_stairs facing west waterlogged false shape straight half bottom
5084 nether_brick_stairs facing west waterlogged true shape inner_left half bottom
5085 nether_brick_stairs facing west waterlogged false shape inner_left half bottom
5086 nether_brick_stairs facing west waterlogged true shape inner_right half bottom
5087 nether_brick_stairs facing west waterlogged false shape inner_right half bottom
5088 nether_brick_stairs facing west waterlogged true shape outer_left half bottom
5089 nether_brick_stairs facing west waterlogged false shape outer_left half bottom
5090 nether_brick_stairs facing west waterlogged true shape outer_right half bottom
5091 nether_brick_stairs facing west waterlogged false shape outer_right half bottom
5092 nether_brick_stairs facing east waterlogged true shape straight half top
5093 nether_brick_stairs facing east waterlogged false shape straight half top
5094 nether_brick_stairs facing east waterlogged true shape inner_left half top
5095 nether_brick_stairs facing east waterlogged false shape inner_left half top
5096 nether_brick_stairs facing east waterlogged true shape inner_right half top
5097 nether_brick_stairs facing east waterlogged false shape inner_right half top
5098 nether_brick_stairs facing east waterlogged true shape outer_left half top
5099 nether_brick_stairs facing east waterlogged false shape outer_left half top
5100 nether_brick_stairs facing east waterlogged true shape outer_right half top
5101 nether_brick_stairs facing east waterlogged false shape outer_right half top
5102 nether_brick_stairs facing east waterlogged true shape straight half bottom
5103 nether_brick_stairs facing east waterlogged false shape straight half bottom
5104 nether_brick_stairs facing east waterlogged true shape inner_left half bottom
5105 nether_brick_stairs facing east waterlogged false shape inner_left half bottom
5106 nether_brick_stairs facing east waterlogged true shape inner_right half bottom
5107 nether_brick_stairs facing east waterlogged false shape inner_right half bottom
5108 nether_brick_stairs facing east waterlogged true shape outer_left half bottom
5109 nether_brick_stairs facing east waterlogged false shape outer_left half bottom
5110 nether_brick_stairs facing east waterlogged true shape outer_right half bottom
5111 nether_brick_stairs facing east waterlogged false shape outer_right half bottom
5112 nether_wart age 0
5113 nether_wart age 1
5114 nether_wart age 2
5115 nether_wart age 3
5116 enchanting_table
5117 brewing_stand has_bottle_0 true has_bottle_1 true has_bottle_2 true
5118 brewing_stand has_bottle_0 true has_bottle_1 true has_bottle_2 false
5119 brewing_stand has_bottle_0 true has_bottle_1 false has_bottle_2 true
5120 brewing_stand has_bottle_0 true has_bottle_1 false has_bottle_2 false
5121 brewing_stand has_bottle_0 false has_bottle_1 true has_bottle_2 true
5122 brewing_stand has_bottle_0 false has_bottle_1 true has_bottle_2 false
5123 brewing_stand has_bottle_0 false has_bottle_1 false has_bottle_2 true
5124 brewing_stand has_bottle_0 false has_bottle_1 false has_bottle_2 false
5125 cauldron level 0
5126 cauldron level 1
5127 cauldron level 2
5128 cauldron level 3
5129 end_portal
5130 end_portal_frame facing north eye true
5131 end_portal_frame facing south eye true
5132 end_portal_frame facing west eye true
5133 end_portal_frame facing east eye true
5134 end_portal_frame facing north eye false
5135 end_portal_frame facing south eye false
5136 end_portal_frame facing west eye false
5137 end_portal_frame facing east eye false
5138 end_stone
5139 dragon_egg
5140 redstone_lamp lit true
5141 redstone_lamp lit false
5142 cocoa facing north age 0
5143 cocoa facing south age 0
5144 cocoa facing west age 0
5145 cocoa facing east age 0
5146 cocoa facing north age 1
5147 cocoa facing south age 1
5148 cocoa facing west age 1
5149 cocoa facing east age 1
5150 cocoa facing north age 2
5151 cocoa facing south age 2
5152 cocoa facing west age 2
5153 cocoa facing east age 2
5154 sandstone_stairs facing north waterlogged true shape straight half top
5155 sandstone_stairs facing north waterlogged false shape straight half top
5156 sandstone_stairs facing north waterlogged true shape inner_left half top
5157 sandstone_stairs facing north waterlogged false shape inner_left half top
5158 sandstone_stairs facing north waterlogged true shape inner_right half top
5159 sandstone_stairs facing north waterlogged false shape inner_right half top
5160 sandstone_stairs facing north waterlogged true shape outer_left half top
5161 sandstone_stairs facing north waterlogged false shape outer_left half top
5162 sandstone_stairs facing north waterlogged true shape outer_right half top
5163 sandstone_stairs facing north waterlogged false shape outer_right half top
5164 sandstone_stairs facing north waterlogged true shape straight half bottom
5165 sandstone_stairs facing north waterlogged false shape straight half bottom
5166 sandstone_stairs facing north waterlogged true shape inner_left half bottom
5167 sandstone_stairs facing north waterlogged false shape inner_left half bottom
5168 sandstone_stairs facing north waterlogged true shape inner_right half bottom
5169 sandstone_stairs facing north waterlogged false shape inner_right half bottom
5170 sandstone_stairs facing north waterlogged true shape outer_left half bottom
5171 sandstone_stairs facing north waterlogged false shape outer_left half bottom
5172 sandstone_stairs facing north waterlogged true shape outer_right half bottom
5173 sandstone_stairs facing north waterlogged false shape outer_right half bottom
5174 sandstone_stairs facing south waterlogged true shape straight half top
5175 sandstone_stairs facing south waterlogged false shape straight half top
5176 sandstone_stairs facing south waterlogged true shape inner_left half top
5177 sandstone_stairs facing south waterlogged false shape inner_left half top
5178 sandstone_stairs facing south waterlogged true shape inner_right half top
5179 sandstone_stairs facing south waterlogged false shape inner_right half top
5180 sandstone_stairs facing south waterlogged true shape outer_left half top
5181 sandstone_stairs facing south waterlogged false shape outer_left half top
5182 sandstone_stairs facing south waterlogged true shape outer_right half top
5183 sandstone_stairs facing south waterlogged false shape outer_right half top
5184 sandstone_stairs facing south waterlogged true shape straight half bottom
5185 sandstone_stairs facing south waterlogged false shape straight half bottom
5186 sandstone_stairs facing south waterlogged true shape inner_left half bottom
5187 sandstone_stairs facing south waterlogged false shape inner_left half bottom
5188 sandstone_stairs facing south waterlogged true shape inner_right half bottom
5189 sandstone_stairs facing south waterlogged false shape inner_right half bottom
5190 sandstone_stairs facing south waterlogged true shape outer_left half bottom
5191 sandstone_stairs facing south waterlogged false shape outer_left half bottom
5192 sandstone_stairs facing south waterlogged true shape outer_right half bottom
5193 sandstone_stairs facing south waterlogged false shape outer_right half bottom
5194 sandstone_stairs facing west waterlogged true shape straight half top
5195 sandstone_stairs facing west waterlogged false shape straight half top
5196 sandstone_stairs facing west waterlogged true shape inner_left half top
5197 sandstone_stairs facing west waterlogged false shape inner_left half top
5198 sandstone_stairs facing west waterlogged true shape inner_right half top
5199 sandstone_stairs facing west waterlogged false shape inner_right half top
5200 sandstone_stairs facing west waterlogged true shape outer_left half top
5201 sandstone_stairs facing west waterlogged false shape outer_left half top
5202 sandstone_stairs facing west waterlogged true shape outer_right half top
5203 sandstone_stairs facing west waterlogged false shape outer_right half top
5204 sandstone_stairs facing west waterlogged true shape straight half bottom
5205 sandstone_stairs facing west waterlogged false shape straight half bottom
5206 sandstone_stairs facing west waterlogged true shape inner_left half bottom
5207 sandstone_stairs facing west waterlogged false shape inner_left half bottom
5208 sandstone_stairs facing west waterlogged true shape inner_right half bottom
5209 sandstone_stairs facing west waterlogged false shape inner_right half bottom
5210 sandstone_stairs facing west waterlogged true shape outer_left half bottom
5211 sandstone_stairs facing west waterlogged false shape outer_left half bottom
5212 sandstone_stairs facing west waterlogged true shape outer_right half bottom
5213 sandstone_stairs facing west waterlogged false shape outer_right half bottom
5214 sandstone_stairs facing east waterlogged true shape straight half top
5215 sandstone_stairs facing east waterlogged false shape straight half top
5216 sandstone_stairs facing east waterlogged true shape inner_left half top
5217 sandstone_stairs facing east waterlogged false shape inner_left half top
5218 sandstone_stairs facing east waterlogged true shape inner_right half top
5219 sandstone_stairs facing east waterlogged false shape inner_right half top
5220 sandstone_stairs facing east waterlogged true shape outer_left half top
5221 sandstone_stairs facing east waterlogged false shape outer_left half top
5222 sandstone_stairs facing east waterlogged true shape outer_right half top
5223 sandstone_stairs facing east waterlogged false shape outer_right half top
5224 sandstone_stairs facing east waterlogged true shape straight half bottom
5225 sandstone_stairs facing east waterlogged false shape straight half bottom
5226 sandstone_stairs facing east waterlogged true shape inner_left half bottom
5227 sandstone_stairs facing east waterlogged false shape inner_left half bottom
5228 sandstone_stairs facing east waterlogged true shape inner_right half bottom
5229 sandstone_stairs facing east waterlogged false shape inner_right half bottom
5230 sandstone_stairs facing east waterlogged true shape outer_left half bottom
5231 sandstone_stairs facing east waterlogged false shape outer_left half bottom
5232 sandstone_stairs facing east waterlogged true shape outer_right half bottom
5233 sandstone_stairs facing east waterlogged false shape outer_right half bottom
5234 emerald_ore
5235 ender_chest facing north waterlogged true
5236 ender_chest facing north waterlogged false
5237 ender_chest facing south waterlogged true
5238 ender_chest facing south waterlogged false
5239 ender_chest facing west waterlogged true
5240 ender_chest facing west waterlogged false
5241 ender_chest facing east waterlogged true
5242 ender_chest facing east waterlogged false
5243 tripwire_hook attached true facing north powered true
5244 tripwire_hook attached true facing north powered false
5245 tripwire_hook attached true facing south powered true
5246 tripwire_hook attached true facing south powered false
5247 tripwire_hook attached true facing west powered true
5248 tripwire_hook attached true facing west powered false
5249 tripwire_hook attached true facing east powered true
5250 tripwire_hook attached true facing east powered false
5251 tripwire_hook attached false facing north powered true
5252 tripwire_hook attached false facing north powered false
5253 tripwire_hook attached false facing south powered true
5254 tripwire_hook attached false facing south powered false
5255 tripwire_hook attached false facing west powered true
5256 tripwire_hook attached false facing west powered false
5257 tripwire_hook attached false facing east powered true
5258 tripwire_hook attached false facing east powered false
5259 tripwire attached true disarmed true powered true east true north true south true west true
5260 tripwire attached true disarmed true powered true east true north true south true west false
5261 tripwire attached true disarmed true powered true east true north true south false west true
5262 tripwire attached true disarmed true powered true east true north true south false west false
5263 tripwire attached true disarmed true powered false east true north true south true west true
5264 tripwire attached true disarmed true powered false east true north true south true west false
5265 tripwire attached true disarmed true powered false east true north true south false west true
5266 tripwire attached true disarmed true powered false east true north true south false west false
5267 tripwire attached true disarmed true powered true east true north false south true west true
5268 tripwire attached true disarmed true powered true east true north false south true west false
5269 tripwire attached true disarmed true powered true east true north false south false west true
5270 tripwire attached true disarmed true powered true east true north false south false west false
5271 tripwire attached true disarmed true powered false east true north false south true west true
5272 tripwire attached true disarmed true powered false east true north false south true west false
5273 tripwire attached true disarmed true powered false east true north false south false west true
5274 tripwire attached true disarmed true powered false east true north false south false west false
5275 tripwire attached true disarmed true powered true east false north true south true west true
5276 tripwire attached true disarmed true powered true east false north true south true west false
5277 tripwire attached true disarmed true powered true east false north true south false west true
5278 tripwire attached true disarmed true powered true east false north true south false west false
5279 tripwire attached true disarmed true powered false east false north true south true west true
5280 tripwire attached true disarmed true powered false east false north true south true west false
5281 tripwire attached true disarmed true powered false east false north true south false west true
5282 tripwire attached true disarmed true powered false east false north true south false west false
5283 tripwire attached true disarmed true powered true east false north false south true west true
5284 tripwire attached true disarmed true powered true east false north false south true west false
5285 tripwire attached true disarmed true powered true east false north false south false west true
5286 tripwire attached true disarmed true powered true east false north false south false west false
5287 tripwire attached true disarmed true powered false east false north false south true west true
5288 tripwire attached true disarmed true powered false east false north false south true west false
5289 tripwire attached true disarmed true powered false east false north false south false west true
5290 tripwire attached true disarmed true powered false east false north false south false west false
5291 tripwire attached true disarmed false powered true east true north true south true west true
5292 tripwire attached true disarmed false powered true east true north true south true west false
5293 tripwire attached true disarmed false powered true east true north true south false west true
5294 tripwire attached true disarmed false powered true east true north true south false west false
5295 tripwire attached true disarmed false powered false east true north true south true west true
5296 tripwire attached true disarmed false powered false east true north true south true west false
5297 tripwire attached true disarmed false powered false east true north true south false west true
5298 tripwire attached true disarmed false powered false east true north true south false west false
5299 tripwire attached true disarmed false powered true east true north false south true west true
5300 tripwire attached true disarmed false powered true east true north false south true west false
5301 tripwire attached true disarmed false powered true east true north false south false west true
5302 tripwire attached true disarmed false powered true east true north false south false west false
5303 tripwire attached true disarmed false powered false east true north false south true west true
5304 tripwire attached true disarmed false powered false east true north false south true west false
5305 tripwire attached true disarmed false powered false east true north false south false west true
5306 tripwire attached true disarmed false powered false east true north false south false west false
5307 tripwire attached true disarmed false powered true east false north true south true west true
5308 tripwire attached true disarmed false powered true east false north true south true west false
5309 tripwire attached true disarmed false powered true east false north true south false west true
5310 tripwire attached true disarmed false powered true east false north true south false west false
5311 tripwire attached true disarmed false powered false east false north true south true west true
5312 tripwire attached true disarmed false powered false east false north true south true west false
5313 tripwire attached true disarmed false powered false east false north true south false west true
5314 tripwire attached true disarmed false powered false east false north true south false west false
5315 tripwire attached true disarmed false powered true east false north false south true west true
5316 tripwire attached true disarmed false powered true east false north false south true west false
5317 tripwire attached true disarmed false powered true east false north false south false west true
5318 tripwire attached true disarmed false powered true east false north false south false west false
5319 tripwire attached true disarmed false powered false east false north false south true west true
5320 tripwire attached true disarmed false powered false east false north false south true west false
5321 tripwire attached true disarmed false powered false east false north false south false west true
5322 tripwire attached true disarmed false powered false east false north false south false west false
5323 tripwire attached false disarmed true powered true east true north true south true west true
5324 tripwire attached false disarmed true powered true east true north true south true west false
5325 tripwire attached false disarmed true powered true east true north true south false west true
5326 tripwire attached false disarmed true powered true east true north true south false west false
5327 tripwire attached false disarmed true powered false east true north true south true west true
5328 tripwire attached false disarmed true powered false east true north true south true west false
5329 tripwire attached false disarmed true powered false east true north true south false west true
5330 tripwire attached false disarmed true powered false east true north true south false west false
5331 tripwire attached false disarmed true powered true east true north false south true west true
5332 tripwire attached false disarmed true powered true east true north false south true west false
5333 tripwire attached false disarmed true powered true east true north false south false west true
5334 tripwire attached false disarmed true powered true east true north false south false west false
5335 tripwire attached false disarmed true powered false east true north false south true west true
5336 tripwire attached false disarmed true powered false east true north false south true west false
5337 tripwire attached false disarmed true powered false east true north false south false west true
5338 tripwire attached false disarmed true powered false east true north false south false west false
5339 tripwire attached false disarmed true powered true east false north true south true west true
5340 tripwire attached false disarmed true powered true east false north true south true west false
5341 tripwire attached false disarmed true powered true east false north true south false west true
5342 tripwire attached false disarmed true powered true east false north true south false west false
5343 tripwire attached false disarmed true powered false east false north true south true west true
5344 tripwire attached false disarmed true powered false east false north true south true west false
5345 tripwire attached false disarmed true powered false east false north true south false west true
5346 tripwire attached false disarmed true powered false east false north true south false west false
5347 tripwire attached false disarmed true powered true east false north false south true west true
5348 tripwire attached false disarmed true powered true east false north false south true west false
5349 tripwire attached false disarmed true powered true east false north false south false west true
5350 tripwire attached false disarmed true powered true east false north false south false west false
5351 tripwire attached false disarmed true powered false east false north false south true west true
5352 tripwire attached false disarmed true powered false east false north false south true west false
5353 tripwire attached false disarmed true powered false east false north false south false west true
5354 tripwire attached false disarmed true powered false east false north false south false west false
5355 tripwire attached false disarmed false powered true east true north true south true west true
5356 tripwire attached false disarmed false powered true east true north true south true west false
5357 tripwire attached false disarmed false powered true east true north true south false west true
5358 tripwire attached false disarmed false powered true east true north true south false west false
5359 tripwire attached false disarmed false powered false east true north true south true west true
5360 tripwire attached false disarmed false powered false east true north true south true west false
5361 tripwire attached false disarmed false powered false east true north true south false west true
5362 tripwire attached false disarmed false powered false east true north true south false west false
5363 tripwire attached false disarmed false powered true east true north false south true west true
5364 tripwire attached false disarmed false powered true east true north false south true west false
5365 tripwire attached false disarmed false powered true east true north false south false west true
5366 tripwire attached false disarmed false powered true east true north false south false west false
5367 tripwire attached false disarmed false powered false east true north false south true west true
5368 tripwire attached false disarmed false powered false east true north false south true west false
5369 tripwire attached false disarmed false powered false east true north false south false west true
5370 tripwire attached false disarmed false powered false east true north false south false west false
5371 tripwire attached false disarmed false powered true east false north true south true west true
5372 tripwire attached false disarmed false powered true east false north true south true west false
5373 tripwire attached false disarmed false powered true east false north true south false west true
5374 tripwire attached false disarmed false powered true east false north true south false west false
5375 tripwire attached false disarmed false powered false east false north true south true west true
5376 tripwire attached false disarmed false powered false east false north true south true west false
5377 tripwire attached false disarmed false powered false east false north true south false west true
5378 tripwire attached false disarmed false powered false east false north true south false west false
5379 tripwire attached false disarmed false powered true east false north false south true west true
5380 tripwire attached false disarmed false powered true east false north false south true west false
5381 tripwire attached false disarmed false powered true east false north false south false west true
5382 tripwire attached false disarmed false powered true east false north false south false west false
5383 tripwire attached false disarmed false powered false east false north false south true west true
5384 tripwire attached false disarmed false powered false east false north false south true west false
5385 tripwire attached false disarmed false powered false east false north false south false west true
5386 tripwire attached false disarmed false powered false east false north false south false west false
5387 emerald_block
5388 spruce_stairs facing north waterlogged true shape straight half top
5389 spruce_stairs facing north waterlogged false shape straight half top
5390 spruce_stairs facing north waterlogged true shape inner_left half top
5391 spruce_stairs facing north waterlogged false shape inner_left half top
5392 spruce_stairs facing north waterlogged true shape inner_right half top
5393 spruce_stairs facing north waterlogged false shape inner_right half top
5394 spruce_stairs facing north waterlogged true shape outer_left half top
5395 spruce_stairs facing north waterlogged false shape outer_left half top
5396 spruce_stairs facing north waterlogged true shape outer_right half top
5397 spruce_stairs facing north waterlogged false shape outer_right half top
5398 spruce_stairs facing north waterlogged true shape straight half bottom
5399 spruce_stairs facing north waterlogged false shape straight half bottom
5400 spruce_stairs facing north waterlogged true shape inner_left half bottom
5401 spruce_stairs facing north waterlogged false shape inner_left half bottom
5402 spruce_stairs facing north waterlogged true shape inner_right half bottom
5403 spruce_stairs facing north waterlogged false shape inner_right half bottom
5404 spruce_stairs facing north waterlogged true shape outer_left half bottom
5405 spruce_stairs facing north waterlogged false shape outer_left half bottom
5406 spruce_stairs facing north waterlogged true shape outer_right half bottom
5407 spruce_stairs facing north waterlogged false shape outer_right half bottom
5408 spruce_stairs facing south waterlogged true shape straight half top
5409 spruce_stairs facing south waterlogged false shape straight half top
5410 spruce_stairs facing south waterlogged true shape inner_left half top
5411 spruce_stairs facing south waterlogged false shape inner_left half top
5412 spruce_stairs facing south waterlogged true shape inner_right half top
5413 spruce_stairs facing south waterlogged false shape inner_right half top
5414 spruce_stairs facing south waterlogged true shape outer_left half top
5415 spruce_stairs facing south waterlogged false shape outer_left half top
5416 spruce_stairs facing south waterlogged true shape outer_right half top
5417 spruce_stairs facing south waterlogged false shape outer_right half top
5418 spruce_stairs facing south waterlogged true shape straight half bottom
5419 spruce_stairs facing south waterlogged false shape straight half bottom
5420 spruce_stairs facing south waterlogged true shape inner_left half bottom
5421 spruce_stairs facing south waterlogged false shape inner_left half bottom
5422 spruce_stairs facing south waterlogged true shape inner_right half bottom
5423 spruce_stairs facing south waterlogged false shape inner_right half bottom
5424 spruce_stairs facing south waterlogged true shape outer_left half bottom
5425 spruce_stairs facing south waterlogged false shape outer_left half bottom
5426 spruce_stairs facing south waterlogged true shape outer_right half bottom
5427 spruce_stairs facing south waterlogged false shape outer_right half bottom
5428 spruce_stairs facing west waterlogged true shape straight half top
5429 spruce_stairs facing west waterlogged false shape straight half top
5430 spruce_stairs facing west waterlogged true shape inner_left half top
5431 spruce_stairs facing west waterlogged false shape inner_left half top
5432 spruce_stairs facing west waterlogged true shape inner_right half top
5433 spruce_stairs facing west waterlogged false shape inner_right half top
5434 spruce_stairs facing west waterlogged true shape outer_left half top
5435 spruce_stairs facing west waterlogged false shape outer_left half top
5436 spruce_stairs facing west waterlogged true shape outer_right half top
5437 spruce_stairs facing west waterlogged false shape outer_right half top
5438 spruce_stairs facing west waterlogged true shape straight half bottom
5439 spruce_stairs facing west waterlogged false shape straight half bottom
5440 spruce_stairs facing west waterlogged true shape inner_left half bottom
5441 spruce_stairs facing west waterlogged false shape inner_left half bottom
5442 spruce_stairs facing west waterlogged true shape inner_right half bottom
5443 spruce_stairs facing west waterlogged false shape inner_right half bottom
5444 spruce_stairs facing west waterlogged true shape outer_left half bottom
5445 spruce_stairs facing west waterlogged false shape outer_left half bottom
5446 spruce_stairs facing west waterlogged true shape outer_right half bottom
5447 spruce_stairs facing west waterlogged false shape outer_right half bottom
5448 spruce_stairs facing east waterlogged true shape straight half top
5449 spruce_stairs facing east waterlogged false shape straight half top
5450 spruce_stairs facing east waterlogged true shape inner_left half top
5451 spruce_stairs facing east waterlogged false shape inner_left half top
5452 spruce_stairs facing east waterlogged true shape inner_right half top
5453 spruce_stairs facing east waterlogged false shape inner_right half top
5454 spruce_stairs facing east waterlogged true shape outer_left half top
5455 spruce_stairs facing east waterlogged false shape outer_left half top
5456 spruce_stairs facing east waterlogged true shape outer_right half top
5457 spruce_stairs facing east waterlogged false shape outer_right half top
5458 spruce_stairs facing east waterlogged true shape straight half bottom
5459 spruce_stairs facing east waterlogged false shape straight half bottom
5460 spruce_stairs facing east waterlogged true shape inner_left half bottom
5461 spruce_stairs facing east waterlogged false shape inner_left half bottom
5462 spruce_stairs facing east waterlogged true shape inner_right half bottom
5463 spruce_stairs facing east waterlogged false shape inner_right half bottom
5464 spruce_stairs facing east waterlogged true shape outer_left half bottom
5465 spruce_stairs facing east waterlogged false shape outer_left half bottom
5466 spruce_stairs facing east waterlogged true shape outer_right half bottom
5467 spruce_stairs facing east waterlogged false shape outer_right half bottom
5468 birch_stairs facing north waterlogged true shape straight half top
5469 birch_stairs facing north waterlogged false shape straight half top
5470 birch_stairs facing north waterlogged true shape inner_left half top
5471 birch_stairs facing north waterlogged false shape inner_left half top
5472 birch_stairs facing north waterlogged true shape inner_right half top
5473 birch_stairs facing north waterlogged false shape inner_right half top
5474 birch_stairs facing north waterlogged true shape outer_left half top
5475 birch_stairs facing north waterlogged false shape outer_left half top
5476 birch_stairs facing north waterlogged true shape outer_right half top
5477 birch_stairs facing north waterlogged false shape outer_right half top
5478 birch_stairs facing north waterlogged true shape straight half bottom
5479 birch_stairs facing north waterlogged false shape straight half bottom
5480 birch_stairs facing north waterlogged true shape inner_left half bottom
5481 birch_stairs facing north waterlogged false shape inner_left half bottom
5482 birch_stairs facing north waterlogged true shape inner_right half bottom
5483 birch_stairs facing north waterlogged false shape inner_right half bottom
5484 birch_stairs facing north waterlogged true shape outer_left half bottom
5485 birch_stairs facing north waterlogged false shape outer_left half bottom
5486 birch_stairs facing north waterlogged true shape outer_right half bottom
5487 birch_stairs facing north waterlogged false shape outer_right half bottom
5488 birch_stairs facing south waterlogged true shape straight half top
5489 birch_stairs facing south waterlogged false shape straight half top
5490 birch_stairs facing south waterlogged true shape inner_left half top
5491 birch_stairs facing south waterlogged false shape inner_left half top
5492 birch_stairs facing south waterlogged true shape inner_right half top
5493 birch_stairs facing south waterlogged false shape inner_right half top
5494 birch_stairs facing south waterlogged true shape outer_left half top
5495 birch_stairs facing south waterlogged false shape outer_left half top
5496 birch_stairs facing south waterlogged true shape outer_right half top
5497 birch_stairs facing south waterlogged false shape outer_right half top
5498 birch_stairs facing south waterlogged true shape straight half bottom
5499 birch_stairs facing south waterlogged false shape straight half bottom
5500 birch_stairs facing south waterlogged true shape inner_left half bottom
5501 birch_stairs facing south waterlogged false shape inner_left half bottom
5502 birch_stairs facing south waterlogged true shape inner_right half bottom
5503 birch_stairs facing south waterlogged false shape inner_right half bottom
5504 birch_stairs facing south waterlogged true shape outer_left half bottom
5505 birch_stairs facing south waterlogged false shape outer_left half bottom
5506 birch_stairs facing south waterlogged true shape outer_right half bottom
5507 birch_stairs facing south waterlogged false shape outer_right half bottom
5508 birch_stairs facing west waterlogged true shape straight half top
5509 birch_stairs facing west waterlogged false shape straight half top
5510 birch_stairs facing west waterlogged true shape inner_left half top
5511 birch_stairs facing west waterlogged false shape inner_left half top
5512 birch_stairs facing west waterlogged true shape inner_right half top
5513 birch_stairs facing west waterlogged false shape inner_right half top
5514 birch_stairs facing west waterlogged true shape outer_left half top
5515 birch_stairs facing west waterlogged false shape outer_left half top
5516 birch_stairs facing west waterlogged true shape outer_right half top
5517 birch_stairs facing west waterlogged false shape outer_right half top
5518 birch_stairs facing west waterlogged true shape straight half bottom
5519 birch_stairs facing west waterlogged false shape straight half bottom
5520 birch_stairs facing west waterlogged true shape inner_left half bottom
5521 birch_stairs facing west waterlogged false shape inner_left half bottom
5522 birch_stairs facing west waterlogged true shape inner_right half bottom
5523 birch_stairs facing west waterlogged false shape inner_right half bottom
5524 birch_stairs facing west waterlogged true shape outer_left half bottom
5525 birch_stairs facing west waterlogged false shape outer_left half bottom
5526 birch_stairs facing west waterlogged true shape outer_right half bottom
5527 birch_stairs facing west waterlogged false shape outer_right half bottom
5528 birch_stairs facing east waterlogged true shape straight half top
5529 birch_stairs facing east waterlogged false shape straight half top
5530 birch_stairs facing east waterlogged true shape inner_left half top
5531 birch_stairs facing east waterlogged false shape inner_left half top
5532 birch_stairs facing east waterlogged true shape inner_right half top
5533 birch_stairs facing east waterlogged false shape inner_right half top
5534 birch_stairs facing east waterlogged true shape outer_left half top
5535 birch_stairs facing east waterlogged false shape outer_left half top
5536 birch_stairs facing east waterlogged true shape outer_right half top
5537 birch_stairs facing east waterlogged false shape outer_right half top
5538 birch_stairs facing east waterlogged true shape straight half bottom
5539 birch_stairs facing east waterlogged false shape straight half bottom
5540 birch_stairs facing east waterlogged true shape inner_left half bottom
5541 birch_stairs facing east waterlogged false shape inner_left half bottom
5542 birch_stairs facing east waterlogged true shape inner_right half bottom
5543 birch_stairs facing east waterlogged false shape inner_right half bottom
5544 birch_stairs facing east waterlogged true shape outer_left half bottom
5545 birch_stairs facing east waterlogged false shape outer_left half bottom
5546 birch_stairs facing east waterlogged true shape outer_right half bottom
5547 birch_stairs facing east waterlogged false shape outer_right half bottom
5548 jungle_stairs facing north waterlogged true shape straight half top
5549 jungle_stairs facing north waterlogged false shape straight half top
5550 jungle_stairs facing north waterlogged true shape inner_left half top
5551 jungle_stairs facing north waterlogged false shape inner_left half top
5552 jungle_stairs facing north waterlogged true shape inner_right half top
5553 jungle_stairs facing north waterlogged false shape inner_right half top
5554 jungle_stairs facing north waterlogged true shape outer_left half top
5555 jungle_stairs facing north waterlogged false shape outer_left half top
5556 jungle_stairs facing north waterlogged true shape outer_right half top
5557 jungle_stairs facing north waterlogged false shape outer_right half top
5558 jungle_stairs facing north waterlogged true shape straight half bottom
5559 jungle_stairs facing north waterlogged false shape straight half bottom
5560 jungle_stairs facing north waterlogged true shape inner_left half bottom
5561 jungle_stairs facing north waterlogged false shape inner_left half bottom
5562 jungle_stairs facing north waterlogged true shape inner_right half bottom
5563 jungle_stairs facing north waterlogged false shape inner_right half bottom
5564 jungle_stairs facing north waterlogged true shape outer_left half bottom
5565 jungle_stairs facing north waterlogged false shape outer_left half bottom
5566 jungle_stairs facing north waterlogged true shape outer_right half bottom
5567 jungle_stairs facing north waterlogged false shape outer_right half bottom
5568 jungle_stairs facing south waterlogged true shape straight half top
5569 jungle_stairs facing south waterlogged false shape straight half top
5570 jungle_stairs facing south waterlogged true shape inner_left half top
5571 jungle_stairs facing south waterlogged false shape inner_left half top
5572 jungle_stairs facing south waterlogged true shape inner_right half top
5573 jungle_stairs facing south waterlogged false shape inner_right half top
5574 jungle_stairs facing south waterlogged true shape outer_left half top
5575 jungle_stairs facing south waterlogged false shape outer_left half top
5576 jungle_stairs facing south waterlogged true shape outer_right half top
5577 jungle_stairs facing south waterlogged false shape outer_right half top
5578 jungle_stairs facing south waterlogged true shape straight half bottom
5579 jungle_stairs facing south waterlogged false shape straight half bottom
5580 jungle_stairs facing south waterlogged true shape inner_left half bottom
5581 jungle_stairs facing south waterlogged false shape inner_left half bottom
5582 jungle_stairs facing south waterlogged true shape inner_right half bottom
5583 jungle_stairs facing south waterlogged false shape inner_right half bottom
5584 jungle_stairs facing south waterlogged true shape outer_left half bottom
5585 jungle_stairs facing south waterlogged false shape outer_left half bottom
5586 jungle_stairs facing south waterlogged true shape outer_right half bottom
5587 jungle_stairs facing south waterlogged false shape outer_right half bottom
5588 jungle_stairs facing west waterlogged true shape straight half top
5589 jungle_stairs facing west waterlogged false shape straight half top
5590 jungle_stairs facing west waterlogged true shape inner_left half top
5591 jungle_stairs facing west waterlogged false shape inner_left half top
5592 jungle_stairs facing west waterlogged true shape inner_right half top
5593 jungle_stairs facing west waterlogged false shape inner_right half top
5594 jungle_stairs facing west waterlogged true shape outer_left half top
5595 jungle_stairs facing west waterlogged false shape outer_left half top
5596 jungle_stairs facing west waterlogged true shape outer_right half top
5597 jungle_stairs facing west waterlogged false shape outer_right half top
5598 jungle_stairs facing west waterlogged true shape straight half bottom
5599 jungle_stairs facing west waterlogged false shape straight half bottom
5600 jungle_stairs facing west waterlogged true shape inner_left half bottom
5601 jungle_stairs facing west waterlogged false shape inner_left half bottom
5602 jungle_stairs facing west waterlogged true shape inner_right half bottom
5603 jungle_stairs facing west waterlogged false shape inner_right half bottom
5604 jungle_stairs facing west waterlogged true shape outer_left half bottom
5605 jungle_stairs facing west waterlogged false shape outer_left half bottom
5606 jungle_stairs facing west waterlogged true shape outer_right half bottom
5607 jungle_stairs facing west waterlogged false shape outer_right half bottom
5608 jungle_stairs facing east waterlogged true shape straight half top
5609 jungle_stairs facing east waterlogged false shape straight half top
5610 jungle_stairs facing east waterlogged true shape inner_left half top
5611 jungle_stairs facing east waterlogged false shape inner_left half top
5612 jungle_stairs facing east waterlogged true shape inner_right half top
5613 jungle_stairs facing east waterlogged false shape inner_right half top
5614 jungle_stairs facing east waterlogged true shape outer_left half top
5615 jungle_stairs facing east waterlogged false shape outer_left half top
5616 jungle_stairs facing east waterlogged true shape outer_right half top
5617 jungle_stairs facing east waterlogged false shape outer_right half top
5618 jungle_stairs facing east waterlogged true shape straight half bottom
5619 jungle_stairs facing east waterlogged false shape straight half bottom
5620 jungle_stairs facing east waterlogged true shape inner_left half bottom
5621 jungle_stairs facing east waterlogged false shape inner_left half bottom
5622 jungle_stairs facing east waterlogged true shape inner_right half bottom
5623 jungle_stairs facing east waterlogged false shape inner_right half bottom
5624 jungle_stairs facing east waterlogged true shape outer_left half bottom
5625 jungle_stairs facing east waterlogged false shape outer_left half bottom
5626 jungle_stairs facing east waterlogged true shape outer_right half bottom
5627 jungle_stairs facing east waterlogged false shape outer_right half bottom
5628 command_block conditional true facing north
5629 command_block conditional true facing east
5630 command_block conditional true facing south
5631 command_block conditional true facing west
5632 command_block conditional true facing up
5633 command_block conditional true facing down
5634 command_block conditional false facing north
5635 command_block conditional false facing east
5636 command_block conditional false facing south
5637 command_block conditional false facing west
5638 command_block conditional false facing up
5639 command_block conditional false facing down
5640 beacon
5641 cobblestone_wall waterlogged true south true east true north true up true west true
5642 cobblestone_wall waterlogged true south true east true north true up true west false
5643 cobblestone_wall waterlogged false south true east true north true up true west true
5644 cobblestone_wall waterlogged false south true east true north true up true west false
5645 cobblestone_wall waterlogged true south true east true north true up false west true
5646 cobblestone_wall waterlogged true south true east true north true up false west false
5647 cobblestone_wall waterlogged false south true east true north true up false west true
5648 cobblestone_wall waterlogged false south true east true north true up false west false
5649 cobblestone_wall waterlogged true south false east true north true up true west true
5650 cobblestone_wall waterlogged true south false east true north true up true west false
5651 cobblestone_wall waterlogged false south false east true north true up true west true
5652 cobblestone_wall waterlogged false south false east true north true up true west false
5653 cobblestone_wall waterlogged true south false east true north true up false west true
5654 cobblestone_wall waterlogged true south false east true north true up false west false
5655 cobblestone_wall waterlogged false south false east true north true up false west true
5656 cobblestone_wall waterlogged false south false east true north true up false west false
5657 cobblestone_wall waterlogged true south true east true north false up true west true
5658 cobblestone_wall waterlogged true south true east true north false up true west false
5659 cobblestone_wall waterlogged false south true east true north false up true west true
5660 cobblestone_wall waterlogged false south true east true north false up true west false
5661 cobblestone_wall waterlogged true south true east true north false up false west true
5662 cobblestone_wall waterlogged true south true east true north false up false west false
5663 cobblestone_wall waterlogged false south true east true north false up false west true
5664 cobblestone_wall waterlogged false south true east true north false up false west false
5665 cobblestone_wall waterlogged true south false east true north false up true west true
5666 cobblestone_wall waterlogged true south false east true north false up true west false
5667 cobblestone_wall waterlogged false south false east true north false up true west true
5668 cobblestone_wall waterlogged false south false east true north false up true west false
5669 cobblestone_wall waterlogged true south false east true north false up false west true
5670 cobblestone_wall waterlogged true south false east true north false up false west false
5671 cobblestone_wall waterlogged false south false east true north false up false west true
5672 cobblestone_wall waterlogged false south false east true north false up false west false
5673 cobblestone_wall waterlogged true south true east false north true up true west true
5674 cobblestone_wall waterlogged true south true east false north true up true west false
5675 cobblestone_wall waterlogged false south true east false north true up true west true
5676 cobblestone_wall waterlogged false south true east false north true up true west false
5677 cobblestone_wall waterlogged true south true east false north true up false west true
5678 cobblestone_wall waterlogged true south true east false north true up false west false
5679 cobblestone_wall waterlogged false south true east false north true up false west true
5680 cobblestone_wall waterlogged false south true east false north true up false west false
5681 cobblestone_wall waterlogged true south false east false north true up true west true
5682 cobblestone_wall waterlogged true south false east false north true up true west false
5683 cobblestone_wall waterlogged false south false east false north true up true west true
5684 cobblestone_wall waterlogged false south false east false north true up true west false
5685 cobblestone_wall waterlogged true south false east false north true up false west true
5686 cobblestone_wall waterlogged true south false east false north true up false west false
5687 cobblestone_wall waterlogged false south false east false north true up false west true
5688 cobblestone_wall waterlogged false south false east false north true up false west false
5689 cobblestone_wall waterlogged true south true east false north false up true west true
5690 cobblestone_wall waterlogged true south true east false north false up true west false
5691 cobblestone_wall waterlogged false south true east false north false up true west true
5692 cobblestone_wall waterlogged false south true east false north false up true west false
5693 cobblestone_wall waterlogged true south true east false north false up false west true
5694 cobblestone_wall waterlogged true south true east false north false up false west false
5695 cobblestone_wall waterlogged false south true east false north false up false west true
5696 cobblestone_wall waterlogged false south true east false north false up false west false
5697 cobblestone_wall waterlogged true south false east false north false up true west true
5698 cobblestone_wall waterlogged true south false east false north false up true west false
5699 cobblestone_wall waterlogged false south false east false north false up true west true
5700 cobblestone_wall waterlogged false south false east false north false up true west false
5701 cobblestone_wall waterlogged true south false east false north false up false west true
5702 cobblestone_wall waterlogged true south false east false north false up false west false
5703 cobblestone_wall waterlogged false south false east false north false up false west true
5704 cobblestone_wall waterlogged false south false east false north false up false west false
5705 mossy_cobblestone_wall waterlogged true south true east true north true up true west true
5706 mossy_cobblestone_wall waterlogged true south true east true north true up true west false
5707 mossy_cobblestone_wall waterlogged false south true east true north true up true west true
5708 mossy_cobblestone_wall waterlogged false south true east true north true up true west false
5709 mossy_cobblestone_wall waterlogged true south true east true north true up false west true
5710 mossy_cobblestone_wall waterlogged true south true east true north true up false west false
5711 mossy_cobblestone_wall waterlogged false south true east true north true up false west true
5712 mossy_cobblestone_wall waterlogged false south true east true north true up false west false
5713 mossy_cobblestone_wall waterlogged true south false east true north true up true west true
5714 mossy_cobblestone_wall waterlogged true south false east true north true up true west false
5715 mossy_cobblestone_wall waterlogged false south false east true north true up true west true
5716 mossy_cobblestone_wall waterlogged false south false east true north true up true west false
5717 mossy_cobblestone_wall waterlogged true south false east true north true up false west true
5718 mossy_cobblestone_wall waterlogged true south false east true north true up false west false
5719 mossy_cobblestone_wall waterlogged false south false east true north true up false west true
5720 mossy_cobblestone_wall waterlogged false south false east true north true up false west false
5721 mossy_cobblestone_wall waterlogged true south true east true north false up true west true
5722 mossy_cobblestone_wall waterlogged true south true east true north false up true west false
5723 mossy_cobblestone_wall waterlogged false south true east true north false up true west true
5724 mossy_cobblestone_wall waterlogged false south true east true north false up true west false
5725 mossy_cobblestone_wall waterlogged true south true east true north false up false west true
5726 mossy_cobblestone_wall waterlogged true south true east true north false up false west false
5727 mossy_cobblestone_wall waterlogged false south true east true north false up false west true
5728 mossy_cobblestone_wall waterlogged false south true east true north false up false west false
5729 mossy_cobblestone_wall waterlogged true south false east true north false up true west true
5730 mossy_cobblestone_wall waterlogged true south false east true north false up true west false
5731 mossy_cobblestone_wall waterlogged false south false east true north false up true west true
5732 mossy_cobblestone_wall waterlogged false south false east true north false up true west false
5733 mossy_cobblestone_wall waterlogged true south false east true north false up false west true
5734 mossy_cobblestone_wall waterlogged true south false east true north false up false west false
5735 mossy_cobblestone_wall waterlogged false south false east true north false up false west true
5736 mossy_cobblestone_wall waterlogged false south false east true north false up false west false
5737 mossy_cobblestone_wall waterlogged true south true east false north true up true west true
5738 mossy_cobblestone_wall waterlogged true south true east false north true up true west false
5739 mossy_cobblestone_wall waterlogged false south true east false north true up true west true
5740 mossy_cobblestone_wall waterlogged false south true east false north true up true west false
5741 mossy_cobblestone_wall waterlogged true south true east false north true up false west true
5742 mossy_cobblestone_wall waterlogged true south true east false north true up false west false
5743 mossy_cobblestone_wall waterlogged false south true east false north true up false west true
5744 mossy_cobblestone_wall waterlogged false south true east false north true up false west false
5745 mossy_cobblestone_wall waterlogged true south false east false north true up true west true
5746 mossy_cobblestone_wall waterlogged true south false east false north true up true west false
5747 mossy_cobblestone_wall waterlogged false south false east false north true up true west true
5748 mossy_cobblestone_wall waterlogged false south false east false north true up true west false
5749 mossy_cobblestone_wall waterlogged true south false east false north true up false west true
5750 mossy_cobblestone_wall waterlogged true south false east false north true up false west false
5751 mossy_cobblestone_wall waterlogged false south false east false north true up false west true
5752 mossy_cobblestone_wall waterlogged false south false east false north true up false west false
5753 mossy_cobblestone_wall waterlogged true south true east false north false up true west true
5754 mossy_cobblestone_wall waterlogged true south true east false north false up true west false
5755 mossy_cobblestone_wall waterlogged false south true east false north false up true west true
5756 mossy_cobblestone_wall waterlogged false south true east false north false up true west false
5757 mossy_cobblestone_wall waterlogged true south true east false north false up false west true
5758 mossy_cobblestone_wall waterlogged true south true east false north false up false west false
5759 mossy_cobblestone_wall waterlogged false south true east false north false up false west true
5760 mossy_cobblestone_wall waterlogged false south true east false north false up false west false
5761 mossy_cobblestone_wall waterlogged true south false east false north false up true west true
5762 mossy_cobblestone_wall waterlogged true south false east false north false up true west false
5763 mossy_cobblestone_wall waterlogged false south false east false north false up true west true
5764 mossy_cobblestone_wall waterlogged false south false east false north false up true west false
5765 mossy_cobblestone_wall waterlogged true south false east false north false up false west true
5766 mossy_cobblestone_wall waterlogged true south false east false north false up false west false
5767 mossy_cobblestone_wall waterlogged false south false east false north false up false west true
5768 mossy_cobblestone_wall waterlogged false south false east false north false up false west false
5769 flower_pot
5770 potted_oak_sapling
5771 potted_spruce_sapling
5772 potted_birch_sapling
5773 potted_jungle_sapling
5774 potted_acacia_sapling
5775 potted_dark_oak_sapling
5776 potted_fern
5777 potted_dandelion
5778 potted_poppy
5779 potted_blue_orchid
5780 potted_allium
5781 potted_azure_bluet
5782 potted_red_tulip
5783 potted_orange_tulip
5784 potted_white_tulip
5785 potted_pink_tulip
5786 potted_oxeye_daisy
5787 potted_cornflower
5788 potted_lily_of_the_valley
5789 potted_wither_rose
5790 potted_red_mushroom
5791 potted_brown_mushroom
5792 potted_dead_bush
5793 potted_cactus
5794 carrots age 0
5795 carrots age 1
5796 carrots age 2
5797 carrots age 3
5798 carrots age 4
5799 carrots age 5
5800 carrots age 6
5801 carrots age 7
5802 potatoes age 0
5803 potatoes age 1
5804 potatoes age 2
5805 potatoes age 3
5806 potatoes age 4
5807 potatoes age 5
5808 potatoes age 6
5809 potatoes age 7
5810 oak_button facing north face floor powered true
5811 oak_button facing north face floor powered false
5812 oak_button facing south face floor powered true
5813 oak_button facing south face floor powered false
5814 oak_button facing west face floor powered true
5815 oak_button facing west face floor powered false
5816 oak_button facing east face floor powered true
5817 oak_button facing east face floor powered false
5818 oak_button facing north face wall powered true
5819 oak_button facing north face wall powered false
5820 oak_button facing south face wall powered true
5821 oak_button facing south face wall powered false
5822 oak_button facing west face wall powered true
5823 oak_button facing west face wall powered false
5824 oak_button facing east face wall powered true
5825 oak_button facing east face wall powered false
5826 oak_button facing north face ceiling powered true
5827 oak_button facing north face ceiling powered false
5828 oak_button facing south face ceiling powered true
5829 oak_button facing south face ceiling powered false
5830 oak_button facing west face ceiling powered true
5831 oak_button facing west face ceiling powered false
5832 oak_button facing east face ceiling powered true
5833 oak_button facing east face ceiling powered false
5834 spruce_button facing north face floor powered true
5835 spruce_button facing north face floor powered false
5836 spruce_button facing south face floor powered true
5837 spruce_button facing south face floor powered false
5838 spruce_button facing west face floor powered true
5839 spruce_button facing west face floor powered false
5840 spruce_button facing east face floor powered true
5841 spruce_button facing east face floor powered false
5842 spruce_button facing north face wall powered true
5843 spruce_button facing north face wall powered false
5844 spruce_button facing south face wall powered true
5845 spruce_button facing south face wall powered false
5846 spruce_button facing west face wall powered true
5847 spruce_button facing west face wall powered false
5848 spruce_button facing east face wall powered true
5849 spruce_button facing east face wall powered false
5850 spruce_button facing north face ceiling powered true
5851 spruce_button facing north face ceiling powered false
5852 spruce_button facing south face ceiling powered true
5853 spruce_button facing south face ceiling powered false
5854 spruce_button facing west face ceiling powered true
5855 spruce_button facing west face ceiling powered false
5856 spruce_button facing east face ceiling powered true
5857 spruce_button facing east face ceiling powered false
5858 birch_button facing north face floor powered true
5859 birch_button facing north face floor powered false
5860 birch_button facing south face floor powered true
5861 birch_button facing south face floor powered false
5862 birch_button facing west face floor powered true
5863 birch_button facing west face floor powered false
5864 birch_button facing east face floor powered true
5865 birch_button facing east face floor powered false
5866 birch_button facing north face wall powered true
5867 birch_button facing north face wall powered false
5868 birch_button facing south face wall powered true
5869 birch_button facing south face wall powered false
5870 birch_button facing west face wall powered true
5871 birch_button facing west face wall powered false
5872 birch_button facing east face wall powered true
5873 birch_button facing east face wall powered false
5874 birch_button facing north face ceiling powered true
5875 birch_button facing north face ceiling powered false
5876 birch_button facing south face ceiling powered true
5877 birch_button facing south face ceiling powered false
5878 birch_button facing west face ceiling powered true
5879 birch_button facing west face ceiling powered false
5880 birch_button facing east face ceiling powered true
5881 birch_button facing east face ceiling powered false
5882 jungle_button facing north face floor powered true
5883 jungle_button facing north face floor powered false
5884 jungle_button facing south face floor powered true
5885 jungle_button facing south face floor powered false
5886 jungle_button facing west face floor powered true
5887 jungle_button facing west face floor powered false
5888 jungle_button facing east face floor powered true
5889 jungle_button facing east face floor powered false
5890 jungle_button facing north face wall powered true
5891 jungle_button facing north face wall powered false
5892 jungle_button facing south face wall powered true
5893 jungle_button facing south face wall powered false
5894 jungle_button facing west face wall powered true
5895 jungle_button facing west face wall powered false
5896 jungle_button facing east face wall powered true
5897 jungle_button facing east face wall powered false
5898 jungle_button facing north face ceiling powered true
5899 jungle_button facing north face ceiling powered false
5900 jungle_button facing south face ceiling powered true
5901 jungle_button facing south face ceiling powered false
5902 jungle_button facing west face ceiling powered true
5903 jungle_button facing west face ceiling powered false
5904 jungle_button facing east face ceiling powered true
5905 jungle_button facing east face ceiling powered false
5906 acacia_button facing north face floor powered true
5907 acacia_button facing north face floor powered false
5908 acacia_button facing south face floor powered true
5909 acacia_button facing south face floor powered false
5910 acacia_button facing west face floor powered true
5911 acacia_button facing west face floor powered false
5912 acacia_button facing east face floor powered true
5913 acacia_button facing east face floor powered false
5914 acacia_button facing north face wall powered true
5915 acacia_button facing north face wall powered false
5916 acacia_button facing south face wall powered true
5917 acacia_button facing south face wall powered false
5918 acacia_button facing west face wall powered true
5919 acacia_button facing west face wall powered false
5920 acacia_button facing east face wall powered true
5921 acacia_button facing east face wall powered false
5922 acacia_button facing north face ceiling powered true
5923 acacia_button facing north face ceiling powered false
5924 acacia_button facing south face ceiling powered true
5925 acacia_button facing south face ceiling powered false
5926 acacia_button facing west face ceiling powered true
5927 acacia_button facing west face ceiling powered false
5928 acacia_button facing east face ceiling powered true
5929 acacia_button facing east face ceiling powered false
5930 dark_oak_button facing north face floor powered true
5931 dark_oak_button facing north face floor powered false
5932 dark_oak_button facing south face floor powered true
5933 dark_oak_button facing south face floor powered false
5934 dark_oak_button facing west face floor powered true
5935 dark_oak_button facing west face floor powered false
5936 dark_oak_button facing east face floor powered true
5937 dark_oak_button facing east face floor powered false
5938 dark_oak_button facing north face wall powered true
5939 dark_oak_button facing north face wall powered false
5940 dark_oak_button facing south face wall powered true
5941 dark_oak_button facing south face wall powered false
5942 dark_oak_button facing west face wall powered true
5943 dark_oak_button facing west face wall powered false
5944 dark_oak_button facing east face wall powered true
5945 dark_oak_button facing east face wall powered false
5946 dark_oak_button facing north face ceiling powered true
5947 dark_oak_button facing north face ceiling powered false
5948 dark_oak_button facing south face ceiling powered true
5949 dark_oak_button facing south face ceiling powered false
5950 dark_oak_button facing west face ceiling powered true
5951 dark_oak_button facing west face ceiling powered false
5952 dark_oak_button facing east face ceiling powered true
5953 dark_oak_button facing east face ceiling powered false
5954 skeleton_skull rotation 0
5955 skeleton_skull rotation 1
5956 skeleton_skull rotation 2
5957 skeleton_skull rotation 3
5958 skeleton_skull rotation 4
5959 skeleton_skull rotation 5
5960 skeleton_skull rotation 6
5961 skeleton_skull rotation 7
5962 skeleton_skull rotation 8
5963 skeleton_skull rotation 9
5964 skeleton_skull rotation 10
5965 skeleton_skull rotation 11
5966 skeleton_skull rotation 12
5967 skeleton_skull rotation 13
5968 skeleton_skull rotation 14
5969 skeleton_skull rotation 15
5970 skeleton_wall_skull facing north
5971 skeleton_wall_skull facing south
5972 skeleton_wall_skull facing west
5973 skeleton_wall_skull facing east
5974 wither_skeleton_skull rotation 0
5975 wither_skeleton_skull rotation 1
5976 wither_skeleton_skull rotation 2
5977 wither_skeleton_skull rotation 3
5978 wither_skeleton_skull rotation 4
5979 wither_skeleton_skull rotation 5
5980 wither_skeleton_skull rotation 6
5981 wither_skeleton_skull rotation 7
5982 wither_skeleton_skull rotation 8
5983 wither_skeleton_skull rotation 9
5984 wither_skeleton_skull rotation 10
5985 wither_skeleton_skull rotation 11
5986 wither_skeleton_skull rotation 12
5987 wither_skeleton_skull rotation 13
5988 wither_skeleton_skull rotation 14
5989 wither_skeleton_skull rotation 15
5990 wither_skeleton_wall_skull facing north
5991 wither_skeleton_wall_skull facing south
5992 wither_skeleton_wall_skull facing west
5993 wither_skeleton_wall_skull facing east
5994 zombie_head rotation 0
5995 zombie_head rotation 1
5996 zombie_head rotation 2
5997 zombie_head rotation 3
5998 zombie_head rotation 4
5999 zombie_head rotation 5
6000 zombie_head rotation 6
6001 zombie_head rotation 7
6002 zombie_head rotation 8
6003 zombie_head rotation 9
6004 zombie_head rotation 10
6005 zombie_head rotation 11
6006 zombie_head rotation 12
6007 zombie_head rotation 13
6008 zombie_head rotation 14
6009 zombie_head rotation 15
6010 zombie_wall_head facing north
6011 zombie_wall_head facing south
6012 zombie_wall_head facing west
6013 zombie_wall_head facing east
6014 player_head rotation 0
6015 player_head rotation 1
6016 player_head rotation 2
6017 player_head rotation 3
6018 player_head rotation 4
6019 player_head rotation 5
6020 player_head rotation 6
6021 player_head rotation 7
6022 player_head rotation 8
6023 player_head rotation 9
6024 player_head rotation 10
6025 player_head rotation 11
6026 player_head rotation 12
6027 player_head rotation 13
6028 player_head rotation 14
6029 player_head rotation 15
6030 player_wall_head facing north
6031 player_wall_head facing south
6032 player_wall_head facing west
6033 player_wall_head facing east
6034 creeper_head rotation 0
6035 creeper_head rotation 1
6036 creeper_head rotation 2
6037 creeper_head rotation 3
6038 creeper_head rotation 4
6039 creeper_head rotation 5
6040 creeper_head rotation 6
6041 creeper_head rotation 7
6042 creeper_head rotation 8
6043 creeper_head rotation 9
6044 creeper_head rotation 10
6045 creeper_head rotation 11
6046 creeper_head rotation 12
6047 creeper_head rotation 13
6048 creeper_head rotation 14
6049 creeper_head rotation 15
6050 creeper_wall_head facing north
6051 creeper_wall_head facing south
6052 creeper_wall_head facing west
6053 creeper_wall_head facing east
6054 dragon_head rotation 0
6055 dragon_head rotation 1
6056 dragon_head rotation 2
6057 dragon_head rotation 3
6058 dragon_head rotation 4
6059 dragon_head rotation 5
6060 dragon_head rotation 6
6061 dragon_head rotation 7
6062 dragon_head rotation 8
6063 dragon_head rotation 9
6064 dragon_head rotation 10
6065 dragon_head rotation 11
6066 dragon_head rotation 12
6067 dragon_head rotation 13
6068 dragon_head rotation 14
6069 dragon_head rotation 15
6070 dragon_wall_head facing north
6071 dragon_wall_head facing south
6072 dragon_wall_head facing west
6073 dragon_wall_head facing east
6074 anvil facing north
6075 anvil facing south
6076 anvil facing west
6077 anvil facing east
6078 chipped_anvil facing north
6079 chipped_anvil facing south
6080 chipped_anvil facing west
6081 chipped_anvil facing east
6082 damaged_anvil facing north
6083 damaged_anvil facing south
6084 damaged_anvil facing west
6085 damaged_anvil facing east
6086 trapped_chest facing north waterlogged true type single
6087 trapped_chest facing north waterlogged false type single
6088 trapped_chest facing north waterlogged true type left
6089 trapped_chest facing north waterlogged false type left
6090 trapped_chest facing north waterlogged true type right
6091 trapped_chest facing north waterlogged false type right
6092 trapped_chest facing south waterlogged true type single
6093 trapped_chest facing south waterlogged false type single
6094 trapped_chest facing south waterlogged true type left
6095 trapped_chest facing south waterlogged false type left
6096 trapped_chest facing south waterlogged true type right
6097 trapped_chest facing south waterlogged false type right
6098 trapped_chest facing west waterlogged true type single
6099 trapped_chest facing west waterlogged false type single
6100 trapped_chest facing west waterlogged true type left
6101 trapped_chest facing west waterlogged false type left
6102 trapped_chest facing west waterlogged true type right
6103 trapped_chest facing west waterlogged false type right
6104 trapped_chest facing east waterlogged true type single
6105 trapped_chest facing east waterlogged false type single
6106 trapped_chest facing east waterlogged true type left
6107 trapped_chest facing east waterlogged false type left
6108 trapped_chest facing east waterlogged true type right
6109 trapped_chest facing east waterlogged false type right
6110 light_weighted_pressure_plate power 0
6111 light_weighted_pressure_plate power 1
6112 light_weighted_pressure_plate power 2
6113 light_weighted_pressure_plate power 3
6114 light_weighted_pressure_plate power 4
6115 light_weighted_pressure_plate power 5
6116 light_weighted_pressure_plate power 6
6117 light_weighted_pressure_plate power 7
6118 light_weighted_pressure_plate power 8
6119 light_weighted_pressure_plate power 9
6120 light_weighted_pressure_plate power 10
6121 light_weighted_pressure_plate power 11
6122 light_weighted_pressure_plate power 12
6123 light_weighted_pressure_plate power 13
6124 light_weighted_pressure_plate power 14
6125 light_weighted_pressure_plate power 15
6126 heavy_weighted_pressure_plate power 0
6127 heavy_weighted_pressure_plate power 1
6128 heavy_weighted_pressure_plate power 2
6129 heavy_weighted_pressure_plate power 3
6130 heavy_weighted_pressure_plate power 4
6131 heavy_weighted_pressure_plate power 5
6132 heavy_weighted_pressure_plate power 6
6133 heavy_weighted_pressure_plate power 7
6134 heavy_weighted_pressure_plate power 8
6135 heavy_weighted_pressure_plate power 9
6136 heavy_weighted_pressure_plate power 10
6137 heavy_weighted_pressure_plate power 11
6138 heavy_weighted_pressure_plate power 12
6139 heavy_weighted_pressure_plate power 13
6140 heavy_weighted_pressure_plate power 14
6141 heavy_weighted_pressure_plate power 15
6142 comparator facing north mode compare powered true
6143 comparator facing north mode compare powered false
6144 comparator facing north mode subtract powered true
6145 comparator facing north mode subtract powered false
6146 comparator facing south mode compare powered true
6147 comparator facing south mode compare powered false
6148 comparator facing south mode subtract powered true
6149 comparator facing south mode subtract powered false
6150 comparator facing west mode compare powered true
6151 comparator facing west mode compare powered false
6152 comparator facing west mode subtract powered true
6153 comparator facing west mode subtract powered false
6154 comparator facing east mode compare powered true
6155 comparator facing east mode compare powered false
6156 comparator facing east mode subtract powered true
6157 comparator facing east mode subtract powered false
6158 daylight_detector inverted true power 0
6159 daylight_detector inverted true power 1
6160 daylight_detector inverted true power 2
6161 daylight_detector inverted true power 3
6162 daylight_detector inverted true power 4
6163 daylight_detector inverted true power 5
6164 daylight_detector inverted true power 6
6165 daylight_detector inverted true power 7
6166 daylight_detector inverted true power 8
6167 daylight_detector inverted true power 9
6168 daylight_detector inverted true power 10
6169 daylight_detector inverted true power 11
6170 daylight_detector inverted true power 12
6171 daylight_detector inverted true power 13
6172 daylight_detector inverted true power 14
6173 daylight_detector inverted true power 15
6174 daylight_detector inverted false power 0
6175 daylight_detector inverted false power 1
6176 daylight_detector inverted false power 2
6177 daylight_detector inverted false power 3
6178 daylight_detector inverted false power 4
6179 daylight_detector inverted false power 5
6180 daylight_detector inverted false power 6
6181 daylight_detector inverted false power 7
6182 daylight_detector inverted false power 8
6183 daylight_detector inverted false power 9
6184 daylight_detector inverted false power 10
6185 daylight_detector inverted false power 11
6186 daylight_detector inverted false power 12
6187 daylight_detector inverted false power 13
6188 daylight_detector inverted false power 14
6189 daylight_detector inverted false power 15
6190 redstone_block
6191 nether_quartz_ore
6192 hopper facing down enabled true
6193 hopper facing north enabled true
6194 hopper facing south enabled true
6195 hopper facing west enabled true
6196 hopper facing east enabled true
6197 hopper facing down enabled false
6198 hopper facing north enabled false
6199 hopper facing south enabled false
6200 hopper facing west enabled false
6201 hopper facing east enabled false
6202 quartz_block
6203 chiseled_quartz_block
6204 quartz_pillar axis x
6205 quartz_pillar axis y
6206 quartz_pillar axis z
6207 quartz_stairs facing north waterlogged true shape straight half top
6208 quartz_stairs facing north waterlogged false shape straight half top
6209 quartz_stairs facing north waterlogged true shape inner_left half top
6210 quartz_stairs facing north waterlogged false shape inner_left half top
6211 quartz_stairs facing north waterlogged true shape inner_right half top
6212 quartz_stairs facing north waterlogged false shape inner_right half top
6213 quartz_stairs facing north waterlogged true shape outer_left half top
6214 quartz_stairs facing north waterlogged false shape outer_left half top
6215 quartz_stairs facing north waterlogged true shape outer_right half top
6216 quartz_stairs facing north waterlogged false shape outer_right half top
6217 quartz_stairs facing north waterlogged true shape straight half bottom
6218 quartz_stairs facing north waterlogged false shape straight half bottom
6219 quartz_stairs facing north waterlogged true shape inner_left half bottom
6220 quartz_stairs facing north waterlogged false shape inner_left half bottom
6221 quartz_stairs facing north waterlogged true shape inner_right half bottom
6222 quartz_stairs facing north waterlogged false shape inner_right half bottom
6223 quartz_stairs facing north waterlogged true shape outer_left half bottom
6224 quartz_stairs facing north waterlogged false shape outer_left half bottom
6225 quartz_stairs facing north waterlogged true shape outer_right half bottom
6226 quartz_stairs facing north waterlogged false shape outer_right half bottom
6227 quartz_stairs facing south waterlogged true shape straight half top
6228 quartz_stairs facing south waterlogged false shape straight half top
6229 quartz_stairs facing south waterlogged true shape inner_left half top
6230 quartz_stairs facing south waterlogged false shape inner_left half top
6231 quartz_stairs facing south waterlogged true shape inner_right half top
6232 quartz_stairs facing south waterlogged false shape inner_right half top
6233 quartz_stairs facing south waterlogged true shape outer_left half top
6234 quartz_stairs facing south waterlogged false shape outer_left half top
6235 quartz_stairs facing south waterlogged true shape outer_right half top
6236 quartz_stairs facing south waterlogged false shape outer_right half top
6237 quartz_stairs facing south waterlogged true shape straight half bottom
6238 quartz_stairs facing south waterlogged false shape straight half bottom
6239 quartz_stairs facing south waterlogged true shape inner_left half bottom
6240 quartz_stairs facing south waterlogged false shape inner_left half bottom
6241 quartz_stairs facing south waterlogged true shape inner_right half bottom
6242 quartz_stairs facing south waterlogged false shape inner_right half bottom
6243 quartz_stairs facing south waterlogged true shape outer_left half bottom
6244 quartz_stairs facing south waterlogged false shape outer_left half bottom
6245 quartz_stairs facing south waterlogged true shape outer_right half bottom
6246 quartz_stairs facing south waterlogged false shape outer_right half bottom
6247 quartz_stairs facing west waterlogged true shape straight half top
6248 quartz_stairs facing west waterlogged false shape straight half top
6249 quartz_stairs facing west waterlogged true shape inner_left half top
6250 quartz_stairs facing west waterlogged false shape inner_left half top
6251 quartz_stairs facing west waterlogged true shape inner_right half top
6252 quartz_stairs facing west waterlogged false shape inner_right half top
6253 quartz_stairs facing west waterlogged true shape outer_left half top
6254 quartz_stairs facing west waterlogged false shape outer_left half top
6255 quartz_stairs facing west waterlogged true shape outer_right half top
6256 quartz_stairs facing west waterlogged false shape outer_right half top
6257 quartz_stairs facing west waterlogged true shape straight half bottom
6258 quartz_stairs facing west waterlogged false shape straight half bottom
6259 quartz_stairs facing west waterlogged true shape inner_left half bottom
6260 quartz_stairs facing west waterlogged false shape inner_left half bottom
6261 quartz_stairs facing west waterlogged true shape inner_right half bottom
6262 quartz_stairs facing west waterlogged false shape inner_right half bottom
6263 quartz_stairs facing west waterlogged true shape outer_left half bottom
6264 quartz_stairs facing west waterlogged false shape outer_left half bottom
6265 quartz_stairs facing west waterlogged true shape outer_right half bottom
6266 quartz_stairs facing west waterlogged false shape outer_right half bottom
6267 quartz_stairs facing east waterlogged true shape straight half top
6268 quartz_stairs facing east waterlogged false shape straight half top
6269 quartz_stairs facing east waterlogged true shape inner_left half top
6270 quartz_stairs facing east waterlogged false shape inner_left half top
6271 quartz_stairs facing east waterlogged true shape inner_right half top
6272 quartz_stairs facing east waterlogged false shape inner_right half top
6273 quartz_stairs facing east waterlogged true shape outer_left half top
6274 quartz_stairs facing east waterlogged false shape outer_left half top
6275 quartz_stairs facing east waterlogged true shape outer_right half top
6276 quartz_stairs facing east waterlogged false shape outer_right half top
6277 quartz_stairs facing east waterlogged true shape straight half bottom
6278 quartz_stairs facing east waterlogged false shape straight half bottom
6279 quartz_stairs facing east waterlogged true shape inner_left half bottom
6280 quartz_stairs facing east waterlogged false shape inner_left half bottom
6281 quartz_stairs facing east waterlogged true shape inner_right half bottom
6282 quartz_stairs facing east waterlogged false shape inner_right half bottom
6283 quartz_stairs facing east waterlogged true shape outer_left half bottom
6284 quartz_stairs facing east waterlogged false shape outer_left half bottom
6285 quartz_stairs facing east waterlogged true shape outer_right half bottom
6286 quartz_stairs facing east waterlogged false shape outer_right half bottom
6287 activator_rail shape north_south powered true
6288 activator_rail shape east_west powered true
6289 activator_rail shape ascending_east powered true
6290 activator_rail shape ascending_west powered true
6291 activator_rail shape ascending_north powered true
6292 activator_rail shape ascending_south powered true
6293 activator_rail shape north_south powered false
6294 activator_rail shape east_west powered false
6295 activator_rail shape ascending_east powered false
6296 activator_rail shape ascending_west powered false
6297 activator_rail shape ascending_north powered false
6298 activator_rail shape ascending_south powered false
6299 dropper facing north triggered true
6300 dropper facing north triggered false
6301 dropper facing east triggered true
6302 dropper facing east triggered false
6303 dropper facing south triggered true
6304 dropper facing south triggered false
6305 dropper facing west triggered true
6306 dropper facing west triggered false
6307 dropper facing up triggered true
6308 dropper facing up triggered false
6309 dropper facing down triggered true
6310 dropper facing down triggered false
6311 white_terracotta
6312 orange_terracotta
6313 magenta_terracotta
6314 light_blue_terracotta
6315 yellow_terracotta
6316 lime_terracotta
6317 pink_terracotta
6318 gray_terracotta
6319 light_gray_terracotta
6320 cyan_terracotta
6321 purple_terracotta
6322 blue_terracotta
6323 brown_terracotta
6324 green_terracotta
6325 red_terracotta
6326 black_terracotta
6327 white_stained_glass_pane waterlogged true south true east true north true west true
6328 white_stained_glass_pane waterlogged true south true east true north true west false
6329 white_stained_glass_pane waterlogged false south true east true north true west true
6330 white_stained_glass_pane waterlogged false south true east true north true west false
6331 white_stained_glass_pane waterlogged true south false east true north true west true
6332 white_stained_glass_pane waterlogged true south false east true north true west false
6333 white_stained_glass_pane waterlogged false south false east true north true west true
6334 white_stained_glass_pane waterlogged false south false east true north true west false
6335 white_stained_glass_pane waterlogged true south true east true north false west true
6336 white_stained_glass_pane waterlogged true south true east true north false west false
6337 white_stained_glass_pane waterlogged false south true east true north false west true
6338 white_stained_glass_pane waterlogged false south true east true north false west false
6339 white_stained_glass_pane waterlogged true south false east true north false west true
6340 white_stained_glass_pane waterlogged true south false east true north false west false
6341 white_stained_glass_pane waterlogged false south false east true north false west true
6342 white_stained_glass_pane waterlogged false south false east true north false west false
6343 white_stained_glass_pane waterlogged true south true east false north true west true
6344 white_stained_glass_pane waterlogged true south true east false north true west false
6345 white_stained_glass_pane waterlogged false south true east false north true west true
6346 white_stained_glass_pane waterlogged false south true east false north true west false
6347 white_stained_glass_pane waterlogged true south false east false north true west true
6348 white_stained_glass_pane waterlogged true south false east false north true west false
6349 white_stained_glass_pane waterlogged false south false east false north true west true
6350 white_stained_glass_pane waterlogged false south false east false north true west false
6351 white_stained_glass_pane waterlogged true south true east false north false west true
6352 white_stained_glass_pane waterlogged true south true east false north false west false
6353 white_stained_glass_pane waterlogged false south true east false north false west true
6354 white_stained_glass_pane waterlogged false south true east false north false west false
6355 white_stained_glass_pane waterlogged true south false east false north false west true
6356 white_stained_glass_pane waterlogged true south false east false north false west false
6357 white_stained_glass_pane waterlogged false south false east false north false west true
6358 white_stained_glass_pane waterlogged false south false east false north false west false
6359 orange_stained_glass_pane waterlogged true south true east true north true west true
6360 orange_stained_glass_pane waterlogged true south true east true north true west false
6361 orange_stained_glass_pane waterlogged false south true east true north true west true
6362 orange_stained_glass_pane waterlogged false south true east true north true west false
6363 orange_stained_glass_pane waterlogged true south false east true north true west true
6364 orange_stained_glass_pane waterlogged true south false east true north true west false
6365 orange_stained_glass_pane waterlogged false south false east true north true west true
6366 orange_stained_glass_pane waterlogged false south false east true north true west false
6367 orange_stained_glass_pane waterlogged true south true east true north false west true
6368 orange_stained_glass_pane waterlogged true south true east true north false west false
6369 orange_stained_glass_pane waterlogged false south true east true north false west true
6370 orange_stained_glass_pane waterlogged false south true east true north false west false
6371 orange_stained_glass_pane waterlogged true south false east true north false west true
6372 orange_stained_glass_pane waterlogged true south false east true north false west false
6373 orange_stained_glass_pane waterlogged false south false east true north false west true
6374 orange_stained_glass_pane waterlogged false south false east true north false west false
6375 orange_stained_glass_pane waterlogged true south true east false north true west true
6376 orange_stained_glass_pane waterlogged true south true east false north true west false
6377 orange_stained_glass_pane waterlogged false south true east false north true west true
6378 orange_stained_glass_pane waterlogged false south true east false north true west false
6379 orange_stained_glass_pane waterlogged true south false east false north true west true
6380 orange_stained_glass_pane waterlogged true south false east false north true west false
6381 orange_stained_glass_pane waterlogged false south false east false north true west true
6382 orange_stained_glass_pane waterlogged false south false east false north true west false
6383 orange_stained_glass_pane waterlogged true south true east false north false west true
6384 orange_stained_glass_pane waterlogged true south true east false north false west false
6385 orange_stained_glass_pane waterlogged false south true east false north false west true
6386 orange_stained_glass_pane waterlogged false south true east false north false west false
6387 orange_stained_glass_pane waterlogged true south false east false north false west true
6388 orange_stained_glass_pane waterlogged true south false east false north false west false
6389 orange_stained_glass_pane waterlogged false south false east false north false west true
6390 orange_stained_glass_pane waterlogged false south false east false north false west false
6391 magenta_stained_glass_pane waterlogged true south true east true north true west true
6392 magenta_stained_glass_pane waterlogged true south true east true north true west false
6393 magenta_stained_glass_pane waterlogged false south true east true north true west true
6394 magenta_stained_glass_pane waterlogged false south true east true north true west false
6395 magenta_stained_glass_pane waterlogged true south false east true north true west true
6396 magenta_stained_glass_pane waterlogged true south false east true north true west false
6397 magenta_stained_glass_pane waterlogged false south false east true north true west true
6398 magenta_stained_glass_pane waterlogged false south false east true north true west false
6399 magenta_stained_glass_pane waterlogged true south true east true north false west true
6400 magenta_stained_glass_pane waterlogged true south true east true north false west false
6401 magenta_stained_glass_pane waterlogged false south true east true north false west true
6402 magenta_stained_glass_pane waterlogged false south true east true north false west false
6403 magenta_stained_glass_pane waterlogged true south false east true north false west true
6404 magenta_stained_glass_pane waterlogged true south false east true north false west false
6405 magenta_stained_glass_pane waterlogged false south false east true north false west true
6406 magenta_stained_glass_pane waterlogged false south false east true north false west false
6407 magenta_stained_glass_pane waterlogged true south true east false north true west true
6408 magenta_stained_glass_pane waterlogged true south true east false north true west false
6409 magenta_stained_glass_pane waterlogged false south true east false north true west true
6410 magenta_stained_glass_pane waterlogged false south true east false north true west false
6411 magenta_stained_glass_pane waterlogged true south false east false north true west true
6412 magenta_stained_glass_pane waterlogged true south false east false north true west false
6413 magenta_stained_glass_pane waterlogged false south false east false north true west true
6414 magenta_stained_glass_pane waterlogged false south false east false north true west false
6415 magenta_stained_glass_pane waterlogged true south true east false north false west true
6416 magenta_stained_glass_pane waterlogged true south true east false north false west false
6417 magenta_stained_glass_pane waterlogged false south true east false north false west true
6418 magenta_stained_glass_pane waterlogged false south true east false north false west false
6419 magenta_stained_glass_pane waterlogged true south false east false north false west true
6420 magenta_stained_glass_pane waterlogged true south false east false north false west false
6421 magenta_stained_glass_pane waterlogged false south false east false north false west true
6422 magenta_stained_glass_pane waterlogged false south false east false north false west false
6423 light_blue_stained_glass_pane waterlogged true south true east true north true west true
6424 light_blue_stained_glass_pane waterlogged true south true east true north true west false
6425 light_blue_stained_glass_pane waterlogged false south true east true north true west true
6426 light_blue_stained_glass_pane waterlogged false south true east true north true west false
6427 light_blue_stained_glass_pane waterlogged true south false east true north true west true
6428 light_blue_stained_glass_pane waterlogged true south false east true north true west false
6429 light_blue_stained_glass_pane waterlogged false south false east true north true west true
6430 light_blue_stained_glass_pane waterlogged false south false east true north true west false
6431 light_blue_stained_glass_pane waterlogged true south true east true north false west true
6432 light_blue_stained_glass_pane waterlogged true south true east true north false west false
6433 light_blue_stained_glass_pane waterlogged false south true east true north false west true
6434 light_blue_stained_glass_pane waterlogged false south true east true north false west false
6435 light_blue_stained_glass_pane waterlogged true south false east true north false west true
6436 light_blue_stained_glass_pane waterlogged true south false east true north false west false
6437 light_blue_stained_glass_pane waterlogged false south false east true north false west true
6438 light_blue_stained_glass_pane waterlogged false south false east true north false west false
6439 light_blue_stained_glass_pane waterlogged true south true east false north true west true
6440 light_blue_stained_glass_pane waterlogged true south true east false north true west false
6441 light_blue_stained_glass_pane waterlogged false south true east false north true west true
6442 light_blue_stained_glass_pane waterlogged false south true east false north true west false
6443 light_blue_stained_glass_pane waterlogged true south false east false north true west true
6444 light_blue_stained_glass_pane waterlogged true south false east false north true west false
6445 light_blue_stained_glass_pane waterlogged false south false east false north true west true
6446 light_blue_stained_glass_pane waterlogged false south false east false north true west false
6447 light_blue_stained_glass_pane waterlogged true south true east false north false west true
6448 light_blue_stained_glass_pane waterlogged true south true east false north false west false
6449 light_blue_stained_glass_pane waterlogged false south true east false north false west true
6450 light_blue_stained_glass_pane waterlogged false south true east false north false west false
6451 light_blue_stained_glass_pane waterlogged true south false east false north false west true
6452 light_blue_stained_glass_pane waterlogged true south false east false north false west false
6453 light_blue_stained_glass_pane waterlogged false south false east false north false west true
6454 light_blue_stained_glass_pane waterlogged false south false east false north false west false
6455 yellow_stained_glass_pane waterlogged true south true east true north true west true
6456 yellow_stained_glass_pane waterlogged true south true east true north true west false
6457 yellow_stained_glass_pane waterlogged false south true east true north true west true
6458 yellow_stained_glass_pane waterlogged false south true east true north true west false
6459 yellow_stained_glass_pane waterlogged true south false east true north true west true
6460 yellow_stained_glass_pane waterlogged true south false east true north true west false
6461 yellow_stained_glass_pane waterlogged false south false east true north true west true
6462 yellow_stained_glass_pane waterlogged false south false east true north true west false
6463 yellow_stained_glass_pane waterlogged true south true east true north false west true
6464 yellow_stained_glass_pane waterlogged true south true east true north false west false
6465 yellow_stained_glass_pane waterlogged false south true east true north false west true
6466 yellow_stained_glass_pane waterlogged false south true east true north false west false
6467 yellow_stained_glass_pane waterlogged true south false east true north false west true
6468 yellow_stained_glass_pane waterlogged true south false east true north false west false
6469 yellow_stained_glass_pane waterlogged false south false east true north false west true
6470 yellow_stained_glass_pane waterlogged false south false east true north false west false
6471 yellow_stained_glass_pane waterlogged true south true east false north true west true
6472 yellow_stained_glass_pane waterlogged true south true east false north true west false
6473 yellow_stained_glass_pane waterlogged false south true east false north true west true
6474 yellow_stained_glass_pane waterlogged false south true east false north true west false
6475 yellow_stained_glass_pane waterlogged true south false east false north true west true
6476 yellow_stained_glass_pane waterlogged true south false east false north true west false
6477 yellow_stained_glass_pane waterlogged false south false east false north true west true
6478 yellow_stained_glass_pane waterlogged false south false east false north true west false
6479 yellow_stained_glass_pane waterlogged true south true east false north false west true
6480 yellow_stained_glass_pane waterlogged true south true east false north false west false
6481 yellow_stained_glass_pane waterlogged false south true east false north false west true
6482 yellow_stained_glass_pane waterlogged false south true east false north false west false
6483 yellow_stained_glass_pane waterlogged true south false east false north false west true
6484 yellow_stained_glass_pane waterlogged true south false east false north false west false
6485 yellow_stained_glass_pane waterlogged false south false east false north false west true
6486 yellow_stained_glass_pane waterlogged false south false east false north false west false
6487 lime_stained_glass_pane waterlogged true south true east true north true west true
6488 lime_stained_glass_pane waterlogged true south true east true north true west false
6489 lime_stained_glass_pane waterlogged false south true east true north true west true
6490 lime_stained_glass_pane waterlogged false south true east true north true west false
6491 lime_stained_glass_pane waterlogged true south false east true north true west true
6492 lime_stained_glass_pane waterlogged true south false east true north true west false
6493 lime_stained_glass_pane waterlogged false south false east true north true west true
6494 lime_stained_glass_pane waterlogged false south false east true north true west false
6495 lime_stained_glass_pane waterlogged true south true east true north false west true
6496 lime_stained_glass_pane waterlogged true south true east true north false west false
6497 lime_stained_glass_pane waterlogged false south true east true north false west true
6498 lime_stained_glass_pane waterlogged false south true east true north false west false
6499 lime_stained_glass_pane waterlogged true south false east true north false west true
6500 lime_stained_glass_pane waterlogged true south false east true north false west false
6501 lime_stained_glass_pane waterlogged false south false east true north false west true
6502 lime_stained_glass_pane waterlogged false south false east true north false west false
6503 lime_stained_glass_pane waterlogged true south true east false north true west true
6504 lime_stained_glass_pane waterlogged true south true east false north true west false
6505 lime_stained_glass_pane waterlogged false south true east false north true west true
6506 lime_stained_glass_pane waterlogged false south true east false north true west false
6507 lime_stained_glass_pane waterlogged true south false east false north true west true
6508 lime_stained_glass_pane waterlogged true south false east false north true west false
6509 lime_stained_glass_pane waterlogged false south false east false north true west true
6510 lime_stained_glass_pane waterlogged false south false east false north true west false
6511 lime_stained_glass_pane waterlogged true south true east false north false west true
6512 lime_stained_glass_pane waterlogged true south true east false north false west false
6513 lime_stained_glass_pane waterlogged false south true east false north false west true
6514 lime_stained_glass_pane waterlogged false south true east false north false west false
6515 lime_stained_glass_pane waterlogged true south false east false north false west true
6516 lime_stained_glass_pane waterlogged true south false east false north false west false
6517 lime_stained_glass_pane waterlogged false south false east false north false west true
6518 lime_stained_glass_pane waterlogged false south false east false north false west false
6519 pink_stained_glass_pane waterlogged true south true east true north true west true
6520 pink_stained_glass_pane waterlogged true south true east true north true west false
6521 pink_stained_glass_pane waterlogged false south true east true north true west true
6522 pink_stained_glass_pane waterlogged false south true east true north true west false
6523 pink_stained_glass_pane waterlogged true south false east true north true west true
6524 pink_stained_glass_pane waterlogged true south false east true north true west false
6525 pink_stained_glass_pane waterlogged false south false east true north true west true
6526 pink_stained_glass_pane waterlogged false south false east true north true west false
6527 pink_stained_glass_pane waterlogged true south true east true north false west true
6528 pink_stained_glass_pane waterlogged true south true east true north false west false
6529 pink_stained_glass_pane waterlogged false south true east true north false west true
6530 pink_stained_glass_pane waterlogged false south true east true north false west false
6531 pink_stained_glass_pane waterlogged true south false east true north false west true
6532 pink_stained_glass_pane waterlogged true south false east true north false west false
6533 pink_stained_glass_pane waterlogged false south false east true north false west true
6534 pink_stained_glass_pane waterlogged false south false east true north false west false
6535 pink_stained_glass_pane waterlogged true south true east false north true west true
6536 pink_stained_glass_pane waterlogged true south true east false north true west false
6537 pink_stained_glass_pane waterlogged false south true east false north true west true
6538 pink_stained_glass_pane waterlogged false south true east false north true west false
6539 pink_stained_glass_pane waterlogged true south false east false north true west true
6540 pink_stained_glass_pane waterlogged true south false east false north true west false
6541 pink_stained_glass_pane waterlogged false south false east false north true west true
6542 pink_stained_glass_pane waterlogged false south false east false north true west false
6543 pink_stained_glass_pane waterlogged true south true east false north false west true
6544 pink_stained_glass_pane waterlogged true south true east false north false west false
6545 pink_stained_glass_pane waterlogged false south true east false north false west true
6546 pink_stained_glass_pane waterlogged false south true east false north false west false
6547 pink_stained_glass_pane waterlogged true south false east false north false west true
6548 pink_stained_glass_pane waterlogged true south false east false north false west false
6549 pink_stained_glass_pane waterlogged false south false east false north false west true
6550 pink_stained_glass_pane waterlogged false south false east false north false west false
6551 gray_stained_glass_pane waterlogged true south true east true north true west true
6552 gray_stained_glass_pane waterlogged true south true east true north true west false
6553 gray_stained_glass_pane waterlogged false south true east true north true west true
6554 gray_stained_glass_pane waterlogged false south true east true north true west false
6555 gray_stained_glass_pane waterlogged true south false east true north true west true
6556 gray_stained_glass_pane waterlogged true south false east true north true west false
6557 gray_stained_glass_pane waterlogged false south false east true north true west true
6558 gray_stained_glass_pane waterlogged false south false east true north true west false
6559 gray_stained_glass_pane waterlogged true south true east true north false west true
6560 gray_stained_glass_pane waterlogged true south true east true north false west false
6561 gray_stained_glass_pane waterlogged false south true east true north false west true
6562 gray_stained_glass_pane waterlogged false south true east true north false west false
6563 gray_stained_glass_pane waterlogged true south false east true north false west true
6564 gray_stained_glass_pane waterlogged true south false east true north false west false
6565 gray_stained_glass_pane waterlogged false south false east true north false west true
6566 gray_stained_glass_pane waterlogged false south false east true north false west false
6567 gray_stained_glass_pane waterlogged true south true east false north true west true
6568 gray_stained_glass_pane waterlogged true south true east false north true west false
6569 gray_stained_glass_pane waterlogged false south true east false north true west true
6570 gray_stained_glass_pane waterlogged false south true east false north true west false
6571 gray_stained_glass_pane waterlogged true south false east false north true west true
6572 gray_stained_glass_pane waterlogged true south false east false north true west false
6573 gray_stained_glass_pane waterlogged false south false east false north true west true
6574 gray_stained_glass_pane waterlogged false south false east false north true west false
6575 gray_stained_glass_pane waterlogged true south true east false north false west true
6576 gray_stained_glass_pane waterlogged true south true east false north false west false
6577 gray_stained_glass_pane waterlogged false south true east false north false west true
6578 gray_stained_glass_pane waterlogged false south true east false north false west false
6579 gray_stained_glass_pane waterlogged true south false east false north false west true
6580 gray_stained_glass_pane waterlogged true south false east false north false west false
6581 gray_stained_glass_pane waterlogged false south false east false north false west true
6582 gray_stained_glass_pane waterlogged false south false east false north false west false
6583 light_gray_stained_glass_pane waterlogged true south true east true north true west true
6584 light_gray_stained_glass_pane waterlogged true south true east true north true west false
6585 light_gray_stained_glass_pane waterlogged false south true east true north true west true
6586 light_gray_stained_glass_pane waterlogged false south true east true north true west false
6587 light_gray_stained_glass_pane waterlogged true south false east true north true west true
6588 light_gray_stained_glass_pane waterlogged true south false east true north true west false
6589 light_gray_stained_glass_pane waterlogged false south false east true north true west true
6590 light_gray_stained_glass_pane waterlogged false south false east true north true west false
6591 light_gray_stained_glass_pane waterlogged true south true east true north false west true
6592 light_gray_stained_glass_pane waterlogged true south true east true north false west false
6593 light_gray_stained_glass_pane waterlogged false south true east true north false west true
6594 light_gray_stained_glass_pane waterlogged false south true east true north false west false
6595 light_gray_stained_glass_pane waterlogged true south false east true north false west true
6596 light_gray_stained_glass_pane waterlogged true south false east true north false west false
6597 light_gray_stained_glass_pane waterlogged false south false east true north false west true
6598 light_gray_stained_glass_pane waterlogged false south false east true north false west false
6599 light_gray_stained_glass_pane waterlogged true south true east false north true west true
6600 light_gray_stained_glass_pane waterlogged true south true east false north true west false
6601 light_gray_stained_glass_pane waterlogged false south true east false north true west true
6602 light_gray_stained_glass_pane waterlogged false south true east false north true west false
6603 light_gray_stained_glass_pane waterlogged true south false east false north true west true
6604 light_gray_stained_glass_pane waterlogged true south false east false north true west false
6605 light_gray_stained_glass_pane waterlogged false south false east false north true west true
6606 light_gray_stained_glass_pane waterlogged false south false east false north true west false
6607 light_gray_stained_glass_pane waterlogged true south true east false north false west true
6608 light_gray_stained_glass_pane waterlogged true south true east false north false west false
6609 light_gray_stained_glass_pane waterlogged false south true east false north false west true
6610 light_gray_stained_glass_pane waterlogged false south true east false north false west false
6611 light_gray_stained_glass_pane waterlogged true south false east false north false west true
6612 light_gray_stained_glass_pane waterlogged true south false east false north false west false
6613 light_gray_stained_glass_pane waterlogged false south false east false north false west true
6614 light_gray_stained_glass_pane waterlogged false south false east false north false west false
6615 cyan_stained_glass_pane waterlogged true south true east true north true west true
6616 cyan_stained_glass_pane waterlogged true south true east true north true west false
6617 cyan_stained_glass_pane waterlogged false south true east true north true west true
6618 cyan_stained_glass_pane waterlogged false south true east true north true west false
6619 cyan_stained_glass_pane waterlogged true south false east true north true west true
6620 cyan_stained_glass_pane waterlogged true south false east true north true west false
6621 cyan_stained_glass_pane waterlogged false south false east true north true west true
6622 cyan_stained_glass_pane waterlogged false south false east true north true west false
6623 cyan_stained_glass_pane waterlogged true south true east true north false west true
6624 cyan_stained_glass_pane waterlogged true south true east true north false west false
6625 cyan_stained_glass_pane waterlogged false south true east true north false west true
6626 cyan_stained_glass_pane waterlogged false south true east true north false west false
6627 cyan_stained_glass_pane waterlogged true south false east true north false west true
6628 cyan_stained_glass_pane waterlogged true south false east true north false west false
6629 cyan_stained_glass_pane waterlogged false south false east true north false west true
6630 cyan_stained_glass_pane waterlogged false south false east true north false west false
6631 cyan_stained_glass_pane waterlogged true south true east false north true west true
6632 cyan_stained_glass_pane waterlogged true south true east false north true west false
6633 cyan_stained_glass_pane waterlogged false south true east false north true west true
6634 cyan_stained_glass_pane waterlogged false south true east false north true west false
6635 cyan_stained_glass_pane waterlogged true south false east false north true west true
6636 cyan_stained_glass_pane waterlogged true south false east false north true west false
6637 cyan_stained_glass_pane waterlogged false south false east false north true west true
6638 cyan_stained_glass_pane waterlogged false south false east false north true west false
6639 cyan_stained_glass_pane waterlogged true south true east false north false west true
6640 cyan_stained_glass_pane waterlogged true south true east false north false west false
6641 cyan_stained_glass_pane waterlogged false south true east false north false west true
6642 cyan_stained_glass_pane waterlogged false south true east false north false west false
6643 cyan_stained_glass_pane waterlogged true south false east false north false west true
6644 cyan_stained_glass_pane waterlogged true south false east false north false west false
6645 cyan_stained_glass_pane waterlogged false south false east false north false west true
6646 cyan_stained_glass_pane waterlogged false south false east false north false west false
6647 purple_stained_glass_pane waterlogged true south true east true north true west true
6648 purple_stained_glass_pane waterlogged true south true east true north true west false
6649 purple_stained_glass_pane waterlogged false south true east true north true west true
6650 purple_stained_glass_pane waterlogged false south true east true north true west false
6651 purple_stained_glass_pane waterlogged true south false east true north true west true
6652 purple_stained_glass_pane waterlogged true south false east true north true west false
6653 purple_stained_glass_pane waterlogged false south false east true north true west true
6654 purple_stained_glass_pane waterlogged false south false east true north true west false
6655 purple_stained_glass_pane waterlogged true south true east true north false west true
6656 purple_stained_glass_pane waterlogged true south true east true north false west false
6657 purple_stained_glass_pane waterlogged false south true east true north false west true
6658 purple_stained_glass_pane waterlogged false south true east true north false west false
6659 purple_stained_glass_pane waterlogged true south false east true north false west true
6660 purple_stained_glass_pane waterlogged true south false east true north false west false
6661 purple_stained_glass_pane waterlogged false south false east true north false west true
6662 purple_stained_glass_pane waterlogged false south false east true north false west false
6663 purple_stained_glass_pane waterlogged true south true east false north true west true
6664 purple_stained_glass_pane waterlogged true south true east false north true west false
6665 purple_stained_glass_pane waterlogged false south true east false north true west true
6666 purple_stained_glass_pane waterlogged false south true east false north true west false
6667 purple_stained_glass_pane waterlogged true south false east false north true west true
6668 purple_stained_glass_pane waterlogged true south false east false north true west false
6669 purple_stained_glass_pane waterlogged false south false east false north true west true
6670 purple_stained_glass_pane waterlogged false south false east false north true west false
6671 purple_stained_glass_pane waterlogged true south true east false north false west true
6672 purple_stained_glass_pane waterlogged true south true east false north false west false
6673 purple_stained_glass_pane waterlogged false south true east false north false west true
6674 purple_stained_glass_pane waterlogged false south true east false north false west false
6675 purple_stained_glass_pane waterlogged true south false east false north false west true
6676 purple_stained_glass_pane waterlogged true south false east false north false west false
6677 purple_stained_glass_pane waterlogged false south false east false north false west true
6678 purple_stained_glass_pane waterlogged false south false east false north false west false
6679 blue_stained_glass_pane waterlogged true south true east true north true west true
6680 blue_stained_glass_pane waterlogged true south true east true north true west false
6681 blue_stained_glass_pane waterlogged false south true east true north true west true
6682 blue_stained_glass_pane waterlogged false south true east true north true west false
6683 blue_stained_glass_pane waterlogged true south false east true north true west true
6684 blue_stained_glass_pane waterlogged true south false east true north true west false
6685 blue_stained_glass_pane waterlogged false south false east true north true west true
6686 blue_stained_glass_pane waterlogged false south false east true north true west false
6687 blue_stained_glass_pane waterlogged true south true east true north false west true
6688 blue_stained_glass_pane waterlogged true south true east true north false west false
6689 blue_stained_glass_pane waterlogged false south true east true north false west true
6690 blue_stained_glass_pane waterlogged false south true east true north false west false
6691 blue_stained_glass_pane waterlogged true south false east true north false west true
6692 blue_stained_glass_pane waterlogged true south false east true north false west false
6693 blue_stained_glass_pane waterlogged false south false east true north false west true
6694 blue_stained_glass_pane waterlogged false south false east true north false west false
6695 blue_stained_glass_pane waterlogged true south true east false north true west true
6696 blue_stained_glass_pane waterlogged true south true east false north true west false
6697 blue_stained_glass_pane waterlogged false south true east false north true west true
6698 blue_stained_glass_pane waterlogged false south true east false north true west false
6699 blue_stained_glass_pane waterlogged true south false east false north true west true
6700 blue_stained_glass_pane waterlogged true south false east false north true west false
6701 blue_stained_glass_pane waterlogged false south false east false north true west true
6702 blue_stained_glass_pane waterlogged false south false east false north true west false
6703 blue_stained_glass_pane waterlogged true south true east false north false west true
6704 blue_stained_glass_pane waterlogged true south true east false north false west false
6705 blue_stained_glass_pane waterlogged false south true east false north false west true
6706 blue_stained_glass_pane waterlogged false south true east false north false west false
6707 blue_stained_glass_pane waterlogged true south false east false north false west true
6708 blue_stained_glass_pane waterlogged true south false east false north false west false
6709 blue_stained_glass_pane waterlogged false south false east false north false west true
6710 blue_stained_glass_pane waterlogged false south false east false north false west false
6711 brown_stained_glass_pane waterlogged true south true east true north true west true
6712 brown_stained_glass_pane waterlogged true south true east true north true west false
6713 brown_stained_glass_pane waterlogged false south true east true north true west true
6714 brown_stained_glass_pane waterlogged false south true east true north true west false
6715 brown_stained_glass_pane waterlogged true south false east true north true west true
6716 brown_stained_glass_pane waterlogged true south false east true north true west false
6717 brown_stained_glass_pane waterlogged false south false east true north true west true
6718 brown_stained_glass_pane waterlogged false south false east true north true west false
6719 brown_stained_glass_pane waterlogged true south true east true north false west true
6720 brown_stained_glass_pane waterlogged true south true east true north false west false
6721 brown_stained_glass_pane waterlogged false south true east true north false west true
6722 brown_stained_glass_pane waterlogged false south true east true north false west false
6723 brown_stained_glass_pane waterlogged true south false east true north false west true
6724 brown_stained_glass_pane waterlogged true south false east true north false west false
6725 brown_stained_glass_pane waterlogged false south false east true north false west true
6726 brown_stained_glass_pane waterlogged false south false east true north false west false
6727 brown_stained_glass_pane waterlogged true south true east false north true west true
6728 brown_stained_glass_pane waterlogged true south true east false north true west false
6729 brown_stained_glass_pane waterlogged false south true east false north true west true
6730 brown_stained_glass_pane waterlogged false south true east false north true west false
6731 brown_stained_glass_pane waterlogged true south false east false north true west true
6732 brown_stained_glass_pane waterlogged true south false east false north true west false
6733 brown_stained_glass_pane waterlogged false south false east false north true west true
6734 brown_stained_glass_pane waterlogged false south false east false north true west false
6735 brown_stained_glass_pane waterlogged true south true east false north false west true
6736 brown_stained_glass_pane waterlogged true south true east false north false west false
6737 brown_stained_glass_pane waterlogged false south true east false north false west true
6738 brown_stained_glass_pane waterlogged false south true east false north false west false
6739 brown_stained_glass_pane waterlogged true south false east false north false west true
6740 brown_stained_glass_pane waterlogged true south false east false north false west false
6741 brown_stained_glass_pane waterlogged false south false east false north false west true
6742 brown_stained_glass_pane waterlogged false south false east false north false west false
6743 green_stained_glass_pane waterlogged true south true east true north true west true
6744 green_stained_glass_pane waterlogged true south true east true north true west false
6745 green_stained_glass_pane waterlogged false south true east true north true west true
6746 green_stained_glass_pane waterlogged false south true east true north true west false
6747 green_stained_glass_pane waterlogged true south false east true north true west true
6748 green_stained_glass_pane waterlogged true south false east true north true west false
6749 green_stained_glass_pane waterlogged false south false east true north true west true
6750 green_stained_glass_pane waterlogged false south false east true north true west false
6751 green_stained_glass_pane waterlogged true south true east true north false west true
6752 green_stained_glass_pane waterlogged true south true east true north false west false
6753 green_stained_glass_pane waterlogged false south true east true north false west true
6754 green_stained_glass_pane waterlogged false south true east true north false west false
6755 green_stained_glass_pane waterlogged true south false east true north false west true
6756 green_stained_glass_pane waterlogged true south false east true north false west false
6757 green_stained_glass_pane waterlogged false south false east true north false west true
6758 green_stained_glass_pane waterlogged false south false east true north false west false
6759 green_stained_glass_pane waterlogged true south true east false north true west true
6760 green_stained_glass_pane waterlogged true south true east false north true west false
6761 green_stained_glass_pane waterlogged false south true east false north true west true
6762 green_stained_glass_pane waterlogged false south true east false north true west false
6763 green_stained_glass_pane waterlogged true south false east false north true west true
6764 green_stained_glass_pane waterlogged true south false east false north true west false
6765 green_stained_glass_pane waterlogged false south false east false north true west true
6766 green_stained_glass_pane waterlogged false south false east false north true west false
6767 green_stained_glass_pane waterlogged true south true east false north false west true
6768 green_stained_glass_pane waterlogged true south true east false north false west false
6769 green_stained_glass_pane waterlogged false south true east false north false west true
6770 green_stained_glass_pane waterlogged false south true east false north false west false
6771 green_stained_glass_pane waterlogged true south false east false north false west true
6772 green_stained_glass_pane waterlogged true south false east false north false west false
6773 green_stained_glass_pane waterlogged false south false east false north false west true
6774 green_stained_glass_pane waterlogged false south false east false north false west false
6775 red_stained_glass_pane waterlogged true south true east true north true west true
6776 red_stained_glass_pane waterlogged true south true east true north true west false
6777 red_stained_glass_pane waterlogged false south true east true north true west true
6778 red_stained_glass_pane waterlogged false south true east true north true west false
6779 red_stained_glass_pane waterlogged true south false east true north true west true
6780 red_stained_glass_pane waterlogged true south false east true north true west false
6781 red_stained_glass_pane waterlogged false south false east true north true west true
6782 red_stained_glass_pane waterlogged false south false east true north true west false
6783 red_stained_glass_pane waterlogged true south true east true north false west true
6784 red_stained_glass_pane waterlogged true south true east true north false west false
6785 red_stained_glass_pane waterlogged false south true east true north false west true
6786 red_stained_glass_pane waterlogged false south true east true north false west false
6787 red_stained_glass_pane waterlogged true south false east true north false west true
6788 red_stained_glass_pane waterlogged true south false east true north false west false
6789 red_stained_glass_pane waterlogged false south false east true north false west true
6790 red_stained_glass_pane waterlogged false south false east true north false west false
6791 red_stained_glass_pane waterlogged true south true east false north true west true
6792 red_stained_glass_pane waterlogged true south true east false north true west false
6793 red_stained_glass_pane waterlogged false south true east false north true west true
6794 red_stained_glass_pane waterlogged false south true east false north true west false
6795 red_stained_glass_pane waterlogged true south false east false north true west true
6796 red_stained_glass_pane waterlogged true south false east false north true west false
6797 red_stained_glass_pane waterlogged false south false east false north true west true
6798 red_stained_glass_pane waterlogged false south false east false north true west false
6799 red_stained_glass_pane waterlogged true south true east false north false west true
6800 red_stained_glass_pane waterlogged true south true east false north false west false
6801 red_stained_glass_pane waterlogged false south true east false north false west true
6802 red_stained_glass_pane waterlogged false south true east false north false west false
6803 red_stained_glass_pane waterlogged true south false east false north false west true
6804 red_stained_glass_pane waterlogged true south false east false north false west false
6805 red_stained_glass_pane waterlogged false south false east false north false west true
6806 red_stained_glass_pane waterlogged false south false east false north false west false
6807 black_stained_glass_pane waterlogged true south true east true north true west true
6808 black_stained_glass_pane waterlogged true south true east true north true west false
6809 black_stained_glass_pane waterlogged false south true east true north true west true
6810 black_stained_glass_pane waterlogged false south true east true north true west false
6811 black_stained_glass_pane waterlogged true south false east true north true west true
6812 black_stained_glass_pane waterlogged true south false east true north true west false
6813 black_stained_glass_pane waterlogged false south false east true north true west true
6814 black_stained_glass_pane waterlogged false south false east true north true west false
6815 black_stained_glass_pane waterlogged true south true east true north false west true
6816 black_stained_glass_pane waterlogged true south true east true north false west false
6817 black_stained_glass_pane waterlogged false south true east true north false west true
6818 black_stained_glass_pane waterlogged false south true east true north false west false
6819 black_stained_glass_pane waterlogged true south false east true north false west true
6820 black_stained_glass_pane waterlogged true south false east true north false west false
6821 black_stained_glass_pane waterlogged false south false east true north false west true
6822 black_stained_glass_pane waterlogged false south false east true north false west false
6823 black_stained_glass_pane waterlogged true south true east false north true west true
6824 black_stained_glass_pane waterlogged true south true east false north true west false
6825 black_stained_glass_pane waterlogged false south true east false north true west true
6826 black_stained_glass_pane waterlogged false south true east false north true west false
6827 black_stained_glass_pane waterlogged true south false east false north true west true
6828 black_stained_glass_pane waterlogged true south false east false north true west false
6829 black_stained_glass_pane waterlogged false south false east false north true west true
6830 black_stained_glass_pane waterlogged false south false east false north true west false
6831 black_stained_glass_pane waterlogged true south true east false north false west true
6832 black_stained_glass_pane waterlogged true south true east false north false west false
6833 black_stained_glass_pane waterlogged false south true east false north false west true
6834 black_stained_glass_pane waterlogged false south true east false north false west false
6835 black_stained_glass_pane waterlogged true south false east false north false west true
6836 black_stained_glass_pane waterlogged true south false east false north false west false
6837 black_stained_glass_pane waterlogged false south false east false north false west true
6838 black_stained_glass_pane waterlogged false south false east false north false west false
6839 acacia_stairs facing north waterlogged true shape straight half top
6840 acacia_stairs facing north waterlogged false shape straight half top
6841 acacia_stairs facing north waterlogged true shape inner_left half top
6842 acacia_stairs facing north waterlogged false shape inner_left half top
6843 acacia_stairs facing north waterlogged true shape inner_right half top
6844 acacia_stairs facing north waterlogged false shape inner_right half top
6845 acacia_stairs facing north waterlogged true shape outer_left half top
6846 acacia_stairs facing north waterlogged false shape outer_left half top
6847 acacia_stairs facing north waterlogged true shape outer_right half top
6848 acacia_stairs facing north waterlogged false shape outer_right half top
6849 acacia_stairs facing north waterlogged true shape straight half bottom
6850 acacia_stairs facing north waterlogged false shape straight half bottom
6851 acacia_stairs facing north waterlogged true shape inner_left half bottom
6852 acacia_stairs facing north waterlogged false shape inner_left half bottom
6853 acacia_stairs facing north waterlogged true shape inner_right half bottom
6854 acacia_stairs facing north waterlogged false shape inner_right half bottom
6855 acacia_stairs facing north waterlogged true shape outer_left half bottom
6856 acacia_stairs facing north waterlogged false shape outer_left half bottom
6857 acacia_stairs facing north waterlogged true shape outer_right half bottom
6858 acacia_stairs facing north waterlogged false shape outer_right half bottom
6859 acacia_stairs facing south waterlogged true shape straight half top
6860 acacia_stairs facing south waterlogged false shape straight half top
6861 acacia_stairs facing south waterlogged true shape inner_left half top
6862 acacia_stairs facing south waterlogged false shape inner_left half top
6863 acacia_stairs facing south waterlogged true shape inner_right half top
6864 acacia_stairs facing south waterlogged false shape inner_right half top
6865 acacia_stairs facing south waterlogged true shape outer_left half top
6866 acacia_stairs facing south waterlogged false shape outer_left half top
6867 acacia_stairs facing south waterlogged true shape outer_right half top
6868 acacia_stairs facing south waterlogged false shape outer_right half top
6869 acacia_stairs facing south waterlogged true shape straight half bottom
6870 acacia_stairs facing south waterlogged false shape straight half bottom
6871 acacia_stairs facing south waterlogged true shape inner_left half bottom
6872 acacia_stairs facing south waterlogged false shape inner_left half bottom
6873 acacia_stairs facing south waterlogged true shape inner_right half bottom
6874 acacia_stairs facing south waterlogged false shape inner_right half bottom
6875 acacia_stairs facing south waterlogged true shape outer_left half bottom
6876 acacia_stairs facing south waterlogged false shape outer_left half bottom
6877 acacia_stairs facing south waterlogged true shape outer_right half bottom
6878 acacia_stairs facing south waterlogged false shape outer_right half bottom
6879 acacia_stairs facing west waterlogged true shape straight half top
6880 acacia_stairs facing west waterlogged false shape straight half top
6881 acacia_stairs facing west waterlogged true shape inner_left half top
6882 acacia_stairs facing west waterlogged false shape inner_left half top
6883 acacia_stairs facing west waterlogged true shape inner_right half top
6884 acacia_stairs facing west waterlogged false shape inner_right half top
6885 acacia_stairs facing west waterlogged true shape outer_left half top
6886 acacia_stairs facing west waterlogged false shape outer_left half top
6887 acacia_stairs facing west waterlogged true shape outer_right half top
6888 acacia_stairs facing west waterlogged false shape outer_right half top
6889 acacia_stairs facing west waterlogged true shape straight half bottom
6890 acacia_stairs facing west waterlogged false shape straight half bottom
6891 acacia_stairs facing west waterlogged true shape inner_left half bottom
6892 acacia_stairs facing west waterlogged false shape inner_left half bottom
6893 acacia_stairs facing west waterlogged true shape inner_right half bottom
6894 acacia_stairs facing west waterlogged false shape inner_right half bottom
6895 acacia_stairs facing west waterlogged true shape outer_left half bottom
6896 acacia_stairs facing west waterlogged false shape outer_left half bottom
6897 acacia_stairs facing west waterlogged true shape outer_right half bottom
6898 acacia_stairs facing west waterlogged false shape outer_right half bottom
6899 acacia_stairs facing east waterlogged true shape straight half top
6900 acacia_stairs facing east waterlogged false shape straight half top
6901 acacia_stairs facing east waterlogged true shape inner_left half top
6902 acacia_stairs facing east waterlogged false shape inner_left half top
6903 acacia_stairs facing east waterlogged true shape inner_right half top
6904 acacia_stairs facing east waterlogged false shape inner_right half top
6905 acacia_stairs facing east waterlogged true shape outer_left half top
6906 acacia_stairs facing east waterlogged false shape outer_left half top
6907 acacia_stairs facing east waterlogged true shape outer_right half top
6908 acacia_stairs facing east waterlogged false shape outer_right half top
6909 acacia_stairs facing east waterlogged true shape straight half bottom
6910 acacia_stairs facing east waterlogged false shape straight half bottom
6911 acacia_stairs facing east waterlogged true shape inner_left half bottom
6912 acacia_stairs facing east waterlogged false shape inner_left half bottom
6913 acacia_stairs facing east waterlogged true shape inner_right half bottom
6914 acacia_stairs facing east waterlogged false shape inner_right half bottom
6915 acacia_stairs facing east waterlogged true shape outer_left half bottom
6916 acacia_stairs facing east waterlogged false shape outer_left half bottom
6917 acacia_stairs facing east waterlogged true shape outer_right half bottom
6918 acacia_stairs facing east waterlogged false shape outer_right half bottom
6919 dark_oak_stairs facing north waterlogged true shape straight half top
6920 dark_oak_stairs facing north waterlogged false shape straight half top
6921 dark_oak_stairs facing north waterlogged true shape inner_left half top
6922 dark_oak_stairs facing north waterlogged false shape inner_left half top
6923 dark_oak_stairs facing north waterlogged true shape inner_right half top
6924 dark_oak_stairs facing north waterlogged false shape inner_right half top
6925 dark_oak_stairs facing north waterlogged true shape outer_left half top
6926 dark_oak_stairs facing north waterlogged false shape outer_left half top
6927 dark_oak_stairs facing north waterlogged true shape outer_right half top
6928 dark_oak_stairs facing north waterlogged false shape outer_right half top
6929 dark_oak_stairs facing north waterlogged true shape straight half bottom
6930 dark_oak_stairs facing north waterlogged false shape straight half bottom
6931 dark_oak_stairs facing north waterlogged true shape inner_left half bottom
6932 dark_oak_stairs facing north waterlogged false shape inner_left half bottom
6933 dark_oak_stairs facing north waterlogged true shape inner_right half bottom
6934 dark_oak_stairs facing north waterlogged false shape inner_right half bottom
6935 dark_oak_stairs facing north waterlogged true shape outer_left half bottom
6936 dark_oak_stairs facing north waterlogged false shape outer_left half bottom
6937 dark_oak_stairs facing north waterlogged true shape outer_right half bottom
6938 dark_oak_stairs facing north waterlogged false shape outer_right half bottom
6939 dark_oak_stairs facing south waterlogged true shape straight half top
6940 dark_oak_stairs facing south waterlogged false shape straight half top
6941 dark_oak_stairs facing south waterlogged true shape inner_left half top
6942 dark_oak_stairs facing south waterlogged false shape inner_left half top
6943 dark_oak_stairs facing south waterlogged true shape inner_right half top
6944 dark_oak_stairs facing south waterlogged false shape inner_right half top
6945 dark_oak_stairs facing south waterlogged true shape outer_left half top
6946 dark_oak_stairs facing south waterlogged false shape outer_left half top
6947 dark_oak_stairs facing south waterlogged true shape outer_right half top
6948 dark_oak_stairs facing south waterlogged false shape outer_right half top
6949 dark_oak_stairs facing south waterlogged true shape straight half bottom
6950 dark_oak_stairs facing south waterlogged false shape straight half bottom
6951 dark_oak_stairs facing south waterlogged true shape inner_left half bottom
6952 dark_oak_stairs facing south waterlogged false shape inner_left half bottom
6953 dark_oak_stairs facing south waterlogged true shape inner_right half bottom
6954 dark_oak_stairs facing south waterlogged false shape inner_right half bottom
6955 dark_oak_stairs facing south waterlogged true shape outer_left half bottom
6956 dark_oak_stairs facing south waterlogged false shape outer_left half bottom
6957 dark_oak_stairs facing south waterlogged true shape outer_right half bottom
6958 dark_oak_stairs facing south waterlogged false shape outer_right half bottom
6959 dark_oak_stairs facing west waterlogged true shape straight half top
6960 dark_oak_stairs facing west waterlogged false shape straight half top
6961 dark_oak_stairs facing west waterlogged true shape inner_left half top
6962 dark_oak_stairs facing west waterlogged false shape inner_left half top
6963 dark_oak_stairs facing west waterlogged true shape inner_right half top
6964 dark_oak_stairs facing west waterlogged false shape inner_right half top
6965 dark_oak_stairs facing west waterlogged true shape outer_left half top
6966 dark_oak_stairs facing west waterlogged false shape outer_left half top
6967 dark_oak_stairs facing west waterlogged true shape outer_right half top
6968 dark_oak_stairs facing west waterlogged false shape outer_right half top
6969 dark_oak_stairs facing west waterlogged true shape straight half bottom
6970 dark_oak_stairs facing west waterlogged false shape straight half bottom
6971 dark_oak_stairs facing west waterlogged true shape inner_left half bottom
6972 dark_oak_stairs facing west waterlogged false shape inner_left half bottom
6973 dark_oak_stairs facing west waterlogged true shape inner_right half bottom
6974 dark_oak_stairs facing west waterlogged false shape inner_right half bottom
6975 dark_oak_stairs facing west waterlogged true shape outer_left half bottom
6976 dark_oak_stairs facing west waterlogged false shape outer_left half bottom
6977 dark_oak_stairs facing west waterlogged true shape outer_right half bottom
6978 dark_oak_stairs facing west waterlogged false shape outer_right half bottom
6979 dark_oak_stairs facing east waterlogged true shape straight half top
6980 dark_oak_stairs facing east waterlogged false shape straight half top
6981 dark_oak_stairs facing east waterlogged true shape inner_left half top
6982 dark_oak_stairs facing east waterlogged false shape inner_left half top
6983 dark_oak_stairs facing east waterlogged true shape inner_right half top
6984 dark_oak_stairs facing east waterlogged false shape inner_right half top
6985 dark_oak_stairs facing east waterlogged true shape outer_left half top
6986 dark_oak_stairs facing east waterlogged false shape outer_left half top
6987 dark_oak_stairs facing east waterlogged true shape outer_right half top
6988 dark_oak_stairs facing east waterlogged false shape outer_right half top
6989 dark_oak_stairs facing east waterlogged true shape straight half bottom
6990 dark_oak_stairs facing east waterlogged false shape straight half bottom
6991 dark_oak_stairs facing east waterlogged true shape inner_left half bottom
6992 dark_oak_stairs facing east waterlogged false shape inner_left half bottom
6993 dark_oak_stairs facing east waterlogged true shape inner_right half bottom
6994 dark_oak_stairs facing east waterlogged false shape inner_right half bottom
6995 dark_oak_stairs facing east waterlogged true shape outer_left half bottom
6996 dark_oak_stairs facing east waterlogged false shape outer_left half bottom
6997 dark_oak_stairs facing east waterlogged true shape outer_right half bottom
6998 dark_oak_stairs facing east waterlogged false shape outer_right half bottom
6999 slime_block
7000 barrier
7001 iron_trapdoor waterlogged true powered true facing north half top open true
7002 iron_trapdoor waterlogged false powered true facing north half top open true
7003 iron_trapdoor waterlogged true powered false facing north half top open true
7004 iron_trapdoor waterlogged false powered false facing north half top open true
7005 iron_trapdoor waterlogged true powered true facing north half top open false
7006 iron_trapdoor waterlogged false powered true facing north half top open false
7007 iron_trapdoor waterlogged true powered false facing north half top open false
7008 iron_trapdoor waterlogged false powered false facing north half top open false
7009 iron_trapdoor waterlogged true powered true facing north half bottom open true
7010 iron_trapdoor waterlogged false powered true facing north half bottom open true
7011 iron_trapdoor waterlogged true powered false facing north half bottom open true
7012 iron_trapdoor waterlogged false powered false facing north half bottom open true
7013 iron_trapdoor waterlogged true powered true facing north half bottom open false
7014 iron_trapdoor waterlogged false powered true facing north half bottom open false
7015 iron_trapdoor waterlogged true powered false facing north half bottom open false
7016 iron_trapdoor waterlogged false powered false facing north half bottom open false
7017 iron_trapdoor waterlogged true powered true facing south half top open true
7018 iron_trapdoor waterlogged false powered true facing south half top open true
7019 iron_trapdoor waterlogged true powered false facing south half top open true
7020 iron_trapdoor waterlogged false powered false facing south half top open true
7021 iron_trapdoor waterlogged true powered true facing south half top open false
7022 iron_trapdoor waterlogged false powered true facing south half top open false
7023 iron_trapdoor waterlogged true powered false facing south half top open false
7024 iron_trapdoor waterlogged false powered false facing south half top open false
7025 iron_trapdoor waterlogged true powered true facing south half bottom open true
7026 iron_trapdoor waterlogged false powered true facing south half bottom open true
7027 iron_trapdoor waterlogged true powered false facing south half bottom open true
7028 iron_trapdoor waterlogged false powered false facing south half bottom open true
7029 iron_trapdoor waterlogged true powered true facing south half bottom open false
7030 iron_trapdoor waterlogged false powered true facing south half bottom open false
7031 iron_trapdoor waterlogged true powered false facing south half bottom open false
7032 iron_trapdoor waterlogged false powered false facing south half bottom open false
7033 iron_trapdoor waterlogged true powered true facing west half top open true
7034 iron_trapdoor waterlogged false powered true facing west half top open true
7035 iron_trapdoor waterlogged true powered false facing west half top open true
7036 iron_trapdoor waterlogged false powered false facing west half top open true
7037 iron_trapdoor waterlogged true powered true facing west half top open false
7038 iron_trapdoor waterlogged false powered true facing west half top open false
7039 iron_trapdoor waterlogged true powered false facing west half top open false
7040 iron_trapdoor waterlogged false powered false facing west half top open false
7041 iron_trapdoor waterlogged true powered true facing west half bottom open true
7042 iron_trapdoor waterlogged false powered true facing west half bottom open true
7043 iron_trapdoor waterlogged true powered false facing west half bottom open true
7044 iron_trapdoor waterlogged false powered false facing west half bottom open true
7045 iron_trapdoor waterlogged true powered true facing west half bottom open false
7046 iron_trapdoor waterlogged false powered true facing west half bottom open false
7047 iron_trapdoor waterlogged true powered false facing west half bottom open false
7048 iron_trapdoor waterlogged false powered false facing west half bottom open false
7049 iron_trapdoor waterlogged true powered true facing east half top open true
7050 iron_trapdoor waterlogged false powered true facing east half top open true
7051 iron_trapdoor waterlogged true powered false facing east half top open true
7052 iron_trapdoor waterlogged false powered false facing east half top open true
7053 iron_trapdoor waterlogged true powered true facing east half top open false
7054 iron_trapdoor waterlogged false powered true facing east half top open false
7055 iron_trapdoor waterlogged true powered false facing east half top open false
7056 iron_trapdoor waterlogged false powered false facing east half top open false
7057 iron_trapdoor waterlogged true powered true facing east half bottom open true
7058 iron_trapdoor waterlogged false powered true facing east half bottom open true
7059 iron_trapdoor waterlogged true powered false facing east half bottom open true
7060 iron_trapdoor waterlogged false powered false facing east half bottom open true
7061 iron_trapdoor waterlogged true powered true facing east half bottom open false
7062 iron_trapdoor waterlogged false powered true facing east half bottom open false
7063 iron_trapdoor waterlogged true powered false facing east half bottom open false
7064 iron_trapdoor waterlogged false powered false facing east half bottom open false
7065 prismarine
7066 prismarine_bricks
7067 dark_prismarine
7068 prismarine_stairs facing north waterlogged true shape straight half top
7069 prismarine_stairs facing north waterlogged false shape straight half top
7070 prismarine_stairs facing north waterlogged true shape inner_left half top
7071 prismarine_stairs facing north waterlogged false shape inner_left half top
7072 prismarine_stairs facing north waterlogged true shape inner_right half top
7073 prismarine_stairs facing north waterlogged false shape inner_right half top
7074 prismarine_stairs facing north waterlogged true shape outer_left half top
7075 prismarine_stairs facing north waterlogged false shape outer_left half top
7076 prismarine_stairs facing north waterlogged true shape outer_right half top
7077 prismarine_stairs facing north waterlogged false shape outer_right half top
7078 prismarine_stairs facing north waterlogged true shape straight half bottom
7079 prismarine_stairs facing north waterlogged false shape straight half bottom
7080 prismarine_stairs facing north waterlogged true shape inner_left half bottom
7081 prismarine_stairs facing north waterlogged false shape inner_left half bottom
7082 prismarine_stairs facing north waterlogged true shape inner_right half bottom
7083 prismarine_stairs facing north waterlogged false shape inner_right half bottom
7084 prismarine_stairs facing north waterlogged true shape outer_left half bottom
7085 prismarine_stairs facing north waterlogged false shape outer_left half bottom
7086 prismarine_stairs facing north waterlogged true shape outer_right half bottom
7087 prismarine_stairs facing north waterlogged false shape outer_right half bottom
7088 prismarine_stairs facing south waterlogged true shape straight half top
7089 prismarine_stairs facing south waterlogged false shape straight half top
7090 prismarine_stairs facing south waterlogged true shape inner_left half top
7091 prismarine_stairs facing south waterlogged false shape inner_left half top
7092 prismarine_stairs facing south waterlogged true shape inner_right half top
7093 prismarine_stairs facing south waterlogged false shape inner_right half top
7094 prismarine_stairs facing south waterlogged true shape outer_left half top
7095 prismarine_stairs facing south waterlogged false shape outer_left half top
7096 prismarine_stairs facing south waterlogged true shape outer_right half top
7097 prismarine_stairs facing south waterlogged false shape outer_right half top
7098 prismarine_stairs facing south waterlogged true shape straight half bottom
7099 prismarine_stairs facing south waterlogged false shape straight half bottom
7100 prismarine_stairs facing south waterlogged true shape inner_left half bottom
7101 prismarine_stairs facing south waterlogged false shape inner_left half bottom
7102 prismarine_stairs facing south waterlogged true shape inner_right half bottom
7103 prismarine_stairs facing south waterlogged false shape inner_right half bottom
7104 prismarine_stairs facing south waterlogged true shape outer_left half bottom
7105 prismarine_stairs facing south waterlogged false shape outer_left half bottom
7106 prismarine_stairs facing south waterlogged true shape outer_right half bottom
7107 prismarine_stairs facing south waterlogged false shape outer_right half bottom
7108 prismarine_stairs facing west waterlogged true shape straight half top
7109 prismarine_stairs facing west waterlogged false shape straight half top
7110 prismarine_stairs facing west waterlogged true shape inner_left half top
7111 prismarine_stairs facing west waterlogged false shape inner_left half top
7112 prismarine_stairs facing west waterlogged true shape inner_right half top
7113 prismarine_stairs facing west waterlogged false shape inner_right half top
7114 prismarine_stairs facing west waterlogged true shape outer_left half top
7115 prismarine_stairs facing west waterlogged false shape outer_left half top
7116 prismarine_stairs facing west waterlogged true shape outer_right half top
7117 prismarine_stairs facing west waterlogged false shape outer_right half top
7118 prismarine_stairs facing west waterlogged true shape straight half bottom
7119 prismarine_stairs facing west waterlogged false shape straight half bottom
7120 prismarine_stairs facing west waterlogged true shape inner_left half bottom
7121 prismarine_stairs facing west waterlogged false shape inner_left half bottom
7122 prismarine_stairs facing west waterlogged true shape inner_right half bottom
7123 prismarine_stairs facing west waterlogged false shape inner_right half bottom
7124 prismarine_stairs facing west waterlogged true shape outer_left half bottom
7125 prismarine_stairs facing west waterlogged false shape outer_left half bottom
7126 prismarine_stairs facing west waterlogged true shape outer_right half bottom
7127 prismarine_stairs facing west waterlogged false shape outer_right half bottom
7128 prismarine_stairs facing east waterlogged true shape straight half top
7129 prismarine_stairs facing east waterlogged false shape straight half top
7130 prismarine_stairs facing east waterlogged true shape inner_left half top
7131 prismarine_stairs facing east waterlogged false shape inner_left half top
7132 prismarine_stairs facing east waterlogged true shape inner_right half top
7133 prismarine_stairs facing east waterlogged false shape inner_right half top
7134 prismarine_stairs facing east waterlogged true shape outer_left half top
7135 prismarine_stairs facing east waterlogged false shape outer_left half top
7136 prismarine_stairs facing east waterlogged true shape outer_right half top
7137 prismarine_stairs facing east waterlogged false shape outer_right half top
7138 prismarine_stairs facing east waterlogged true shape straight half bottom
7139 prismarine_stairs facing east waterlogged false shape straight half bottom
7140 prismarine_stairs facing east waterlogged true shape inner_left half bottom
7141 prismarine_stairs facing east waterlogged false shape inner_left half bottom
7142 prismarine_stairs facing east waterlogged true shape inner_right half bottom
7143 prismarine_stairs facing east waterlogged false shape inner_right half bottom
7144 prismarine_stairs facing east waterlogged true shape outer_left half bottom
7145 prismarine_stairs facing east waterlogged false shape outer_left half bottom
7146 prismarine_stairs facing east waterlogged true shape outer_right half bottom
7147 prismarine_stairs facing east waterlogged false shape outer_right half bottom
7148 prismarine_brick_stairs facing north waterlogged true shape straight half top
7149 prismarine_brick_stairs facing north waterlogged false shape straight half top
7150 prismarine_brick_stairs facing north waterlogged true shape inner_left half top
7151 prismarine_brick_stairs facing north waterlogged false shape inner_left half top
7152 prismarine_brick_stairs facing north waterlogged true shape inner_right half top
7153 prismarine_brick_stairs facing north waterlogged false shape inner_right half top
7154 prismarine_brick_stairs facing north waterlogged true shape outer_left half top
7155 prismarine_brick_stairs facing north waterlogged false shape outer_left half top
7156 prismarine_brick_stairs facing north waterlogged true shape outer_right half top
7157 prismarine_brick_stairs facing north waterlogged false shape outer_right half top
7158 prismarine_brick_stairs facing north waterlogged true shape straight half bottom
7159 prismarine_brick_stairs facing north waterlogged false shape straight half bottom
7160 prismarine_brick_stairs facing north waterlogged true shape inner_left half bottom
7161 prismarine_brick_stairs facing north waterlogged false shape inner_left half bottom
7162 prismarine_brick_stairs facing north waterlogged true shape inner_right half bottom
7163 prismarine_brick_stairs facing north waterlogged false shape inner_right half bottom
7164 prismarine_brick_stairs facing north waterlogged true shape outer_left half bottom
7165 prismarine_brick_stairs facing north waterlogged false shape outer_left half bottom
7166 prismarine_brick_stairs facing north waterlogged true shape outer_right half bottom
7167 prismarine_brick_stairs facing north waterlogged false shape outer_right half bottom
7168 prismarine_brick_stairs facing south waterlogged true shape straight half top
7169 prismarine_brick_stairs facing south waterlogged false shape straight half top
7170 prismarine_brick_stairs facing south waterlogged true shape inner_left half top
7171 prismarine_brick_stairs facing south waterlogged false shape inner_left half top
7172 prismarine_brick_stairs facing south waterlogged true shape inner_right half top
7173 prismarine_brick_stairs facing south waterlogged false shape inner_right half top
7174 prismarine_brick_stairs facing south waterlogged true shape outer_left half top
7175 prismarine_brick_stairs facing south waterlogged false shape outer_left half top
7176 prismarine_brick_stairs facing south waterlogged true shape outer_right half top
7177 prismarine_brick_stairs facing south waterlogged false shape outer_right half top
7178 prismarine_brick_stairs facing south waterlogged true shape straight half bottom
7179 prismarine_brick_stairs facing south waterlogged false shape straight half bottom
7180 prismarine_brick_stairs facing south waterlogged true shape inner_left half bottom
7181 prismarine_brick_stairs facing south waterlogged false shape inner_left half bottom
7182 prismarine_brick_stairs facing south waterlogged true shape inner_right half bottom
7183 prismarine_brick_stairs facing south waterlogged false shape inner_right half bottom
7184 prismarine_brick_stairs facing south waterlogged true shape outer_left half bottom
7185 prismarine_brick_stairs facing south waterlogged false shape outer_left half bottom
7186 prismarine_brick_stairs facing south waterlogged true shape outer_right half bottom
7187 prismarine_brick_stairs facing south waterlogged false shape outer_right half bottom
7188 prismarine_brick_stairs facing west waterlogged true shape straight half top
7189 prismarine_brick_stairs facing west waterlogged false shape straight half top
7190 prismarine_brick_stairs facing west waterlogged true shape inner_left half top
7191 prismarine_brick_stairs facing west waterlogged false shape inner_left half top
7192 prismarine_brick_stairs facing west waterlogged true shape inner_right half top
7193 prismarine_brick_stairs facing west waterlogged false shape inner_right half top
7194 prismarine_brick_stairs facing west waterlogged true shape outer_left half top
7195 prismarine_brick_stairs facing west waterlogged false shape outer_left half top
7196 prismarine_brick_stairs facing west waterlogged true shape outer_right half top
7197 prismarine_brick_stairs facing west waterlogged false shape outer_right half top
7198 prismarine_brick_stairs facing west waterlogged true shape straight half bottom
7199 prismarine_brick_stairs facing west waterlogged false shape straight half bottom
7200 prismarine_brick_stairs facing west waterlogged true shape inner_left half bottom
7201 prismarine_brick_stairs facing west waterlogged false shape inner_left half bottom
7202 prismarine_brick_stairs facing west waterlogged true shape inner_right half bottom
7203 prismarine_brick_stairs facing west waterlogged false shape inner_right half bottom
7204 prismarine_brick_stairs facing west waterlogged true shape outer_left half bottom
7205 prismarine_brick_stairs facing west waterlogged false shape outer_left half bottom
7206 prismarine_brick_stairs facing west waterlogged true shape outer_right half bottom
7207 prismarine_brick_stairs facing west waterlogged false shape outer_right half bottom
7208 prismarine_brick_stairs facing east waterlogged true shape straight half top
7209 prismarine_brick_stairs facing east waterlogged false shape straight half top
7210 prismarine_brick_stairs facing east waterlogged true shape inner_left half top
7211 prismarine_brick_stairs facing east waterlogged false shape inner_left half top
7212 prismarine_brick_stairs facing east waterlogged true shape inner_right half top
7213 prismarine_brick_stairs facing east waterlogged false shape inner_right half top
7214 prismarine_brick_stairs facing east waterlogged true shape outer_left half top
7215 prismarine_brick_stairs facing east waterlogged false shape outer_left half top
7216 prismarine_brick_stairs facing east waterlogged true shape outer_right half top
7217 prismarine_brick_stairs facing east waterlogged false shape outer_right half top
7218 prismarine_brick_stairs facing east waterlogged true shape straight half bottom
7219 prismarine_brick_stairs facing east waterlogged false shape straight half bottom
7220 prismarine_brick_stairs facing east waterlogged true shape inner_left half bottom
7221 prismarine_brick_stairs facing east waterlogged false shape inner_left half bottom
7222 prismarine_brick_stairs facing east waterlogged true shape inner_right half bottom
7223 prismarine_brick_stairs facing east waterlogged false shape inner_right half bottom
7224 prismarine_brick_stairs facing east waterlogged true shape outer_left half bottom
7225 prismarine_brick_stairs facing east waterlogged false shape outer_left half bottom
7226 prismarine_brick_stairs facing east waterlogged true shape outer_right half bottom
7227 prismarine_brick_stairs facing east waterlogged false shape outer_right half bottom
7228 dark_prismarine_stairs facing north waterlogged true shape straight half top
7229 dark_prismarine_stairs facing north waterlogged false shape straight half top
7230 dark_prismarine_stairs facing north waterlogged true shape inner_left half top
7231 dark_prismarine_stairs facing north waterlogged false shape inner_left half top
7232 dark_prismarine_stairs facing north waterlogged true shape inner_right half top
7233 dark_prismarine_stairs facing north waterlogged false shape inner_right half top
7234 dark_prismarine_stairs facing north waterlogged true shape outer_left half top
7235 dark_prismarine_stairs facing north waterlogged false shape outer_left half top
7236 dark_prismarine_stairs facing north waterlogged true shape outer_right half top
7237 dark_prismarine_stairs facing north waterlogged false shape outer_right half top
7238 dark_prismarine_stairs facing north waterlogged true shape straight half bottom
7239 dark_prismarine_stairs facing north waterlogged false shape straight half bottom
7240 dark_prismarine_stairs facing north waterlogged true shape inner_left half bottom
7241 dark_prismarine_stairs facing north waterlogged false shape inner_left half bottom
7242 dark_prismarine_stairs facing north waterlogged true shape inner_right half bottom
7243 dark_prismarine_stairs facing north waterlogged false shape inner_right half bottom
7244 dark_prismarine_stairs facing north waterlogged true shape outer_left half bottom
7245 dark_prismarine_stairs facing north waterlogged false shape outer_left half bottom
7246 dark_prismarine_stairs facing north waterlogged true shape outer_right half bottom
7247 dark_prismarine_stairs facing north waterlogged false shape outer_right half bottom
7248 dark_prismarine_stairs facing south waterlogged true shape straight half top
7249 dark_prismarine_stairs facing south waterlogged false shape straight half top
7250 dark_prismarine_stairs facing south waterlogged true shape inner_left half top
7251 dark_prismarine_stairs facing south waterlogged false shape inner_left half top
7252 dark_prismarine_stairs facing south waterlogged true shape inner_right half top
7253 dark_prismarine_stairs facing south waterlogged false shape inner_right half top
7254 dark_prismarine_stairs facing south waterlogged true shape outer_left half top
7255 dark_prismarine_stairs facing south waterlogged false shape outer_left half top
7256 dark_prismarine_stairs facing south waterlogged true shape outer_right half top
7257 dark_prismarine_stairs facing south waterlogged false shape outer_right half top
7258 dark_prismarine_stairs facing south waterlogged true shape straight half bottom
7259 dark_prismarine_stairs facing south waterlogged false shape straight half bottom
7260 dark_prismarine_stairs facing south waterlogged true shape inner_left half bottom
7261 dark_prismarine_stairs facing south waterlogged false shape inner_left half bottom
7262 dark_prismarine_stairs facing south waterlogged true shape inner_right half bottom
7263 dark_prismarine_stairs facing south waterlogged false shape inner_right half bottom
7264 dark_prismarine_stairs facing south waterlogged true shape outer_left half bottom
7265 dark_prismarine_stairs facing south waterlogged false shape outer_left half bottom
7266 dark_prismarine_stairs facing south waterlogged true shape outer_right half bottom
7267 dark_prismarine_stairs facing south waterlogged false shape outer_right half bottom
7268 dark_prismarine_stairs facing west waterlogged true shape straight half top
7269 dark_prismarine_stairs facing west waterlogged false shape straight half top
7270 dark_prismarine_stairs facing west waterlogged true shape inner_left half top
7271 dark_prismarine_stairs facing west waterlogged false shape inner_left half top
7272 dark_prismarine_stairs facing west waterlogged true shape inner_right half top
7273 dark_prismarine_stairs facing west waterlogged false shape inner_right half top
7274 dark_prismarine_stairs facing west waterlogged true shape outer_left half top
7275 dark_prismarine_stairs facing west waterlogged false shape outer_left half top
7276 dark_prismarine_stairs facing west waterlogged true shape outer_right half top
7277 dark_prismarine_stairs facing west waterlogged false shape outer_right half top
7278 dark_prismarine_stairs facing west waterlogged true shape straight half bottom
7279 dark_prismarine_stairs facing west waterlogged false shape straight half bottom
7280 dark_prismarine_stairs facing west waterlogged true shape inner_left half bottom
7281 dark_prismarine_stairs facing west waterlogged false shape inner_left half bottom
7282 dark_prismarine_stairs facing west waterlogged true shape inner_right half bottom
7283 dark_prismarine_stairs facing west waterlogged false shape inner_right half bottom
7284 dark_prismarine_stairs facing west waterlogged true shape outer_left half bottom
7285 dark_prismarine_stairs facing west waterlogged false shape outer_left half bottom
7286 dark_prismarine_stairs facing west waterlogged true shape outer_right half bottom
7287 dark_prismarine_stairs facing west waterlogged false shape outer_right half bottom
7288 dark_prismarine_stairs facing east waterlogged true shape straight half top
7289 dark_prismarine_stairs facing east waterlogged false shape straight half top
7290 dark_prismarine_stairs facing east waterlogged true shape inner_left half top
7291 dark_prismarine_stairs facing east waterlogged false shape inner_left half top
7292 dark_prismarine_stairs facing east waterlogged true shape inner_right half top
7293 dark_prismarine_stairs facing east waterlogged false shape inner_right half top
7294 dark_prismarine_stairs facing east waterlogged true shape outer_left half top
7295 dark_prismarine_stairs facing east waterlogged false shape outer_left half top
7296 dark_prismarine_stairs facing east waterlogged true shape outer_right half top
7297 dark_prismarine_stairs facing east waterlogged false shape outer_right half top
7298 dark_prismarine_stairs facing east waterlogged true shape straight half bottom
7299 dark_prismarine_stairs facing east waterlogged false shape straight half bottom
7300 dark_prismarine_stairs facing east waterlogged true shape inner_left half bottom
7301 dark_prismarine_stairs facing east waterlogged false shape inner_left half bottom
7302 dark_prismarine_stairs facing east waterlogged true shape inner_right half bottom
7303 dark_prismarine_stairs facing east waterlogged false shape inner_right half bottom
7304 dark_prismarine_stairs facing east waterlogged true shape outer_left half bottom
7305 dark_prismarine_stairs facing east waterlogged false shape outer_left half bottom
7306 dark_prismarine_stairs facing east waterlogged true shape outer_right half bottom
7307 dark_prismarine_stairs facing east waterlogged false shape outer_right half bottom
7308 prismarine_slab type top waterlogged true
7309 prismarine_slab type top waterlogged false
7310 prismarine_slab type bottom waterlogged true
7311 prismarine_slab type bottom waterlogged false
7312 prismarine_slab type double waterlogged true
7313 prismarine_slab type double waterlogged false
7314 prismarine_brick_slab type top waterlogged true
7315 prismarine_brick_slab type top waterlogged false
7316 prismarine_brick_slab type bottom waterlogged true
7317 prismarine_brick_slab type bottom waterlogged false
7318 prismarine_brick_slab type double waterlogged true
7319 prismarine_brick_slab type double waterlogged false
7320 dark_prismarine_slab type top waterlogged true
7321 dark_prismarine_slab type top waterlogged false
7322 dark_prismarine_slab type bottom waterlogged true
7323 dark_prismarine_slab type bottom waterlogged false
7324 dark_prismarine_slab type double waterlogged true
7325 dark_prismarine_slab type double waterlogged false
7326 sea_lantern
7327 hay_block axis x
7328 hay_block axis y
7329 hay_block axis z
7330 white_carpet
7331 orange_carpet
7332 magenta_carpet
7333 light_blue_carpet
7334 yellow_carpet
7335 lime_carpet
7336 pink_carpet
7337 gray_carpet
7338 light_gray_carpet
7339 cyan_carpet
7340 purple_carpet
7341 blue_carpet
7342 brown_carpet
7343 green_carpet
7344 red_carpet
7345 black_carpet
7346 terracotta
7347 coal_block
7348 packed_ice
7349 sunflower half upper
7350 sunflower half lower
7351 lilac half upper
7352 lilac half lower
7353 rose_bush half upper
7354 rose_bush half lower
7355 peony half upper
7356 peony half lower
7357 tall_grass half upper
7358 tall_grass half lower
7359 large_fern half upper
7360 large_fern half lower
7361 white_banner rotation 0
7362 white_banner rotation 1
7363 white_banner rotation 2
7364 white_banner rotation 3
7365 white_banner rotation 4
7366 white_banner rotation 5
7367 white_banner rotation 6
7368 white_banner rotation 7
7369 white_banner rotation 8
7370 white_banner rotation 9
7371 white_banner rotation 10
7372 white_banner rotation 11
7373 white_banner rotation 12
7374 white_banner rotation 13
7375 white_banner rotation 14
7376 white_banner rotation 15
7377 orange_banner rotation 0
7378 orange_banner rotation 1
7379 orange_banner rotation 2
7380 orange_banner rotation 3
7381 orange_banner rotation 4
7382 orange_banner rotation 5
7383 orange_banner rotation 6
7384 orange_banner rotation 7
7385 orange_banner rotation 8
7386 orange_banner rotation 9
7387 orange_banner rotation 10
7388 orange_banner rotation 11
7389 orange_banner rotation 12
7390 orange_banner rotation 13
7391 orange_banner rotation 14
7392 orange_banner rotation 15
7393 magenta_banner rotation 0
7394 magenta_banner rotation 1
7395 magenta_banner rotation 2
7396 magenta_banner rotation 3
7397 magenta_banner rotation 4
7398 magenta_banner rotation 5
7399 magenta_banner rotation 6
7400 magenta_banner rotation 7
7401 magenta_banner rotation 8
7402 magenta_banner rotation 9
7403 magenta_banner rotation 10
7404 magenta_banner rotation 11
7405 magenta_banner rotation 12
7406 magenta_banner rotation 13
7407 magenta_banner rotation 14
7408 magenta_banner rotation 15
7409 light_blue_banner rotation 0
7410 light_blue_banner rotation 1
7411 light_blue_banner rotation 2
7412 light_blue_banner rotation 3
7413 light_blue_banner rotation 4
7414 light_blue_banner rotation 5
7415 light_blue_banner rotation 6
7416 light_blue_banner rotation 7
7417 light_blue_banner rotation 8
7418 light_blue_banner rotation 9
7419 light_blue_banner rotation 10
7420 light_blue_banner rotation 11
7421 light_blue_banner rotation 12
7422 light_blue_banner rotation 13
7423 light_blue_banner rotation 14
7424 light_blue_banner rotation 15
7425 yellow_banner rotation 0
7426 yellow_banner rotation 1
7427 yellow_banner rotation 2
7428 yellow_banner rotation 3
7429 yellow_banner rotation 4
7430 yellow_banner rotation 5
7431 yellow_banner rotation 6
7432 yellow_banner rotation 7
7433 yellow_banner rotation 8
7434 yellow_banner rotation 9
7435 yellow_banner rotation 10
7436 yellow_banner rotation 11
7437 yellow_banner rotation 12
7438 yellow_banner rotation 13
7439 yellow_banner rotation 14
7440 yellow_banner rotation 15
7441 lime_banner rotation 0
7442 lime_banner rotation 1
7443 lime_banner rotation 2
7444 lime_banner rotation 3
7445 lime_banner rotation 4
7446 lime_banner rotation 5
7447 lime_banner rotation 6
7448 lime_banner rotation 7
7449 lime_banner rotation 8
7450 lime_banner rotation 9
7451 lime_banner rotation 10
7452 lime_banner rotation 11
7453 lime_banner rotation 12
7454 lime_banner rotation 13
7455 lime_banner rotation 14
7456 lime_banner rotation 15
7457 pink_banner rotation 0
7458 pink_banner rotation 1
7459 pink_banner rotation 2
7460 pink_banner rotation 3
7461 pink_banner rotation 4
7462 pink_banner rotation 5
7463 pink_banner rotation 6
7464 pink_banner rotation 7
7465 pink_banner rotation 8
7466 pink_banner rotation 9
7467 pink_banner rotation 10
7468 pink_banner rotation 11
7469 pink_banner rotation 12
7470 pink_banner rotation 13
7471 pink_banner rotation 14
7472 pink_banner rotation 15
7473 gray_banner rotation 0
7474 gray_banner rotation 1
7475 gray_banner rotation 2
7476 gray_banner rotation 3
7477 gray_banner rotation 4
7478 gray_banner rotation 5
7479 gray_banner rotation 6
7480 gray_banner rotation 7
7481 gray_banner rotation 8
7482 gray_banner rotation 9
7483 gray_banner rotation 10
7484 gray_banner rotation 11
7485 gray_banner rotation 12
7486 gray_banner rotation 13
7487 gray_banner rotation 14
7488 gray_banner rotation 15
7489 light_gray_banner rotation 0
7490 light_gray_banner rotation 1
7491 light_gray_banner rotation 2
7492 light_gray_banner rotation 3
7493 light_gray_banner rotation 4
7494 light_gray_banner rotation 5
7495 light_gray_banner rotation 6
7496 light_gray_banner rotation 7
7497 light_gray_banner rotation 8
7498 light_gray_banner rotation 9
7499 light_gray_banner rotation 10
7500 light_gray_banner rotation 11
7501 light_gray_banner rotation 12
7502 light_gray_banner rotation 13
7503 light_gray_banner rotation 14
7504 light_gray_banner rotation 15
7505 cyan_banner rotation 0
7506 cyan_banner rotation 1
7507 cyan_banner rotation 2
7508 cyan_banner rotation 3
7509 cyan_banner rotation 4
7510 cyan_banner rotation 5
7511 cyan_banner rotation 6
7512 cyan_banner rotation 7
7513 cyan_banner rotation 8
7514 cyan_banner rotation 9
7515 cyan_banner rotation 10
7516 cyan_banner rotation 11
7517 cyan_banner rotation 12
7518 cyan_banner rotation 13
7519 cyan_banner rotation 14
7520 cyan_banner rotation 15
7521 purple_banner rotation 0
7522 purple_banner rotation 1
7523 purple_banner rotation 2
7524 purple_banner rotation 3
7525 purple_banner rotation 4
7526 purple_banner rotation 5
7527 purple_banner rotation 6
7528 purple_banner rotation 7
7529 purple_banner rotation 8
7530 purple_banner rotation 9
7531 purple_banner rotation 10
7532 purple_banner rotation 11
7533 purple_banner rotation 12
7534 purple_banner rotation 13
7535 purple_banner rotation 14
7536 purple_banner rotation 15
7537 blue_banner rotation 0
7538 blue_banner rotation 1
7539 blue_banner rotation 2
7540 blue_banner rotation 3
7541 blue_banner rotation 4
7542 blue_banner rotation 5
7543 blue_banner rotation 6
7544 blue_banner rotation 7
7545 blue_banner rotation 8
7546 blue_banner rotation 9
7547 blue_banner rotation 10
7548 blue_banner rotation 11
7549 blue_banner rotation 12
7550 blue_banner rotation 13
7551 blue_banner rotation 14
7552 blue_banner rotation 15
7553 brown_banner rotation 0
7554 brown_banner rotation 1
7555 brown_banner rotation 2
7556 brown_banner rotation 3
7557 brown_banner rotation 4
7558 brown_banner rotation 5
7559 brown_banner rotation 6
7560 brown_banner rotation 7
7561 brown_banner rotation 8
7562 brown_banner rotation 9
7563 brown_banner rotation 10
7564 brown_banner rotation 11
7565 brown_banner rotation 12
7566 brown_banner rotation 13
7567 brown_banner rotation 14
7568 brown_banner rotation 15
7569 green_banner rotation 0
7570 green_banner rotation 1
7571 green_banner rotation 2
7572 green_banner rotation 3
7573 green_banner rotation 4
7574 green_banner rotation 5
7575 green_banner rotation 6
7576 green_banner rotation 7
7577 green_banner rotation 8
7578 green_banner rotation 9
7579 green_banner rotation 10
7580 green_banner rotation 11
7581 green_banner rotation 12
7582 green_banner rotation 13
7583 green_banner rotation 14
7584 green_banner rotation 15
7585 red_banner rotation 0
7586 red_banner rotation 1
7587 red_banner rotation 2
7588 red_banner rotation 3
7589 red_banner rotation 4
7590 red_banner rotation 5
7591 red_banner rotation 6
7592 red_banner rotation 7
7593 red_banner rotation 8
7594 red_banner rotation 9
7595 red_banner rotation 10
7596 red_banner rotation 11
7597 red_banner rotation 12
7598 red_banner rotation 13
7599 red_banner rotation 14
7600 red_banner rotation 15
7601 black_banner rotation 0
7602 black_banner rotation 1
7603 black_banner rotation 2
7604 black_banner rotation 3
7605 black_banner rotation 4
7606 black_banner rotation 5
7607 black_banner rotation 6
7608 black_banner rotation 7
7609 black_banner rotation 8
7610 black_banner rotation 9
7611 black_banner rotation 10
7612 black_banner rotation 11
7613 black_banner rotation 12
7614 black_banner rotation 13
7615 black_banner rotation 14
7616 black_banner rotation 15
7617 white_wall_banner facing north
7618 white_wall_banner facing south
7619 white_wall_banner facing west
7620 white_wall_banner facing east
7621 orange_wall_banner facing north
7622 orange_wall_banner facing south
7623 orange_wall_banner facing west
7624 orange_wall_banner facing east
7625 magenta_wall_banner facing north
7626 magenta_wall_banner facing south
7627 magenta_wall_banner facing west
7628 magenta_wall_banner facing east
7629 light_blue_wall_banner facing north
7630 light_blue_wall_banner facing south
7631 light_blue_wall_banner facing west
7632 light_blue_wall_banner facing east
7633 yellow_wall_banner facing north
7634 yellow_wall_banner facing south
7635 yellow_wall_banner facing west
7636 yellow_wall_banner facing east
7637 lime_wall_banner facing north
7638 lime_wall_banner facing south
7639 lime_wall_banner facing west
7640 lime_wall_banner facing east
7641 pink_wall_banner facing north
7642 pink_wall_banner facing south
7643 pink_wall_banner facing west
7644 pink_wall_banner facing east
7645 gray_wall_banner facing north
7646 gray_wall_banner facing south
7647 gray_wall_banner facing west
7648 gray_wall_banner facing east
7649 light_gray_wall_banner facing north
7650 light_gray_wall_banner facing south
7651 light_gray_wall_banner facing west
7652 light_gray_wall_banner facing east
7653 cyan_wall_banner facing north
7654 cyan_wall_banner facing south
7655 cyan_wall_banner facing west
7656 cyan_wall_banner facing east
7657 purple_wall_banner facing north
7658 purple_wall_banner facing south
7659 purple_wall_banner facing west
7660 purple_wall_banner facing east
7661 blue_wall_banner facing north
7662 blue_wall_banner facing south
7663 blue_wall_banner facing west
7664 blue_wall_banner facing east
7665 brown_wall_banner facing north
7666 brown_wall_banner facing south
7667 brown_wall_banner facing west
7668 brown_wall_banner facing east
7669 green_wall_banner facing north
7670 green_wall_banner facing south
7671 green_wall_banner facing west
7672 green_wall_banner facing east
7673 red_wall_banner facing north
7674 red_wall_banner facing south
7675 red_wall_banner facing west
7676 red_wall_banner facing east
7677 black_wall_banner facing north
7678 black_wall_banner facing south
7679 black_wall_banner facing west
7680 black_wall_banner facing east
7681 red_sandstone
7682 chiseled_red_sandstone
7683 cut_red_sandstone
7684 red_sandstone_stairs facing north waterlogged true shape straight half top
7685 red_sandstone_stairs facing north waterlogged false shape straight half top
7686 red_sandstone_stairs facing north waterlogged true shape inner_left half top
7687 red_sandstone_stairs facing north waterlogged false shape inner_left half top
7688 red_sandstone_stairs facing north waterlogged true shape inner_right half top
7689 red_sandstone_stairs facing north waterlogged false shape inner_right half top
7690 red_sandstone_stairs facing north waterlogged true shape outer_left half top
7691 red_sandstone_stairs facing north waterlogged false shape outer_left half top
7692 red_sandstone_stairs facing north waterlogged true shape outer_right half top
7693 red_sandstone_stairs facing north waterlogged false shape outer_right half top
7694 red_sandstone_stairs facing north waterlogged true shape straight half bottom
7695 red_sandstone_stairs facing north waterlogged false shape straight half bottom
7696 red_sandstone_stairs facing north waterlogged true shape inner_left half bottom
7697 red_sandstone_stairs facing north waterlogged false shape inner_left half bottom
7698 red_sandstone_stairs facing north waterlogged true shape inner_right half bottom
7699 red_sandstone_stairs facing north waterlogged false shape inner_right half bottom
7700 red_sandstone_stairs facing north waterlogged true shape outer_left half bottom
7701 red_sandstone_stairs facing north waterlogged false shape outer_left half bottom
7702 red_sandstone_stairs facing north waterlogged true shape outer_right half bottom
7703 red_sandstone_stairs facing north waterlogged false shape outer_right half bottom
7704 red_sandstone_stairs facing south waterlogged true shape straight half top
7705 red_sandstone_stairs facing south waterlogged false shape straight half top
7706 red_sandstone_stairs facing south waterlogged true shape inner_left half top
7707 red_sandstone_stairs facing south waterlogged false shape inner_left half top
7708 red_sandstone_stairs facing south waterlogged true shape inner_right half top
7709 red_sandstone_stairs facing south waterlogged false shape inner_right half top
7710 red_sandstone_stairs facing south waterlogged true shape outer_left half top
7711 red_sandstone_stairs facing south waterlogged false shape outer_left half top
7712 red_sandstone_stairs facing south waterlogged true shape outer_right half top
7713 red_sandstone_stairs facing south waterlogged false shape outer_right half top
7714 red_sandstone_stairs facing south waterlogged true shape straight half bottom
7715 red_sandstone_stairs facing south waterlogged false shape straight half bottom
7716 red_sandstone_stairs facing south waterlogged true shape inner_left half bottom
7717 red_sandstone_stairs facing south waterlogged false shape inner_left half bottom
7718 red_sandstone_stairs facing south waterlogged true shape inner_right half bottom
7719 red_sandstone_stairs facing south waterlogged false shape inner_right half bottom
7720 red_sandstone_stairs facing south waterlogged true shape outer_left half bottom
7721 red_sandstone_stairs facing south waterlogged false shape outer_left half bottom
7722 red_sandstone_stairs facing south waterlogged true shape outer_right half bottom
7723 red_sandstone_stairs facing south waterlogged false shape outer_right half bottom
7724 red_sandstone_stairs facing west waterlogged true shape straight half top
7725 red_sandstone_stairs facing west waterlogged false shape straight half top
7726 red_sandstone_stairs facing west waterlogged true shape inner_left half top
7727 red_sandstone_stairs facing west waterlogged false shape inner_left half top
7728 red_sandstone_stairs facing west waterlogged true shape inner_right half top
7729 red_sandstone_stairs facing west waterlogged false shape inner_right half top
7730 red_sandstone_stairs facing west waterlogged true shape outer_left half top
7731 red_sandstone_stairs facing west waterlogged false shape outer_left half top
7732 red_sandstone_stairs facing west waterlogged true shape outer_right half top
7733 red_sandstone_stairs facing west waterlogged false shape outer_right half top
7734 red_sandstone_stairs facing west waterlogged true shape straight half bottom
7735 red_sandstone_stairs facing west waterlogged false shape straight half bottom
7736 red_sandstone_stairs facing west waterlogged true shape inner_left half bottom
7737 red_sandstone_stairs facing west waterlogged false shape inner_left half bottom
7738 red_sandstone_stairs facing west waterlogged true shape inner_right half bottom
7739 red_sandstone_stairs facing west waterlogged false shape inner_right half bottom
7740 red_sandstone_stairs facing west waterlogged true shape outer_left half bottom
7741 red_sandstone_stairs facing west waterlogged false shape outer_left half bottom
7742 red_sandstone_stairs facing west waterlogged true shape outer_right half bottom
7743 red_sandstone_stairs facing west waterlogged false shape outer_right half bottom
7744 red_sandstone_stairs facing east waterlogged true shape straight half top
7745 red_sandstone_stairs facing east waterlogged false shape straight half top
7746 red_sandstone_stairs facing east waterlogged true shape inner_left half top
7747 red_sandstone_stairs facing east waterlogged false shape inner_left half top
7748 red_sandstone_stairs facing east waterlogged true shape inner_right half top
7749 red_sandstone_stairs facing east waterlogged false shape inner_right half top
7750 red_sandstone_stairs facing east waterlogged true shape outer_left half top
7751 red_sandstone_stairs facing east waterlogged false shape outer_left half top
7752 red_sandstone_stairs facing east waterlogged true shape outer_right half top
7753 red_sandstone_stairs facing east waterlogged false shape outer_right half top
7754 red_sandstone_stairs facing east waterlogged true shape straight half bottom
7755 red_sandstone_stairs facing east waterlogged false shape straight half bottom
7756 red_sandstone_stairs facing east waterlogged true shape inner_left half bottom
7757 red_sandstone_stairs facing east waterlogged false shape inner_left half bottom
7758 red_sandstone_stairs facing east waterlogged true shape inner_right half bottom
7759 red_sandstone_stairs facing east waterlogged false shape inner_right half bottom
7760 red_sandstone_stairs facing east waterlogged true shape outer_left half bottom
7761 red_sandstone_stairs facing east waterlogged false shape outer_left half bottom
7762 red_sandstone_stairs facing east waterlogged true shape outer_right half bottom
7763 red_sandstone_stairs facing east waterlogged false shape outer_right half bottom
7764 oak_slab type top waterlogged true
7765 oak_slab type top waterlogged false
7766 oak_slab type bottom waterlogged true
7767 oak_slab type bottom waterlogged false
7768 oak_slab type double waterlogged true
7769 oak_slab type double waterlogged false
7770 spruce_slab type top waterlogged true
7771 spruce_slab type top waterlogged false
7772 spruce_slab type bottom waterlogged true
7773 spruce_slab type bottom waterlogged false
7774 spruce_slab type double waterlogged true
7775 spruce_slab type double waterlogged false
7776 birch_slab type top waterlogged true
7777 birch_slab type top waterlogged false
7778 birch_slab type bottom waterlogged true
7779 birch_slab type bottom waterlogged false
7780 birch_slab type double waterlogged true
7781 birch_slab type double waterlogged false
7782 jungle_slab type top waterlogged true
7783 jungle_slab type top waterlogged false
7784 jungle_slab type bottom waterlogged true
7785 jungle_slab type bottom waterlogged false
7786 jungle_slab type double waterlogged true
7787 jungle_slab type double waterlogged false
7788 acacia_slab type top waterlogged true
7789 acacia_slab type top waterlogged false
7790 acacia_slab type bottom waterlogged true
7791 acacia_slab type bottom waterlogged false
7792 acacia_slab type double waterlogged true
7793 acacia_slab type double waterlogged false
7794 dark_oak_slab type top waterlogged true
7795 dark_oak_slab type top waterlogged false
7796 dark_oak_slab type bottom waterlogged true
7797 dark_oak_slab type bottom waterlogged false
7798 dark_oak_slab type double waterlogged true
7799 dark_oak_slab type double waterlogged false
7800 stone_slab type top waterlogged true
7801 stone_slab type top waterlogged false
7802 stone_slab type bottom waterlogged true
7803 stone_slab type bottom waterlogged false
7804 stone_slab type double waterlogged true
7805 stone_slab type double waterlogged false
7806 smooth_stone_slab type top waterlogged true
7807 smooth_stone_slab type top waterlogged false
7808 smooth_stone_slab type bottom waterlogged true
7809 smooth_stone_slab type bottom waterlogged false
7810 smooth_stone_slab type double waterlogged true
7811 smooth_stone_slab type double waterlogged false
7812 sandstone_slab type top waterlogged true
7813 sandstone_slab type top waterlogged false
7814 sandstone_slab type bottom waterlogged true
7815 sandstone_slab type bottom waterlogged false
7816 sandstone_slab type double waterlogged true
7817 sandstone_slab type double waterlogged false
7818 cut_sandstone_slab type top waterlogged true
7819 cut_sandstone_slab type top waterlogged false
7820 cut_sandstone_slab type bottom waterlogged true
7821 cut_sandstone_slab type bottom waterlogged false
7822 cut_sandstone_slab type double waterlogged true
7823 cut_sandstone_slab type double waterlogged false
7824 petrified_oak_slab type top waterlogged true
7825 petrified_oak_slab type top waterlogged false
7826 petrified_oak_slab type bottom waterlogged true
7827 petrified_oak_slab type bottom waterlogged false
7828 petrified_oak_slab type double waterlogged true
7829 petrified_oak_slab type double waterlogged false
7830 cobblestone_slab type top waterlogged true
7831 cobblestone_slab type top waterlogged false
7832 cobblestone_slab type bottom waterlogged true
7833 cobblestone_slab type bottom waterlogged false
7834 cobblestone_slab type double waterlogged true
7835 cobblestone_slab type double waterlogged false
7836 brick_slab type top waterlogged true
7837 brick_slab type top waterlogged false
7838 brick_slab type bottom waterlogged true
7839 brick_slab type bottom waterlogged false
7840 brick_slab type double waterlogged true
7841 brick_slab type double waterlogged false
7842 stone_brick_slab type top waterlogged true
7843 stone_brick_slab type top waterlogged false
7844 stone_brick_slab type bottom waterlogged true
7845 stone_brick_slab type bottom waterlogged false
7846 stone_brick_slab type double waterlogged true
7847 stone_brick_slab type double waterlogged false
7848 nether_brick_slab type top waterlogged true
7849 nether_brick_slab type top waterlogged false
7850 nether_brick_slab type bottom waterlogged true
7851 nether_brick_slab type bottom waterlogged false
7852 nether_brick_slab type double waterlogged true
7853 nether_brick_slab type double waterlogged false
7854 quartz_slab type top waterlogged true
7855 quartz_slab type top waterlogged false
7856 quartz_slab type bottom waterlogged true
7857 quartz_slab type bottom waterlogged false
7858 quartz_slab type double waterlogged true
7859 quartz_slab type double waterlogged false
7860 red_sandstone_slab type top waterlogged true
7861 red_sandstone_slab type top waterlogged false
7862 red_sandstone_slab type bottom waterlogged true
7863 red_sandstone_slab type bottom waterlogged false
7864 red_sandstone_slab type double waterlogged true
7865 red_sandstone_slab type double waterlogged false
7866 cut_red_sandstone_slab type top waterlogged true
7867 cut_red_sandstone_slab type top waterlogged false
7868 cut_red_sandstone_slab type bottom waterlogged true
7869 cut_red_sandstone_slab type bottom waterlogged false
7870 cut_red_sandstone_slab type double waterlogged true
7871 cut_red_sandstone_slab type double waterlogged false
7872 purpur_slab type top waterlogged true
7873 purpur_slab type top waterlogged false
7874 purpur_slab type bottom waterlogged true
7875 purpur_slab type bottom waterlogged false
7876 purpur_slab type double waterlogged true
7877 purpur_slab type double waterlogged false
7878 smooth_stone
7879 smooth_sandstone
7880 smooth_quartz
7881 smooth_red_sandstone
7882 spruce_fence_gate facing north powered true open true in_wall true
7883 spruce_fence_gate facing north powered false open true in_wall true
7884 spruce_fence_gate facing north powered true open false in_wall true
7885 spruce_fence_gate facing north powered false open false in_wall true
7886 spruce_fence_gate facing north powered true open true in_wall false
7887 spruce_fence_gate facing north powered false open true in_wall false
7888 spruce_fence_gate facing north powered true open false in_wall false
7889 spruce_fence_gate facing north powered false open false in_wall false
7890 spruce_fence_gate facing south powered true open true in_wall true
7891 spruce_fence_gate facing south powered false open true in_wall true
7892 spruce_fence_gate facing south powered true open false in_wall true
7893 spruce_fence_gate facing south powered false open false in_wall true
7894 spruce_fence_gate facing south powered true open true in_wall false
7895 spruce_fence_gate facing south powered false open true in_wall false
7896 spruce_fence_gate facing south powered true open false in_wall false
7897 spruce_fence_gate facing south powered false open false in_wall false
7898 spruce_fence_gate facing west powered true open true in_wall true
7899 spruce_fence_gate facing west powered false open true in_wall true
7900 spruce_fence_gate facing west powered true open false in_wall true
7901 spruce_fence_gate facing west powered false open false in_wall true
7902 spruce_fence_gate facing west powered true open true in_wall false
7903 spruce_fence_gate facing west powered false open true in_wall false
7904 spruce_fence_gate facing west powered true open false in_wall false
7905 spruce_fence_gate facing west powered false open false in_wall false
7906 spruce_fence_gate facing east powered true open true in_wall true
7907 spruce_fence_gate facing east powered false open true in_wall true
7908 spruce_fence_gate facing east powered true open false in_wall true
7909 spruce_fence_gate facing east powered false open false in_wall true
7910 spruce_fence_gate facing east powered true open true in_wall false
7911 spruce_fence_gate facing east powered false open true in_wall false
7912 spruce_fence_gate facing east powered true open false in_wall false
7913 spruce_fence_gate facing east powered false open false in_wall false
7914 birch_fence_gate facing north powered true open true in_wall true
7915 birch_fence_gate facing north powered false open true in_wall true
7916 birch_fence_gate facing north powered true open false in_wall true
7917 birch_fence_gate facing north powered false open false in_wall true
7918 birch_fence_gate facing north powered true open true in_wall false
7919 birch_fence_gate facing north powered false open true in_wall false
7920 birch_fence_gate facing north powered true open false in_wall false
7921 birch_fence_gate facing north powered false open false in_wall false
7922 birch_fence_gate facing south powered true open true in_wall true
7923 birch_fence_gate facing south powered false open true in_wall true
7924 birch_fence_gate facing south powered true open false in_wall true
7925 birch_fence_gate facing south powered false open false in_wall true
7926 birch_fence_gate facing south powered true open true in_wall false
7927 birch_fence_gate facing south powered false open true in_wall false
7928 birch_fence_gate facing south powered true open false in_wall false
7929 birch_fence_gate facing south powered false open false in_wall false
7930 birch_fence_gate facing west powered true open true in_wall true
7931 birch_fence_gate facing west powered false open true in_wall true
7932 birch_fence_gate facing west powered true open false in_wall true
7933 birch_fence_gate facing west powered false open false in_wall true
7934 birch_fence_gate facing west powered true open true in_wall false
7935 birch_fence_gate facing west powered false open true in_wall false
7936 birch_fence_gate facing west powered true open false in_wall false
7937 birch_fence_gate facing west powered false open false in_wall false
7938 birch_fence_gate facing east powered true open true in_wall true
7939 birch_fence_gate facing east powered false open true in_wall true
7940 birch_fence_gate facing east powered true open false in_wall true
7941 birch_fence_gate facing east powered false open false in_wall true
7942 birch_fence_gate facing east powered true open true in_wall false
7943 birch_fence_gate facing east powered false open true in_wall false
7944 birch_fence_gate facing east powered true open false in_wall false
7945 birch_fence_gate facing east powered false open false in_wall false
7946 jungle_fence_gate facing north powered true open true in_wall true
7947 jungle_fence_gate facing north powered false open true in_wall true
7948 jungle_fence_gate facing north powered true open false in_wall true
7949 jungle_fence_gate facing north powered false open false in_wall true
7950 jungle_fence_gate facing north powered true open true in_wall false
7951 jungle_fence_gate facing north powered false open true in_wall false
7952 jungle_fence_gate facing north powered true open false in_wall false
7953 jungle_fence_gate facing north powered false open false in_wall false
7954 jungle_fence_gate facing south powered true open true in_wall true
7955 jungle_fence_gate facing south powered false open true in_wall true
7956 jungle_fence_gate facing south powered true open false in_wall true
7957 jungle_fence_gate facing south powered false open false in_wall true
7958 jungle_fence_gate facing south powered true open true in_wall false
7959 jungle_fence_gate facing south powered false open true in_wall false
7960 jungle_fence_gate facing south powered true open false in_wall false
7961 jungle_fence_gate facing south powered false open false in_wall false
7962 jungle_fence_gate facing west powered true open true in_wall true
7963 jungle_fence_gate facing west powered false open true in_wall true
7964 jungle_fence_gate facing west powered true open false in_wall true
7965 jungle_fence_gate facing west powered false open false in_wall true
7966 jungle_fence_gate facing west powered true open true in_wall false
7967 jungle_fence_gate facing west powered false open true in_wall false
7968 jungle_fence_gate facing west powered true open false in_wall false
7969 jungle_fence_gate facing west powered false open false in_wall false
7970 jungle_fence_gate facing east powered true open true in_wall true
7971 jungle_fence_gate facing east powered false open true in_wall true
7972 jungle_fence_gate facing east powered true open false in_wall true
7973 jungle_fence_gate facing east powered false open false in_wall true
7974 jungle_fence_gate facing east powered true open true in_wall false
7975 jungle_fence_gate facing east powered false open true in_wall false
7976 jungle_fence_gate facing east powered true open false in_wall false
7977 jungle_fence_gate facing east powered false open false in_wall false
7978 acacia_fence_gate facing north powered true open true in_wall true
7979 acacia_fence_gate facing north powered false open true in_wall true
7980 acacia_fence_gate facing north powered true open false in_wall true
7981 acacia_fence_gate facing north powered false open false in_wall true
7982 acacia_fence_gate facing north powered true open true in_wall false
7983 acacia_fence_gate facing north powered false open true in_wall false
7984 acacia_fence_gate facing north powered true open false in_wall false
7985 acacia_fence_gate facing north powered false open false in_wall false
7986 acacia_fence_gate facing south powered true open true in_wall true
7987 acacia_fence_gate facing south powered false open true in_wall true
7988 acacia_fence_gate facing south powered true open false in_wall true
7989 acacia_fence_gate facing south powered false open false in_wall true
7990 acacia_fence_gate facing south powered true open true in_wall false
7991 acacia_fence_gate facing south powered false open true in_wall false
7992 acacia_fence_gate facing south powered true open false in_wall false
7993 acacia_fence_gate facing south powered false open false in_wall false
7994 acacia_fence_gate facing west powered true open true in_wall true
7995 acacia_fence_gate facing west powered false open true in_wall true
7996 acacia_fence_gate facing west powered true open false in_wall true
7997 acacia_fence_gate facing west powered false open false in_wall true
7998 acacia_fence_gate facing west powered true open true in_wall false
7999 acacia_fence_gate facing west powered false open true in_wall false
8000 acacia_fence_gate facing west powered true open false in_wall false
8001 acacia_fence_gate facing west powered false open false in_wall false
8002 acacia_fence_gate facing east powered true open true in_wall true
8003 acacia_fence_gate facing east powered false open true in_wall true
8004 acacia_fence_gate facing east powered true open false in_wall true
8005 acacia_fence_gate facing east powered false open false in_wall true
8006 acacia_fence_gate facing east powered true open true in_wall false
8007 acacia_fence_gate facing east powered false open true in_wall false
8008 acacia_fence_gate facing east powered true open false in_wall false
8009 acacia_fence_gate facing east powered false open false in_wall false
8010 dark_oak_fence_gate facing north powered true open true in_wall true
8011 dark_oak_fence_gate facing north powered false open true in_wall true
8012 dark_oak_fence_gate facing north powered true open false in_wall true
8013 dark_oak_fence_gate facing north powered false open false in_wall true
8014 dark_oak_fence_gate facing north powered true open true in_wall false
8015 dark_oak_fence_gate facing north powered false open true in_wall false
8016 dark_oak_fence_gate facing north powered true open false in_wall false
8017 dark_oak_fence_gate facing north powered false open false in_wall false
8018 dark_oak_fence_gate facing south powered true open true in_wall true
8019 dark_oak_fence_gate facing south powered false open true in_wall true
8020 dark_oak_fence_gate facing south powered true open false in_wall true
8021 dark_oak_fence_gate facing south powered false open false in_wall true
8022 dark_oak_fence_gate facing south powered true open true in_wall false
8023 dark_oak_fence_gate facing south powered false open true in_wall false
8024 dark_oak_fence_gate facing south powered true open false in_wall false
8025 dark_oak_fence_gate facing south powered false open false in_wall false
8026 dark_oak_fence_gate facing west powered true open true in_wall true
8027 dark_oak_fence_gate facing west powered false open true in_wall true
8028 dark_oak_fence_gate facing west powered true open false in_wall true
8029 dark_oak_fence_gate facing west powered false open false in_wall true
8030 dark_oak_fence_gate facing west powered true open true in_wall false
8031 dark_oak_fence_gate facing west powered false open true in_wall false
8032 dark_oak_fence_gate facing west powered true open false in_wall false
8033 dark_oak_fence_gate facing west powered false open false in_wall false
8034 dark_oak_fence_gate facing east powered true open true in_wall true
8035 dark_oak_fence_gate facing east powered false open true in_wall true
8036 dark_oak_fence_gate facing east powered true open false in_wall true
8037 dark_oak_fence_gate facing east powered false open false in_wall true
8038 dark_oak_fence_gate facing east powered true open true in_wall false
8039 dark_oak_fence_gate facing east powered false open true in_wall false
8040 dark_oak_fence_gate facing east powered true open false in_wall false
8041 dark_oak_fence_gate facing east powered false open false in_wall false
8042 spruce_fence waterlogged true south true east true north true west true
8043 spruce_fence waterlogged true south true east true north true west false
8044 spruce_fence waterlogged false south true east true north true west true
8045 spruce_fence waterlogged false south true east true north true west false
8046 spruce_fence waterlogged true south false east true north true west true
8047 spruce_fence waterlogged true south false east true north true west false
8048 spruce_fence waterlogged false south false east true north true west true
8049 spruce_fence waterlogged false south false east true north true west false
8050 spruce_fence waterlogged true south true east true north false west true
8051 spruce_fence waterlogged true south true east true north false west false
8052 spruce_fence waterlogged false south true east true north false west true
8053 spruce_fence waterlogged false south true east true north false west false
8054 spruce_fence waterlogged true south false east true north false west true
8055 spruce_fence waterlogged true south false east true north false west false
8056 spruce_fence waterlogged false south false east true north false west true
8057 spruce_fence waterlogged false south false east true north false west false
8058 spruce_fence waterlogged true south true east false north true west true
8059 spruce_fence waterlogged true south true east false north true west false
8060 spruce_fence waterlogged false south true east false north true west true
8061 spruce_fence waterlogged false south true east false north true west false
8062 spruce_fence waterlogged true south false east false north true west true
8063 spruce_fence waterlogged true south false east false north true west false
8064 spruce_fence waterlogged false south false east false north true west true
8065 spruce_fence waterlogged false south false east false north true west false
8066 spruce_fence waterlogged true south true east false north false west true
8067 spruce_fence waterlogged true south true east false north false west false
8068 spruce_fence waterlogged false south true east false north false west true
8069 spruce_fence waterlogged false south true east false north false west false
8070 spruce_fence waterlogged true south false east false north false west true
8071 spruce_fence waterlogged true south false east false north false west false
8072 spruce_fence waterlogged false south false east false north false west true
8073 spruce_fence waterlogged false south false east false north false west false
8074 birch_fence waterlogged true south true east true north true west true
8075 birch_fence waterlogged true south true east true north true west false
8076 birch_fence waterlogged false south true east true north true west true
8077 birch_fence waterlogged false south true east true north true west false
8078 birch_fence waterlogged true south false east true north true west true
8079 birch_fence waterlogged true south false east true north true west false
8080 birch_fence waterlogged false south false east true north true west true
8081 birch_fence waterlogged false south false east true north true west false
8082 birch_fence waterlogged true south true east true north false west true
8083 birch_fence waterlogged true south true east true north false west false
8084 birch_fence waterlogged false south true east true north false west true
8085 birch_fence waterlogged false south true east true north false west false
8086 birch_fence waterlogged true south false east true north false west true
8087 birch_fence waterlogged true south false east true north false west false
8088 birch_fence waterlogged false south false east true north false west true
8089 birch_fence waterlogged false south false east true north false west false
8090 birch_fence waterlogged true south true east false north true west true
8091 birch_fence waterlogged true south true east false north true west false
8092 birch_fence waterlogged false south true east false north true west true
8093 birch_fence waterlogged false south true east false north true west false
8094 birch_fence waterlogged true south false east false north true west true
8095 birch_fence waterlogged true south false east false north true west false
8096 birch_fence waterlogged false south false east false north true west true
8097 birch_fence waterlogged false south false east false north true west false
8098 birch_fence waterlogged true south true east false north false west true
8099 birch_fence waterlogged true south true east false north false west false
8100 birch_fence waterlogged false south true east false north false west true
8101 birch_fence waterlogged false south true east false north false west false
8102 birch_fence waterlogged true south false east false north false west true
8103 birch_fence waterlogged true south false east false north false west false
8104 birch_fence waterlogged false south false east false north false west true
8105 birch_fence waterlogged false south false east false north false west false
8106 jungle_fence waterlogged true south true east true north true west true
8107 jungle_fence waterlogged true south true east true north true west false
8108 jungle_fence waterlogged false south true east true north true west true
8109 jungle_fence waterlogged false south true east true north true west false
8110 jungle_fence waterlogged true south false east true north true west true
8111 jungle_fence waterlogged true south false east true north true west false
8112 jungle_fence waterlogged false south false east true north true west true
8113 jungle_fence waterlogged false south false east true north true west false
8114 jungle_fence waterlogged true south true east true north false west true
8115 jungle_fence waterlogged true south true east true north false west false
8116 jungle_fence waterlogged false south true east true north false west true
8117 jungle_fence waterlogged false south true east true north false west false
8118 jungle_fence waterlogged true south false east true north false west true
8119 jungle_fence waterlogged true south false east true north false west false
8120 jungle_fence waterlogged false south false east true north false west true
8121 jungle_fence waterlogged false south false east true north false west false
8122 jungle_fence waterlogged true south true east false north true west true
8123 jungle_fence waterlogged true south true east false north true west false
8124 jungle_fence waterlogged false south true east false north true west true
8125 jungle_fence waterlogged false south true east false north true west false
8126 jungle_fence waterlogged true south false east false north true west true
8127 jungle_fence waterlogged true south false east false north true west false
8128 jungle_fence waterlogged false south false east false north true west true
8129 jungle_fence waterlogged false south false east false north true west false
8130 jungle_fence waterlogged true south true east false north false west true
8131 jungle_fence waterlogged true south true east false north false west false
8132 jungle_fence waterlogged false south true east false north false west true
8133 jungle_fence waterlogged false south true east false north false west false
8134 jungle_fence waterlogged true south false east false north false west true
8135 jungle_fence waterlogged true south false east false north false west false
8136 jungle_fence waterlogged false south false east false north false west true
8137 jungle_fence waterlogged false south false east false north false west false
8138 acacia_fence waterlogged true south true east true north true west true
8139 acacia_fence waterlogged true south true east true north true west false
8140 acacia_fence waterlogged false south true east true north true west true
8141 acacia_fence waterlogged false south true east true north true west false
8142 acacia_fence waterlogged true south false east true north true west true
8143 acacia_fence waterlogged true south false east true north true west false
8144 acacia_fence waterlogged false south false east true north true west true
8145 acacia_fence waterlogged false south false east true north true west false
8146 acacia_fence waterlogged true south true east true north false west true
8147 acacia_fence waterlogged true south true east true north false west false
8148 acacia_fence waterlogged false south true east true north false west true
8149 acacia_fence waterlogged false south true east true north false west false
8150 acacia_fence waterlogged true south false east true north false west true
8151 acacia_fence waterlogged true south false east true north false west false
8152 acacia_fence waterlogged false south false east true north false west true
8153 acacia_fence waterlogged false south false east true north false west false
8154 acacia_fence waterlogged true south true east false north true west true
8155 acacia_fence waterlogged true south true east false north true west false
8156 acacia_fence waterlogged false south true east false north true west true
8157 acacia_fence waterlogged false south true east false north true west false
8158 acacia_fence waterlogged true south false east false north true west true
8159 acacia_fence waterlogged true south false east false north true west false
8160 acacia_fence waterlogged false south false east false north true west true
8161 acacia_fence waterlogged false south false east false north true west false
8162 acacia_fence waterlogged true south true east false north false west true
8163 acacia_fence waterlogged true south true east false north false west false
8164 acacia_fence waterlogged false south true east false north false west true
8165 acacia_fence waterlogged false south true east false north false west false
8166 acacia_fence waterlogged true south false east false north false west true
8167 acacia_fence waterlogged true south false east false north false west false
8168 acacia_fence waterlogged false south false east false north false west true
8169 acacia_fence waterlogged false south false east false north false west false
8170 dark_oak_fence waterlogged true south true east true north true west true
8171 dark_oak_fence waterlogged true south true east true north true west false
8172 dark_oak_fence waterlogged false south true east true north true west true
8173 dark_oak_fence waterlogged false south true east true north true west false
8174 dark_oak_fence waterlogged true south false east true north true west true
8175 dark_oak_fence waterlogged true south false east true north true west false
8176 dark_oak_fence waterlogged false south false east true north true west true
8177 dark_oak_fence waterlogged false south false east true north true west false
8178 dark_oak_fence waterlogged true south true east true north false west true
8179 dark_oak_fence waterlogged true south true east true north false west false
8180 dark_oak_fence waterlogged false south true east true north false west true
8181 dark_oak_fence waterlogged false south true east true north false west false
8182 dark_oak_fence waterlogged true south false east true north false west true
8183 dark_oak_fence waterlogged true south false east true north false west false
8184 dark_oak_fence waterlogged false south false east true north false west true
8185 dark_oak_fence waterlogged false south false east true north false west false
8186 dark_oak_fence waterlogged true south true east false north true west true
8187 dark_oak_fence waterlogged true south true east false north true west false
8188 dark_oak_fence waterlogged false south true east false north true west true
8189 dark_oak_fence waterlogged false south true east false north true west false
8190 dark_oak_fence waterlogged true south false east false north true west true
8191 dark_oak_fence waterlogged true south false east false north true west false
8192 dark_oak_fence waterlogged false south false east false north true west true
8193 dark_oak_fence waterlogged false south false east false north true west false
8194 dark_oak_fence waterlogged true south true east false north false west true
8195 dark_oak_fence waterlogged true south true east false north false west false
8196 dark_oak_fence waterlogged false south true east false north false west true
8197 dark_oak_fence waterlogged false south true east false north false west false
8198 dark_oak_fence waterlogged true south false east false north false west true
8199 dark_oak_fence waterlogged true south false east false north false west false
8200 dark_oak_fence waterlogged false south false east false north false west true
8201 dark_oak_fence waterlogged false south false east false north false west false
8202 spruce_door hinge left half upper facing north powered true open true
8203 spruce_door hinge left half upper facing north powered false open true
8204 spruce_door hinge left half upper facing north powered true open false
8205 spruce_door hinge left half upper facing north powered false open false
8206 spruce_door hinge right half upper facing north powered true open true
8207 spruce_door hinge right half upper facing north powered false open true
8208 spruce_door hinge right half upper facing north powered true open false
8209 spruce_door hinge right half upper facing north powered false open false
8210 spruce_door hinge left half lower facing north powered true open true
8211 spruce_door hinge left half lower facing north powered false open true
8212 spruce_door hinge left half lower facing north powered true open false
8213 spruce_door hinge left half lower facing north powered false open false
8214 spruce_door hinge right half lower facing north powered true open true
8215 spruce_door hinge right half lower facing north powered false open true
8216 spruce_door hinge right half lower facing north powered true open false
8217 spruce_door hinge right half lower facing north powered false open false
8218 spruce_door hinge left half upper facing south powered true open true
8219 spruce_door hinge left half upper facing south powered false open true
8220 spruce_door hinge left half upper facing south powered true open false
8221 spruce_door hinge left half upper facing south powered false open false
8222 spruce_door hinge right half upper facing south powered true open true
8223 spruce_door hinge right half upper facing south powered false open true
8224 spruce_door hinge right half upper facing south powered true open false
8225 spruce_door hinge right half upper facing south powered false open false
8226 spruce_door hinge left half lower facing south powered true open true
8227 spruce_door hinge left half lower facing south powered false open true
8228 spruce_door hinge left half lower facing south powered true open false
8229 spruce_door hinge left half lower facing south powered false open false
8230 spruce_door hinge right half lower facing south powered true open true
8231 spruce_door hinge right half lower facing south powered false open true
8232 spruce_door hinge right half lower facing south powered true open false
8233 spruce_door hinge right half lower facing south powered false open false
8234 spruce_door hinge left half upper facing west powered true open true
8235 spruce_door hinge left half upper facing west powered false open true
8236 spruce_door hinge left half upper facing west powered true open false
8237 spruce_door hinge left half upper facing west powered false open false
8238 spruce_door hinge right half upper facing west powered true open true
8239 spruce_door hinge right half upper facing west powered false open true
8240 spruce_door hinge right half upper facing west powered true open false
8241 spruce_door hinge right half upper facing west powered false open false
8242 spruce_door hinge left half lower facing west powered true open true
8243 spruce_door hinge left half lower facing west powered false open true
8244 spruce_door hinge left half lower facing west powered true open false
8245 spruce_door hinge left half lower facing west powered false open false
8246 spruce_door hinge right half lower facing west powered true open true
8247 spruce_door hinge right half lower facing west powered false open true
8248 spruce_door hinge right half lower facing west powered true open false
8249 spruce_door hinge right half lower facing west powered false open false
8250 spruce_door hinge left half upper facing east powered true open true
8251 spruce_door hinge left half upper facing east powered false open true
8252 spruce_door hinge left half upper facing east powered true open false
8253 spruce_door hinge left half upper facing east powered false open false
8254 spruce_door hinge right half upper facing east powered true open true
8255 spruce_door hinge right half upper facing east powered false open true
8256 spruce_door hinge right half upper facing east powered true open false
8257 spruce_door hinge right half upper facing east powered false open false
8258 spruce_door hinge left half lower facing east powered true open true
8259 spruce_door hinge left half lower facing east powered false open true
8260 spruce_door hinge left half lower facing east powered true open false
8261 spruce_door hinge left half lower facing east powered false open false
8262 spruce_door hinge right half lower facing east powered true open true
8263 spruce_door hinge right half lower facing east powered false open true
8264 spruce_door hinge right half lower facing east powered true open false
8265 spruce_door hinge right half lower facing east powered false open false
8266 birch_door hinge left half upper facing north powered true open true
8267 birch_door hinge left half upper facing north powered false open true
8268 birch_door hinge left half upper facing north powered true open false
8269 birch_door hinge left half upper facing north powered false open false
8270 birch_door hinge right half upper facing north powered true open true
8271 birch_door hinge right half upper facing north powered false open true
8272 birch_door hinge right half upper facing north powered true open false
8273 birch_door hinge right half upper facing north powered false open false
8274 birch_door hinge left half lower facing north powered true open true
8275 birch_door hinge left half lower facing north powered false open true
8276 birch_door hinge left half lower facing north powered true open false
8277 birch_door hinge left half lower facing north powered false open false
8278 birch_door hinge right half lower facing north powered true open true
8279 birch_door hinge right half lower facing north powered false open true
8280 birch_door hinge right half lower facing north powered true open false
8281 birch_door hinge right half lower facing north powered false open false
8282 birch_door hinge left half upper facing south powered true open true
8283 birch_door hinge left half upper facing south powered false open true
8284 birch_door hinge left half upper facing south powered true open false
8285 birch_door hinge left half upper facing south powered false open false
8286 birch_door hinge right half upper facing south powered true open true
8287 birch_door hinge right half upper facing south powered false open true
8288 birch_door hinge right half upper facing south powered true open false
8289 birch_door hinge right half upper facing south powered false open false
8290 birch_door hinge left half lower facing south powered true open true
8291 birch_door hinge left half lower facing south powered false open true
8292 birch_door hinge left half lower facing south powered true open false
8293 birch_door hinge left half lower facing south powered false open false
8294 birch_door hinge right half lower facing south powered true open true
8295 birch_door hinge right half lower facing south powered false open true
8296 birch_door hinge right half lower facing south powered true open false
8297 birch_door hinge right half lower facing south powered false open false
8298 birch_door hinge left half upper facing west powered true open true
8299 birch_door hinge left half upper facing west powered false open true
8300 birch_door hinge left half upper facing west powered true open false
8301 birch_door hinge left half upper facing west powered false open false
8302 birch_door hinge right half upper facing west powered true open true
8303 birch_door hinge right half upper facing west powered false open true
8304 birch_door hinge right half upper facing west powered true open false
8305 birch_door hinge right half upper facing west powered false open false
8306 birch_door hinge left half lower facing west powered true open true
8307 birch_door hinge left half lower facing west powered false open true
8308 birch_door hinge left half lower facing west powered true open false
8309 birch_door hinge left half lower facing west powered false open false
8310 birch_door hinge right half lower facing west powered true open true
8311 birch_door hinge right half lower facing west powered false open true
8312 birch_door hinge right half lower facing west powered true open false
8313 birch_door hinge right half lower facing west powered false open false
8314 birch_door hinge left half upper facing east powered true open true
8315 birch_door hinge left half upper facing east powered false open true
8316 birch_door hinge left half upper facing east powered true open false
8317 birch_door hinge left half upper facing east powered false open false
8318 birch_door hinge right half upper facing east powered true open true
8319 birch_door hinge right half upper facing east powered false open true
8320 birch_door hinge right half upper facing east powered true open false
8321 birch_door hinge right half upper facing east powered false open false
8322 birch_door hinge left half lower facing east powered true open true
8323 birch_door hinge left half lower facing east powered false open true
8324 birch_door hinge left half lower facing east powered true open false
8325 birch_door hinge left half lower facing east powered false open false
8326 birch_door hinge right half lower facing east powered true open true
8327 birch_door hinge right half lower facing east powered false open true
8328 birch_door hinge right half lower facing east powered true open false
8329 birch_door hinge right half lower facing east powered false open false
8330 jungle_door hinge left half upper facing north powered true open true
8331 jungle_door hinge left half upper facing north powered false open true
8332 jungle_door hinge left half upper facing north powered true open false
8333 jungle_door hinge left half upper facing north powered false open false
8334 jungle_door hinge right half upper facing north powered true open true
8335 jungle_door hinge right half upper facing north powered false open true
8336 jungle_door hinge right half upper facing north powered true open false
8337 jungle_door hinge right half upper facing north powered false open false
8338 jungle_door hinge left half lower facing north powered true open true
8339 jungle_door hinge left half lower facing north powered false open true
8340 jungle_door hinge left half lower facing north powered true open false
8341 jungle_door hinge left half lower facing north powered false open false
8342 jungle_door hinge right half lower facing north powered true open true
8343 jungle_door hinge right half lower facing north powered false open true
8344 jungle_door hinge right half lower facing north powered true open false
8345 jungle_door hinge right half lower facing north powered false open false
8346 jungle_door hinge left half upper facing south powered true open true
8347 jungle_door hinge left half upper facing south powered false open true
8348 jungle_door hinge left half upper facing south powered true open false
8349 jungle_door hinge left half upper facing south powered false open false
8350 jungle_door hinge right half upper facing south powered true open true
8351 jungle_door hinge right half upper facing south powered false open true
8352 jungle_door hinge right half upper facing south powered true open false
8353 jungle_door hinge right half upper facing south powered false open false
8354 jungle_door hinge left half lower facing south powered true open true
8355 jungle_door hinge left half lower facing south powered false open true
8356 jungle_door hinge left half lower facing south powered true open false
8357 jungle_door hinge left half lower facing south powered false open false
8358 jungle_door hinge right half lower facing south powered true open true
8359 jungle_door hinge right half lower facing south powered false open true
8360 jungle_door hinge right half lower facing south powered true open false
8361 jungle_door hinge right half lower facing south powered false open false
8362 jungle_door hinge left half upper facing west powered true open true
8363 jungle_door hinge left half upper facing west powered false open true
8364 jungle_door hinge left half upper facing west powered true open false
8365 jungle_door hinge left half upper facing west powered false open false
8366 jungle_door hinge right half upper facing west powered true open true
8367 jungle_door hinge right half upper facing west powered false open true
8368 jungle_door hinge right half upper facing west powered true open false
8369 jungle_door hinge right half upper facing west powered false open false
8370 jungle_door hinge left half lower facing west powered true open true
8371 jungle_door hinge left half lower facing west powered false open true
8372 jungle_door hinge left half lower facing west powered true open false
8373 jungle_door hinge left half lower facing west powered false open false
8374 jungle_door hinge right half lower facing west powered true open true
8375 jungle_door hinge right half lower facing west powered false open true
8376 jungle_door hinge right half lower facing west powered true open false
8377 jungle_door hinge right half lower facing west powered false open false
8378 jungle_door hinge left half upper facing east powered true open true
8379 jungle_door hinge left half upper facing east powered false open true
8380 jungle_door hinge left half upper facing east powered true open false
8381 jungle_door hinge left half upper facing east powered false open false
8382 jungle_door hinge right half upper facing east powered true open true
8383 jungle_door hinge right half upper facing east powered false open true
8384 jungle_door hinge right half upper facing east powered true open false
8385 jungle_door hinge right half upper facing east powered false open false
8386 jungle_door hinge left half lower facing east powered true open true
8387 jungle_door hinge left half lower facing east powered false open true
8388 jungle_door hinge left half lower facing east powered true open false
8389 jungle_door hinge left half lower facing east powered false open false
8390 jungle_door hinge right half lower facing east powered true open true
8391 jungle_door hinge right half lower facing east powered false open true
8392 jungle_door hinge right half lower facing east powered true open false
8393 jungle_door hinge right half lower facing east powered false open false
8394 acacia_door hinge left half upper facing north powered true open true
8395 acacia_door hinge left half upper facing north powered false open true
8396 acacia_door hinge left half upper facing north powered true open false
8397 acacia_door hinge left half upper facing north powered false open false
8398 acacia_door hinge right half upper facing north powered true open true
8399 acacia_door hinge right half upper facing north powered false open true
8400 acacia_door hinge right half upper facing north powered true open false
8401 acacia_door hinge right half upper facing north powered false open false
8402 acacia_door hinge left half lower facing north powered true open true
8403 acacia_door hinge left half lower facing north powered false open true
8404 acacia_door hinge left half lower facing north powered true open false
8405 acacia_door hinge left half lower facing north powered false open false
8406 acacia_door hinge right half lower facing north powered true open true
8407 acacia_door hinge right half lower facing north powered false open true
8408 acacia_door hinge right half lower facing north powered true open false
8409 acacia_door hinge right half lower facing north powered false open false
8410 acacia_door hinge left half upper facing south powered true open true
8411 acacia_door hinge left half upper facing south powered false open true
8412 acacia_door hinge left half upper facing south powered true open false
8413 acacia_door hinge left half upper facing south powered false open false
8414 acacia_door hinge right half upper facing south powered true open true
8415 acacia_door hinge right half upper facing south powered false open true
8416 acacia_door hinge right half upper facing south powered true open false
8417 acacia_door hinge right half upper facing south powered false open false
8418 acacia_door hinge left half lower facing south powered true open true
8419 acacia_door hinge left half lower facing south powered false open true
8420 acacia_door hinge left half lower facing south powered true open false
8421 acacia_door hinge left half lower facing south powered false open false
8422 acacia_door hinge right half lower facing south powered true open true
8423 acacia_door hinge right half lower facing south powered false open true
8424 acacia_door hinge right half lower facing south powered true open false
8425 acacia_door hinge right half lower facing south powered false open false
8426 acacia_door hinge left half upper facing west powered true open true
8427 acacia_door hinge left half upper facing west powered false open true
8428 acacia_door hinge left half upper facing west powered true open false
8429 acacia_door hinge left half upper facing west powered false open false
8430 acacia_door hinge right half upper facing west powered true open true
8431 acacia_door hinge right half upper facing west powered false open true
8432 acacia_door hinge right half upper facing west powered true open false
8433 acacia_door hinge right half upper facing west powered false open false
8434 acacia_door hinge left half lower facing west powered true open true
8435 acacia_door hinge left half lower facing west powered false open true
8436 acacia_door hinge left half lower facing west powered true open false
8437 acacia_door hinge left half lower facing west powered false open false
8438 acacia_door hinge right half lower facing west powered true open true
8439 acacia_door hinge right half lower facing west powered false open true
8440 acacia_door hinge right half lower facing west powered true open false
8441 acacia_door hinge right half lower facing west powered false open false
8442 acacia_door hinge left half upper facing east powered true open true
8443 acacia_door hinge left half upper facing east powered false open true
8444 acacia_door hinge left half upper facing east powered true open false
8445 acacia_door hinge left half upper facing east powered false open false
8446 acacia_door hinge right half upper facing east powered true open true
8447 acacia_door hinge right half upper facing east powered false open true
8448 acacia_door hinge right half upper facing east powered true open false
8449 acacia_door hinge right half upper facing east powered false open false
8450 acacia_door hinge left half lower facing east powered true open true
8451 acacia_door hinge left half lower facing east powered false open true
8452 acacia_door hinge left half lower facing east powered true open false
8453 acacia_door hinge left half lower facing east powered false open false
8454 acacia_door hinge right half lower facing east powered true open true
8455 acacia_door hinge right half lower facing east powered false open true
8456 acacia_door hinge right half lower facing east powered true open false
8457 acacia_door hinge right half lower facing east powered false open false
8458 dark_oak_door hinge left half upper facing north powered true open true
8459 dark_oak_door hinge left half upper facing north powered false open true
8460 dark_oak_door hinge left half upper facing north powered true open false
8461 dark_oak_door hinge left half upper facing north powered false open false
8462 dark_oak_door hinge right half upper facing north powered true open true
8463 dark_oak_door hinge right half upper facing north powered false open true
8464 dark_oak_door hinge right half upper facing north powered true open false
8465 dark_oak_door hinge right half upper facing north powered false open false
8466 dark_oak_door hinge left half lower facing north powered true open true
8467 dark_oak_door hinge left half lower facing north powered false open true
8468 dark_oak_door hinge left half lower facing north powered true open false
8469 dark_oak_door hinge left half lower facing north powered false open false
8470 dark_oak_door hinge right half lower facing north powered true open true
8471 dark_oak_door hinge right half lower facing north powered false open true
8472 dark_oak_door hinge right half lower facing north powered true open false
8473 dark_oak_door hinge right half lower facing north powered false open false
8474 dark_oak_door hinge left half upper facing south powered true open true
8475 dark_oak_door hinge left half upper facing south powered false open true
8476 dark_oak_door hinge left half upper facing south powered true open false
8477 dark_oak_door hinge left half upper facing south powered false open false
8478 dark_oak_door hinge right half upper facing south powered true open true
8479 dark_oak_door hinge right half upper facing south powered false open true
8480 dark_oak_door hinge right half upper facing south powered true open false
8481 dark_oak_door hinge right half upper facing south powered false open false
8482 dark_oak_door hinge left half lower facing south powered true open true
8483 dark_oak_door hinge left half lower facing south powered false open true
8484 dark_oak_door hinge left half lower facing south powered true open false
8485 dark_oak_door hinge left half lower facing south powered false open false
8486 dark_oak_door hinge right half lower facing south powered true open true
8487 dark_oak_door hinge right half lower facing south powered false open true
8488 dark_oak_door hinge right half lower facing south powered true open false
8489 dark_oak_door hinge right half lower facing south powered false open false
8490 dark_oak_door hinge left half upper facing west powered true open true
8491 dark_oak_door hinge left half upper facing west powered false open true
8492 dark_oak_door hinge left half upper facing west powered true open false
8493 dark_oak_door hinge left half upper facing west powered false open false
8494 dark_oak_door hinge right half upper facing west powered true open true
8495 dark_oak_door hinge right half upper facing west powered false open true
8496 dark_oak_door hinge right half upper facing west powered true open false
8497 dark_oak_door hinge right half upper facing west powered false open false
8498 dark_oak_door hinge left half lower facing west powered true open true
8499 dark_oak_door hinge left half lower facing west powered false open true
8500 dark_oak_door hinge left half lower facing west powered true open false
8501 dark_oak_door hinge left half lower facing west powered false open false
8502 dark_oak_door hinge right half lower facing west powered true open true
8503 dark_oak_door hinge right half lower facing west powered false open true
8504 dark_oak_door hinge right half lower facing west powered true open false
8505 dark_oak_door hinge right half lower facing west powered false open false
8506 dark_oak_door hinge left half upper facing east powered true open true
8507 dark_oak_door hinge left half upper facing east powered false open true
8508 dark_oak_door hinge left half upper facing east powered true open false
8509 dark_oak_door hinge left half upper facing east powered false open false
8510 dark_oak_door hinge right half upper facing east powered true open true
8511 dark_oak_door hinge right half upper facing east powered false open true
8512 dark_oak_door hinge right half upper facing east powered true open false
8513 dark_oak_door hinge right half upper facing east powered false open false
8514 dark_oak_door hinge left half lower facing east powered true open true
8515 dark_oak_door hinge left half lower facing east powered false open true
8516 dark_oak_door hinge left half lower facing east powered true open false
8517 dark_oak_door hinge left half lower facing east powered false open false
8518 dark_oak_door hinge right half lower facing east powered true open true
8519 dark_oak_door hinge right half lower facing east powered false open true
8520 dark_oak_door hinge right half lower facing east powered true open false
8521 dark_oak_door hinge right half lower facing east powered false open false
8522 end_rod facing north
8523 end_rod facing east
8524 end_rod facing south
8525 end_rod facing west
8526 end_rod facing up
8527 end_rod facing down
8528 chorus_plant up true south true east true north true down true west true
8529 chorus_plant up true south true east true north true down true west false
8530 chorus_plant up false south true east true north true down true west true
8531 chorus_plant up false south true east true north true down true west false
8532 chorus_plant up true south false east true north true down true west true
8533 chorus_plant up true south false east true north true down true west false
8534 chorus_plant up false south false east true north true down true west true
8535 chorus_plant up false south false east true north true down true west false
8536 chorus_plant up true south true east true north false down true west true
8537 chorus_plant up true south true east true north false down true west false
8538 chorus_plant up false south true east true north false down true west true
8539 chorus_plant up false south true east true north false down true west false
8540 chorus_plant up true south false east true north false down true west true
8541 chorus_plant up true south false east true north false down true west false
8542 chorus_plant up false south false east true north false down true west true
8543 chorus_plant up false south false east true north false down true west false
8544 chorus_plant up true south true east false north true down true west true
8545 chorus_plant up true south true east false north true down true west false
8546 chorus_plant up false south true east false north true down true west true
8547 chorus_plant up false south true east false north true down true west false
8548 chorus_plant up true south false east false north true down true west true
8549 chorus_plant up true south false east false north true down true west false
8550 chorus_plant up false south false east false north true down true west true
8551 chorus_plant up false south false east false north true down true west false
8552 chorus_plant up true south true east false north false down true west true
8553 chorus_plant up true south true east false north false down true west false
8554 chorus_plant up false south true east false north false down true west true
8555 chorus_plant up false south true east false north false down true west false
8556 chorus_plant up true south false east false north false down true west true
8557 chorus_plant up true south false east false north false down true west false
8558 chorus_plant up false south false east false north false down true west true
8559 chorus_plant up false south false east false north false down true west false
8560 chorus_plant up true south true east true north true down false west true
8561 chorus_plant up true south true east true north true down false west false
8562 chorus_plant up false south true east true north true down false west true
8563 chorus_plant up false south true east true north true down false west false
8564 chorus_plant up true south false east true north true down false west true
8565 chorus_plant up true south false east true north true down false west false
8566 chorus_plant up false south false east true north true down false west true
8567 chorus_plant up false south false east true north true down false west false
8568 chorus_plant up true south true east true north false down false west true
8569 chorus_plant up true south true east true north false down false west false
8570 chorus_plant up false south true east true north false down false west true
8571 chorus_plant up false south true east true north false down false west false
8572 chorus_plant up true south false east true north false down false west true
8573 chorus_plant up true south false east true north false down false west false
8574 chorus_plant up false south false east true north false down false west true
8575 chorus_plant up false south false east true north false down false west false
8576 chorus_plant up true south true east false north true down false west true
8577 chorus_plant up true south true east false north true down false west false
8578 chorus_plant up false south true east false north true down false west true
8579 chorus_plant up false south true east false north true down false west false
8580 chorus_plant up true south false east false north true down false west true
8581 chorus_plant up true south false east false north true down false west false
8582 chorus_plant up false south false east false north true down false west true
8583 chorus_plant up false south false east false north true down false west false
8584 chorus_plant up true south true east false north false down false west true
8585 chorus_plant up true south true east false north false down false west false
8586 chorus_plant up false south true east false north false down false west true
8587 chorus_plant up false south true east false north false down false west false
8588 chorus_plant up true south false east false north false down false west true
8589 chorus_plant up true south false east false north false down false west false
8590 chorus_plant up false south false east false north false down false west true
8591 chorus_plant up false south false east false north false down false west false
8592 chorus_flower age 0
8593 chorus_flower age 1
8594 chorus_flower age 2
8595 chorus_flower age 3
8596 chorus_flower age 4
8597 chorus_flower age 5
8598 purpur_block
8599 purpur_pillar axis x
8600 purpur_pillar axis y
8601 purpur_pillar axis z
8602 purpur_stairs facing north waterlogged true shape straight half top
8603 purpur_stairs facing north waterlogged false shape straight half top
8604 purpur_stairs facing north waterlogged true shape inner_left half top
8605 purpur_stairs facing north waterlogged false shape inner_left half top
8606 purpur_stairs facing north waterlogged true shape inner_right half top
8607 purpur_stairs facing north waterlogged false shape inner_right half top
8608 purpur_stairs facing north waterlogged true shape outer_left half top
8609 purpur_stairs facing north waterlogged false shape outer_left half top
8610 purpur_stairs facing north waterlogged true shape outer_right half top
8611 purpur_stairs facing north waterlogged false shape outer_right half top
8612 purpur_stairs facing north waterlogged true shape straight half bottom
8613 purpur_stairs facing north waterlogged false shape straight half bottom
8614 purpur_stairs facing north waterlogged true shape inner_left half bottom
8615 purpur_stairs facing north waterlogged false shape inner_left half bottom
8616 purpur_stairs facing north waterlogged true shape inner_right half bottom
8617 purpur_stairs facing north waterlogged false shape inner_right half bottom
8618 purpur_stairs facing north waterlogged true shape outer_left half bottom
8619 purpur_stairs facing north waterlogged false shape outer_left half bottom
8620 purpur_stairs facing north waterlogged true shape outer_right half bottom
8621 purpur_stairs facing north waterlogged false shape outer_right half bottom
8622 purpur_stairs facing south waterlogged true shape straight half top
8623 purpur_stairs facing south waterlogged false shape straight half top
8624 purpur_stairs facing south waterlogged true shape inner_left half top
8625 purpur_stairs facing south waterlogged false shape inner_left half top
8626 purpur_stairs facing south waterlogged true shape inner_right half top
8627 purpur_stairs facing south waterlogged false shape inner_right half top
8628 purpur_stairs facing south waterlogged true shape outer_left half top
8629 purpur_stairs facing south waterlogged false shape outer_left half top
8630 purpur_stairs facing south waterlogged true shape outer_right half top
8631 purpur_stairs facing south waterlogged false shape outer_right half top
8632 purpur_stairs facing south waterlogged true shape straight half bottom
8633 purpur_stairs facing south waterlogged false shape straight half bottom
8634 purpur_stairs facing south waterlogged true shape inner_left half bottom
8635 purpur_stairs facing south waterlogged false shape inner_left half bottom
8636 purpur_stairs facing south waterlogged true shape inner_right half bottom
8637 purpur_stairs facing south waterlogged false shape inner_right half bottom
8638 purpur_stairs facing south waterlogged true shape outer_left half bottom
8639 purpur_stairs facing south waterlogged false shape outer_left half bottom
8640 purpur_stairs facing south waterlogged true shape outer_right half bottom
8641 purpur_stairs facing south waterlogged false shape outer_right half bottom
8642 purpur_stairs facing west waterlogged true shape straight half top
8643 purpur_stairs facing west waterlogged false shape straight half top
8644 purpur_stairs facing west waterlogged true shape inner_left half top
8645 purpur_stairs facing west waterlogged false shape inner_left half top
8646 purpur_stairs facing west waterlogged true shape inner_right half top
8647 purpur_stairs facing west waterlogged false shape inner_right half top
8648 purpur_stairs facing west waterlogged true shape outer_left half top
8649 purpur_stairs facing west waterlogged false shape outer_left half top
8650 purpur_stairs facing west waterlogged true shape outer_right half top
8651 purpur_stairs facing west waterlogged false shape outer_right half top
8652 purpur_stairs facing west waterlogged true shape straight half bottom
8653 purpur_stairs facing west waterlogged false shape straight half bottom
8654 purpur_stairs facing west waterlogged true shape inner_left half bottom
8655 purpur_stairs facing west waterlogged false shape inner_left half bottom
8656 purpur_stairs facing west waterlogged true shape inner_right half bottom
8657 purpur_stairs facing west waterlogged false shape inner_right half bottom
8658 purpur_stairs facing west waterlogged true shape outer_left half bottom
8659 purpur_stairs facing west waterlogged false shape outer_left half bottom
8660 purpur_stairs facing west waterlogged true shape outer_right half bottom
8661 purpur_stairs facing west waterlogged false shape outer_right half bottom
8662 purpur_stairs facing east waterlogged true shape straight half top
8663 purpur_stairs facing east waterlogged false shape straight half top
8664 purpur_stairs facing east waterlogged true shape inner_left half top
8665 purpur_stairs facing east waterlogged false shape inner_left half top
8666 purpur_stairs facing east waterlogged true shape inner_right half top
8667 purpur_stairs facing east waterlogged false shape inner_right half top
8668 purpur_stairs facing east waterlogged true shape outer_left half top
8669 purpur_stairs facing east waterlogged false shape outer_left half top
8670 purpur_stairs facing east waterlogged true shape outer_right half top
8671 purpur_stairs facing east waterlogged false shape outer_right half top
8672 purpur_stairs facing east waterlogged true shape straight half bottom
8673 purpur_stairs facing east waterlogged false shape straight half bottom
8674 purpur_stairs facing east waterlogged true shape inner_left half bottom
8675 purpur_stairs facing east waterlogged false shape inner_left half bottom
8676 purpur_stairs facing east waterlogged true shape inner_right half bottom
8677 purpur_stairs facing east waterlogged false shape inner_right half bottom
8678 purpur_stairs facing east waterlogged true shape outer_left half bottom
8679 purpur_stairs facing east waterlogged false shape outer_left half bottom
8680 purpur_stairs facing east waterlogged true shape outer_right half bottom
8681 purpur_stairs facing east waterlogged false shape outer_right half bottom
8682 end_stone_bricks
8683 beetroots age 0
8684 beetroots age 1
8685 beetroots age 2
8686 beetroots age 3
8687 grass_path
8688 end_gateway
8689 repeating_command_block conditional true facing north
8690 repeating_command_block conditional true facing east
8691 repeating_command_block conditional true facing south
8692 repeating_command_block conditional true facing west
8693 repeating_command_block conditional true facing up
8694 repeating_command_block conditional true facing down
8695 repeating_command_block conditional false facing north
8696 repeating_command_block conditional false facing east
8697 repeating_command_block conditional false facing south
8698 repeating_command_block conditional false facing west
8699 repeating_command_block conditional false facing up
8700 repeating_command_block conditional false facing down
8701 chain_command_block conditional true facing north
8702 chain_command_block conditional true facing east
8703 chain_command_block conditional true facing south
8704 chain_command_block conditional true facing west
8705 chain_command_block conditional true facing up
8706 chain_command_block conditional true facing down
8707 chain_command_block conditional false facing north
8708 chain_command_block conditional false facing east
8709 chain_command_block conditional false facing south
8710 chain_command_block conditional false facing west
8711 chain_command_block conditional false facing up
8712 chain_command_block conditional false facing down
8713 frosted_ice age 0
8714 frosted_ice age 1
8715 frosted_ice age 2
8716 frosted_ice age 3
8717 magma_block
8718 nether_wart_block
8719 red_nether_bricks
8720 bone_block axis x
8721 bone_block axis y
8722 bone_block axis z
8723 structure_void
8724 observer facing north powered true
8725 observer facing north powered false
8726 observer facing east powered true
8727 observer facing east powered false
8728 observer facing south powered true
8729 observer facing south powered false
8730 observer facing west powered true
8731 observer facing west powered false
8732 observer facing up powered true
8733 observer facing up powered false
8734 observer facing down powered true
8735 observer facing down powered false
8736 shulker_box facing north
8737 shulker_box facing east
8738 shulker_box facing south
8739 shulker_box facing west
8740 shulker_box facing up
8741 shulker_box facing down
8742 white_shulker_box facing north
8743 white_shulker_box facing east
8744 white_shulker_box facing south
8745 white_shulker_box facing west
8746 white_shulker_box facing up
8747 white_shulker_box facing down
8748 orange_shulker_box facing north
8749 orange_shulker_box facing east
8750 orange_shulker_box facing south
8751 orange_shulker_box facing west
8752 orange_shulker_box facing up
8753 orange_shulker_box facing down
8754 magenta_shulker_box facing north
8755 magenta_shulker_box facing east
8756 magenta_shulker_box facing south
8757 magenta_shulker_box facing west
8758 magenta_shulker_box facing up
8759 magenta_shulker_box facing down
8760 light_blue_shulker_box facing north
8761 light_blue_shulker_box facing east
8762 light_blue_shulker_box facing south
8763 light_blue_shulker_box facing west
8764 light_blue_shulker_box facing up
8765 light_blue_shulker_box facing down
8766 yellow_shulker_box facing north
8767 yellow_shulker_box facing east
8768 yellow_shulker_box facing south
8769 yellow_shulker_box facing west
8770 yellow_shulker_box facing up
8771 yellow_shulker_box facing down
8772 lime_shulker_box facing north
8773 lime_shulker_box facing east
8774 lime_shulker_box facing south
8775 lime_shulker_box facing west
8776 lime_shulker_box facing up
8777 lime_shulker_box facing down
8778 pink_shulker_box facing north
8779 pink_shulker_box facing east
8780 pink_shulker_box facing south
8781 pink_shulker_box facing west
8782 pink_shulker_box facing up
8783 pink_shulker_box facing down
8784 gray_shulker_box facing north
8785 gray_shulker_box facing east
8786 gray_shulker_box facing south
8787 gray_shulker_box facing west
8788 gray_shulker_box facing up
8789 gray_shulker_box facing down
8790 light_gray_shulker_box facing north
8791 light_gray_shulker_box facing east
8792 light_gray_shulker_box facing south
8793 light_gray_shulker_box facing west
8794 light_gray_shulker_box facing up
8795 light_gray_shulker_box facing down
8796 cyan_shulker_box facing north
8797 cyan_shulker_box facing east
8798 cyan_shulker_box facing south
8799 cyan_shulker_box facing west
8800 cyan_shulker_box facing up
8801 cyan_shulker_box facing down
8802 purple_shulker_box facing north
8803 purple_shulker_box facing east
8804 purple_shulker_box facing south
8805 purple_shulker_box facing west
8806 purple_shulker_box facing up
8807 purple_shulker_box facing down
8808 blue_shulker_box facing north
8809 blue_shulker_box facing east
8810 blue_shulker_box facing south
8811 blue_shulker_box facing west
8812 blue_shulker_box facing up
8813 blue_shulker_box facing down
8814 brown_shulker_box facing north
8815 brown_shulker_box facing east
8816 brown_shulker_box facing south
8817 brown_shulker_box facing west
8818 brown_shulker_box facing up
8819 brown_shulker_box facing down
8820 green_shulker_box facing north
8821 green_shulker_box facing east
8822 green_shulker_box facing south
8823 green_shulker_box facing west
8824 green_shulker_box facing up
8825 green_shulker_box facing down
8826 red_shulker_box facing north
8827 red_shulker_box facing east
8828 red_shulker_box facing south
8829 red_shulker_box facing west
8830 red_shulker_box facing up
8831 red_shulker_box facing down
8832 black_shulker_box facing north
8833 black_shulker_box facing east
8834 black_shulker_box facing south
8835 black_shulker_box facing west
8836 black_shulker_box facing up
8837 black_shulker_box facing down
8838 white_glazed_terracotta facing north
8839 white_glazed_terracotta facing south
8840 white_glazed_terracotta facing west
8841 white_glazed_terracotta facing east
8842 orange_glazed_terracotta facing north
8843 orange_glazed_terracotta facing south
8844 orange_glazed_terracotta facing west
8845 orange_glazed_terracotta facing east
8846 magenta_glazed_terracotta facing north
8847 magenta_glazed_terracotta facing south
8848 magenta_glazed_terracotta facing west
8849 magenta_glazed_terracotta facing east
8850 light_blue_glazed_terracotta facing north
8851 light_blue_glazed_terracotta facing south
8852 light_blue_glazed_terracotta facing west
8853 light_blue_glazed_terracotta facing east
8854 yellow_glazed_terracotta facing north
8855 yellow_glazed_terracotta facing south
8856 yellow_glazed_terracotta facing west
8857 yellow_glazed_terracotta facing east
8858 lime_glazed_terracotta facing north
8859 lime_glazed_terracotta facing south
8860 lime_glazed_terracotta facing west
8861 lime_glazed_terracotta facing east
8862 pink_glazed_terracotta facing north
8863 pink_glazed_terracotta facing south
8864 pink_glazed_terracotta facing west
8865 pink_glazed_terracotta facing east
8866 gray_glazed_terracotta facing north
8867 gray_glazed_terracotta facing south
8868 gray_glazed_terracotta facing west
8869 gray_glazed_terracotta facing east
8870 light_gray_glazed_terracotta facing north
8871 light_gray_glazed_terracotta facing south
8872 light_gray_glazed_terracotta facing west
8873 light_gray_glazed_terracotta facing east
8874 cyan_glazed_terracotta facing north
8875 cyan_glazed_terracotta facing south
8876 cyan_glazed_terracotta facing west
8877 cyan_glazed_terracotta facing east
8878 purple_glazed_terracotta facing north
8879 purple_glazed_terracotta facing south
8880 purple_glazed_terracotta facing west
8881 purple_glazed_terracotta facing east
8882 blue_glazed_terracotta facing north
8883 blue_glazed_terracotta facing south
8884 blue_glazed_terracotta facing west
8885 blue_glazed_terracotta facing east
8886 brown_glazed_terracotta facing north
8887 brown_glazed_terracotta facing south
8888 brown_glazed_terracotta facing west
8889 brown_glazed_terracotta facing east
8890 green_glazed_terracotta facing north
8891 green_glazed_terracotta facing south
8892 green_glazed_terracotta facing west
8893 green_glazed_terracotta facing east
8894 red_glazed_terracotta facing north
8895 red_glazed_terracotta facing south
8896 red_glazed_terracotta facing west
8897 red_glazed_terracotta facing east
8898 black_glazed_terracotta facing north
8899 black_glazed_terracotta facing south
8900 black_glazed_terracotta facing west
8901 black_glazed_terracotta facing east
8902 white_concrete
8903 orange_concrete
8904 magenta_concrete
8905 light_blue_concrete
8906 yellow_concrete
8907 lime_concrete
8908 pink_concrete
8909 gray_concrete
8910 light_gray_concrete
8911 cyan_concrete
8912 purple_concrete
8913 blue_concrete
8914 brown_concrete
8915 green_concrete
8916 red_concrete
8917 black_concrete
8918 white_concrete_powder
8919 orange_concrete_powder
8920 magenta_concrete_powder
8921 light_blue_concrete_powder
8922 yellow_concrete_powder
8923 lime_concrete_powder
8924 pink_concrete_powder
8925 gray_concrete_powder
8926 light_gray_concrete_powder
8927 cyan_concrete_powder
8928 purple_concrete_powder
8929 blue_concrete_powder
8930 brown_concrete_powder
8931 green_concrete_powder
8932 red_concrete_powder
8933 black_concrete_powder
8934 kelp age 0
8935 kelp age 1
8936 kelp age 2
8937 kelp age 3
8938 kelp age 4
8939 kelp age 5
8940 kelp age 6
8941 kelp age 7
8942 kelp age 8
8943 kelp age 9
8944 kelp age 10
8945 kelp age 11
8946 kelp age 12
8947 kelp age 13
8948 kelp age 14
8949 kelp age 15
8950 kelp age 16
8951 kelp age 17
8952 kelp age 18
8953 kelp age 19
8954 kelp age 20
8955 kelp age 21
8956 kelp age 22
8957 kelp age 23
8958 kelp age 24
8959 kelp age 25
8960 kelp_plant
8961 dried_kelp_block
8962 turtle_egg eggs 1 hatch 0
8963 turtle_egg eggs 1 hatch 1
8964 turtle_egg eggs 1 hatch 2
8965 turtle_egg eggs 2 hatch 0
8966 turtle_egg eggs 2 hatch 1
8967 turtle_egg eggs 2 hatch 2
8968 turtle_egg eggs 3 hatch 0
8969 turtle_egg eggs 3 hatch 1
8970 turtle_egg eggs 3 hatch 2
8971 turtle_egg eggs 4 hatch 0
8972 turtle_egg eggs 4 hatch 1
8973 turtle_egg eggs 4 hatch 2
8974 dead_tube_coral_block
8975 dead_brain_coral_block
8976 dead_bubble_coral_block
8977 dead_fire_coral_block
8978 dead_horn_coral_block
8979 tube_coral_block
8980 brain_coral_block
8981 bubble_coral_block
8982 fire_coral_block
8983 horn_coral_block
8984 dead_tube_coral waterlogged true
8985 dead_tube_coral waterlogged false
8986 dead_brain_coral waterlogged true
8987 dead_brain_coral waterlogged false
8988 dead_bubble_coral waterlogged true
8989 dead_bubble_coral waterlogged false
8990 dead_fire_coral waterlogged true
8991 dead_fire_coral waterlogged false
8992 dead_horn_coral waterlogged true
8993 dead_horn_coral waterlogged false
8994 tube_coral waterlogged true
8995 tube_coral waterlogged false
8996 brain_coral waterlogged true
8997 brain_coral waterlogged false
8998 bubble_coral waterlogged true
8999 bubble_coral waterlogged false
9000 fire_coral waterlogged true
9001 fire_coral waterlogged false
9002 horn_coral waterlogged true
9003 horn_coral waterlogged false
9004 dead_tube_coral_fan waterlogged true
9005 dead_tube_coral_fan waterlogged false
9006 dead_brain_coral_fan waterlogged true
9007 dead_brain_coral_fan waterlogged false
9008 dead_bubble_coral_fan waterlogged true
9009 dead_bubble_coral_fan waterlogged false
9010 dead_fire_coral_fan waterlogged true
9011 dead_fire_coral_fan waterlogged false
9012 dead_horn_coral_fan waterlogged true
9013 dead_horn_coral_fan waterlogged false
9014 tube_coral_fan waterlogged true
9015 tube_coral_fan waterlogged false
9016 brain_coral_fan waterlogged true
9017 brain_coral_fan waterlogged false
9018 bubble_coral_fan waterlogged true
9019 bubble_coral_fan waterlogged false
9020 fire_coral_fan waterlogged true
9021 fire_coral_fan waterlogged false
9022 horn_coral_fan waterlogged true
9023 horn_coral_fan waterlogged false
9024 dead_tube_coral_wall_fan facing north waterlogged true
9025 dead_tube_coral_wall_fan facing north waterlogged false
9026 dead_tube_coral_wall_fan facing south waterlogged true
9027 dead_tube_coral_wall_fan facing south waterlogged false
9028 dead_tube_coral_wall_fan facing west waterlogged true
9029 dead_tube_coral_wall_fan facing west waterlogged false
9030 dead_tube_coral_wall_fan facing east waterlogged true
9031 dead_tube_coral_wall_fan facing east waterlogged false
9032 dead_brain_coral_wall_fan facing north waterlogged true
9033 dead_brain_coral_wall_fan facing north waterlogged false
9034 dead_brain_coral_wall_fan facing south waterlogged true
9035 dead_brain_coral_wall_fan facing south waterlogged false
9036 dead_brain_coral_wall_fan facing west waterlogged true
9037 dead_brain_coral_wall_fan facing west waterlogged false
9038 dead_brain_coral_wall_fan facing east waterlogged true
9039 dead_brain_coral_wall_fan facing east waterlogged false
9040 dead_bubble_coral_wall_fan facing north waterlogged true
9041 dead_bubble_coral_wall_fan facing north waterlogged false
9042 dead_bubble_coral_wall_fan facing south waterlogged true
9043 dead_bubble_coral_wall_fan facing south waterlogged false
9044 dead_bubble_coral_wall_fan facing west waterlogged true
9045 dead_bubble_coral_wall_fan facing west waterlogged false
9046 dead_bubble_coral_wall_fan facing east waterlogged true
9047 dead_bubble_coral_wall_fan facing east waterlogged false
9048 dead_fire_coral_wall_fan facing north waterlogged true
9049 dead_fire_coral_wall_fan facing north waterlogged false
9050 dead_fire_coral_wall_fan facing south waterlogged true
9051 dead_fire_coral_wall_fan facing south waterlogged false
9052 dead_fire_coral_wall_fan facing west waterlogged true
9053 dead_fire_coral_wall_fan facing west waterlogged false
9054 dead_fire_coral_wall_fan facing east waterlogged true
9055 dead_fire_coral_wall_fan facing east waterlogged false
9056 dead_horn_coral_wall_fan facing north waterlogged true
9057 dead_horn_coral_wall_fan facing north waterlogged false
9058 dead_horn_coral_wall_fan facing south waterlogged true
9059 dead_horn_coral_wall_fan facing south waterlogged false
9060 dead_horn_coral_wall_fan facing west waterlogged true
9061 dead_horn_coral_wall_fan facing west waterlogged false
9062 dead_horn_coral_wall_fan facing east waterlogged true
9063 dead_horn_coral_wall_fan facing east waterlogged false
9064 tube_coral_wall_fan facing north waterlogged true
9065 tube_coral_wall_fan facing north waterlogged false
9066 tube_coral_wall_fan facing south waterlogged true
9067 tube_coral_wall_fan facing south waterlogged false
9068 tube_coral_wall_fan facing west waterlogged true
9069 tube_coral_wall_fan facing west waterlogged false
9070 tube_coral_wall_fan facing east waterlogged true
9071 tube_coral_wall_fan facing east waterlogged false
9072 brain_coral_wall_fan facing north waterlogged true
9073 brain_coral_wall_fan facing north waterlogged false
9074 brain_coral_wall_fan facing south waterlogged true
9075 brain_coral_wall_fan facing south waterlogged false
9076 brain_coral_wall_fan facing west waterlogged true
9077 brain_coral_wall_fan facing west waterlogged false
9078 brain_coral_wall_fan facing east waterlogged true
9079 brain_coral_wall_fan facing east waterlogged false
9080 bubble_coral_wall_fan facing north waterlogged true
9081 bubble_coral_wall_fan facing north waterlogged false
9082 bubble_coral_wall_fan facing south waterlogged true
9083 bubble_coral_wall_fan facing south waterlogged false
9084 bubble_coral_wall_fan facing west waterlogged true
9085 bubble_coral_wall_fan facing west waterlogged false
9086 bubble_coral_wall_fan facing east waterlogged true
9087 bubble_coral_wall_fan facing east waterlogged false
9088 fire_coral_wall_fan facing north waterlogged true
9089 fire_coral_wall_fan facing north waterlogged false
9090 fire_coral_wall_fan facing south waterlogged true
9091 fire_coral_wall_fan facing south waterlogged false
9092 fire_coral_wall_fan facing west waterlogged true
9093 fire_coral_wall_fan facing west waterlogged false
9094 fire_coral_wall_fan facing east waterlogged true
9095 fire_coral_wall_fan facing east waterlogged false
9096 horn_coral_wall_fan facing north waterlogged true
9097 horn_coral_wall_fan facing north waterlogged false
9098 horn_coral_wall_fan facing south waterlogged true
9099 horn_coral_wall_fan facing south waterlogged false
9100 horn_coral_wall_fan facing west waterlogged true
9101 horn_coral_wall_fan facing west waterlogged false
9102 horn_coral_wall_fan facing east waterlogged true
9103 horn_coral_wall_fan facing east waterlogged false
9104 sea_pickle waterlogged true pickles 1
9105 sea_pickle waterlogged false pickles 1
9106 sea_pickle waterlogged true pickles 2
9107 sea_pickle waterlogged false pickles 2
9108 sea_pickle waterlogged true pickles 3
9109 sea_pickle waterlogged false pickles 3
9110 sea_pickle waterlogged true pickles 4
9111 sea_pickle waterlogged false pickles 4
9112 blue_ice
9113 conduit waterlogged true
9114 conduit waterlogged false
9115 bamboo_sapling
9116 bamboo leaves none stage 0 age 0
9117 bamboo leaves none stage 1 age 0
9118 bamboo leaves small stage 0 age 0
9119 bamboo leaves small stage 1 age 0
9120 bamboo leaves large stage 0 age 0
9121 bamboo leaves large stage 1 age 0
9122 bamboo leaves none stage 0 age 1
9123 bamboo leaves none stage 1 age 1
9124 bamboo leaves small stage 0 age 1
9125 bamboo leaves small stage 1 age 1
9126 bamboo leaves large stage 0 age 1
9127 bamboo leaves large stage 1 age 1
9128 potted_bamboo
9129 void_air
9130 cave_air
9131 bubble_column drag true
9132 bubble_column drag false
9133 polished_granite_stairs facing north waterlogged true shape straight half top
9134 polished_granite_stairs facing north waterlogged false shape straight half top
9135 polished_granite_stairs facing north waterlogged true shape inner_left half top
9136 polished_granite_stairs facing north waterlogged false shape inner_left half top
9137 polished_granite_stairs facing north waterlogged true shape inner_right half top
9138 polished_granite_stairs facing north waterlogged false shape inner_right half top
9139 polished_granite_stairs facing north waterlogged true shape outer_left half top
9140 polished_granite_stairs facing north waterlogged false shape outer_left half top
9141 polished_granite_stairs facing north waterlogged true shape outer_right half top
9142 polished_granite_stairs facing north waterlogged false shape outer_right half top
9143 polished_granite_stairs facing north waterlogged true shape straight half bottom
9144 polished_granite_stairs facing north waterlogged false shape straight half bottom
9145 polished_granite_stairs facing north waterlogged true shape inner_left half bottom
9146 polished_granite_stairs facing north waterlogged false shape inner_left half bottom
9147 polished_granite_stairs facing north waterlogged true shape inner_right half bottom
9148 polished_granite_stairs facing north waterlogged false shape inner_right half bottom
9149 polished_granite_stairs facing north waterlogged true shape outer_left half bottom
9150 polished_granite_stairs facing north waterlogged false shape outer_left half bottom
9151 polished_granite_stairs facing north waterlogged true shape outer_right half bottom
9152 polished_granite_stairs facing north waterlogged false shape outer_right half bottom
9153 polished_granite_stairs facing south waterlogged true shape straight half top
9154 polished_granite_stairs facing south waterlogged false shape straight half top
9155 polished_granite_stairs facing south waterlogged true shape inner_left half top
9156 polished_granite_stairs facing south waterlogged false shape inner_left half top
9157 polished_granite_stairs facing south waterlogged true shape inner_right half top
9158 polished_granite_stairs facing south waterlogged false shape inner_right half top
9159 polished_granite_stairs facing south waterlogged true shape outer_left half top
9160 polished_granite_stairs facing south waterlogged false shape outer_left half top
9161 polished_granite_stairs facing south waterlogged true shape outer_right half top
9162 polished_granite_stairs facing south waterlogged false shape outer_right half top
9163 polished_granite_stairs facing south waterlogged true shape straight half bottom
9164 polished_granite_stairs facing south waterlogged false shape straight half bottom
9165 polished_granite_stairs facing south waterlogged true shape inner_left half bottom
9166 polished_granite_stairs facing south waterlogged false shape inner_left half bottom
9167 polished_granite_stairs facing south waterlogged true shape inner_right half bottom
9168 polished_granite_stairs facing south waterlogged false shape inner_right half bottom
9169 polished_granite_stairs facing south waterlogged true shape outer_left half bottom
9170 polished_granite_stairs facing south waterlogged false shape outer_left half bottom
9171 polished_granite_stairs facing south waterlogged true shape outer_right half bottom
9172 polished_granite_stairs facing south waterlogged false shape outer_right half bottom
9173 polished_granite_stairs facing west waterlogged true shape straight half top
9174 polished_granite_stairs facing west waterlogged false shape straight half top
9175 polished_granite_stairs facing west waterlogged true shape inner_left half top
9176 polished_granite_stairs facing west waterlogged false shape inner_left half top
9177 polished_granite_stairs facing west waterlogged true shape inner_right half top
9178 polished_granite_stairs facing west waterlogged false shape inner_right half top
9179 polished_granite_stairs facing west waterlogged true shape outer_left half top
9180 polished_granite_stairs facing west waterlogged false shape outer_left half top
9181 polished_granite_stairs facing west waterlogged true shape outer_right half top
9182 polished_granite_stairs facing west waterlogged false shape outer_right half top
9183 polished_granite_stairs facing west waterlogged true shape straight half bottom
9184 polished_granite_stairs facing west waterlogged false shape straight half bottom
9185 polished_granite_stairs facing west waterlogged true shape inner_left half bottom
9186 polished_granite_stairs facing west waterlogged false shape inner_left half bottom
9187 polished_granite_stairs facing west waterlogged true shape inner_right half bottom
9188 polished_granite_stairs facing west waterlogged false shape inner_right half bottom
9189 polished_granite_stairs facing west waterlogged true shape outer_left half bottom
9190 polished_granite_stairs facing west waterlogged false shape outer_left half bottom
9191 polished_granite_stairs facing west waterlogged true shape outer_right half bottom
9192 polished_granite_stairs facing west waterlogged false shape outer_right half bottom
9193 polished_granite_stairs facing east waterlogged true shape straight half top
9194 polished_granite_stairs facing east waterlogged false shape straight half top
9195 polished_granite_stairs facing east waterlogged true shape inner_left half top
9196 polished_granite_stairs facing east waterlogged false shape inner_left half top
9197 polished_granite_stairs facing east waterlogged true shape inner_right half top
9198 polished_granite_stairs facing east waterlogged false shape inner_right half top
9199 polished_granite_stairs facing east waterlogged true shape outer_left half top
9200 polished_granite_stairs facing east waterlogged false shape outer_left half top
9201 polished_granite_stairs facing east waterlogged true shape outer_right half top
9202 polished_granite_stairs facing east waterlogged false shape outer_right half top
9203 polished_granite_stairs facing east waterlogged true shape straight half bottom
9204 polished_granite_stairs facing east waterlogged false shape straight half bottom
9205 polished_granite_stairs facing east waterlogged true shape inner_left half bottom
9206 polished_granite_stairs facing east waterlogged false shape inner_left half bottom
9207 polished_granite_stairs facing east waterlogged true shape inner_right half bottom
9208 polished_granite_stairs facing east waterlogged false shape inner_right half bottom
9209 polished_granite_stairs facing east waterlogged true shape outer_left half bottom
9210 polished_granite_stairs facing east waterlogged false shape outer_left half bottom
9211 polished_granite_stairs facing east waterlogged true shape outer_right half bottom
9212 polished_granite_stairs facing east waterlogged false shape outer_right half bottom
9213 smooth_red_sandstone_stairs facing north waterlogged true shape straight half top
9214 smooth_red_sandstone_stairs facing north waterlogged false shape straight half top
9215 smooth_red_sandstone_stairs facing north waterlogged true shape inner_left half top
9216 smooth_red_sandstone_stairs facing north waterlogged false shape inner_left half top
9217 smooth_red_sandstone_stairs facing north waterlogged true shape inner_right half top
9218 smooth_red_sandstone_stairs facing north waterlogged false shape inner_right half top
9219 smooth_red_sandstone_stairs facing north waterlogged true shape outer_left half top
9220 smooth_red_sandstone_stairs facing north waterlogged false shape outer_left half top
9221 smooth_red_sandstone_stairs facing north waterlogged true shape outer_right half top
9222 smooth_red_sandstone_stairs facing north waterlogged false shape outer_right half top
9223 smooth_red_sandstone_stairs facing north waterlogged true shape straight half bottom
9224 smooth_red_sandstone_stairs facing north waterlogged false shape straight half bottom
9225 smooth_red_sandstone_stairs facing north waterlogged true shape inner_left half bottom
9226 smooth_red_sandstone_stairs facing north waterlogged false shape inner_left half bottom
9227 smooth_red_sandstone_stairs facing north waterlogged true shape inner_right half bottom
9228 smooth_red_sandstone_stairs facing north waterlogged false shape inner_right half bottom
9229 smooth_red_sandstone_stairs facing north waterlogged true shape outer_left half bottom
9230 smooth_red_sandstone_stairs facing north waterlogged false shape outer_left half bottom
9231 smooth_red_sandstone_stairs facing north waterlogged true shape outer_right half bottom
9232 smooth_red_sandstone_stairs facing north waterlogged false shape outer_right half bottom
9233 smooth_red_sandstone_stairs facing south waterlogged true shape straight half top
9234 smooth_red_sandstone_stairs facing south waterlogged false shape straight half top
9235 smooth_red_sandstone_stairs facing south waterlogged true shape inner_left half top
9236 smooth_red_sandstone_stairs facing south waterlogged false shape inner_left half top
9237 smooth_red_sandstone_stairs facing south waterlogged true shape inner_right half top
9238 smooth_red_sandstone_stairs facing south waterlogged false shape inner_right half top
9239 smooth_red_sandstone_stairs facing south waterlogged true shape outer_left half top
9240 smooth_red_sandstone_stairs facing south waterlogged false shape outer_left half top
9241 smooth_red_sandstone_stairs facing south waterlogged true shape outer_right half top
9242 smooth_red_sandstone_stairs facing south waterlogged false shape outer_right half top
9243 smooth_red_sandstone_stairs facing south waterlogged true shape straight half bottom
9244 smooth_red_sandstone_stairs facing south waterlogged false shape straight half bottom
9245 smooth_red_sandstone_stairs facing south waterlogged true shape inner_left half bottom
9246 smooth_red_sandstone_stairs facing south waterlogged false shape inner_left half bottom
9247 smooth_red_sandstone_stairs facing south waterlogged true shape inner_right half bottom
9248 smooth_red_sandstone_stairs facing south waterlogged false shape inner_right half bottom
9249 smooth_red_sandstone_stairs facing south waterlogged true shape outer_left half bottom
9250 smooth_red_sandstone_stairs facing south waterlogged false shape outer_left half bottom
9251 smooth_red_sandstone_stairs facing south waterlogged true shape outer_right half bottom
9252 smooth_red_sandstone_stairs facing south waterlogged false shape outer_right half bottom
9253 smooth_red_sandstone_stairs facing west waterlogged true shape straight half top
9254 smooth_red_sandstone_stairs facing west waterlogged false shape straight half top
9255 smooth_red_sandstone_stairs facing west waterlogged true shape inner_left half top
9256 smooth_red_sandstone_stairs facing west waterlogged false shape inner_left half top
9257 smooth_red_sandstone_stairs facing west waterlogged true shape inner_right half top
9258 smooth_red_sandstone_stairs facing west waterlogged false shape inner_right half top
9259 smooth_red_sandstone_stairs facing west waterlogged true shape outer_left half top
9260 smooth_red_sandstone_stairs facing west waterlogged false shape outer_left half top
9261 smooth_red_sandstone_stairs facing west waterlogged true shape outer_right half top
9262 smooth_red_sandstone_stairs facing west waterlogged false shape outer_right half top
9263 smooth_red_sandstone_stairs facing west waterlogged true shape straight half bottom
9264 smooth_red_sandstone_stairs facing west waterlogged false shape straight half bottom
9265 smooth_red_sandstone_stairs facing west waterlogged true shape inner_left half bottom
9266 smooth_red_sandstone_stairs facing west waterlogged false shape inner_left half bottom
9267 smooth_red_sandstone_stairs facing west waterlogged true shape inner_right half bottom
9268 smooth_red_sandstone_stairs facing west waterlogged false shape inner_right half bottom
9269 smooth_red_sandstone_stairs facing west waterlogged true shape outer_left half bottom
9270 smooth_red_sandstone_stairs facing west waterlogged false shape outer_left half bottom
9271 smooth_red_sandstone_stairs facing west waterlogged true shape outer_right half bottom
9272 smooth_red_sandstone_stairs facing west waterlogged false shape outer_right half bottom
9273 smooth_red_sandstone_stairs facing east waterlogged true shape straight half top
9274 smooth_red_sandstone_stairs facing east waterlogged false shape straight half top
9275 smooth_red_sandstone_stairs facing east waterlogged true shape inner_left half top
9276 smooth_red_sandstone_stairs facing east waterlogged false shape inner_left half top
9277 smooth_red_sandstone_stairs facing east waterlogged true shape inner_right half top
9278 smooth_red_sandstone_stairs facing east waterlogged false shape inner_right half top
9279 smooth_red_sandstone_stairs facing east waterlogged true shape outer_left half top
9280 smooth_red_sandstone_stairs facing east waterlogged false shape outer_left half top
9281 smooth_red_sandstone_stairs facing east waterlogged true shape outer_right half top
9282 smooth_red_sandstone_stairs facing east waterlogged false shape outer_right half top
9283 smooth_red_sandstone_stairs facing east waterlogged true shape straight half bottom
9284 smooth_red_sandstone_stairs facing east waterlogged false shape straight half bottom
9285 smooth_red_sandstone_stairs facing east waterlogged true shape inner_left half bottom
9286 smooth_red_sandstone_stairs facing east waterlogged false shape inner_left half bottom
9287 smooth_red_sandstone_stairs facing east waterlogged true shape inner_right half bottom
9288 smooth_red_sandstone_stairs facing east waterlogged false shape inner_right half bottom
9289 smooth_red_sandstone_stairs facing east waterlogged true shape outer_left half bottom
9290 smooth_red_sandstone_stairs facing east waterlogged false shape outer_left half bottom
9291 smooth_red_sandstone_stairs facing east waterlogged true shape outer_right half bottom
9292 smooth_red_sandstone_stairs facing east waterlogged false shape outer_right half bottom
9293 mossy_stone_brick_stairs facing north waterlogged true shape straight half top
9294 mossy_stone_brick_stairs facing north waterlogged false shape straight half top
9295 mossy_stone_brick_stairs facing north waterlogged true shape inner_left half top
9296 mossy_stone_brick_stairs facing north waterlogged false shape inner_left half top
9297 mossy_stone_brick_stairs facing north waterlogged true shape inner_right half top
9298 mossy_stone_brick_stairs facing north waterlogged false shape inner_right half top
9299 mossy_stone_brick_stairs facing north waterlogged true shape outer_left half top
9300 mossy_stone_brick_stairs facing north waterlogged false shape outer_left half top
9301 mossy_stone_brick_stairs facing north waterlogged true shape outer_right half top
9302 mossy_stone_brick_stairs facing north waterlogged false shape outer_right half top
9303 mossy_stone_brick_stairs facing north waterlogged true shape straight half bottom
9304 mossy_stone_brick_stairs facing north waterlogged false shape straight half bottom
9305 mossy_stone_brick_stairs facing north waterlogged true shape inner_left half bottom
9306 mossy_stone_brick_stairs facing north waterlogged false shape inner_left half bottom
9307 mossy_stone_brick_stairs facing north waterlogged true shape inner_right half bottom
9308 mossy_stone_brick_stairs facing north waterlogged false shape inner_right half bottom
9309 mossy_stone_brick_stairs facing north waterlogged true shape outer_left half bottom
9310 mossy_stone_brick_stairs facing north waterlogged false shape outer_left half bottom
9311 mossy_stone_brick_stairs facing north waterlogged true shape outer_right half bottom
9312 mossy_stone_brick_stairs facing north waterlogged false shape outer_right half bottom
9313 mossy_stone_brick_stairs facing south waterlogged true shape straight half top
9314 mossy_stone_brick_stairs facing south waterlogged false shape straight half top
9315 mossy_stone_brick_stairs facing south waterlogged true shape inner_left half top
9316 mossy_stone_brick_stairs facing south waterlogged false shape inner_left half top
9317 mossy_stone_brick_stairs facing south waterlogged true shape inner_right half top
9318 mossy_stone_brick_stairs facing south waterlogged false shape inner_right half top
9319 mossy_stone_brick_stairs facing south waterlogged true shape outer_left half top
9320 mossy_stone_brick_stairs facing south waterlogged false shape outer_left half top
9321 mossy_stone_brick_stairs facing south waterlogged true shape outer_right half top
9322 mossy_stone_brick_stairs facing south waterlogged false shape outer_right half top
9323 mossy_stone_brick_stairs facing south waterlogged true shape straight half bottom
9324 mossy_stone_brick_stairs facing south waterlogged false shape straight half bottom
9325 mossy_stone_brick_stairs facing south waterlogged true shape inner_left half bottom
9326 mossy_stone_brick_stairs facing south waterlogged false shape inner_left half bottom
9327 mossy_stone_brick_stairs facing south waterlogged true shape inner_right half bottom
9328 mossy_stone_brick_stairs facing south waterlogged false shape inner_right half bottom
9329 mossy_stone_brick_stairs facing south waterlogged true shape outer_left half bottom
9330 mossy_stone_brick_stairs facing south waterlogged false shape outer_left half bottom
9331 mossy_stone_brick_stairs facing south waterlogged true shape outer_right half bottom
9332 mossy_stone_brick_stairs facing south waterlogged false shape outer_right half bottom
9333 mossy_stone_brick_stairs facing west waterlogged true shape straight half top
9334 mossy_stone_brick_stairs facing west waterlogged false shape straight half top
9335 mossy_stone_brick_stairs facing west waterlogged true shape inner_left half top
9336 mossy_stone_brick_stairs facing west waterlogged false shape inner_left half top
9337 mossy_stone_brick_stairs facing west waterlogged true shape inner_right half top
9338 mossy_stone_brick_stairs facing west waterlogged false shape inner_right half top
9339 mossy_stone_brick_stairs facing west waterlogged true shape outer_left half top
9340 mossy_stone_brick_stairs facing west waterlogged false shape outer_left half top
9341 mossy_stone_brick_stairs facing west waterlogged true shape outer_right half top
9342 mossy_stone_brick_stairs facing west waterlogged false shape outer_right half top
9343 mossy_stone_brick_stairs facing west waterlogged true shape straight half bottom
9344 mossy_stone_brick_stairs facing west waterlogged false shape straight half bottom
9345 mossy_stone_brick_stairs facing west waterlogged true shape inner_left half bottom
9346 mossy_stone_brick_stairs facing west waterlogged false shape inner_left half bottom
9347 mossy_stone_brick_stairs facing west waterlogged true shape inner_right half bottom
9348 mossy_stone_brick_stairs facing west waterlogged false shape inner_right half bottom
9349 mossy_stone_brick_stairs facing west waterlogged true shape outer_left half bottom
9350 mossy_stone_brick_stairs facing west waterlogged false shape outer_left half bottom
9351 mossy_stone_brick_stairs facing west waterlogged true shape outer_right half bottom
9352 mossy_stone_brick_stairs facing west waterlogged false shape outer_right half bottom
9353 mossy_stone_brick_stairs facing east waterlogged true shape straight half top
9354 mossy_stone_brick_stairs facing east waterlogged false shape straight half top
9355 mossy_stone_brick_stairs facing east waterlogged true shape inner_left half top
9356 mossy_stone_brick_stairs facing east waterlogged false shape inner_left half top
9357 mossy_stone_brick_stairs facing east waterlogged true shape inner_right half top
9358 mossy_stone_brick_stairs facing east waterlogged false shape inner_right half top
9359 mossy_stone_brick_stairs facing east waterlogged true shape outer_left half top
9360 mossy_stone_brick_stairs facing east waterlogged false shape outer_left half top
9361 mossy_stone_brick_stairs facing east waterlogged true shape outer_right half top
9362 mossy_stone_brick_stairs facing east waterlogged false shape outer_right half top
9363 mossy_stone_brick_stairs facing east waterlogged true shape straight half bottom
9364 mossy_stone_brick_stairs facing east waterlogged false shape straight half bottom
9365 mossy_stone_brick_stairs facing east waterlogged true shape inner_left half bottom
9366 mossy_stone_brick_stairs facing east waterlogged false shape inner_left half bottom
9367 mossy_stone_brick_stairs facing east waterlogged true shape inner_right half bottom
9368 mossy_stone_brick_stairs facing east waterlogged false shape inner_right half bottom
9369 mossy_stone_brick_stairs facing east waterlogged true shape outer_left half bottom
9370 mossy_stone_brick_stairs facing east waterlogged false shape outer_left half bottom
9371 mossy_stone_brick_stairs facing east waterlogged true shape outer_right half bottom
9372 mossy_stone_brick_stairs facing east waterlogged false shape outer_right half bottom
9373 polished_diorite_stairs facing north waterlogged true shape straight half top
9374 polished_diorite_stairs facing north waterlogged false shape straight half top
9375 polished_diorite_stairs facing north waterlogged true shape inner_left half top
9376 polished_diorite_stairs facing north waterlogged false shape inner_left half top
9377 polished_diorite_stairs facing north waterlogged true shape inner_right half top
9378 polished_diorite_stairs facing north waterlogged false shape inner_right half top
9379 polished_diorite_stairs facing north waterlogged true shape outer_left half top
9380 polished_diorite_stairs facing north waterlogged false shape outer_left half top
9381 polished_diorite_stairs facing north waterlogged true shape outer_right half top
9382 polished_diorite_stairs facing north waterlogged false shape outer_right half top
9383 polished_diorite_stairs facing north waterlogged true shape straight half bottom
9384 polished_diorite_stairs facing north waterlogged false shape straight half bottom
9385 polished_diorite_stairs facing north waterlogged true shape inner_left half bottom
9386 polished_diorite_stairs facing north waterlogged false shape inner_left half bottom
9387 polished_diorite_stairs facing north waterlogged true shape inner_right half bottom
9388 polished_diorite_stairs facing north waterlogged false shape inner_right half bottom
9389 polished_diorite_stairs facing north waterlogged true shape outer_left half bottom
9390 polished_diorite_stairs facing north waterlogged false shape outer_left half bottom
9391 polished_diorite_stairs facing north waterlogged true shape outer_right half bottom
9392 polished_diorite_stairs facing north waterlogged false shape outer_right half bottom
9393 polished_diorite_stairs facing south waterlogged true shape straight half top
9394 polished_diorite_stairs facing south waterlogged false shape straight half top
9395 polished_diorite_stairs facing south waterlogged true shape inner_left half top
9396 polished_diorite_stairs facing south waterlogged false shape inner_left half top
9397 polished_diorite_stairs facing south waterlogged true shape inner_right half top
9398 polished_diorite_stairs facing south waterlogged false shape inner_right half top
9399 polished_diorite_stairs facing south waterlogged true shape outer_left half top
9400 polished_diorite_stairs facing south waterlogged false shape outer_left half top
9401 polished_diorite_stairs facing south waterlogged true shape outer_right half top
9402 polished_diorite_stairs facing south waterlogged false shape outer_right half top
9403 polished_diorite_stairs facing south waterlogged true shape straight half bottom
9404 polished_diorite_stairs facing south waterlogged false shape straight half bottom
9405 polished_diorite_stairs facing south waterlogged true shape inner_left half bottom
9406 polished_diorite_stairs facing south waterlogged false shape inner_left half bottom
9407 polished_diorite_stairs facing south waterlogged true shape inner_right half bottom
9408 polished_diorite_stairs facing south waterlogged false shape inner_right half bottom
9409 polished_diorite_stairs facing south waterlogged true shape outer_left half bottom
9410 polished_diorite_stairs facing south waterlogged false shape outer_left half bottom
9411 polished_diorite_stairs facing south waterlogged true shape outer_right half bottom
9412 polished_diorite_stairs facing south waterlogged false shape outer_right half bottom
9413 polished_diorite_stairs facing west waterlogged true shape straight half top
9414 polished_diorite_stairs facing west waterlogged false shape straight half top
9415 polished_diorite_stairs facing west waterlogged true shape inner_left half top
9416 polished_diorite_stairs facing west waterlogged false shape inner_left half top
9417 polished_diorite_stairs facing west waterlogged true shape inner_right half top
9418 polished_diorite_stairs facing west waterlogged false shape inner_right half top
9419 polished_diorite_stairs facing west waterlogged true shape outer_left half top
9420 polished_diorite_stairs facing west waterlogged false shape outer_left half top
9421 polished_diorite_stairs facing west waterlogged true shape outer_right half top
9422 polished_diorite_stairs facing west waterlogged false shape outer_right half top
9423 polished_diorite_stairs facing west waterlogged true shape straight half bottom
9424 polished_diorite_stairs facing west waterlogged false shape straight half bottom
9425 polished_diorite_stairs facing west waterlogged true shape inner_left half bottom
9426 polished_diorite_stairs facing west waterlogged false shape inner_left half bottom
9427 polished_diorite_stairs facing west waterlogged true shape inner_right half bottom
9428 polished_diorite_stairs facing west waterlogged false shape inner_right half bottom
9429 polished_diorite_stairs facing west waterlogged true shape outer_left half bottom
9430 polished_diorite_stairs facing west waterlogged false shape outer_left half bottom
9431 polished_diorite_stairs facing west waterlogged true shape outer_right half bottom
9432 polished_diorite_stairs facing west waterlogged false shape outer_right half bottom
9433 polished_diorite_stairs facing east waterlogged true shape straight half top
9434 polished_diorite_stairs facing east waterlogged false shape straight half top
9435 polished_diorite_stairs facing east waterlogged true shape inner_left half top
9436 polished_diorite_stairs facing east waterlogged false shape inner_left half top
9437 polished_diorite_stairs facing east waterlogged true shape inner_right half top
9438 polished_diorite_stairs facing east waterlogged false shape inner_right half top
9439 polished_diorite_stairs facing east waterlogged true shape outer_left half top
9440 polished_diorite_stairs facing east waterlogged false shape outer_left half top
9441 polished_diorite_stairs facing east waterlogged true shape outer_right half top
9442 polished_diorite_stairs facing east waterlogged false shape outer_right half top
9443 polished_diorite_stairs facing east waterlogged true shape straight half bottom
9444 polished_diorite_stairs facing east waterlogged false shape straight half bottom
9445 polished_diorite_stairs facing east waterlogged true shape inner_left half bottom
9446 polished_diorite_stairs facing east waterlogged false shape inner_left half bottom
9447 polished_diorite_stairs facing east waterlogged true shape inner_right half bottom
9448 polished_diorite_stairs facing east waterlogged false shape inner_right half bottom
9449 polished_diorite_stairs facing east waterlogged true shape outer_left half bottom
9450 polished_diorite_stairs facing east waterlogged false shape outer_left half bottom
9451 polished_diorite_stairs facing east waterlogged true shape outer_right half bottom
9452 polished_diorite_stairs facing east waterlogged false shape outer_right half bottom
9453 mossy_cobblestone_stairs facing north waterlogged true shape straight half top
9454 mossy_cobblestone_stairs facing north waterlogged false shape straight half top
9455 mossy_cobblestone_stairs facing north waterlogged true shape inner_left half top
9456 mossy_cobblestone_stairs facing north waterlogged false shape inner_left half top
9457 mossy_cobblestone_stairs facing north waterlogged true shape inner_right half top
9458 mossy_cobblestone_stairs facing north waterlogged false shape inner_right half top
9459 mossy_cobblestone_stairs facing north waterlogged true shape outer_left half top
9460 mossy_cobblestone_stairs facing north waterlogged false shape outer_left half top
9461 mossy_cobblestone_stairs facing north waterlogged true shape outer_right half top
9462 mossy_cobblestone_stairs facing north waterlogged false shape outer_right half top
9463 mossy_cobblestone_stairs facing north waterlogged true shape straight half bottom
9464 mossy_cobblestone_stairs facing north waterlogged false shape straight half bottom
9465 mossy_cobblestone_stairs facing north waterlogged true shape inner_left half bottom
9466 mossy_cobblestone_stairs facing north waterlogged false shape inner_left half bottom
9467 mossy_cobblestone_stairs facing north waterlogged true shape inner_right half bottom
9468 mossy_cobblestone_stairs facing north waterlogged false shape inner_right half bottom
9469 mossy_cobblestone_stairs facing north waterlogged true shape outer_left half bottom
9470 mossy_cobblestone_stairs facing north waterlogged false shape outer_left half bottom
9471 mossy_cobblestone_stairs facing north waterlogged true shape outer_right half bottom
9472 mossy_cobblestone_stairs facing north waterlogged false shape outer_right half bottom
9473 mossy_cobblestone_stairs facing south waterlogged true shape straight half top
9474 mossy_cobblestone_stairs facing south waterlogged false shape straight half top
9475 mossy_cobblestone_stairs facing south waterlogged true shape inner_left half top
9476 mossy_cobblestone_stairs facing south waterlogged false shape inner_left half top
9477 mossy_cobblestone_stairs facing south waterlogged true shape inner_right half top
9478 mossy_cobblestone_stairs facing south waterlogged false shape inner_right half top
9479 mossy_cobblestone_stairs facing south waterlogged true shape outer_left half top
9480 mossy_cobblestone_stairs facing south waterlogged false shape outer_left half top
9481 mossy_cobblestone_stairs facing south waterlogged true shape outer_right half top
9482 mossy_cobblestone_stairs facing south waterlogged false shape outer_right half top
9483 mossy_cobblestone_stairs facing south waterlogged true shape straight half bottom
9484 mossy_cobblestone_stairs facing south waterlogged false shape straight half bottom
9485 mossy_cobblestone_stairs facing south waterlogged true shape inner_left half bottom
9486 mossy_cobblestone_stairs facing south waterlogged false shape inner_left half bottom
9487 mossy_cobblestone_stairs facing south waterlogged true shape inner_right half bottom
9488 mossy_cobblestone_stairs facing south waterlogged false shape inner_right half bottom
9489 mossy_cobblestone_stairs facing south waterlogged true shape outer_left half bottom
9490 mossy_cobblestone_stairs facing south waterlogged false shape outer_left half bottom
9491 mossy_cobblestone_stairs facing south waterlogged true shape outer_right half bottom
9492 mossy_cobblestone_stairs facing south waterlogged false shape outer_right half bottom
9493 mossy_cobblestone_stairs facing west waterlogged true shape straight half top
9494 mossy_cobblestone_stairs facing west waterlogged false shape straight half top
9495 mossy_cobblestone_stairs facing west waterlogged true shape inner_left half top
9496 mossy_cobblestone_stairs facing west waterlogged false shape inner_left half top
9497 mossy_cobblestone_stairs facing west waterlogged true shape inner_right half top
9498 mossy_cobblestone_stairs facing west waterlogged false shape inner_right half top
9499 mossy_cobblestone_stairs facing west waterlogged true shape outer_left half top
9500 mossy_cobblestone_stairs facing west waterlogged false shape outer_left half top
9501 mossy_cobblestone_stairs facing west waterlogged true shape outer_right half top
9502 mossy_cobblestone_stairs facing west waterlogged false shape outer_right half top
9503 mossy_cobblestone_stairs facing west waterlogged true shape straight half bottom
9504 mossy_cobblestone_stairs facing west waterlogged false shape straight half bottom
9505 mossy_cobblestone_stairs facing west waterlogged true shape inner_left half bottom
9506 mossy_cobblestone_stairs facing west waterlogged false shape inner_left half bottom
9507 mossy_cobblestone_stairs facing west waterlogged true shape inner_right half bottom
9508 mossy_cobblestone_stairs facing west waterlogged false shape inner_right half bottom
9509 mossy_cobblestone_stairs facing west waterlogged true shape outer_left half bottom
9510 mossy_cobblestone_stairs facing west waterlogged false shape outer_left half bottom
9511 mossy_cobblestone_stairs facing west waterlogged true shape outer_right half bottom
9512 mossy_cobblestone_stairs facing west waterlogged false shape outer_right half bottom
9513 mossy_cobblestone_stairs facing east waterlogged true shape straight half top
9514 mossy_cobblestone_stairs facing east waterlogged false shape straight half top
9515 mossy_cobblestone_stairs facing east waterlogged true shape inner_left half top
9516 mossy_cobblestone_stairs facing east waterlogged false shape inner_left half top
9517 mossy_cobblestone_stairs facing east waterlogged true shape inner_right half top
9518 mossy_cobblestone_stairs facing east waterlogged false shape inner_right half top
9519 mossy_cobblestone_stairs facing east waterlogged true shape outer_left half top
9520 mossy_cobblestone_stairs facing east waterlogged false shape outer_left half top
9521 mossy_cobblestone_stairs facing east waterlogged true shape outer_right half top
9522 mossy_cobblestone_stairs facing east waterlogged false shape outer_right half top
9523 mossy_cobblestone_stairs facing east waterlogged true shape straight half bottom
9524 mossy_cobblestone_stairs facing east waterlogged false shape straight half bottom
9525 mossy_cobblestone_stairs facing east waterlogged true shape inner_left half bottom
9526 mossy_cobblestone_stairs facing east waterlogged false shape inner_left half bottom
9527 mossy_cobblestone_stairs facing east waterlogged true shape inner_right half bottom
9528 mossy_cobblestone_stairs facing east waterlogged false shape inner_right half bottom
9529 mossy_cobblestone_stairs facing east waterlogged true shape outer_left half bottom
9530 mossy_cobblestone_stairs facing east waterlogged false shape outer_left half bottom
9531 mossy_cobblestone_stairs facing east waterlogged true shape outer_right half bottom
9532 mossy_cobblestone_stairs facing east waterlogged false shape outer_right half bottom
9533 end_stone_brick_stairs facing north waterlogged true shape straight half top
9534 end_stone_brick_stairs facing north waterlogged false shape straight half top
9535 end_stone_brick_stairs facing north waterlogged true shape inner_left half top
9536 end_stone_brick_stairs facing north waterlogged false shape inner_left half top
9537 end_stone_brick_stairs facing north waterlogged true shape inner_right half top
9538 end_stone_brick_stairs facing north waterlogged false shape inner_right half top
9539 end_stone_brick_stairs facing north waterlogged true shape outer_left half top
9540 end_stone_brick_stairs facing north waterlogged false shape outer_left half top
9541 end_stone_brick_stairs facing north waterlogged true shape outer_right half top
9542 end_stone_brick_stairs facing north waterlogged false shape outer_right half top
9543 end_stone_brick_stairs facing north waterlogged true shape straight half bottom
9544 end_stone_brick_stairs facing north waterlogged false shape straight half bottom
9545 end_stone_brick_stairs facing north waterlogged true shape inner_left half bottom
9546 end_stone_brick_stairs facing north waterlogged false shape inner_left half bottom
9547 end_stone_brick_stairs facing north waterlogged true shape inner_right half bottom
9548 end_stone_brick_stairs facing north waterlogged false shape inner_right half bottom
9549 end_stone_brick_stairs facing north waterlogged true shape outer_left half bottom
9550 end_stone_brick_stairs facing north waterlogged false shape outer_left half bottom
9551 end_stone_brick_stairs facing north waterlogged true shape outer_right half bottom
9552 end_stone_brick_stairs facing north waterlogged false shape outer_right half bottom
9553 end_stone_brick_stairs facing south waterlogged true shape straight half top
9554 end_stone_brick_stairs facing south waterlogged false shape straight half top
9555 end_stone_brick_stairs facing south waterlogged true shape inner_left half top
9556 end_stone_brick_stairs facing south waterlogged false shape inner_left half top
9557 end_stone_brick_stairs facing south waterlogged true shape inner_right half top
9558 end_stone_brick_stairs facing south waterlogged false shape inner_right half top
9559 end_stone_brick_stairs facing south waterlogged true shape outer_left half top
9560 end_stone_brick_stairs facing south waterlogged false shape outer_left half top
9561 end_stone_brick_stairs facing south waterlogged true shape outer_right half top
9562 end_stone_brick_stairs facing south waterlogged false shape outer_right half top
9563 end_stone_brick_stairs facing south waterlogged true shape straight half bottom
9564 end_stone_brick_stairs facing south waterlogged false shape straight half bottom
9565 end_stone_brick_stairs facing south waterlogged true shape inner_left half bottom
9566 end_stone_brick_stairs facing south waterlogged false shape inner_left half bottom
9567 end_stone_brick_stairs facing south waterlogged true shape inner_right half bottom
9568 end_stone_brick_stairs facing south waterlogged false shape inner_right half bottom
9569 end_stone_brick_stairs facing south waterlogged true shape outer_left half bottom
9570 end_stone_brick_stairs facing south waterlogged false shape outer_left half bottom
9571 end_stone_brick_stairs facing south waterlogged true shape outer_right half bottom
9572 end_stone_brick_stairs facing south waterlogged false shape outer_right half bottom
9573 end_stone_brick_stairs facing west waterlogged true shape straight half top
9574 end_stone_brick_stairs facing west waterlogged false shape straight half top
9575 end_stone_brick_stairs facing west waterlogged true shape inner_left half top
9576 end_stone_brick_stairs facing west waterlogged false shape inner_left half top
9577 end_stone_brick_stairs facing west waterlogged true shape inner_right half top
9578 end_stone_brick_stairs facing west waterlogged false shape inner_right half top
9579 end_stone_brick_stairs facing west waterlogged true shape outer_left half top
9580 end_stone_brick_stairs facing west waterlogged false shape outer_left half top
9581 end_stone_brick_stairs facing west waterlogged true shape outer_right half top
9582 end_stone_brick_stairs facing west waterlogged false shape outer_right half top
9583 end_stone_brick_stairs facing west waterlogged true shape straight half bottom
9584 end_stone_brick_stairs facing west waterlogged false shape straight half bottom
9585 end_stone_brick_stairs facing west waterlogged true shape inner_left half bottom
9586 end_stone_brick_stairs facing west waterlogged false shape inner_left half bottom
9587 end_stone_brick_stairs facing west waterlogged true shape inner_right half bottom
9588 end_stone_brick_stairs facing west waterlogged false shape inner_right half bottom
9589 end_stone_brick_stairs facing west waterlogged true shape outer_left half bottom
9590 end_stone_brick_stairs facing west waterlogged false shape outer_left half bottom
9591 end_stone_brick_stairs facing west waterlogged true shape outer_right half bottom
9592 end_stone_brick_stairs facing west waterlogged false shape outer_right half bottom
9593 end_stone_brick_stairs facing east waterlogged true shape straight half top
9594 end_stone_brick_stairs facing east waterlogged false shape straight half top
9595 end_stone_brick_stairs facing east waterlogged true shape inner_left half top
9596 end_stone_brick_stairs facing east waterlogged false shape inner_left half top
9597 end_stone_brick_stairs facing east waterlogged true shape inner_right half top
9598 end_stone_brick_stairs facing east waterlogged false shape inner_right half top
9599 end_stone_brick_stairs facing east waterlogged true shape outer_left half top
9600 end_stone_brick_stairs facing east waterlogged false shape outer_left half top
9601 end_stone_brick_stairs facing east waterlogged true shape outer_right half top
9602 end_stone_brick_stairs facing east waterlogged false shape outer_right half top
9603 end_stone_brick_stairs facing east waterlogged true shape straight half bottom
9604 end_stone_brick_stairs facing east waterlogged false shape straight half bottom
9605 end_stone_brick_stairs facing east waterlogged true shape inner_left half bottom
9606 end_stone_brick_stairs facing east waterlogged false shape inner_left half bottom
9607 end_stone_brick_stairs facing east waterlogged true shape inner_right half bottom
9608 end_stone_brick_stairs facing east waterlogged false shape inner_right half bottom
9609 end_stone_brick_stairs facing east waterlogged true shape outer_left half bottom
9610 end_stone_brick_stairs facing east waterlogged false shape outer_left half bottom
9611 end_stone_brick_stairs facing east waterlogged true shape outer_right half bottom
9612 end_stone_brick_stairs facing east waterlogged false shape outer_right half bottom
9613 stone_stairs facing north waterlogged true shape straight half top
9614 stone_stairs facing north waterlogged false shape straight half top
9615 stone_stairs facing north waterlogged true shape inner_left half top
9616 stone_stairs facing north waterlogged false shape inner_left half top
9617 stone_stairs facing north waterlogged true shape inner_right half top
9618 stone_stairs facing north waterlogged false shape inner_right half top
9619 stone_stairs facing north waterlogged true shape outer_left half top
9620 stone_stairs facing north waterlogged false shape outer_left half top
9621 stone_stairs facing north waterlogged true shape outer_right half top
9622 stone_stairs facing north waterlogged false shape outer_right half top
9623 stone_stairs facing north waterlogged true shape straight half bottom
9624 stone_stairs facing north waterlogged false shape straight half bottom
9625 stone_stairs facing north waterlogged true shape inner_left half bottom
9626 stone_stairs facing north waterlogged false shape inner_left half bottom
9627 stone_stairs facing north waterlogged true shape inner_right half bottom
9628 stone_stairs facing north waterlogged false shape inner_right half bottom
9629 stone_stairs facing north waterlogged true shape outer_left half bottom
9630 stone_stairs facing north waterlogged false shape outer_left half bottom
9631 stone_stairs facing north waterlogged true shape outer_right half bottom
9632 stone_stairs facing north waterlogged false shape outer_right half bottom
9633 stone_stairs facing south waterlogged true shape straight half top
9634 stone_stairs facing south waterlogged false shape straight half top
9635 stone_stairs facing south waterlogged true shape inner_left half top
9636 stone_stairs facing south waterlogged false shape inner_left half top
9637 stone_stairs facing south waterlogged true shape inner_right half top
9638 stone_stairs facing south waterlogged false shape inner_right half top
9639 stone_stairs facing south waterlogged true shape outer_left half top
9640 stone_stairs facing south waterlogged false shape outer_left half top
9641 stone_stairs facing south waterlogged true shape outer_right half top
9642 stone_stairs facing south waterlogged false shape outer_right half top
9643 stone_stairs facing south waterlogged true shape straight half bottom
9644 stone_stairs facing south waterlogged false shape straight half bottom
9645 stone_stairs facing south waterlogged true shape inner_left half bottom
9646 stone_stairs facing south waterlogged false shape inner_left half bottom
9647 stone_stairs facing south waterlogged true shape inner_right half bottom
9648 stone_stairs facing south waterlogged false shape inner_right half bottom
9649 stone_stairs facing south waterlogged true shape outer_left half bottom
9650 stone_stairs facing south waterlogged false shape outer_left half bottom
9651 stone_stairs facing south waterlogged true shape outer_right half bottom
9652 stone_stairs facing south waterlogged false shape outer_right half bottom
9653 stone_stairs facing west waterlogged true shape straight half top
9654 stone_stairs facing west waterlogged false shape straight half top
9655 stone_stairs facing west waterlogged true shape inner_left half top
9656 stone_stairs facing west waterlogged false shape inner_left half top
9657 stone_stairs facing west waterlogged true shape inner_right half top
9658 stone_stairs facing west waterlogged false shape inner_right half top
9659 stone_stairs facing west waterlogged true shape outer_left half top
9660 stone_stairs facing west waterlogged false shape outer_left half top
9661 stone_stairs facing west waterlogged true shape outer_right half top
9662 stone_stairs facing west waterlogged false shape outer_right half top
9663 stone_stairs facing west waterlogged true shape straight half bottom
9664 stone_stairs facing west waterlogged false shape straight half bottom
9665 stone_stairs facing west waterlogged true shape inner_left half bottom
9666 stone_stairs facing west waterlogged false shape inner_left half bottom
9667 stone_stairs facing west waterlogged true shape inner_right half bottom
9668 stone_stairs facing west waterlogged false shape inner_right half bottom
9669 stone_stairs facing west waterlogged true shape outer_left half bottom
9670 stone_stairs facing west waterlogged false shape outer_left half bottom
9671 stone_stairs facing west waterlogged true shape outer_right half bottom
9672 stone_stairs facing west waterlogged false shape outer_right half bottom
9673 stone_stairs facing east waterlogged true shape straight half top
9674 stone_stairs facing east waterlogged false shape straight half top
9675 stone_stairs facing east waterlogged true shape inner_left half top
9676 stone_stairs facing east waterlogged false shape inner_left half top
9677 stone_stairs facing east waterlogged true shape inner_right half top
9678 stone_stairs facing east waterlogged false shape inner_right half top
9679 stone_stairs facing east waterlogged true shape outer_left half top
9680 stone_stairs facing east waterlogged false shape outer_left half top
9681 stone_stairs facing east waterlogged true shape outer_right half top
9682 stone_stairs facing east waterlogged false shape outer_right half top
9683 stone_stairs facing east waterlogged true shape straight half bottom
9684 stone_stairs facing east waterlogged false shape straight half bottom
9685 stone_stairs facing east waterlogged true shape inner_left half bottom
9686 stone_stairs facing east waterlogged false shape inner_left half bottom
9687 stone_stairs facing east waterlogged true shape inner_right half bottom
9688 stone_stairs facing east waterlogged false shape inner_right half bottom
9689 stone_stairs facing east waterlogged true shape outer_left half bottom
9690 stone_stairs facing east waterlogged false shape outer_left half bottom
9691 stone_stairs facing east waterlogged true shape outer_right half bottom
9692 stone_stairs facing east waterlogged false shape outer_right half bottom
9693 smooth_sandstone_stairs facing north waterlogged true shape straight half top
9694 smooth_sandstone_stairs facing north waterlogged false shape straight half top
9695 smooth_sandstone_stairs facing north waterlogged true shape inner_left half top
9696 smooth_sandstone_stairs facing north waterlogged false shape inner_left half top
9697 smooth_sandstone_stairs facing north waterlogged true shape inner_right half top
9698 smooth_sandstone_stairs facing north waterlogged false shape inner_right half top
9699 smooth_sandstone_stairs facing north waterlogged true shape outer_left half top
9700 smooth_sandstone_stairs facing north waterlogged false shape outer_left half top
9701 smooth_sandstone_stairs facing north waterlogged true shape outer_right half top
9702 smooth_sandstone_stairs facing north waterlogged false shape outer_right half top
9703 smooth_sandstone_stairs facing north waterlogged true shape straight half bottom
9704 smooth_sandstone_stairs facing north waterlogged false shape straight half bottom
9705 smooth_sandstone_stairs facing north waterlogged true shape inner_left half bottom
9706 smooth_sandstone_stairs facing north waterlogged false shape inner_left half bottom
9707 smooth_sandstone_stairs facing north waterlogged true shape inner_right half bottom
9708 smooth_sandstone_stairs facing north waterlogged false shape inner_right half bottom
9709 smooth_sandstone_stairs facing north waterlogged true shape outer_left half bottom
9710 smooth_sandstone_stairs facing north waterlogged false shape outer_left half bottom
9711 smooth_sandstone_stairs facing north waterlogged true shape outer_right half bottom
9712 smooth_sandstone_stairs facing north waterlogged false shape outer_right half bottom
9713 smooth_sandstone_stairs facing south waterlogged true shape straight half top
9714 smooth_sandstone_stairs facing south waterlogged false shape straight half top
9715 smooth_sandstone_stairs facing south waterlogged true shape inner_left half top
9716 smooth_sandstone_stairs facing south waterlogged false shape inner_left half top
9717 smooth_sandstone_stairs facing south waterlogged true shape inner_right half top
9718 smooth_sandstone_stairs facing south waterlogged false shape inner_right half top
9719 smooth_sandstone_stairs facing south waterlogged true shape outer_left half top
9720 smooth_sandstone_stairs facing south waterlogged false shape outer_left half top
9721 smooth_sandstone_stairs facing south waterlogged true shape outer_right half top
9722 smooth_sandstone_stairs facing south waterlogged false shape outer_right half top
9723 smooth_sandstone_stairs facing south waterlogged true shape straight half bottom
9724 smooth_sandstone_stairs facing south waterlogged false shape straight half bottom
9725 smooth_sandstone_stairs facing south waterlogged true shape inner_left half bottom
9726 smooth_sandstone_stairs facing south waterlogged false shape inner_left half bottom
9727 smooth_sandstone_stairs facing south waterlogged true shape inner_right half bottom
9728 smooth_sandstone_stairs facing south waterlogged false shape inner_right half bottom
9729 smooth_sandstone_stairs facing south waterlogged true shape outer_left half bottom
9730 smooth_sandstone_stairs facing south waterlogged false shape outer_left half bottom
9731 smooth_sandstone_stairs facing south waterlogged true shape outer_right half bottom
9732 smooth_sandstone_stairs facing south waterlogged false shape outer_right half bottom
9733 smooth_sandstone_stairs facing west waterlogged true shape straight half top
9734 smooth_sandstone_stairs facing west waterlogged false shape straight half top
9735 smooth_sandstone_stairs facing west waterlogged true shape inner_left half top
9736 smooth_sandstone_stairs facing west waterlogged false shape inner_left half top
9737 smooth_sandstone_stairs facing west waterlogged true shape inner_right half top
9738 smooth_sandstone_stairs facing west waterlogged false shape inner_right half top
9739 smooth_sandstone_stairs facing west waterlogged true shape outer_left half top
9740 smooth_sandstone_stairs facing west waterlogged false shape outer_left half top
9741 smooth_sandstone_stairs facing west waterlogged true shape outer_right half top
9742 smooth_sandstone_stairs facing west waterlogged false shape outer_right half top
9743 smooth_sandstone_stairs facing west waterlogged true shape straight half bottom
9744 smooth_sandstone_stairs facing west waterlogged false shape straight half bottom
9745 smooth_sandstone_stairs facing west waterlogged true shape inner_left half bottom
9746 smooth_sandstone_stairs facing west waterlogged false shape inner_left half bottom
9747 smooth_sandstone_stairs facing west waterlogged true shape inner_right half bottom
9748 smooth_sandstone_stairs facing west waterlogged false shape inner_right half bottom
9749 smooth_sandstone_stairs facing west waterlogged true shape outer_left half bottom
9750 smooth_sandstone_stairs facing west waterlogged false shape outer_left half bottom
9751 smooth_sandstone_stairs facing west waterlogged true shape outer_right half bottom
9752 smooth_sandstone_stairs facing west waterlogged false shape outer_right half bottom
9753 smooth_sandstone_stairs facing east waterlogged true shape straight half top
9754 smooth_sandstone_stairs facing east waterlogged false shape straight half top
9755 smooth_sandstone_stairs facing east waterlogged true shape inner_left half top
9756 smooth_sandstone_stairs facing east waterlogged false shape inner_left half top
9757 smooth_sandstone_stairs facing east waterlogged true shape inner_right half top
9758 smooth_sandstone_stairs facing east waterlogged false shape inner_right half top
9759 smooth_sandstone_stairs facing east waterlogged true shape outer_left half top
9760 smooth_sandstone_stairs facing east waterlogged false shape outer_left half top
9761 smooth_sandstone_stairs facing east waterlogged true shape outer_right half top
9762 smooth_sandstone_stairs facing east waterlogged false shape outer_right half top
9763 smooth_sandstone_stairs facing east waterlogged true shape straight half bottom
9764 smooth_sandstone_stairs facing east waterlogged false shape straight half bottom
9765 smooth_sandstone_stairs facing east waterlogged true shape inner_left half bottom
9766 smooth_sandstone_stairs facing east waterlogged false shape inner_left half bottom
9767 smooth_sandstone_stairs facing east waterlogged true shape inner_right half bottom
9768 smooth_sandstone_stairs facing east waterlogged false shape inner_right half bottom
9769 smooth_sandstone_stairs facing east waterlogged true shape outer_left half bottom
9770 smooth_sandstone_stairs facing east waterlogged false shape outer_left half bottom
9771 smooth_sandstone_stairs facing east waterlogged true shape outer_right half bottom
9772 smooth_sandstone_stairs facing east waterlogged false shape outer_right half bottom
9773 smooth_quartz_stairs facing north waterlogged true shape straight half top
9774 smooth_quartz_stairs facing north waterlogged false shape straight half top
9775 smooth_quartz_stairs facing north waterlogged true shape inner_left half top
9776 smooth_quartz_stairs facing north waterlogged false shape inner_left half top
9777 smooth_quartz_stairs facing north waterlogged true shape inner_right half top
9778 smooth_quartz_stairs facing north waterlogged false shape inner_right half top
9779 smooth_quartz_stairs facing north waterlogged true shape outer_left half top
9780 smooth_quartz_stairs facing north waterlogged false shape outer_left half top
9781 smooth_quartz_stairs facing north waterlogged true shape outer_right half top
9782 smooth_quartz_stairs facing north waterlogged false shape outer_right half top
9783 smooth_quartz_stairs facing north waterlogged true shape straight half bottom
9784 smooth_quartz_stairs facing north waterlogged false shape straight half bottom
9785 smooth_quartz_stairs facing north waterlogged true shape inner_left half bottom
9786 smooth_quartz_stairs facing north waterlogged false shape inner_left half bottom
9787 smooth_quartz_stairs facing north waterlogged true shape inner_right half bottom
9788 smooth_quartz_stairs facing north waterlogged false shape inner_right half bottom
9789 smooth_quartz_stairs facing north waterlogged true shape outer_left half bottom
9790 smooth_quartz_stairs facing north waterlogged false shape outer_left half bottom
9791 smooth_quartz_stairs facing north waterlogged true shape outer_right half bottom
9792 smooth_quartz_stairs facing north waterlogged false shape outer_right half bottom
9793 smooth_quartz_stairs facing south waterlogged true shape straight half top
9794 smooth_quartz_stairs facing south waterlogged false shape straight half top
9795 smooth_quartz_stairs facing south waterlogged true shape inner_left half top
9796 smooth_quartz_stairs facing south waterlogged false shape inner_left half top
9797 smooth_quartz_stairs facing south waterlogged true shape inner_right half top
9798 smooth_quartz_stairs facing south waterlogged false shape inner_right half top
9799 smooth_quartz_stairs facing south waterlogged true shape outer_left half top
9800 smooth_quartz_stairs facing south waterlogged false shape outer_left half top
9801 smooth_quartz_stairs facing south waterlogged true shape outer_right half top
9802 smooth_quartz_stairs facing south waterlogged false shape outer_right half top
9803 smooth_quartz_stairs facing south waterlogged true shape straight half bottom
9804 smooth_quartz_stairs facing south waterlogged false shape straight half bottom
9805 smooth_quartz_stairs facing south waterlogged true shape inner_left half bottom
9806 smooth_quartz_stairs facing south waterlogged false shape inner_left half bottom
9807 smooth_quartz_stairs facing south waterlogged true shape inner_right half bottom
9808 smooth_quartz_stairs facing south waterlogged false shape inner_right half bottom
9809 smooth_quartz_stairs facing south waterlogged true shape outer_left half bottom
9810 smooth_quartz_stairs facing south waterlogged false shape outer_left half bottom
9811 smooth_quartz_stairs facing south waterlogged true shape outer_right half bottom
9812 smooth_quartz_stairs facing south waterlogged false shape outer_right half bottom
9813 smooth_quartz_stairs facing west waterlogged true shape straight half top
9814 smooth_quartz_stairs facing west waterlogged false shape straight half top
9815 smooth_quartz_stairs facing west waterlogged true shape inner_left half top
9816 smooth_quartz_stairs facing west waterlogged false shape inner_left half top
9817 smooth_quartz_stairs facing west waterlogged true shape inner_right half top
9818 smooth_quartz_stairs facing west waterlogged false shape inner_right half top
9819 smooth_quartz_stairs facing west waterlogged true shape outer_left half top
9820 smooth_quartz_stairs facing west waterlogged false shape outer_left half top
9821 smooth_quartz_stairs facing west waterlogged true shape outer_right half top
9822 smooth_quartz_stairs facing west waterlogged false shape outer_right half top
9823 smooth_quartz_stairs facing west waterlogged true shape straight half bottom
9824 smooth_quartz_stairs facing west waterlogged false shape straight half bottom
9825 smooth_quartz_stairs facing west waterlogged true shape inner_left half bottom
9826 smooth_quartz_stairs facing west waterlogged false shape inner_left half bottom
9827 smooth_quartz_stairs facing west waterlogged true shape inner_right half bottom
9828 smooth_quartz_stairs facing west waterlogged false shape inner_right half bottom
9829 smooth_quartz_stairs facing west waterlogged true shape outer_left half bottom
9830 smooth_quartz_stairs facing west waterlogged false shape outer_left half bottom
9831 smooth_quartz_stairs facing west waterlogged true shape outer_right half bottom
9832 smooth_quartz_stairs facing west waterlogged false shape outer_right half bottom
9833 smooth_quartz_stairs facing east waterlogged true shape straight half top
9834 smooth_quartz_stairs facing east waterlogged false shape straight half top
9835 smooth_quartz_stairs facing east waterlogged true shape inner_left half top
9836 smooth_quartz_stairs facing east waterlogged false shape inner_left half top
9837 smooth_quartz_stairs facing east waterlogged true shape inner_right half top
9838 smooth_quartz_stairs facing east waterlogged false shape inner_right half top
9839 smooth_quartz_stairs facing east waterlogged true shape outer_left half top
9840 smooth_quartz_stairs facing east waterlogged false shape outer_left half top
9841 smooth_quartz_stairs facing east waterlogged true shape outer_right half top
9842 smooth_quartz_stairs facing east waterlogged false shape outer_right half top
9843 smooth_quartz_stairs facing east waterlogged true shape straight half bottom
9844 smooth_quartz_stairs facing east waterlogged false shape straight half bottom
9845 smooth_quartz_stairs facing east waterlogged true shape inner_left half bottom
9846 smooth_quartz_stairs facing east waterlogged false shape inner_left half bottom
9847 smooth_quartz_stairs facing east waterlogged true shape inner_right half bottom
9848 smooth_quartz_stairs facing east waterlogged false shape inner_right half bottom
9849 smooth_quartz_stairs facing east waterlogged true shape outer_left half bottom
9850 smooth_quartz_stairs facing east waterlogged false shape outer_left half bottom
9851 smooth_quartz_stairs facing east waterlogged true shape outer_right half bottom
9852 smooth_quartz_stairs facing east waterlogged false shape outer_right half bottom
9853 granite_stairs facing north waterlogged true shape straight half top
9854 granite_stairs facing north waterlogged false shape straight half top
9855 granite_stairs facing north waterlogged true shape inner_left half top
9856 granite_stairs facing north waterlogged false shape inner_left half top
9857 granite_stairs facing north waterlogged true shape inner_right half top
9858 granite_stairs facing north waterlogged false shape inner_right half top
9859 granite_stairs facing north waterlogged true shape outer_left half top
9860 granite_stairs facing north waterlogged false shape outer_left half top
9861 granite_stairs facing north waterlogged true shape outer_right half top
9862 granite_stairs facing north waterlogged false shape outer_right half top
9863 granite_stairs facing north waterlogged true shape straight half bottom
9864 granite_stairs facing north waterlogged false shape straight half bottom
9865 granite_stairs facing north waterlogged true shape inner_left half bottom
9866 granite_stairs facing north waterlogged false shape inner_left half bottom
9867 granite_stairs facing north waterlogged true shape inner_right half bottom
9868 granite_stairs facing north waterlogged false shape inner_right half bottom
9869 granite_stairs facing north waterlogged true shape outer_left half bottom
9870 granite_stairs facing north waterlogged false shape outer_left half bottom
9871 granite_stairs facing north waterlogged true shape outer_right half bottom
9872 granite_stairs facing north waterlogged false shape outer_right half bottom
9873 granite_stairs facing south waterlogged true shape straight half top
9874 granite_stairs facing south waterlogged false shape straight half top
9875 granite_stairs facing south waterlogged true shape inner_left half top
9876 granite_stairs facing south waterlogged false shape inner_left half top
9877 granite_stairs facing south waterlogged true shape inner_right half top
9878 granite_stairs facing south waterlogged false shape inner_right half top
9879 granite_stairs facing south waterlogged true shape outer_left half top
9880 granite_stairs facing south waterlogged false shape outer_left half top
9881 granite_stairs facing south waterlogged true shape outer_right half top
9882 granite_stairs facing south waterlogged false shape outer_right half top
9883 granite_stairs facing south waterlogged true shape straight half bottom
9884 granite_stairs facing south waterlogged false shape straight half bottom
9885 granite_stairs facing south waterlogged true shape inner_left half bottom
9886 granite_stairs facing south waterlogged false shape inner_left half bottom
9887 granite_stairs facing south waterlogged true shape inner_right half bottom
9888 granite_stairs facing south waterlogged false shape inner_right half bottom
9889 granite_stairs facing south waterlogged true shape outer_left half bottom
9890 granite_stairs facing south waterlogged false shape outer_left half bottom
9891 granite_stairs facing south waterlogged true shape outer_right half bottom
9892 granite_stairs facing south waterlogged false shape outer_right half bottom
9893 granite_stairs facing west waterlogged true shape straight half top
9894 granite_stairs facing west waterlogged false shape straight half top
9895 granite_stairs facing west waterlogged true shape inner_left half top
9896 granite_stairs facing west waterlogged false shape inner_left half top
9897 granite_stairs facing west waterlogged true shape inner_right half top
9898 granite_stairs facing west waterlogged false shape inner_right half top
9899 granite_stairs facing west waterlogged true shape outer_left half top
9900 granite_stairs facing west waterlogged false shape outer_left half top
9901 granite_stairs facing west waterlogged true shape outer_right half top
9902 granite_stairs facing west waterlogged false shape outer_right half top
9903 granite_stairs facing west waterlogged true shape straight half bottom
9904 granite_stairs facing west waterlogged false shape straight half bottom
9905 granite_stairs facing west waterlogged true shape inner_left half bottom
9906 granite_stairs facing west waterlogged false shape inner_left half bottom
9907 granite_stairs facing west waterlogged true shape inner_right half bottom
9908 granite_stairs facing west waterlogged false shape inner_right half bottom
9909 granite_stairs facing west waterlogged true shape outer_left half bottom
9910 granite_stairs facing west waterlogged false shape outer_left half bottom
9911 granite_stairs facing west waterlogged true shape outer_right half bottom
9912 granite_stairs facing west waterlogged false shape outer_right half bottom
9913 granite_stairs facing east waterlogged true shape straight half top
9914 granite_stairs facing east waterlogged false shape straight half top
9915 granite_stairs facing east waterlogged true shape inner_left half top
9916 granite_stairs facing east waterlogged false shape inner_left half top
9917 granite_stairs facing east waterlogged true shape inner_right half top
9918 granite_stairs facing east waterlogged false shape inner_right half top
9919 granite_stairs facing east waterlogged true shape outer_left half top
9920 granite_stairs facing east waterlogged false shape outer_left half top
9921 granite_stairs facing east waterlogged true shape outer_right half top
9922 granite_stairs facing east waterlogged false shape outer_right half top
9923 granite_stairs facing east waterlogged true shape straight half bottom
9924 granite_stairs facing east waterlogged false shape straight half bottom
9925 granite_stairs facing east waterlogged true shape inner_left half bottom
9926 granite_stairs facing east waterlogged false shape inner_left half bottom
9927 granite_stairs facing east waterlogged true shape inner_right half bottom
9928 granite_stairs facing east waterlogged false shape inner_right half bottom
9929 granite_stairs facing east waterlogged true shape outer_left half bottom
9930 granite_stairs facing east waterlogged false shape outer_left half bottom
9931 granite_stairs facing east waterlogged true shape outer_right half bottom
9932 granite_stairs facing east waterlogged false shape outer_right half bottom
9933 andesite_stairs facing north waterlogged true shape straight half top
9934 andesite_stairs facing north waterlogged false shape straight half top
9935 andesite_stairs facing north waterlogged true shape inner_left half top
9936 andesite_stairs facing north waterlogged false shape inner_left half top
9937 andesite_stairs facing north waterlogged true shape inner_right half top
9938 andesite_stairs facing north waterlogged false shape inner_right half top
9939 andesite_stairs facing north waterlogged true shape outer_left half top
9940 andesite_stairs facing north waterlogged false shape outer_left half top
9941 andesite_stairs facing north waterlogged true shape outer_right half top
9942 andesite_stairs facing north waterlogged false shape outer_right half top
9943 andesite_stairs facing north waterlogged true shape straight half bottom
9944 andesite_stairs facing north waterlogged false shape straight half bottom
9945 andesite_stairs facing north waterlogged true shape inner_left half bottom
9946 andesite_stairs facing north waterlogged false shape inner_left half bottom
9947 andesite_stairs facing north waterlogged true shape inner_right half bottom
9948 andesite_stairs facing north waterlogged false shape inner_right half bottom
9949 andesite_stairs facing north waterlogged true shape outer_left half bottom
9950 andesite_stairs facing north waterlogged false shape outer_left half bottom
9951 andesite_stairs facing north waterlogged true shape outer_right half bottom
9952 andesite_stairs facing north waterlogged false shape outer_right half bottom
9953 andesite_stairs facing south waterlogged true shape straight half top
9954 andesite_stairs facing south waterlogged false shape straight half top
9955 andesite_stairs facing south waterlogged true shape inner_left half top
9956 andesite_stairs facing south waterlogged false shape inner_left half top
9957 andesite_stairs facing south waterlogged true shape inner_right half top
9958 andesite_stairs facing south waterlogged false shape inner_right half top
9959 andesite_stairs facing south waterlogged true shape outer_left half top
9960 andesite_stairs facing south waterlogged false shape outer_left half top
9961 andesite_stairs facing south waterlogged true shape outer_right half top
9962 andesite_stairs facing south waterlogged false shape outer_right half top
9963 andesite_stairs facing south waterlogged true shape straight half bottom
9964 andesite_stairs facing south waterlogged false shape straight half bottom
9965 andesite_stairs facing south waterlogged true shape inner_left half bottom
9966 andesite_stairs facing south waterlogged false shape inner_left half bottom
9967 andesite_stairs facing south waterlogged true shape inner_right half bottom
9968 andesite_stairs facing south waterlogged false shape inner_right half bottom
9969 andesite_stairs facing south waterlogged true shape outer_left half bottom
9970 andesite_stairs facing south waterlogged false shape outer_left half bottom
9971 andesite_stairs facing south waterlogged true shape outer_right half bottom
9972 andesite_stairs facing south waterlogged false shape outer_right half bottom
9973 andesite_stairs facing west waterlogged true shape straight half top
9974 andesite_stairs facing west waterlogged false shape straight half top
9975 andesite_stairs facing west waterlogged true shape inner_left half top
9976 andesite_stairs facing west waterlogged false shape inner_left half top
9977 andesite_stairs facing west waterlogged true shape inner_right half top
9978 andesite_stairs facing west waterlogged false shape inner_right half top
9979 andesite_stairs facing west waterlogged true shape outer_left half top
9980 andesite_stairs facing west waterlogged false shape outer_left half top
9981 andesite_stairs facing west waterlogged true shape outer_right half top
9982 andesite_stairs facing west waterlogged false shape outer_right half top
9983 andesite_stairs facing west waterlogged true shape straight half bottom
9984 andesite_stairs facing west waterlogged false shape straight half bottom
9985 andesite_stairs facing west waterlogged true shape inner_left half bottom
9986 andesite_stairs facing west waterlogged false shape inner_left half bottom
9987 andesite_stairs facing west waterlogged true shape inner_right half bottom
9988 andesite_stairs facing west waterlogged false shape inner_right half bottom
9989 andesite_stairs facing west waterlogged true shape outer_left half bottom
9990 andesite_stairs facing west waterlogged false shape outer_left half bottom
9991 andesite_stairs facing west waterlogged true shape outer_right half bottom
9992 andesite_stairs facing west waterlogged false shape outer_right half bottom
9993 andesite_stairs facing east waterlogged true shape straight half top
9994 andesite_stairs facing east waterlogged false shape straight half top
9995 andesite_stairs facing east waterlogged true shape inner_left half top
9996 andesite_stairs facing east waterlogged false shape inner_left half top
9997 andesite_stairs facing east waterlogged true shape inner_right half top
9998 andesite_stairs facing east waterlogged false shape inner_right half top
9999 andesite_stairs facing east waterlogged true shape outer_left half top
10000 andesite_stairs facing east waterlogged false shape outer_left half top
10001 andesite_stairs facing east waterlogged true shape outer_right half top
10002 andesite_stairs facing east waterlogged false shape outer_right half top
10003 andesite_stairs facing east waterlogged true shape straight half bottom
10004 andesite_stairs facing east waterlogged false shape straight half bottom
10005 andesite_stairs facing east waterlogged true shape inner_left half bottom
10006 andesite_stairs facing east waterlogged false shape inner_left half bottom
10007 andesite_stairs facing east waterlogged true shape inner_right half bottom
10008 andesite_stairs facing east waterlogged false shape inner_right half bottom
10009 andesite_stairs facing east waterlogged true shape outer_left half bottom
10010 andesite_stairs facing east waterlogged false shape outer_left half bottom
10011 andesite_stairs facing east waterlogged true shape outer_right half bottom
10012 andesite_stairs facing east waterlogged false shape outer_right half bottom
10013 red_nether_brick_stairs facing north waterlogged true shape straight half top
10014 red_nether_brick_stairs facing north waterlogged false shape straight half top
10015 red_nether_brick_stairs facing north waterlogged true shape inner_left half top
10016 red_nether_brick_stairs facing north waterlogged false shape inner_left half top
10017 red_nether_brick_stairs facing north waterlogged true shape inner_right half top
10018 red_nether_brick_stairs facing north waterlogged false shape inner_right half top
10019 red_nether_brick_stairs facing north waterlogged true shape outer_left half top
10020 red_nether_brick_stairs facing north waterlogged false shape outer_left half top
10021 red_nether_brick_stairs facing north waterlogged true shape outer_right half top
10022 red_nether_brick_stairs facing north waterlogged false shape outer_right half top
10023 red_nether_brick_stairs facing north waterlogged true shape straight half bottom
10024 red_nether_brick_stairs facing north waterlogged false shape straight half bottom
10025 red_nether_brick_stairs facing north waterlogged true shape inner_left half bottom
10026 red_nether_brick_stairs facing north waterlogged false shape inner_left half bottom
10027 red_nether_brick_stairs facing north waterlogged true shape inner_right half bottom
10028 red_nether_brick_stairs facing north waterlogged false shape inner_right half bottom
10029 red_nether_brick_stairs facing north waterlogged true shape outer_left half bottom
10030 red_nether_brick_stairs facing north waterlogged false shape outer_left half bottom
10031 red_nether_brick_stairs facing north waterlogged true shape outer_right half bottom
10032 red_nether_brick_stairs facing north waterlogged false shape outer_right half bottom
10033 red_nether_brick_stairs facing south waterlogged true shape straight half top
10034 red_nether_brick_stairs facing south waterlogged false shape straight half top
10035 red_nether_brick_stairs facing south waterlogged true shape inner_left half top
10036 red_nether_brick_stairs facing south waterlogged false shape inner_left half top
10037 red_nether_brick_stairs facing south waterlogged true shape inner_right half top
10038 red_nether_brick_stairs facing south waterlogged false shape inner_right half top
10039 red_nether_brick_stairs facing south waterlogged true shape outer_left half top
10040 red_nether_brick_stairs facing south waterlogged false shape outer_left half top
10041 red_nether_brick_stairs facing south waterlogged true shape outer_right half top
10042 red_nether_brick_stairs facing south waterlogged false shape outer_right half top
10043 red_nether_brick_stairs facing south waterlogged true shape straight half bottom
10044 red_nether_brick_stairs facing south waterlogged false shape straight half bottom
10045 red_nether_brick_stairs facing south waterlogged true shape inner_left half bottom
10046 red_nether_brick_stairs facing south waterlogged false shape inner_left half bottom
10047 red_nether_brick_stairs facing south waterlogged true shape inner_right half bottom
10048 red_nether_brick_stairs facing south waterlogged false shape inner_right half bottom
10049 red_nether_brick_stairs facing south waterlogged true shape outer_left half bottom
10050 red_nether_brick_stairs facing south waterlogged false shape outer_left half bottom
10051 red_nether_brick_stairs facing south waterlogged true shape outer_right half bottom
10052 red_nether_brick_stairs facing south waterlogged false shape outer_right half bottom
10053 red_nether_brick_stairs facing west waterlogged true shape straight half top
10054 red_nether_brick_stairs facing west waterlogged false shape straight half top
10055 red_nether_brick_stairs facing west waterlogged true shape inner_left half top
10056 red_nether_brick_stairs facing west waterlogged false shape inner_left half top
10057 red_nether_brick_stairs facing west waterlogged true shape inner_right half top
10058 red_nether_brick_stairs facing west waterlogged false shape inner_right half top
10059 red_nether_brick_stairs facing west waterlogged true shape outer_left half top
10060 red_nether_brick_stairs facing west waterlogged false shape outer_left half top
10061 red_nether_brick_stairs facing west waterlogged true shape outer_right half top
10062 red_nether_brick_stairs facing west waterlogged false shape outer_right half top
10063 red_nether_brick_stairs facing west waterlogged true shape straight half bottom
10064 red_nether_brick_stairs facing west waterlogged false shape straight half bottom
10065 red_nether_brick_stairs facing west waterlogged true shape inner_left half bottom
10066 red_nether_brick_stairs facing west waterlogged false shape inner_left half bottom
10067 red_nether_brick_stairs facing west waterlogged true shape inner_right half bottom
10068 red_nether_brick_stairs facing west waterlogged false shape inner_right half bottom
10069 red_nether_brick_stairs facing west waterlogged true shape outer_left half bottom
10070 red_nether_brick_stairs facing west waterlogged false shape outer_left half bottom
10071 red_nether_brick_stairs facing west waterlogged true shape outer_right half bottom
10072 red_nether_brick_stairs facing west waterlogged false shape outer_right half bottom
10073 red_nether_brick_stairs facing east waterlogged true shape straight half top
10074 red_nether_brick_stairs facing east waterlogged false shape straight half top
10075 red_nether_brick_stairs facing east waterlogged true shape inner_left half top
10076 red_nether_brick_stairs facing east waterlogged false shape inner_left half top
10077 red_nether_brick_stairs facing east waterlogged true shape inner_right half top
10078 red_nether_brick_stairs facing east waterlogged false shape inner_right half top
10079 red_nether_brick_stairs facing east waterlogged true shape outer_left half top
10080 red_nether_brick_stairs facing east waterlogged false shape outer_left half top
10081 red_nether_brick_stairs facing east waterlogged true shape outer_right half top
10082 red_nether_brick_stairs facing east waterlogged false shape outer_right half top
10083 red_nether_brick_stairs facing east waterlogged true shape straight half bottom
10084 red_nether_brick_stairs facing east waterlogged false shape straight half bottom
10085 red_nether_brick_stairs facing east waterlogged true shape inner_left half bottom
10086 red_nether_brick_stairs facing east waterlogged false shape inner_left half bottom
10087 red_nether_brick_stairs facing east waterlogged true shape inner_right half bottom
10088 red_nether_brick_stairs facing east waterlogged false shape inner_right half bottom
10089 red_nether_brick_stairs facing east waterlogged true shape outer_left half bottom
10090 red_nether_brick_stairs facing east waterlogged false shape outer_left half bottom
10091 red_nether_brick_stairs facing east waterlogged true shape outer_right half bottom
10092 red_nether_brick_stairs facing east waterlogged false shape outer_right half bottom
10093 polished_andesite_stairs facing north waterlogged true shape straight half top
10094 polished_andesite_stairs facing north waterlogged false shape straight half top
10095 polished_andesite_stairs facing north waterlogged true shape inner_left half top
10096 polished_andesite_stairs facing north waterlogged false shape inner_left half top
10097 polished_andesite_stairs facing north waterlogged true shape inner_right half top
10098 polished_andesite_stairs facing north waterlogged false shape inner_right half top
10099 polished_andesite_stairs facing north waterlogged true shape outer_left half top
10100 polished_andesite_stairs facing north waterlogged false shape outer_left half top
10101 polished_andesite_stairs facing north waterlogged true shape outer_right half top
10102 polished_andesite_stairs facing north waterlogged false shape outer_right half top
10103 polished_andesite_stairs facing north waterlogged true shape straight half bottom
10104 polished_andesite_stairs facing north waterlogged false shape straight half bottom
10105 polished_andesite_stairs facing north waterlogged true shape inner_left half bottom
10106 polished_andesite_stairs facing north waterlogged false shape inner_left half bottom
10107 polished_andesite_stairs facing north waterlogged true shape inner_right half bottom
10108 polished_andesite_stairs facing north waterlogged false shape inner_right half bottom
10109 polished_andesite_stairs facing north waterlogged true shape outer_left half bottom
10110 polished_andesite_stairs facing north waterlogged false shape outer_left half bottom
10111 polished_andesite_stairs facing north waterlogged true shape outer_right half bottom
10112 polished_andesite_stairs facing north waterlogged false shape outer_right half bottom
10113 polished_andesite_stairs facing south waterlogged true shape straight half top
10114 polished_andesite_stairs facing south waterlogged false shape straight half top
10115 polished_andesite_stairs facing south waterlogged true shape inner_left half top
10116 polished_andesite_stairs facing south waterlogged false shape inner_left half top
10117 polished_andesite_stairs facing south waterlogged true shape inner_right half top
10118 polished_andesite_stairs facing south waterlogged false shape inner_right half top
10119 polished_andesite_stairs facing south waterlogged true shape outer_left half top
10120 polished_andesite_stairs facing south waterlogged false shape outer_left half top
10121 polished_andesite_stairs facing south waterlogged true shape outer_right half top
10122 polished_andesite_stairs facing south waterlogged false shape outer_right half top
10123 polished_andesite_stairs facing south waterlogged true shape straight half bottom
10124 polished_andesite_stairs facing south waterlogged false shape straight half bottom
10125 polished_andesite_stairs facing south waterlogged true shape inner_left half bottom
10126 polished_andesite_stairs facing south waterlogged false shape inner_left half bottom
10127 polished_andesite_stairs facing south waterlogged true shape inner_right half bottom
10128 polished_andesite_stairs facing south waterlogged false shape inner_right half bottom
10129 polished_andesite_stairs facing south waterlogged true shape outer_left half bottom
10130 polished_andesite_stairs facing south waterlogged false shape outer_left half bottom
10131 polished_andesite_stairs facing south waterlogged true shape outer_right half bottom
10132 polished_andesite_stairs facing south waterlogged false shape outer_right half bottom
10133 polished_andesite_stairs facing west waterlogged true shape straight half top
10134 polished_andesite_stairs facing west waterlogged false shape straight half top
10135 polished_andesite_stairs facing west waterlogged true shape inner_left half top
10136 polished_andesite_stairs facing west waterlogged false shape inner_left half top
10137 polished_andesite_stairs facing west waterlogged true shape inner_right half top
10138 polished_andesite_stairs facing west waterlogged false shape inner_right half top
10139 polished_andesite_stairs facing west waterlogged true shape outer_left half top
10140 polished_andesite_stairs facing west waterlogged false shape outer_left half top
10141 polished_andesite_stairs facing west waterlogged true shape outer_right half top
10142 polished_andesite_stairs facing west waterlogged false shape outer_right half top
10143 polished_andesite_stairs facing west waterlogged true shape straight half bottom
10144 polished_andesite_stairs facing west waterlogged false shape straight half bottom
10145 polished_andesite_stairs facing west waterlogged true shape inner_left half bottom
10146 polished_andesite_stairs facing west waterlogged false shape inner_left half bottom
10147 polished_andesite_stairs facing west waterlogged true shape inner_right half bottom
10148 polished_andesite_stairs facing west waterlogged false shape inner_right half bottom
10149 polished_andesite_stairs facing west waterlogged true shape outer_left half bottom
10150 polished_andesite_stairs facing west waterlogged false shape outer_left half bottom
10151 polished_andesite_stairs facing west waterlogged true shape outer_right half bottom
10152 polished_andesite_stairs facing west waterlogged false shape outer_right half bottom
10153 polished_andesite_stairs facing east waterlogged true shape straight half top
10154 polished_andesite_stairs facing east waterlogged false shape straight half top
10155 polished_andesite_stairs facing east waterlogged true shape inner_left half top
10156 polished_andesite_stairs facing east waterlogged false shape inner_left half top
10157 polished_andesite_stairs facing east waterlogged true shape inner_right half top
10158 polished_andesite_stairs facing east waterlogged false shape inner_right half top
10159 polished_andesite_stairs facing east waterlogged true shape outer_left half top
10160 polished_andesite_stairs facing east waterlogged false shape outer_left half top
10161 polished_andesite_stairs facing east waterlogged true shape outer_right half top
10162 polished_andesite_stairs facing east waterlogged false shape outer_right half top
10163 polished_andesite_stairs facing east waterlogged true shape straight half bottom
10164 polished_andesite_stairs facing east waterlogged false shape straight half bottom
10165 polished_andesite_stairs facing east waterlogged true shape inner_left half bottom
10166 polished_andesite_stairs facing east waterlogged false shape inner_left half bottom
10167 polished_andesite_stairs facing east waterlogged true shape inner_right half bottom
10168 polished_andesite_stairs facing east waterlogged false shape inner_right half bottom
10169 polished_andesite_stairs facing east waterlogged true shape outer_left half bottom
10170 polished_andesite_stairs facing east waterlogged false shape outer_left half bottom
10171 polished_andesite_stairs facing east waterlogged true shape outer_right half bottom
10172 polished_andesite_stairs facing east waterlogged false shape outer_right half bottom
10173 diorite_stairs facing north waterlogged true shape straight half top
10174 diorite_stairs facing north waterlogged false shape straight half top
10175 diorite_stairs facing north waterlogged true shape inner_left half top
10176 diorite_stairs facing north waterlogged false shape inner_left half top
10177 diorite_stairs facing north waterlogged true shape inner_right half top
10178 diorite_stairs facing north waterlogged false shape inner_right half top
10179 diorite_stairs facing north waterlogged true shape outer_left half top
10180 diorite_stairs facing north waterlogged false shape outer_left half top
10181 diorite_stairs facing north waterlogged true shape outer_right half top
10182 diorite_stairs facing north waterlogged false shape outer_right half top
10183 diorite_stairs facing north waterlogged true shape straight half bottom
10184 diorite_stairs facing north waterlogged false shape straight half bottom
10185 diorite_stairs facing north waterlogged true shape inner_left half bottom
10186 diorite_stairs facing north waterlogged false shape inner_left half bottom
10187 diorite_stairs facing north waterlogged true shape inner_right half bottom
10188 diorite_stairs facing north waterlogged false shape inner_right half bottom
10189 diorite_stairs facing north waterlogged true shape outer_left half bottom
10190 diorite_stairs facing north waterlogged false shape outer_left half bottom
10191 diorite_stairs facing north waterlogged true shape outer_right half bottom
10192 diorite_stairs facing north waterlogged false shape outer_right half bottom
10193 diorite_stairs facing south waterlogged true shape straight half top
10194 diorite_stairs facing south waterlogged false shape straight half top
10195 diorite_stairs facing south waterlogged true shape inner_left half top
10196 diorite_stairs facing south waterlogged false shape inner_left half top
10197 diorite_stairs facing south waterlogged true shape inner_right half top
10198 diorite_stairs facing south waterlogged false shape inner_right half top
10199 diorite_stairs facing south waterlogged true shape outer_left half top
10200 diorite_stairs facing south waterlogged false shape outer_left half top
10201 diorite_stairs facing south waterlogged true shape outer_right half top
10202 diorite_stairs facing south waterlogged false shape outer_right half top
10203 diorite_stairs facing south waterlogged true shape straight half bottom
10204 diorite_stairs facing south waterlogged false shape straight half bottom
10205 diorite_stairs facing south waterlogged true shape inner_left half bottom
10206 diorite_stairs facing south waterlogged false shape inner_left half bottom
10207 diorite_stairs facing south waterlogged true shape inner_right half bottom
10208 diorite_stairs facing south waterlogged false shape inner_right half bottom
10209 diorite_stairs facing south waterlogged true shape outer_left half bottom
10210 diorite_stairs facing south waterlogged false shape outer_left half bottom
10211 diorite_stairs facing south waterlogged true shape outer_right half bottom
10212 diorite_stairs facing south waterlogged false shape outer_right half bottom
10213 diorite_stairs facing west waterlogged true shape straight half top
10214 diorite_stairs facing west waterlogged false shape straight half top
10215 diorite_stairs facing west waterlogged true shape inner_left half top
10216 diorite_stairs facing west waterlogged false shape inner_left half top
10217 diorite_stairs facing west waterlogged true shape inner_right half top
10218 diorite_stairs facing west waterlogged false shape inner_right half top
10219 diorite_stairs facing west waterlogged true shape outer_left half top
10220 diorite_stairs facing west waterlogged false shape outer_left half top
10221 diorite_stairs facing west waterlogged true shape outer_right half top
10222 diorite_stairs facing west waterlogged false shape outer_right half top
10223 diorite_stairs facing west waterlogged true shape straight half bottom
10224 diorite_stairs facing west waterlogged false shape straight half bottom
10225 diorite_stairs facing west waterlogged true shape inner_left half bottom
10226 diorite_stairs facing west waterlogged false shape inner_left half bottom
10227 diorite_stairs facing west waterlogged true shape inner_right half bottom
10228 diorite_stairs facing west waterlogged false shape inner_right half bottom
10229 diorite_stairs facing west waterlogged true shape outer_left half bottom
10230 diorite_stairs facing west waterlogged false shape outer_left half bottom
10231 diorite_stairs facing west waterlogged true shape outer_right half bottom
10232 diorite_stairs facing west waterlogged false shape outer_right half bottom
10233 diorite_stairs facing east waterlogged true shape straight half top
10234 diorite_stairs facing east waterlogged false shape straight half top
10235 diorite_stairs facing east waterlogged true shape inner_left half top
10236 diorite_stairs facing east waterlogged false shape inner_left half top
10237 diorite_stairs facing east waterlogged true shape inner_right half top
10238 diorite_stairs facing east waterlogged false shape inner_right half top
10239 diorite_stairs facing east waterlogged true shape outer_left half top
10240 diorite_stairs facing east waterlogged false shape outer_left half top
10241 diorite_stairs facing east waterlogged true shape outer_right half top
10242 diorite_stairs facing east waterlogged false shape outer_right half top
10243 diorite_stairs facing east waterlogged true shape straight half bottom
10244 diorite_stairs facing east waterlogged false shape straight half bottom
10245 diorite_stairs facing east waterlogged true shape inner_left half bottom
10246 diorite_stairs facing east waterlogged false shape inner_left half bottom
10247 diorite_stairs facing east waterlogged true shape inner_right half bottom
10248 diorite_stairs facing east waterlogged false shape inner_right half bottom
10249 diorite_stairs facing east waterlogged true shape outer_left half bottom
10250 diorite_stairs facing east waterlogged false shape outer_left half bottom
10251 diorite_stairs facing east waterlogged true shape outer_right half bottom
10252 diorite_stairs facing east waterlogged false shape outer_right half bottom
10253 polished_granite_slab type top waterlogged true
10254 polished_granite_slab type top waterlogged false
10255 polished_granite_slab type bottom waterlogged true
10256 polished_granite_slab type bottom waterlogged false
10257 polished_granite_slab type double waterlogged true
10258 polished_granite_slab type double waterlogged false
10259 smooth_red_sandstone_slab type top waterlogged true
10260 smooth_red_sandstone_slab type top waterlogged false
10261 smooth_red_sandstone_slab type bottom waterlogged true
10262 smooth_red_sandstone_slab type bottom waterlogged false
10263 smooth_red_sandstone_slab type double waterlogged true
10264 smooth_red_sandstone_slab type double waterlogged false
10265 mossy_stone_brick_slab type top waterlogged true
10266 mossy_stone_brick_slab type top waterlogged false
10267 mossy_stone_brick_slab type bottom waterlogged true
10268 mossy_stone_brick_slab type bottom waterlogged false
10269 mossy_stone_brick_slab type double waterlogged true
10270 mossy_stone_brick_slab type double waterlogged false
10271 polished_diorite_slab type top waterlogged true
10272 polished_diorite_slab type top waterlogged false
10273 polished_diorite_slab type bottom waterlogged true
10274 polished_diorite_slab type bottom waterlogged false
10275 polished_diorite_slab type double waterlogged true
10276 polished_diorite_slab type double waterlogged false
10277 mossy_cobblestone_slab type top waterlogged true
10278 mossy_cobblestone_slab type top waterlogged false
10279 mossy_cobblestone_slab type bottom waterlogged true
10280 mossy_cobblestone_slab type bottom waterlogged false
10281 mossy_cobblestone_slab type double waterlogged true
10282 mossy_cobblestone_slab type double waterlogged false
10283 end_stone_brick_slab type top waterlogged true
10284 end_stone_brick_slab type top waterlogged false
10285 end_stone_brick_slab type bottom waterlogged true
10286 end_stone_brick_slab type bottom waterlogged false
10287 end_stone_brick_slab type double waterlogged true
10288 end_stone_brick_slab type double waterlogged false
10289 smooth_sandstone_slab type top waterlogged true
10290 smooth_sandstone_slab type top waterlogged false
10291 smooth_sandstone_slab type bottom waterlogged true
10292 smooth_sandstone_slab type bottom waterlogged false
10293 smooth_sandstone_slab type double waterlogged true
10294 smooth_sandstone_slab type double waterlogged false
10295 smooth_quartz_slab type top waterlogged true
10296 smooth_quartz_slab type top waterlogged false
10297 smooth_quartz_slab type bottom waterlogged true
10298 smooth_quartz_slab type bottom waterlogged false
10299 smooth_quartz_slab type double waterlogged true
10300 smooth_quartz_slab type double waterlogged false
10301 granite_slab type top waterlogged true
10302 granite_slab type top waterlogged false
10303 granite_slab type bottom waterlogged true
10304 granite_slab type bottom waterlogged false
10305 granite_slab type double waterlogged true
10306 granite_slab type double waterlogged false
10307 andesite_slab type top waterlogged true
10308 andesite_slab type top waterlogged false
10309 andesite_slab type bottom waterlogged true
10310 andesite_slab type bottom waterlogged false
10311 andesite_slab type double waterlogged true
10312 andesite_slab type double waterlogged false
10313 red_nether_brick_slab type top waterlogged true
10314 red_nether_brick_slab type top waterlogged false
10315 red_nether_brick_slab type bottom waterlogged true
10316 red_nether_brick_slab type bottom waterlogged false
10317 red_nether_brick_slab type double waterlogged true
10318 red_nether_brick_slab type double waterlogged false
10319 polished_andesite_slab type top waterlogged true
10320 polished_andesite_slab type top waterlogged false
10321 polished_andesite_slab type bottom waterlogged true
10322 polished_andesite_slab type bottom waterlogged false
10323 polished_andesite_slab type double waterlogged true
10324 polished_andesite_slab type double waterlogged false
10325 diorite_slab type top waterlogged true
10326 diorite_slab type top waterlogged false
10327 diorite_slab type bottom waterlogged true
10328 diorite_slab type bottom waterlogged false
10329 diorite_slab type double waterlogged true
10330 diorite_slab type double waterlogged false
10331 brick_wall waterlogged true south true east true north true up true west true
10332 brick_wall waterlogged true south true east true north true up true west false
10333 brick_wall waterlogged false south true east true north true up true west true
10334 brick_wall waterlogged false south true east true north true up true west false
10335 brick_wall waterlogged true south true east true north true up false west true
10336 brick_wall waterlogged true south true east true north true up false west false
10337 brick_wall waterlogged false south true east true north true up false west true
10338 brick_wall waterlogged false south true east true north true up false west false
10339 brick_wall waterlogged true south false east true north true up true west true
10340 brick_wall waterlogged true south false east true north true up true west false
10341 brick_wall waterlogged false south false east true north true up true west true
10342 brick_wall waterlogged false south false east true north true up true west false
10343 brick_wall waterlogged true south false east true north true up false west true
10344 brick_wall waterlogged true south false east true north true up false west false
10345 brick_wall waterlogged false south false east true north true up false west true
10346 brick_wall waterlogged false south false east true north true up false west false
10347 brick_wall waterlogged true south true east true north false up true west true
10348 brick_wall waterlogged true south true east true north false up true west false
10349 brick_wall waterlogged false south true east true north false up true west true
10350 brick_wall waterlogged false south true east true north false up true west false
10351 brick_wall waterlogged true south true east true north false up false west true
10352 brick_wall waterlogged true south true east true north false up false west false
10353 brick_wall waterlogged false south true east true north false up false west true
10354 brick_wall waterlogged false south true east true north false up false west false
10355 brick_wall waterlogged true south false east true north false up true west true
10356 brick_wall waterlogged true south false east true north false up true west false
10357 brick_wall waterlogged false south false east true north false up true west true
10358 brick_wall waterlogged false south false east true north false up true west false
10359 brick_wall waterlogged true south false east true north false up false west true
10360 brick_wall waterlogged true south false east true north false up false west false
10361 brick_wall waterlogged false south false east true north false up false west true
10362 brick_wall waterlogged false south false east true north false up false west false
10363 brick_wall waterlogged true south true east false north true up true west true
10364 brick_wall waterlogged true south true east false north true up true west false
10365 brick_wall waterlogged false south true east false north true up true west true
10366 brick_wall waterlogged false south true east false north true up true west false
10367 brick_wall waterlogged true south true east false north true up false west true
10368 brick_wall waterlogged true south true east false north true up false west false
10369 brick_wall waterlogged false south true east false north true up false west true
10370 brick_wall waterlogged false south true east false north true up false west false
10371 brick_wall waterlogged true south false east false north true up true west true
10372 brick_wall waterlogged true south false east false north true up true west false
10373 brick_wall waterlogged false south false east false north true up true west true
10374 brick_wall waterlogged false south false east false north true up true west false
10375 brick_wall waterlogged true south false east false north true up false west true
10376 brick_wall waterlogged true south false east false north true up false west false
10377 brick_wall waterlogged false south false east false north true up false west true
10378 brick_wall waterlogged false south false east false north true up false west false
10379 brick_wall waterlogged true south true east false north false up true west true
10380 brick_wall waterlogged true south true east false north false up true west false
10381 brick_wall waterlogged false south true east false north false up true west true
10382 brick_wall waterlogged false south true east false north false up true west false
10383 brick_wall waterlogged true south true east false north false up false west true
10384 brick_wall waterlogged true south true east false north false up false west false
10385 brick_wall waterlogged false south true east false north false up false west true
10386 brick_wall waterlogged false south true east false north false up false west false
10387 brick_wall waterlogged true south false east false north false up true west true
10388 brick_wall waterlogged true south false east false north false up true west false
10389 brick_wall waterlogged false south false east false north false up true west true
10390 brick_wall waterlogged false south false east false north false up true west false
10391 brick_wall waterlogged true south false east false north false up false west true
10392 brick_wall waterlogged true south false east false north false up false west false
10393 brick_wall waterlogged false south false east false north false up false west true
10394 brick_wall waterlogged false south false east false north false up false west false
10395 prismarine_wall waterlogged true south true east true north true up true west true
10396 prismarine_wall waterlogged true south true east true north true up true west false
10397 prismarine_wall waterlogged false south true east true north true up true west true
10398 prismarine_wall waterlogged false south true east true north true up true west false
10399 prismarine_wall waterlogged true south true east true north true up false west true
10400 prismarine_wall waterlogged true south true east true north true up false west false
10401 prismarine_wall waterlogged false south true east true north true up false west true
10402 prismarine_wall waterlogged false south true east true north true up false west false
10403 prismarine_wall waterlogged true south false east true north true up true west true
10404 prismarine_wall waterlogged true south false east true north true up true west false
10405 prismarine_wall waterlogged false south false east true north true up true west true
10406 prismarine_wall waterlogged false south false east true north true up true west false
10407 prismarine_wall waterlogged true south false east true north true up false west true
10408 prismarine_wall waterlogged true south false east true north true up false west false
10409 prismarine_wall waterlogged false south false east true north true up false west true
10410 prismarine_wall waterlogged false south false east true north true up false west false
10411 prismarine_wall waterlogged true south true east true north false up true west true
10412 prismarine_wall waterlogged true south true east true north false up true west false
10413 prismarine_wall waterlogged false south true east true north false up true west true
10414 prismarine_wall waterlogged false south true east true north false up true west false
10415 prismarine_wall waterlogged true south true east true north false up false west true
10416 prismarine_wall waterlogged true south true east true north false up false west false
10417 prismarine_wall waterlogged false south true east true north false up false west true
10418 prismarine_wall waterlogged false south true east true north false up false west false
10419 prismarine_wall waterlogged true south false east true north false up true west true
10420 prismarine_wall waterlogged true south false east true north false up true west false
10421 prismarine_wall waterlogged false south false east true north false up true west true
10422 prismarine_wall waterlogged false south false east true north false up true west false
10423 prismarine_wall waterlogged true south false east true north false up false west true
10424 prismarine_wall waterlogged true south false east true north false up false west false
10425 prismarine_wall waterlogged false south false east true north false up false west true
10426 prismarine_wall waterlogged false south false east true north false up false west false
10427 prismarine_wall waterlogged true south true east false north true up true west true
10428 prismarine_wall waterlogged true south true east false north true up true west false
10429 prismarine_wall waterlogged false south true east false north true up true west true
10430 prismarine_wall waterlogged false south true east false north true up true west false
10431 prismarine_wall waterlogged true south true east false north true up false west true
10432 prismarine_wall waterlogged true south true east false north true up false west false
10433 prismarine_wall waterlogged false south true east false north true up false west true
10434 prismarine_wall waterlogged false south true east false north true up false west false
10435 prismarine_wall waterlogged true south false east false north true up true west true
10436 prismarine_wall waterlogged true south false east false north true up true west false
10437 prismarine_wall waterlogged false south false east false north true up true west true
10438 prismarine_wall waterlogged false south false east false north true up true west false
10439 prismarine_wall waterlogged true south false east false north true up false west true
10440 prismarine_wall waterlogged true south false east false north true up false west false
10441 prismarine_wall waterlogged false south false east false north true up false west true
10442 prismarine_wall waterlogged false south false east false north true up false west false
10443 prismarine_wall waterlogged true south true east false north false up true west true
10444 prismarine_wall waterlogged true south true east false north false up true west false
10445 prismarine_wall waterlogged false south true east false north false up true west true
10446 prismarine_wall waterlogged false south true east false north false up true west false
10447 prismarine_wall waterlogged true south true east false north false up false west true
10448 prismarine_wall waterlogged true south true east false north false up false west false
10449 prismarine_wall waterlogged false south true east false north false up false west true
10450 prismarine_wall waterlogged false south true east false north false up false west false
10451 prismarine_wall waterlogged true south false east false north false up true west true
10452 prismarine_wall waterlogged true south false east false north false up true west false
10453 prismarine_wall waterlogged false south false east false north false up true west true
10454 prismarine_wall waterlogged false south false east false north false up true west false
10455 prismarine_wall waterlogged true south false east false north false up false west true
10456 prismarine_wall waterlogged true south false east false north false up false west false
10457 prismarine_wall waterlogged false south false east false north false up false west true
10458 prismarine_wall waterlogged false south false east false north false up false west false
10459 red_sandstone_wall waterlogged true south true east true north true up true west true
10460 red_sandstone_wall waterlogged true south true east true north true up true west false
10461 red_sandstone_wall waterlogged false south true east true north true up true west true
10462 red_sandstone_wall waterlogged false south true east true north true up true west false
10463 red_sandstone_wall waterlogged true south true east true north true up false west true
10464 red_sandstone_wall waterlogged true south true east true north true up false west false
10465 red_sandstone_wall waterlogged false south true east true north true up false west true
10466 red_sandstone_wall waterlogged false south true east true north true up false west false
10467 red_sandstone_wall waterlogged true south false east true north true up true west true
10468 red_sandstone_wall waterlogged true south false east true north true up true west false
10469 red_sandstone_wall waterlogged false south false east true north true up true west true
10470 red_sandstone_wall waterlogged false south false east true north true up true west false
10471 red_sandstone_wall waterlogged true south false east true north true up false west true
10472 red_sandstone_wall waterlogged true south false east true north true up false west false
10473 red_sandstone_wall waterlogged false south false east true north true up false west true
10474 red_sandstone_wall waterlogged false south false east true north true up false west false
10475 red_sandstone_wall waterlogged true south true east true north false up true west true
10476 red_sandstone_wall waterlogged true south true east true north false up true west false
10477 red_sandstone_wall waterlogged false south true east true north false up true west true
10478 red_sandstone_wall waterlogged false south true east true north false up true west false
10479 red_sandstone_wall waterlogged true south true east true north false up false west true
10480 red_sandstone_wall waterlogged true south true east true north false up false west false
10481 red_sandstone_wall waterlogged false south true east true north false up false west true
10482 red_sandstone_wall waterlogged false south true east true north false up false west false
10483 red_sandstone_wall waterlogged true south false east true north false up true west true
10484 red_sandstone_wall waterlogged true south false east true north false up true west false
10485 red_sandstone_wall waterlogged false south false east true north false up true west true
10486 red_sandstone_wall waterlogged false south false east true north false up true west false
10487 red_sandstone_wall waterlogged true south false east true north false up false west true
10488 red_sandstone_wall waterlogged true south false east true north false up false west false
10489 red_sandstone_wall waterlogged false south false east true north false up false west true
10490 red_sandstone_wall waterlogged false south false east true north false up false west false
10491 red_sandstone_wall waterlogged true south true east false north true up true west true
10492 red_sandstone_wall waterlogged true south true east false north true up true west false
10493 red_sandstone_wall waterlogged false south true east false north true up true west true
10494 red_sandstone_wall waterlogged false south true east false north true up true west false
10495 red_sandstone_wall waterlogged true south true east false north true up false west true
10496 red_sandstone_wall waterlogged true south true east false north true up false west false
10497 red_sandstone_wall waterlogged false south true east false north true up false west true
10498 red_sandstone_wall waterlogged false south true east false north true up false west false
10499 red_sandstone_wall waterlogged true south false east false north true up true west true
10500 red_sandstone_wall waterlogged true south false east false north true up true west false
10501 red_sandstone_wall waterlogged false south false east false north true up true west true
10502 red_sandstone_wall waterlogged false south false east false north true up true west false
10503 red_sandstone_wall waterlogged true south false east false north true up false west true
10504 red_sandstone_wall waterlogged true south false east false north true up false west false
10505 red_sandstone_wall waterlogged false south false east false north true up false west true
10506 red_sandstone_wall waterlogged false south false east false north true up false west false
10507 red_sandstone_wall waterlogged true south true east false north false up true west true
10508 red_sandstone_wall waterlogged true south true east false north false up true west false
10509 red_sandstone_wall waterlogged false south true east false north false up true west true
10510 red_sandstone_wall waterlogged false south true east false north false up true west false
10511 red_sandstone_wall waterlogged true south true east false north false up false west true
10512 red_sandstone_wall waterlogged true south true east false north false up false west false
10513 red_sandstone_wall waterlogged false south true east false north false up false west true
10514 red_sandstone_wall waterlogged false south true east false north false up false west false
10515 red_sandstone_wall waterlogged true south false east false north false up true west true
10516 red_sandstone_wall waterlogged true south false east false north false up true west false
10517 red_sandstone_wall waterlogged false south false east false north false up true west true
10518 red_sandstone_wall waterlogged false south false east false north false up true west false
10519 red_sandstone_wall waterlogged true south false east false north false up false west true
10520 red_sandstone_wall waterlogged true south false east false north false up false west false
10521 red_sandstone_wall waterlogged false south false east false north false up false west true
10522 red_sandstone_wall waterlogged false south false east false north false up false west false
10523 mossy_stone_brick_wall waterlogged true south true east true north true up true west true
10524 mossy_stone_brick_wall waterlogged true south true east true north true up true west false
10525 mossy_stone_brick_wall waterlogged false south true east true north true up true west true
10526 mossy_stone_brick_wall waterlogged false south true east true north true up true west false
10527 mossy_stone_brick_wall waterlogged true south true east true north true up false west true
10528 mossy_stone_brick_wall waterlogged true south true east true north true up false west false
10529 mossy_stone_brick_wall waterlogged false south true east true north true up false west true
10530 mossy_stone_brick_wall waterlogged false south true east true north true up false west false
10531 mossy_stone_brick_wall waterlogged true south false east true north true up true west true
10532 mossy_stone_brick_wall waterlogged true south false east true north true up true west false
10533 mossy_stone_brick_wall waterlogged false south false east true north true up true west true
10534 mossy_stone_brick_wall waterlogged false south false east true north true up true west false
10535 mossy_stone_brick_wall waterlogged true south false east true north true up false west true
10536 mossy_stone_brick_wall waterlogged true south false east true north true up false west false
10537 mossy_stone_brick_wall waterlogged false south false east true north true up false west true
10538 mossy_stone_brick_wall waterlogged false south false east true north true up false west false
10539 mossy_stone_brick_wall waterlogged true south true east true north false up true west true
10540 mossy_stone_brick_wall waterlogged true south true east true north false up true west false
10541 mossy_stone_brick_wall waterlogged false south true east true north false up true west true
10542 mossy_stone_brick_wall waterlogged false south true east true north false up true west false
10543 mossy_stone_brick_wall waterlogged true south true east true north false up false west true
10544 mossy_stone_brick_wall waterlogged true south true east true north false up false west false
10545 mossy_stone_brick_wall waterlogged false south true east true north false up false west true
10546 mossy_stone_brick_wall waterlogged false south true east true north false up false west false
10547 mossy_stone_brick_wall waterlogged true south false east true north false up true west true
10548 mossy_stone_brick_wall waterlogged true south false east true north false up true west false
10549 mossy_stone_brick_wall waterlogged false south false east true north false up true west true
10550 mossy_stone_brick_wall waterlogged false south false east true north false up true west false
10551 mossy_stone_brick_wall waterlogged true south false east true north false up false west true
10552 mossy_stone_brick_wall waterlogged true south false east true north false up false west false
10553 mossy_stone_brick_wall waterlogged false south false east true north false up false west true
10554 mossy_stone_brick_wall waterlogged false south false east true north false up false west false
10555 mossy_stone_brick_wall waterlogged true south true east false north true up true west true
10556 mossy_stone_brick_wall waterlogged true south true east false north true up true west false
10557 mossy_stone_brick_wall waterlogged false south true east false north true up true west true
10558 mossy_stone_brick_wall waterlogged false south true east false north true up true west false
10559 mossy_stone_brick_wall waterlogged true south true east false north true up false west true
10560 mossy_stone_brick_wall waterlogged true south true east false north true up false west false
10561 mossy_stone_brick_wall waterlogged false south true east false north true up false west true
10562 mossy_stone_brick_wall waterlogged false south true east false north true up false west false
10563 mossy_stone_brick_wall waterlogged true south false east false north true up true west true
10564 mossy_stone_brick_wall waterlogged true south false east false north true up true west false
10565 mossy_stone_brick_wall waterlogged false south false east false north true up true west true
10566 mossy_stone_brick_wall waterlogged false south false east false north true up true west false
10567 mossy_stone_brick_wall waterlogged true south false east false north true up false west true
10568 mossy_stone_brick_wall waterlogged true south false east false north true up false west false
10569 mossy_stone_brick_wall waterlogged false south false east false north true up false west true
10570 mossy_stone_brick_wall waterlogged false south false east false north true up false west false
10571 mossy_stone_brick_wall waterlogged true south true east false north false up true west true
10572 mossy_stone_brick_wall waterlogged true south true east false north false up true west false
10573 mossy_stone_brick_wall waterlogged false south true east false north false up true west true
10574 mossy_stone_brick_wall waterlogged false south true east false north false up true west false
10575 mossy_stone_brick_wall waterlogged true south true east false north false up false west true
10576 mossy_stone_brick_wall waterlogged true south true east false north false up false west false
10577 mossy_stone_brick_wall waterlogged false south true east false north false up false west true
10578 mossy_stone_brick_wall waterlogged false south true east false north false up false west false
10579 mossy_stone_brick_wall waterlogged true south false east false north false up true west true
10580 mossy_stone_brick_wall waterlogged true south false east false north false up true west false
10581 mossy_stone_brick_wall waterlogged false south false east false north false up true west true
10582 mossy_stone_brick_wall waterlogged false south false east false north false up true west false
10583 mossy_stone_brick_wall waterlogged true south false east false north false up false west true
10584 mossy_stone_brick_wall waterlogged true south false east false north false up false west false
10585 mossy_stone_brick_wall waterlogged false south false east false north false up false west true
10586 mossy_stone_brick_wall waterlogged false south false east false north false up false west false
10587 granite_wall waterlogged true south true east true north true up true west true
10588 granite_wall waterlogged true south true east true north true up true west false
10589 granite_wall waterlogged false south true east true north true up true west true
10590 granite_wall waterlogged false south true east true north true up true west false
10591 granite_wall waterlogged true south true east true north true up false west true
10592 granite_wall waterlogged true south true east true north true up false west false
10593 granite_wall waterlogged false south true east true north true up false west true
10594 granite_wall waterlogged false south true east true north true up false west false
10595 granite_wall waterlogged true south false east true north true up true west true
10596 granite_wall waterlogged true south false east true north true up true west false
10597 granite_wall waterlogged false south false east true north true up true west true
10598 granite_wall waterlogged false south false east true north true up true west false
10599 granite_wall waterlogged true south false east true north true up false west true
10600 granite_wall waterlogged true south false east true north true up false west false
10601 granite_wall waterlogged false south false east true north true up false west true
10602 granite_wall waterlogged false south false east true north true up false west false
10603 granite_wall waterlogged true south true east true north false up true west true
10604 granite_wall waterlogged true south true east true north false up true west false
10605 granite_wall waterlogged false south true east true north false up true west true
10606 granite_wall waterlogged false south true east true north false up true west false
10607 granite_wall waterlogged true south true east true north false up false west true
10608 granite_wall waterlogged true south true east true north false up false west false
10609 granite_wall waterlogged false south true east true north false up false west true
10610 granite_wall waterlogged false south true east true north false up false west false
10611 granite_wall waterlogged true south false east true north false up true west true
10612 granite_wall waterlogged true south false east true north false up true west false
10613 granite_wall waterlogged false south false east true north false up true west true
10614 granite_wall waterlogged false south false east true north false up true west false
10615 granite_wall waterlogged true south false east true north false up false west true
10616 granite_wall waterlogged true south false east true north false up false west false
10617 granite_wall waterlogged false south false east true north false up false west true
10618 granite_wall waterlogged false south false east true north false up false west false
10619 granite_wall waterlogged true south true east false north true up true west true
10620 granite_wall waterlogged true south true east false north true up true west false
10621 granite_wall waterlogged false south true east false north true up true west true
10622 granite_wall waterlogged false south true east false north true up true west false
10623 granite_wall waterlogged true south true east false north true up false west true
10624 granite_wall waterlogged true south true east false north true up false west false
10625 granite_wall waterlogged false south true east false north true up false west true
10626 granite_wall waterlogged false south true east false north true up false west false
10627 granite_wall waterlogged true south false east false north true up true west true
10628 granite_wall waterlogged true south false east false north true up true west false
10629 granite_wall waterlogged false south false east false north true up true west true
10630 granite_wall waterlogged false south false east false north true up true west false
10631 granite_wall waterlogged true south false east false north true up false west true
10632 granite_wall waterlogged true south false east false north true up false west false
10633 granite_wall waterlogged false south false east false north true up false west true
10634 granite_wall waterlogged false south false east false north true up false west false
10635 granite_wall waterlogged true south true east false north false up true west true
10636 granite_wall waterlogged true south true east false north false up true west false
10637 granite_wall waterlogged false south true east false north false up true west true
10638 granite_wall waterlogged false south true east false north false up true west false
10639 granite_wall waterlogged true south true east false north false up false west true
10640 granite_wall waterlogged true south true east false north false up false west false
10641 granite_wall waterlogged false south true east false north false up false west true
10642 granite_wall waterlogged false south true east false north false up false west false
10643 granite_wall waterlogged true south false east false north false up true west true
10644 granite_wall waterlogged true south false east false north false up true west false
10645 granite_wall waterlogged false south false east false north false up true west true
10646 granite_wall waterlogged false south false east false north false up true west false
10647 granite_wall waterlogged true south false east false north false up false west true
10648 granite_wall waterlogged true south false east false north false up false west false
10649 granite_wall waterlogged false south false east false north false up false west true
10650 granite_wall waterlogged false south false east false north false up false west false
10651 stone_brick_wall waterlogged true south true east true north true up true west true
10652 stone_brick_wall waterlogged true south true east true north true up true west false
10653 stone_brick_wall waterlogged false south true east true north true up true west true
10654 stone_brick_wall waterlogged false south true east true north true up true west false
10655 stone_brick_wall waterlogged true south true east true north true up false west true
10656 stone_brick_wall waterlogged true south true east true north true up false west false
10657 stone_brick_wall waterlogged false south true east true north true up false west true
10658 stone_brick_wall waterlogged false south true east true north true up false west false
10659 stone_brick_wall waterlogged true south false east true north true up true west true
10660 stone_brick_wall waterlogged true south false east true north true up true west false
10661 stone_brick_wall waterlogged false south false east true north true up true west true
10662 stone_brick_wall waterlogged false south false east true north true up true west false
10663 stone_brick_wall waterlogged true south false east true north true up false west true
10664 stone_brick_wall waterlogged true south false east true north true up false west false
10665 stone_brick_wall waterlogged false south false east true north true up false west true
10666 stone_brick_wall waterlogged false south false east true north true up false west false
10667 stone_brick_wall waterlogged true south true east true north false up true west true
10668 stone_brick_wall waterlogged true south true east true north false up true west false
10669 stone_brick_wall waterlogged false south true east true north false up true west true
10670 stone_brick_wall waterlogged false south true east true north false up true west false
10671 stone_brick_wall waterlogged true south true east true north false up false west true
10672 stone_brick_wall waterlogged true south true east true north false up false west false
10673 stone_brick_wall waterlogged false south true east true north false up false west true
10674 stone_brick_wall waterlogged false south true east true north false up false west false
10675 stone_brick_wall waterlogged true south false east true north false up true west true
10676 stone_brick_wall waterlogged true south false east true north false up true west false
10677 stone_brick_wall waterlogged false south false east true north false up true west true
10678 stone_brick_wall waterlogged false south false east true north false up true west false
10679 stone_brick_wall waterlogged true south false east true north false up false west true
10680 stone_brick_wall waterlogged true south false east true north false up false west false
10681 stone_brick_wall waterlogged false south false east true north false up false west true
10682 stone_brick_wall waterlogged false south false east true north false up false west false
10683 stone_brick_wall waterlogged true south true east false north true up true west true
10684 stone_brick_wall waterlogged true south true east false north true up true west false
10685 stone_brick_wall waterlogged false south true east false north true up true west true
10686 stone_brick_wall waterlogged false south true east false north true up true west false
10687 stone_brick_wall waterlogged true south true east false north true up false west true
10688 stone_brick_wall waterlogged true south true east false north true up false west false
10689 stone_brick_wall waterlogged false south true east false north true up false west true
10690 stone_brick_wall waterlogged false south true east false north true up false west false
10691 stone_brick_wall waterlogged true south false east false north true up true west true
10692 stone_brick_wall waterlogged true south false east false north true up true west false
10693 stone_brick_wall waterlogged false south false east false north true up true west true
10694 stone_brick_wall waterlogged false south false east false north true up true west false
10695 stone_brick_wall waterlogged true south false east false north true up false west true
10696 stone_brick_wall waterlogged true south false east false north true up false west false
10697 stone_brick_wall waterlogged false south false east false north true up false west true
10698 stone_brick_wall waterlogged false south false east false north true up false west false
10699 stone_brick_wall waterlogged true south true east false north false up true west true
10700 stone_brick_wall waterlogged true south true east false north false up true west false
10701 stone_brick_wall waterlogged false south true east false north false up true west true
10702 stone_brick_wall waterlogged false south true east false north false up true west false
10703 stone_brick_wall waterlogged true south true east false north false up false west true
10704 stone_brick_wall waterlogged true south true east false north false up false west false
10705 stone_brick_wall waterlogged false south true east false north false up false west true
10706 stone_brick_wall waterlogged false south true east false north false up false west false
10707 stone_brick_wall waterlogged true south false east false north false up true west true
10708 stone_brick_wall waterlogged true south false east false north false up true west false
10709 stone_brick_wall waterlogged false south false east false north false up true west true
10710 stone_brick_wall waterlogged false south false east false north false up true west false
10711 stone_brick_wall waterlogged true south false east false north false up false west true
10712 stone_brick_wall waterlogged true south false east false north false up false west false
10713 stone_brick_wall waterlogged false south false east false north false up false west true
10714 stone_brick_wall waterlogged false south false east false north false up false west false
10715 nether_brick_wall waterlogged true south true east true north true up true west true
10716 nether_brick_wall waterlogged true south true east true north true up true west false
10717 nether_brick_wall waterlogged false south true east true north true up true west true
10718 nether_brick_wall waterlogged false south true east true north true up true west false
10719 nether_brick_wall waterlogged true south true east true north true up false west true
10720 nether_brick_wall waterlogged true south true east true north true up false west false
10721 nether_brick_wall waterlogged false south true east true north true up false west true
10722 nether_brick_wall waterlogged false south true east true north true up false west false
10723 nether_brick_wall waterlogged true south false east true north true up true west true
10724 nether_brick_wall waterlogged true south false east true north true up true west false
10725 nether_brick_wall waterlogged false south false east true north true up true west true
10726 nether_brick_wall waterlogged false south false east true north true up true west false
10727 nether_brick_wall waterlogged true south false east true north true up false west true
10728 nether_brick_wall waterlogged true south false east true north true up false west false
10729 nether_brick_wall waterlogged false south false east true north true up false west true
10730 nether_brick_wall waterlogged false south false east true north true up false west false
10731 nether_brick_wall waterlogged true south true east true north false up true west true
10732 nether_brick_wall waterlogged true south true east true north false up true west false
10733 nether_brick_wall waterlogged false south true east true north false up true west true
10734 nether_brick_wall waterlogged false south true east true north false up true west false
10735 nether_brick_wall waterlogged true south true east true north false up false west true
10736 nether_brick_wall waterlogged true south true east true north false up false west false
10737 nether_brick_wall waterlogged false south true east true north false up false west true
10738 nether_brick_wall waterlogged false south true east true north false up false west false
10739 nether_brick_wall waterlogged true south false east true north false up true west true
10740 nether_brick_wall waterlogged true south false east true north false up true west false
10741 nether_brick_wall waterlogged false south false east true north false up true west true
10742 nether_brick_wall waterlogged false south false east true north false up true west false
10743 nether_brick_wall waterlogged true south false east true north false up false west true
10744 nether_brick_wall waterlogged true south false east true north false up false west false
10745 nether_brick_wall waterlogged false south false east true north false up false west true
10746 nether_brick_wall waterlogged false south false east true north false up false west false
10747 nether_brick_wall waterlogged true south true east false north true up true west true
10748 nether_brick_wall waterlogged true south true east false north true up true west false
10749 nether_brick_wall waterlogged false south true east false north true up true west true
10750 nether_brick_wall waterlogged false south true east false north true up true west false
10751 nether_brick_wall waterlogged true south true east false north true up false west true
10752 nether_brick_wall waterlogged true south true east false north true up false west false
10753 nether_brick_wall waterlogged false south true east false north true up false west true
10754 nether_brick_wall waterlogged false south true east false north true up false west false
10755 nether_brick_wall waterlogged true south false east false north true up true west true
10756 nether_brick_wall waterlogged true south false east false north true up true west false
10757 nether_brick_wall waterlogged false south false east false north true up true west true
10758 nether_brick_wall waterlogged false south false east false north true up true west false
10759 nether_brick_wall waterlogged true south false east false north true up false west true
10760 nether_brick_wall waterlogged true south false east false north true up false west false
10761 nether_brick_wall waterlogged false south false east false north true up false west true
10762 nether_brick_wall waterlogged false south false east false north true up false west false
10763 nether_brick_wall waterlogged true south true east false north false up true west true
10764 nether_brick_wall waterlogged true south true east false north false up true west false
10765 nether_brick_wall waterlogged false south true east false north false up true west true
10766 nether_brick_wall waterlogged false south true east false north false up true west false
10767 nether_brick_wall waterlogged true south true east false north false up false west true
10768 nether_brick_wall waterlogged true south true east false north false up false west false
10769 nether_brick_wall waterlogged false south true east false north false up false west true
10770 nether_brick_wall waterlogged false south true east false north false up false west false
10771 nether_brick_wall waterlogged true south false east false north false up true west true
10772 nether_brick_wall waterlogged true south false east false north false up true west false
10773 nether_brick_wall waterlogged false south false east false north false up true west true
10774 nether_brick_wall waterlogged false south false east false north false up true west false
10775 nether_brick_wall waterlogged true south false east false north false up false west true
10776 nether_brick_wall waterlogged true south false east false north false up false west false
10777 nether_brick_wall waterlogged false south false east false north false up false west true
10778 nether_brick_wall waterlogged false south false east false north false up false west false
10779 andesite_wall waterlogged true south true east true north true up true west true
10780 andesite_wall waterlogged true south true east true north true up true west false
10781 andesite_wall waterlogged false south true east true north true up true west true
10782 andesite_wall waterlogged false south true east true north true up true west false
10783 andesite_wall waterlogged true south true east true north true up false west true
10784 andesite_wall waterlogged true south true east true north true up false west false
10785 andesite_wall waterlogged false south true east true north true up false west true
10786 andesite_wall waterlogged false south true east true north true up false west false
10787 andesite_wall waterlogged true south false east true north true up true west true
10788 andesite_wall waterlogged true south false east true north true up true west false
10789 andesite_wall waterlogged false south false east true north true up true west true
10790 andesite_wall waterlogged false south false east true north true up true west false
10791 andesite_wall waterlogged true south false east true north true up false west true
10792 andesite_wall waterlogged true south false east true north true up false west false
10793 andesite_wall waterlogged false south false east true north true up false west true
10794 andesite_wall waterlogged false south false east true north true up false west false
10795 andesite_wall waterlogged true south true east true north false up true west true
10796 andesite_wall waterlogged true south true east true north false up true west false
10797 andesite_wall waterlogged false south true east true north false up true west true
10798 andesite_wall waterlogged false south true east true north false up true west false
10799 andesite_wall waterlogged true south true east true north false up false west true
10800 andesite_wall waterlogged true south true east true north false up false west false
10801 andesite_wall waterlogged false south true east true north false up false west true
10802 andesite_wall waterlogged false south true east true north false up false west false
10803 andesite_wall waterlogged true south false east true north false up true west true
10804 andesite_wall waterlogged true south false east true north false up true west false
10805 andesite_wall waterlogged false south false east true north false up true west true
10806 andesite_wall waterlogged false south false east true north false up true west false
10807 andesite_wall waterlogged true south false east true north false up false west true
10808 andesite_wall waterlogged true south false east true north false up false west false
10809 andesite_wall waterlogged false south false east true north false up false west true
10810 andesite_wall waterlogged false south false east true north false up false west false
10811 andesite_wall waterlogged true south true east false north true up true west true
10812 andesite_wall waterlogged true south true east false north true up true west false
10813 andesite_wall waterlogged false south true east false north true up true west true
10814 andesite_wall waterlogged false south true east false north true up true west false
10815 andesite_wall waterlogged true south true east false north true up false west true
10816 andesite_wall waterlogged true south true east false north true up false west false
10817 andesite_wall waterlogged false south true east false north true up false west true
10818 andesite_wall waterlogged false south true east false north true up false west false
10819 andesite_wall waterlogged true south false east false north true up true west true
10820 andesite_wall waterlogged true south false east false north true up true west false
10821 andesite_wall waterlogged false south false east false north true up true west true
10822 andesite_wall waterlogged false south false east false north true up true west false
10823 andesite_wall waterlogged true south false east false north true up false west true
10824 andesite_wall waterlogged true south false east false north true up false west false
10825 andesite_wall waterlogged false south false east false north true up false west true
10826 andesite_wall waterlogged false south false east false north true up false west false
10827 andesite_wall waterlogged true south true east false north false up true west true
10828 andesite_wall waterlogged true south true east false north false up true west false
10829 andesite_wall waterlogged false south true east false north false up true west true
10830 andesite_wall waterlogged false south true east false north false up true west false
10831 andesite_wall waterlogged true south true east false north false up false west true
10832 andesite_wall waterlogged true south true east false north false up false west false
10833 andesite_wall waterlogged false south true east false north false up false west true
10834 andesite_wall waterlogged false south true east false north false up false west false
10835 andesite_wall waterlogged true south false east false north false up true west true
10836 andesite_wall waterlogged true south false east false north false up true west false
10837 andesite_wall waterlogged false south false east false north false up true west true
10838 andesite_wall waterlogged false south false east false north false up true west false
10839 andesite_wall waterlogged true south false east false north false up false west true
10840 andesite_wall waterlogged true south false east false north false up false west false
10841 andesite_wall waterlogged false south false east false north false up false west true
10842 andesite_wall waterlogged false south false east false north false up false west false
10843 red_nether_brick_wall waterlogged true south true east true north true up true west true
10844 red_nether_brick_wall waterlogged true south true east true north true up true west false
10845 red_nether_brick_wall waterlogged false south true east true north true up true west true
10846 red_nether_brick_wall waterlogged false south true east true north true up true west false
10847 red_nether_brick_wall waterlogged true south true east true north true up false west true
10848 red_nether_brick_wall waterlogged true south true east true north true up false west false
10849 red_nether_brick_wall waterlogged false south true east true north true up false west true
10850 red_nether_brick_wall waterlogged false south true east true north true up false west false
10851 red_nether_brick_wall waterlogged true south false east true north true up true west true
10852 red_nether_brick_wall waterlogged true south false east true north true up true west false
10853 red_nether_brick_wall waterlogged false south false east true north true up true west true
10854 red_nether_brick_wall waterlogged false south false east true north true up true west false
10855 red_nether_brick_wall waterlogged true south false east true north true up false west true
10856 red_nether_brick_wall waterlogged true south false east true north true up false west false
10857 red_nether_brick_wall waterlogged false south false east true north true up false west true
10858 red_nether_brick_wall waterlogged false south false east true north true up false west false
10859 red_nether_brick_wall waterlogged true south true east true north false up true west true
10860 red_nether_brick_wall waterlogged true south true east true north false up true west false
10861 red_nether_brick_wall waterlogged false south true east true north false up true west true
10862 red_nether_brick_wall waterlogged false south true east true north false up true west false
10863 red_nether_brick_wall waterlogged true south true east true north false up false west true
10864 red_nether_brick_wall waterlogged true south true east true north false up false west false
10865 red_nether_brick_wall waterlogged false south true east true north false up false west true
10866 red_nether_brick_wall waterlogged false south true east true north false up false west false
10867 red_nether_brick_wall waterlogged true south false east true north false up true west true
10868 red_nether_brick_wall waterlogged true south false east true north false up true west false
10869 red_nether_brick_wall waterlogged false south false east true north false up true west true
10870 red_nether_brick_wall waterlogged false south false east true north false up true west false
10871 red_nether_brick_wall waterlogged true south false east true north false up false west true
10872 red_nether_brick_wall waterlogged true south false east true north false up false west false
10873 red_nether_brick_wall waterlogged false south false east true north false up false west true
10874 red_nether_brick_wall waterlogged false south false east true north false up false west false
10875 red_nether_brick_wall waterlogged true south true east false north true up true west true
10876 red_nether_brick_wall waterlogged true south true east false north true up true west false
10877 red_nether_brick_wall waterlogged false south true east false north true up true west true
10878 red_nether_brick_wall waterlogged false south true east false north true up true west false
10879 red_nether_brick_wall waterlogged true south true east false north true up false west true
10880 red_nether_brick_wall waterlogged true south true east false north true up false west false
10881 red_nether_brick_wall waterlogged false south true east false north true up false west true
10882 red_nether_brick_wall waterlogged false south true east false north true up false west false
10883 red_nether_brick_wall waterlogged true south false east false north true up true west true
10884 red_nether_brick_wall waterlogged true south false east false north true up true west false
10885 red_nether_brick_wall waterlogged false south false east false north true up true west true
10886 red_nether_brick_wall waterlogged false south false east false north true up true west false
10887 red_nether_brick_wall waterlogged true south false east false north true up false west true
10888 red_nether_brick_wall waterlogged true south false east false north true up false west false
10889 red_nether_brick_wall waterlogged false south false east false north true up false west true
10890 red_nether_brick_wall waterlogged false south false east false north true up false west false
10891 red_nether_brick_wall waterlogged true south true east false north false up true west true
10892 red_nether_brick_wall waterlogged true south true east false north false up true west false
10893 red_nether_brick_wall waterlogged false south true east false north false up true west true
10894 red_nether_brick_wall waterlogged false south true east false north false up true west false
10895 red_nether_brick_wall waterlogged true south true east false north false up false west true
10896 red_nether_brick_wall waterlogged true south true east false north false up false west false
10897 red_nether_brick_wall waterlogged false south true east false north false up false west true
10898 red_nether_brick_wall waterlogged false south true east false north false up false west false
10899 red_nether_brick_wall waterlogged true south false east false north false up true west true
10900 red_nether_brick_wall waterlogged true south false east false north false up true west false
10901 red_nether_brick_wall waterlogged false south false east false north false up true west true
10902 red_nether_brick_wall waterlogged false south false east false north false up true west false
10903 red_nether_brick_wall waterlogged true south false east false north false up false west true
10904 red_nether_brick_wall waterlogged true south false east false north false up false west false
10905 red_nether_brick_wall waterlogged false south false east false north false up false west true
10906 red_nether_brick_wall waterlogged false south false east false north false up false west false
10907 sandstone_wall waterlogged true south true east true north true up true west true
10908 sandstone_wall waterlogged true south true east true north true up true west false
10909 sandstone_wall waterlogged false south true east true north true up true west true
10910 sandstone_wall waterlogged false south true east true north true up true west false
10911 sandstone_wall waterlogged true south true east true north true up false west true
10912 sandstone_wall waterlogged true south true east true north true up false west false
10913 sandstone_wall waterlogged false south true east true north true up false west true
10914 sandstone_wall waterlogged false south true east true north true up false west false
10915 sandstone_wall waterlogged true south false east true north true up true west true
10916 sandstone_wall waterlogged true south false east true north true up true west false
10917 sandstone_wall waterlogged false south false east true north true up true west true
10918 sandstone_wall waterlogged false south false east true north true up true west false
10919 sandstone_wall waterlogged true south false east true north true up false west true
10920 sandstone_wall waterlogged true south false east true north true up false west false
10921 sandstone_wall waterlogged false south false east true north true up false west true
10922 sandstone_wall waterlogged false south false east true north true up false west false
10923 sandstone_wall waterlogged true south true east true north false up true west true
10924 sandstone_wall waterlogged true south true east true north false up true west false
10925 sandstone_wall waterlogged false south true east true north false up true west true
10926 sandstone_wall waterlogged false south true east true north false up true west false
10927 sandstone_wall waterlogged true south true east true north false up false west true
10928 sandstone_wall waterlogged true south true east true north false up false west false
10929 sandstone_wall waterlogged false south true east true north false up false west true
10930 sandstone_wall waterlogged false south true east true north false up false west false
10931 sandstone_wall waterlogged true south false east true north false up true west true
10932 sandstone_wall waterlogged true south false east true north false up true west false
10933 sandstone_wall waterlogged false south false east true north false up true west true
10934 sandstone_wall waterlogged false south false east true north false up true west false
10935 sandstone_wall waterlogged true south false east true north false up false west true
10936 sandstone_wall waterlogged true south false east true north false up false west false
10937 sandstone_wall waterlogged false south false east true north false up false west true
10938 sandstone_wall waterlogged false south false east true north false up false west false
10939 sandstone_wall waterlogged true south true east false north true up true west true
10940 sandstone_wall waterlogged true south true east false north true up true west false
10941 sandstone_wall waterlogged false south true east false north true up true west true
10942 sandstone_wall waterlogged false south true east false north true up true west false
10943 sandstone_wall waterlogged true south true east false north true up false west true
10944 sandstone_wall waterlogged true south true east false north true up false west false
10945 sandstone_wall waterlogged false south true east false north true up false west true
10946 sandstone_wall waterlogged false south true east false north true up false west false
10947 sandstone_wall waterlogged true south false east false north true up true west true
10948 sandstone_wall waterlogged true south false east false north true up true west false
10949 sandstone_wall waterlogged false south false east false north true up true west true
10950 sandstone_wall waterlogged false south false east false north true up true west false
10951 sandstone_wall waterlogged true south false east false north true up false west true
10952 sandstone_wall waterlogged true south false east false north true up false west false
10953 sandstone_wall waterlogged false south false east false north true up false west true
10954 sandstone_wall waterlogged false south false east false north true up false west false
10955 sandstone_wall waterlogged true south true east false north false up true west true
10956 sandstone_wall waterlogged true south true east false north false up true west false
10957 sandstone_wall waterlogged false south true east false north false up true west true
10958 sandstone_wall waterlogged false south true east false north false up true west false
10959 sandstone_wall waterlogged true south true east false north false up false west true
10960 sandstone_wall waterlogged true south true east false north false up false west false
10961 sandstone_wall waterlogged false south true east false north false up false west true
10962 sandstone_wall waterlogged false south true east false north false up false west false
10963 sandstone_wall waterlogged true south false east false north false up true west true
10964 sandstone_wall waterlogged true south false east false north false up true west false
10965 sandstone_wall waterlogged false south false east false north false up true west true
10966 sandstone_wall waterlogged false south false east false north false up true west false
10967 sandstone_wall waterlogged true south false east false north false up false west true
10968 sandstone_wall waterlogged true south false east false north false up false west false
10969 sandstone_wall waterlogged false south false east false north false up false west true
10970 sandstone_wall waterlogged false south false east false north false up false west false
10971 end_stone_brick_wall waterlogged true south true east true north true up true west true
10972 end_stone_brick_wall waterlogged true south true east true north true up true west false
10973 end_stone_brick_wall waterlogged false south true east true north true up true west true
10974 end_stone_brick_wall waterlogged false south true east true north true up true west false
10975 end_stone_brick_wall waterlogged true south true east true north true up false west true
10976 end_stone_brick_wall waterlogged true south true east true north true up false west false
10977 end_stone_brick_wall waterlogged false south true east true north true up false west true
10978 end_stone_brick_wall waterlogged false south true east true north true up false west false
10979 end_stone_brick_wall waterlogged true south false east true north true up true west true
10980 end_stone_brick_wall waterlogged true south false east true north true up true west false
10981 end_stone_brick_wall waterlogged false south false east true north true up true west true
10982 end_stone_brick_wall waterlogged false south false east true north true up true west false
10983 end_stone_brick_wall waterlogged true south false east true north true up false west true
10984 end_stone_brick_wall waterlogged true south false east true north true up false west false
10985 end_stone_brick_wall waterlogged false south false east true north true up false west true
10986 end_stone_brick_wall waterlogged false south false east true north true up false west false
10987 end_stone_brick_wall waterlogged true south true east true north false up true west true
10988 end_stone_brick_wall waterlogged true south true east true north false up true west false
10989 end_stone_brick_wall waterlogged false south true east true north false up true west true
10990 end_stone_brick_wall waterlogged false south true east true north false up true west false
10991 end_stone_brick_wall waterlogged true south true east true north false up false west true
10992 end_stone_brick_wall waterlogged true south true east true north false up false west false
10993 end_stone_brick_wall waterlogged false south true east true north false up false west true
10994 end_stone_brick_wall waterlogged false south true east true north false up false west false
10995 end_stone_brick_wall waterlogged true south false east true north false up true west true
10996 end_stone_brick_wall waterlogged true south false east true north false up true west false
10997 end_stone_brick_wall waterlogged false south false east true north false up true west true
10998 end_stone_brick_wall waterlogged false south false east true north false up true west false
10999 end_stone_brick_wall waterlogged true south false east true north false up false west true
11000 end_stone_brick_wall waterlogged true south false east true north false up false west false
11001 end_stone_brick_wall waterlogged false south false east true north false up false west true
11002 end_stone_brick_wall waterlogged false south false east true north false up false west false
11003 end_stone_brick_wall waterlogged true south true east false north true up true west true
11004 end_stone_brick_wall waterlogged true south true east false north true up true west false
11005 end_stone_brick_wall waterlogged false south true east false north true up true west true
11006 end_stone_brick_wall waterlogged false south true east false north true up true west false
11007 end_stone_brick_wall waterlogged true south true east false north true up false west true
11008 end_stone_brick_wall waterlogged true south true east false north true up false west false
11009 end_stone_brick_wall waterlogged false south true east false north true up false west true
11010 end_stone_brick_wall waterlogged false south true east false north true up false west false
11011 end_stone_brick_wall waterlogged true south false east false north true up true west true
11012 end_stone_brick_wall waterlogged true south false east false north true up true west false
11013 end_stone_brick_wall waterlogged false south false east false north true up true west true
11014 end_stone_brick_wall waterlogged false south false east false north true up true west false
11015 end_stone_brick_wall waterlogged true south false east false north true up false west true
11016 end_stone_brick_wall waterlogged true south false east false north true up false west false
11017 end_stone_brick_wall waterlogged false south false east false north true up false west true
11018 end_stone_brick_wall waterlogged false south false east false north true up false west false
11019 end_stone_brick_wall waterlogged true south true east false north false up true west true
11020 end_stone_brick_wall waterlogged true south true east false north false up true west false
11021 end_stone_brick_wall waterlogged false south true east false north false up true west true
11022 end_stone_brick_wall waterlogged false south true east false north false up true west false
11023 end_stone_brick_wall waterlogged true south true east false north false up false west true
11024 end_stone_brick_wall waterlogged true south true east false north false up false west false
11025 end_stone_brick_wall waterlogged false south true east false north false up false west true
11026 end_stone_brick_wall waterlogged false south true east false north false up false west false
11027 end_stone_brick_wall waterlogged true south false east false north false up true west true
11028 end_stone_brick_wall waterlogged true south false east false north false up true west false
11029 end_stone_brick_wall waterlogged false south false east false north false up true west true
11030 end_stone_brick_wall waterlogged false south false east false north false up true west false
11031 end_stone_brick_wall waterlogged true south false east false north false up false west true
11032 end_stone_brick_wall waterlogged true south false east false north false up false west false
11033 end_stone_brick_wall waterlogged false south false east false north false up false west true
11034 end_stone_brick_wall waterlogged false south false east false north false up false west false
11035 diorite_wall waterlogged true south true east true north true up true west true
11036 diorite_wall waterlogged true south true east true north true up true west false
11037 diorite_wall waterlogged false south true east true north true up true west true
11038 diorite_wall waterlogged false south true east true north true up true west false
11039 diorite_wall waterlogged true south true east true north true up false west true
11040 diorite_wall waterlogged true south true east true north true up false west false
11041 diorite_wall waterlogged false south true east true north true up false west true
11042 diorite_wall waterlogged false south true east true north true up false west false
11043 diorite_wall waterlogged true south false east true north true up true west true
11044 diorite_wall waterlogged true south false east true north true up true west false
11045 diorite_wall waterlogged false south false east true north true up true west true
11046 diorite_wall waterlogged false south false east true north true up true west false
11047 diorite_wall waterlogged true south false east true north true up false west true
11048 diorite_wall waterlogged true south false east true north true up false west false
11049 diorite_wall waterlogged false south false east true north true up false west true
11050 diorite_wall waterlogged false south false east true north true up false west false
11051 diorite_wall waterlogged true south true east true north false up true west true
11052 diorite_wall waterlogged true south true east true north false up true west false
11053 diorite_wall waterlogged false south true east true north false up true west true
11054 diorite_wall waterlogged false south true east true north false up true west false
11055 diorite_wall waterlogged true south true east true north false up false west true
11056 diorite_wall waterlogged true south true east true north false up false west false
11057 diorite_wall waterlogged false south true east true north false up false west true
11058 diorite_wall waterlogged false south true east true north false up false west false
11059 diorite_wall waterlogged true south false east true north false up true west true
11060 diorite_wall waterlogged true south false east true north false up true west false
11061 diorite_wall waterlogged false south false east true north false up true west true
11062 diorite_wall waterlogged false south false east true north false up true west false
11063 diorite_wall waterlogged true south false east true north false up false west true
11064 diorite_wall waterlogged true south false east true north false up false west false
11065 diorite_wall waterlogged false south false east true north false up false west true
11066 diorite_wall waterlogged false south false east true north false up false west false
11067 diorite_wall waterlogged true south true east false north true up true west true
11068 diorite_wall waterlogged true south true east false north true up true west false
11069 diorite_wall waterlogged false south true east false north true up true west true
11070 diorite_wall waterlogged false south true east false north true up true west false
11071 diorite_wall waterlogged true south true east false north true up false west true
11072 diorite_wall waterlogged true south true east false north true up false west false
11073 diorite_wall waterlogged false south true east false north true up false west true
11074 diorite_wall waterlogged false south true east false north true up false west false
11075 diorite_wall waterlogged true south false east false north true up true west true
11076 diorite_wall waterlogged true south false east false north true up true west false
11077 diorite_wall waterlogged false south false east false north true up true west true
11078 diorite_wall waterlogged false south false east false north true up true west false
11079 diorite_wall waterlogged true south false east false north true up false west true
11080 diorite_wall waterlogged true south false east false north true up false west false
11081 diorite_wall waterlogged false south false east false north true up false west true
11082 diorite_wall waterlogged false south false east false north true up false west false
11083 diorite_wall waterlogged true south true east false north false up true west true
11084 diorite_wall waterlogged true south true east false north false up true west false
11085 diorite_wall waterlogged false south true east false north false up true west true
11086 diorite_wall waterlogged false south true east false north false up true west false
11087 diorite_wall waterlogged true south true east false north false up false west true
11088 diorite_wall waterlogged true south true east false north false up false west false
11089 diorite_wall waterlogged false south true east false north false up false west true
11090 diorite_wall waterlogged false south true east false north false up false west false
11091 diorite_wall waterlogged true south false east false north false up true west true
11092 diorite_wall waterlogged true south false east false north false up true west false
11093 diorite_wall waterlogged false south false east false north false up true west true
11094 diorite_wall waterlogged false south false east false north false up true west false
11095 diorite_wall waterlogged true south false east false north false up false west true
11096 diorite_wall waterlogged true south false east false north false up false west false
11097 diorite_wall waterlogged false south false east false north false up false west true
11098 diorite_wall waterlogged false south false east false north false up false west false
11099 scaffolding distance 0 waterlogged true bottom true
11100 scaffolding distance 0 waterlogged false bottom true
11101 scaffolding distance 1 waterlogged true bottom true
11102 scaffolding distance 1 waterlogged false bottom true
11103 scaffolding distance 2 waterlogged true bottom true
11104 scaffolding distance 2 waterlogged false bottom true
11105 scaffolding distance 3 waterlogged true bottom true
11106 scaffolding distance 3 waterlogged false bottom true
11107 scaffolding distance 4 waterlogged true bottom true
11108 scaffolding distance 4 waterlogged false bottom true
11109 scaffolding distance 5 waterlogged true bottom true
11110 scaffolding distance 5 waterlogged false bottom true
11111 scaffolding distance 6 waterlogged true bottom true
11112 scaffolding distance 6 waterlogged false bottom true
11113 scaffolding distance 7 waterlogged true bottom true
11114 scaffolding distance 7 waterlogged false bottom true
11115 scaffolding distance 0 waterlogged true bottom false
11116 scaffolding distance 0 waterlogged false bottom false
11117 scaffolding distance 1 waterlogged true bottom false
11118 scaffolding distance 1 waterlogged false bottom false
11119 scaffolding distance 2 waterlogged true bottom false
11120 scaffolding distance 2 waterlogged false bottom false
11121 scaffolding distance 3 waterlogged true bottom false
11122 scaffolding distance 3 waterlogged false bottom false
11123 scaffolding distance 4 waterlogged true bottom false
11124 scaffolding distance 4 waterlogged false bottom false
11125 scaffolding distance 5 waterlogged true bottom false
11126 scaffolding distance 5 waterlogged false bottom false
11127 scaffolding distance 6 waterlogged true bottom false
11128 scaffolding distance 6 waterlogged false bottom false
11129 scaffolding distance 7 waterlogged true bottom false
11130 scaffolding distance 7 waterlogged false bottom false
11131 loom facing north
11132 loom facing south
11133 loom facing west
11134 loom facing east
11135 barrel facing north open true
11136 barrel facing north open false
11137 barrel facing east open true
11138 barrel facing east open false
11139 barrel facing south open true
11140 barrel facing south open false
11141 barrel facing west open true
11142 barrel facing west open false
11143 barrel facing up open true
11144 barrel facing up open false
11145 barrel facing down open true
11146 barrel facing down open false
11147 smoker facing north lit true
11148 smoker facing north lit false
11149 smoker facing south lit true
11150 smoker facing south lit false
11151 smoker facing west lit true
11152 smoker facing west lit false
11153 smoker facing east lit true
11154 smoker facing east lit false
11155 blast_furnace facing north lit true
11156 blast_furnace facing north lit false
11157 blast_furnace facing south lit true
11158 blast_furnace facing south lit false
11159 blast_furnace facing west lit true
11160 blast_furnace facing west lit false
11161 blast_furnace facing east lit true
11162 blast_furnace facing east lit false
11163 cartography_table
11164 fletching_table
11165 grindstone face floor facing north
11166 grindstone face floor facing south
11167 grindstone face floor facing west
11168 grindstone face floor facing east
11169 grindstone face wall facing north
11170 grindstone face wall facing south
11171 grindstone face wall facing west
11172 grindstone face wall facing east
11173 grindstone face ceiling facing north
11174 grindstone face ceiling facing south
11175 grindstone face ceiling facing west
11176 grindstone face ceiling facing east
11177 lectern facing north has_book true powered true
11178 lectern facing north has_book true powered false
11179 lectern facing north has_book false powered true
11180 lectern facing north has_book false powered false
11181 lectern facing south has_book true powered true
11182 lectern facing south has_book true powered false
11183 lectern facing south has_book false powered true
11184 lectern facing south has_book false powered false
11185 lectern facing west has_book true powered true
11186 lectern facing west has_book true powered false
11187 lectern facing west has_book false powered true
11188 lectern facing west has_book false powered false
11189 lectern facing east has_book true powered true
11190 lectern facing east has_book true powered false
11191 lectern facing east has_book false powered true
11192 lectern facing east has_book false powered false
11193 smithing_table
11194 stonecutter facing north
11195 stonecutter facing south
11196 stonecutter facing west
11197 stonecutter facing east
11198 bell facing north attachment floor
11199 bell facing south attachment floor
11200 bell facing west attachment floor
11201 bell facing east attachment floor
11202 bell facing north attachment ceiling
11203 bell facing south attachment ceiling
11204 bell facing west attachment ceiling
11205 bell facing east attachment ceiling
11206 bell facing north attachment single_wall
11207 bell facing south attachment single_wall
11208 bell facing west attachment single_wall
11209 bell facing east attachment single_wall
11210 bell facing north attachment double_wall
11211 bell facing south attachment double_wall
11212 bell facing west attachment double_wall
11213 bell facing east attachment double_wall
11214 lantern hanging true
11215 lantern hanging false
11216 campfire facing north waterlogged true signal_fire true lit true
11217 campfire facing north waterlogged false signal_fire true lit true
11218 campfire facing north waterlogged true signal_fire false lit true
11219 campfire facing north waterlogged false signal_fire false lit true
11220 campfire facing north waterlogged true signal_fire true lit false
11221 campfire facing north waterlogged false signal_fire true lit false
11222 campfire facing north waterlogged true signal_fire false lit false
11223 campfire facing north waterlogged false signal_fire false lit false
11224 campfire facing south waterlogged true signal_fire true lit true
11225 campfire facing south waterlogged false signal_fire true lit true
11226 campfire facing south waterlogged true signal_fire false lit true
11227 campfire facing south waterlogged false signal_fire false lit true
11228 campfire facing south waterlogged true signal_fire true lit false
11229 campfire facing south waterlogged false signal_fire true lit false
11230 campfire facing south waterlogged true signal_fire false lit false
11231 campfire facing south waterlogged false signal_fire false lit false
11232 campfire facing west waterlogged true signal_fire true lit true
11233 campfire facing west waterlogged false signal_fire true lit true
11234 campfire facing west waterlogged true signal_fire false lit true
11235 campfire facing west waterlogged false signal_fire false lit true
11236 campfire facing west waterlogged true signal_fire true lit false
11237 campfire facing west waterlogged false signal_fire true lit false
11238 campfire facing west waterlogged true signal_fire false lit false
11239 campfire facing west waterlogged false signal_fire false lit false
11240 campfire facing east waterlogged true signal_fire true lit true
11241 campfire facing east waterlogged false signal_fire true lit true
11242 campfire facing east waterlogged true signal_fire false lit true
11243 campfire facing east waterlogged false signal_fire false lit true
11244 campfire facing east waterlogged true signal_fire true lit false
11245 campfire facing east waterlogged false signal_fire true lit false
11246 campfire facing east waterlogged true signal_fire false lit false
11247 campfire facing east waterlogged false signal_fire false lit false
11248 sweet_berry_bush age 0
11249 sweet_berry_bush age 1
11250 sweet_berry_bush age 2
11251 sweet_berry_bush age 3
11252 structure_block mode save
11253 structure_block mode load
11254 structure_block mode corner
11255 structure_block mode data
11256 jigsaw facing north
11257 jigsaw facing east
11258 jigsaw facing south
11259 jigsaw facing west
11260 jigsaw facing up
11261 jigsaw facing down
11262 composter level 0
11263 composter level 1
11264 composter level 2
11265 composter level 3
11266 composter level 4
11267 composter level 5
11268 composter level 6
11269 composter level 7
11270 composter level 8
================================================
FILE: Server/Protocol/UpgradeBlockTypePalette.txt
================================================
UpgradeBlockTypePalette
FileVersion 1
CommonPrefix minecraft:
0 0 air
1 0 stone
1 1 granite
1 2 polished_granite
1 3 diorite
1 4 polished_diorite
1 5 andesite
1 6 polished_andesite
2 0 grass_block snowy false
3 0 dirt
3 1 coarse_dirt
3 2 podzol snowy false
4 0 cobblestone
5 0 oak_planks
5 1 spruce_planks
5 2 birch_planks
5 3 jungle_planks
5 4 acacia_planks
5 5 dark_oak_planks
6 0 oak_sapling stage 0
6 1 spruce_sapling stage 0
6 2 birch_sapling stage 0
6 3 jungle_sapling stage 0
6 4 acacia_sapling stage 0
6 5 dark_oak_sapling stage 0
6 8 oak_sapling stage 1
6 9 spruce_sapling stage 1
6 10 birch_sapling stage 1
6 11 jungle_sapling stage 1
6 12 acacia_sapling stage 1
6 13 dark_oak_sapling stage 1
7 0 bedrock
8 0 water level 0
8 1 water level 1
8 2 water level 2
8 3 water level 3
8 4 water level 4
8 5 water level 5
8 6 water level 6
8 7 water level 7
8 8 water level 8
8 9 water level 9
8 10 water level 10
8 11 water level 11
8 12 water level 12
8 13 water level 13
8 14 water level 14
8 15 water level 15
9 0 water level 0
9 1 water level 1
9 2 water level 2
9 3 water level 3
9 4 water level 4
9 5 water level 5
9 6 water level 6
9 7 water level 7
9 8 water level 8
9 9 water level 9
9 10 water level 10
9 11 water level 11
9 12 water level 12
9 13 water level 13
9 14 water level 14
9 15 water level 15
10 0 lava level 0
10 1 lava level 1
10 2 lava level 2
10 3 lava level 3
10 4 lava level 4
10 5 lava level 5
10 6 lava level 6
10 7 lava level 7
10 8 lava level 8
10 9 lava level 9
10 10 lava level 10
10 11 lava level 11
10 12 lava level 12
10 13 lava level 13
10 14 lava level 14
10 15 lava level 15
11 0 lava level 0
11 1 lava level 1
11 2 lava level 2
11 3 lava level 3
11 4 lava level 4
11 5 lava level 5
11 6 lava level 6
11 7 lava level 7
11 8 lava level 8
11 9 lava level 9
11 10 lava level 10
11 11 lava level 11
11 12 lava level 12
11 13 lava level 13
11 14 lava level 14
11 15 lava level 15
12 0 sand
12 1 red_sand
13 0 gravel
14 0 gold_ore
15 0 iron_ore
16 0 coal_ore
17 0 oak_log axis y
17 1 spruce_log axis y
17 2 birch_log axis y
17 3 jungle_log axis y
17 4 oak_log axis x
17 5 spruce_log axis x
17 6 birch_log axis x
17 7 jungle_log axis x
17 8 oak_log axis z
17 9 spruce_log axis z
17 10 birch_log axis z
17 11 jungle_log axis z
17 12 oak_bark
17 13 spruce_bark
17 14 birch_bark
17 15 jungle_bark
18 0 oak_leaves decayable true check_decay false
18 1 spruce_leaves decayable true check_decay false
18 2 birch_leaves decayable true check_decay false
18 3 jungle_leaves decayable true check_decay false
18 4 oak_leaves decayable false check_decay false
18 5 spruce_leaves decayable false check_decay false
18 6 birch_leaves decayable false check_decay false
18 7 jungle_leaves decayable false check_decay false
18 8 oak_leaves decayable true check_decay true
18 9 spruce_leaves decayable true check_decay true
18 10 birch_leaves decayable true check_decay true
18 11 jungle_leaves decayable true check_decay true
18 12 oak_leaves decayable false check_decay true
18 13 spruce_leaves decayable false check_decay true
18 14 birch_leaves decayable false check_decay true
18 15 jungle_leaves decayable false check_decay true
19 0 sponge
19 1 wet_sponge
20 0 glass
21 0 lapis_ore
22 0 lapis_block
23 0 dispenser facing down triggered false
23 1 dispenser facing up triggered false
23 2 dispenser facing north triggered false
23 3 dispenser facing south triggered false
23 4 dispenser facing west triggered false
23 5 dispenser facing east triggered false
23 8 dispenser facing down triggered true
23 9 dispenser facing up triggered true
23 10 dispenser facing north triggered true
23 11 dispenser facing south triggered true
23 12 dispenser facing west triggered true
23 13 dispenser facing east triggered true
24 0 sandstone
24 1 chiseled_sandstone
24 2 cut_sandstone
25 0 note_block
26 0 red_bed facing south occupied false part foot
26 1 red_bed facing west occupied false part foot
26 2 red_bed facing north occupied false part foot
26 3 red_bed facing east occupied false part foot
26 8 red_bed facing south occupied false part head
26 9 red_bed facing west occupied false part head
26 10 red_bed facing north occupied false part head
26 11 red_bed facing east occupied false part head
26 12 red_bed facing south occupied true part head
26 13 red_bed facing west occupied true part head
26 14 red_bed facing north occupied true part head
26 15 red_bed facing east occupied true part head
27 0 powered_rail shape north_south powered false
27 1 powered_rail shape east_west powered false
27 2 powered_rail shape ascending_east powered false
27 3 powered_rail shape ascending_west powered false
27 4 powered_rail shape ascending_north powered false
27 5 powered_rail shape ascending_south powered false
27 8 powered_rail shape north_south powered true
27 9 powered_rail shape east_west powered true
27 10 powered_rail shape ascending_east powered true
27 11 powered_rail shape ascending_west powered true
27 12 powered_rail shape ascending_north powered true
27 13 powered_rail shape ascending_south powered true
28 0 detector_rail shape north_south powered false
28 1 detector_rail shape east_west powered false
28 2 detector_rail shape ascending_east powered false
28 3 detector_rail shape ascending_west powered false
28 4 detector_rail shape ascending_north powered false
28 5 detector_rail shape ascending_south powered false
28 8 detector_rail shape north_south powered true
28 9 detector_rail shape east_west powered true
28 10 detector_rail shape ascending_east powered true
28 11 detector_rail shape ascending_west powered true
28 12 detector_rail shape ascending_north powered true
28 13 detector_rail shape ascending_south powered true
29 0 sticky_piston facing down extended false
29 1 sticky_piston facing up extended false
29 2 sticky_piston facing north extended false
29 3 sticky_piston facing south extended false
29 4 sticky_piston facing west extended false
29 5 sticky_piston facing east extended false
29 8 sticky_piston facing down extended true
29 9 sticky_piston facing up extended true
29 10 sticky_piston facing north extended true
29 11 sticky_piston facing south extended true
29 12 sticky_piston facing west extended true
29 13 sticky_piston facing east extended true
30 0 cobweb
31 0 dead_bush
31 1 grass
31 2 fern
32 0 dead_bush
33 0 piston facing down extended false
33 1 piston facing up extended false
33 2 piston facing north extended false
33 3 piston facing south extended false
33 4 piston facing west extended false
33 5 piston facing east extended false
33 8 piston facing down extended true
33 9 piston facing up extended true
33 10 piston facing north extended true
33 11 piston facing south extended true
33 12 piston facing west extended true
33 13 piston facing east extended true
34 0 piston_head facing down short false type normal
34 1 piston_head facing up short false type normal
34 2 piston_head facing north short false type normal
34 3 piston_head facing south short false type normal
34 4 piston_head facing west short false type normal
34 5 piston_head facing east short false type normal
34 8 piston_head facing down short false type sticky
34 9 piston_head facing up short false type sticky
34 10 piston_head facing north short false type sticky
34 11 piston_head facing south short false type sticky
34 12 piston_head facing west short false type sticky
34 13 piston_head facing east short false type sticky
35 0 white_wool
35 1 orange_wool
35 2 magenta_wool
35 3 light_blue_wool
35 4 yellow_wool
35 5 lime_wool
35 6 pink_wool
35 7 gray_wool
35 8 light_gray_wool
35 9 cyan_wool
35 10 purple_wool
35 11 blue_wool
35 12 brown_wool
35 13 green_wool
35 14 red_wool
35 15 black_wool
36 0 moving_piston facing down type normal
36 1 moving_piston facing up type normal
36 2 moving_piston facing north type normal
36 3 moving_piston facing south type normal
36 4 moving_piston facing west type normal
36 5 moving_piston facing east type normal
36 8 moving_piston facing down type sticky
36 9 moving_piston facing up type sticky
36 10 moving_piston facing north type sticky
36 11 moving_piston facing south type sticky
36 12 moving_piston facing west type sticky
36 13 moving_piston facing east type sticky
37 0 dandelion
38 0 poppy
38 1 blue_orchid
38 2 allium
38 3 azure_bluet
38 4 red_tulip
38 5 orange_tulip
38 6 white_tulip
38 7 pink_tulip
38 8 oxeye_daisy
39 0 brown_mushroom
40 0 red_mushroom
41 0 gold_block
42 0 iron_block
43 0 stone_slab type double
43 1 sandstone_slab type double
43 2 petrified_oak_slab type double
43 3 cobblestone_slab type double
43 4 brick_slab type double
43 5 stone_brick_slab type double
43 6 nether_brick_slab type double
43 7 quartz_slab type double
43 8 smooth_stone
43 9 smooth_sandstone
43 10 petrified_oak_slab type double
43 11 cobblestone_slab type double
43 12 brick_slab type double
43 13 stone_brick_slab type double
43 14 nether_brick_slab type double
43 15 smooth_quartz
44 0 stone_slab type bottom
44 1 sandstone_slab type bottom
44 2 petrified_oak_slab type bottom
44 3 cobblestone_slab type bottom
44 4 brick_slab type bottom
44 5 stone_brick_slab type bottom
44 6 nether_brick_slab type bottom
44 7 quartz_slab type bottom
44 8 stone_slab type top
44 9 sandstone_slab type top
44 10 petrified_oak_slab type top
44 11 cobblestone_slab type top
44 12 brick_slab type top
44 13 stone_brick_slab type top
44 14 nether_brick_slab type top
44 15 quartz_slab type top
45 0 bricks
46 0 tnt unstable false
46 1 tnt unstable true
47 0 bookshelf
48 0 mossy_cobblestone
49 0 obsidian
50 1 wall_torch facing east
50 2 wall_torch facing west
50 3 wall_torch facing south
50 4 wall_torch facing north
50 5 torch
51 0 fire north false south false east false age 0 up false west false
51 1 fire north false south false east false age 1 up false west false
51 2 fire north false south false east false age 2 up false west false
51 3 fire north false south false east false age 3 up false west false
51 4 fire north false south false east false age 4 up false west false
51 5 fire north false south false east false age 5 up false west false
51 6 fire north false south false east false age 6 up false west false
51 7 fire north false south false east false age 7 up false west false
51 8 fire north false south false east false age 8 up false west false
51 9 fire north false south false east false age 9 up false west false
51 10 fire north false south false east false age 10 up false west false
51 11 fire north false south false east false age 11 up false west false
51 12 fire north false south false east false age 12 up false west false
51 13 fire north false south false east false age 13 up false west false
51 14 fire north false south false east false age 14 up false west false
51 15 fire north false south false east false age 15 up false west false
52 0 mob_spawner
53 0 oak_stairs facing east shape straight half bottom
53 1 oak_stairs facing west shape straight half bottom
53 2 oak_stairs facing south shape straight half bottom
53 3 oak_stairs facing north shape straight half bottom
53 4 oak_stairs facing east shape straight half top
53 5 oak_stairs facing west shape straight half top
53 6 oak_stairs facing south shape straight half top
53 7 oak_stairs facing north shape straight half top
54 2 chest facing north type single
54 3 chest facing south type single
54 4 chest facing west type single
54 5 chest facing east type single
55 0 redstone_wire south none east none north none power 0 west none
55 1 redstone_wire south none east none north none power 1 west none
55 2 redstone_wire south none east none north none power 2 west none
55 3 redstone_wire south none east none north none power 3 west none
55 4 redstone_wire south none east none north none power 4 west none
55 5 redstone_wire south none east none north none power 5 west none
55 6 redstone_wire south none east none north none power 6 west none
55 7 redstone_wire south none east none north none power 7 west none
55 8 redstone_wire south none east none north none power 8 west none
55 9 redstone_wire south none east none north none power 9 west none
55 10 redstone_wire south none east none north none power 10 west none
55 11 redstone_wire south none east none north none power 11 west none
55 12 redstone_wire south none east none north none power 12 west none
55 13 redstone_wire south none east none north none power 13 west none
55 14 redstone_wire south none east none north none power 14 west none
55 15 redstone_wire south none east none north none power 15 west none
56 0 diamond_ore
57 0 diamond_block
58 0 crafting_table
59 0 wheat age 0
59 1 wheat age 1
59 2 wheat age 2
59 3 wheat age 3
59 4 wheat age 4
59 5 wheat age 5
59 6 wheat age 6
59 7 wheat age 7
60 0 farmland moisture 0
60 1 farmland moisture 1
60 2 farmland moisture 2
60 3 farmland moisture 3
60 4 farmland moisture 4
60 5 farmland moisture 5
60 6 farmland moisture 6
60 7 farmland moisture 7
61 2 furnace facing north lit false
61 3 furnace facing south lit false
61 4 furnace facing west lit false
61 5 furnace facing east lit false
62 2 furnace facing north lit true
62 3 furnace facing south lit true
62 4 furnace facing west lit true
62 5 furnace facing east lit true
63 0 sign rotation 0
63 1 sign rotation 1
63 2 sign rotation 2
63 3 sign rotation 3
63 4 sign rotation 4
63 5 sign rotation 5
63 6 sign rotation 6
63 7 sign rotation 7
63 8 sign rotation 8
63 9 sign rotation 9
63 10 sign rotation 10
63 11 sign rotation 11
63 12 sign rotation 12
63 13 sign rotation 13
63 14 sign rotation 14
63 15 sign rotation 15
64 0 oak_door hinge right half lower facing east powered false open false
64 1 oak_door hinge right half lower facing south powered false open false
64 2 oak_door hinge right half lower facing west powered false open false
64 3 oak_door hinge right half lower facing north powered false open false
64 4 oak_door hinge right half lower facing east powered false open true
64 5 oak_door hinge right half lower facing south powered false open true
64 6 oak_door hinge right half lower facing west powered false open true
64 7 oak_door hinge right half lower facing north powered false open true
64 8 oak_door hinge left half upper facing east powered false open false
64 9 oak_door hinge right half upper facing east powered false open false
64 10 oak_door hinge left half upper facing east powered true open false
64 11 oak_door hinge right half upper facing east powered true open false
64 12 oak_door hinge left half upper facing east powered false open true
64 13 oak_door hinge left half upper facing south powered false open true
64 14 oak_door hinge left half upper facing west powered false open true
64 15 oak_door hinge left half upper facing north powered false open true
65 2 ladder facing north
65 3 ladder facing south
65 4 ladder facing west
65 5 ladder facing east
66 0 rail shape north_south
66 1 rail shape east_west
66 2 rail shape ascending_east
66 3 rail shape ascending_west
66 4 rail shape ascending_north
66 5 rail shape ascending_south
66 6 rail shape south_east
66 7 rail shape south_west
66 8 rail shape north_west
66 9 rail shape north_east
67 0 cobblestone_stairs facing east shape straight half bottom
67 1 cobblestone_stairs facing west shape straight half bottom
67 2 cobblestone_stairs facing south shape straight half bottom
67 3 cobblestone_stairs facing north shape straight half bottom
67 4 cobblestone_stairs facing east shape straight half top
67 5 cobblestone_stairs facing west shape straight half top
67 6 cobblestone_stairs facing south shape straight half top
67 7 cobblestone_stairs facing north shape straight half top
68 2 wall_sign facing north
68 3 wall_sign facing south
68 4 wall_sign facing west
68 5 wall_sign facing east
69 0 lever facing west face ceiling powered false
69 1 lever facing east face wall powered false
69 2 lever facing west face wall powered false
69 3 lever facing south face wall powered false
69 4 lever facing north face wall powered false
69 5 lever facing north face floor powered false
69 6 lever facing west face floor powered false
69 7 lever facing north face ceiling powered false
69 8 lever facing west face ceiling powered true
69 9 lever facing east face wall powered true
69 10 lever facing west face wall powered true
69 11 lever facing south face wall powered true
69 12 lever facing north face wall powered true
69 13 lever facing north face floor powered true
69 14 lever facing west face floor powered true
69 15 lever facing north face ceiling powered true
70 0 stone_pressure_plate powered false
70 1 stone_pressure_plate powered true
71 0 iron_door hinge right half lower facing east powered false open false
71 1 iron_door hinge right half lower facing south powered false open false
71 2 iron_door hinge right half lower facing west powered false open false
71 3 iron_door hinge right half lower facing north powered false open false
71 4 iron_door hinge right half lower facing east powered false open true
71 5 iron_door hinge right half lower facing south powered false open true
71 6 iron_door hinge right half lower facing west powered false open true
71 7 iron_door hinge right half lower facing north powered false open true
71 8 iron_door hinge left half upper facing east powered false open false
71 9 iron_door hinge right half upper facing east powered false open false
71 10 iron_door hinge left half upper facing east powered true open false
71 11 iron_door hinge right half upper facing east powered true open false
71 12 iron_door hinge left half upper facing east powered false open true
71 13 iron_door hinge left half upper facing south powered false open true
71 14 iron_door hinge left half upper facing west powered false open true
71 15 iron_door hinge left half upper facing north powered false open true
72 0 oak_pressure_plate powered false
72 1 oak_pressure_plate powered true
73 0 redstone_ore lit false
74 0 redstone_ore lit true
75 1 redstone_wall_torch facing east lit false
75 2 redstone_wall_torch facing west lit false
75 3 redstone_wall_torch facing south lit false
75 4 redstone_wall_torch facing north lit false
75 5 redstone_torch lit false
76 1 redstone_wall_torch facing east lit true
76 2 redstone_wall_torch facing west lit true
76 3 redstone_wall_torch facing south lit true
76 4 redstone_wall_torch facing north lit true
76 5 redstone_torch lit true
77 0 stone_button facing north face ceiling powered false
77 1 stone_button facing east face wall powered false
77 2 stone_button facing west face wall powered false
77 3 stone_button facing south face wall powered false
77 4 stone_button facing north face wall powered false
77 5 stone_button facing north face floor powered false
77 8 stone_button facing north face ceiling powered true
77 9 stone_button facing east face wall powered true
77 10 stone_button facing west face wall powered true
77 11 stone_button facing south face wall powered true
77 12 stone_button facing north face wall powered true
77 13 stone_button facing north face floor powered true
78 0 snow layers 1
78 1 snow layers 2
78 2 snow layers 3
78 3 snow layers 4
78 4 snow layers 5
78 5 snow layers 6
78 6 snow layers 7
78 7 snow layers 8
79 0 ice
80 0 snow_block
81 0 cactus age 0
81 1 cactus age 1
81 2 cactus age 2
81 3 cactus age 3
81 4 cactus age 4
81 5 cactus age 5
81 6 cactus age 6
81 7 cactus age 7
81 8 cactus age 8
81 9 cactus age 9
81 10 cactus age 10
81 11 cactus age 11
81 12 cactus age 12
81 13 cactus age 13
81 14 cactus age 14
81 15 cactus age 15
82 0 clay
83 0 sugar_cane age 0
83 1 sugar_cane age 1
83 2 sugar_cane age 2
83 3 sugar_cane age 3
83 4 sugar_cane age 4
83 5 sugar_cane age 5
83 6 sugar_cane age 6
83 7 sugar_cane age 7
83 8 sugar_cane age 8
83 9 sugar_cane age 9
83 10 sugar_cane age 10
83 11 sugar_cane age 11
83 12 sugar_cane age 12
83 13 sugar_cane age 13
83 14 sugar_cane age 14
83 15 sugar_cane age 15
84 0 jukebox has_record false
84 1 jukebox has_record true
85 0 oak_fence east false north false west false south false
86 0 carved_pumpkin facing south
86 1 carved_pumpkin facing west
86 2 carved_pumpkin facing north
86 3 carved_pumpkin facing east
87 0 netherrack
88 0 soul_sand
89 0 glowstone
90 1 portal axis x
90 2 portal axis z
91 0 jack_o_lantern facing south
91 1 jack_o_lantern facing west
91 2 jack_o_lantern facing north
91 3 jack_o_lantern facing east
92 0 cake bites 0
92 1 cake bites 1
92 2 cake bites 2
92 3 cake bites 3
92 4 cake bites 4
92 5 cake bites 5
92 6 cake bites 6
93 0 repeater facing south powered false locked false delay 1
93 1 repeater facing west powered false locked false delay 1
93 2 repeater facing north powered false locked false delay 1
93 3 repeater facing east powered false locked false delay 1
93 4 repeater facing south powered false locked false delay 2
93 5 repeater facing west powered false locked false delay 2
93 6 repeater facing north powered false locked false delay 2
93 7 repeater facing east powered false locked false delay 2
93 8 repeater facing south powered false locked false delay 3
93 9 repeater facing west powered false locked false delay 3
93 10 repeater facing north powered false locked false delay 3
93 11 repeater facing east powered false locked false delay 3
93 12 repeater facing south powered false locked false delay 4
93 13 repeater facing west powered false locked false delay 4
93 14 repeater facing north powered false locked false delay 4
93 15 repeater facing east powered false locked false delay 4
94 0 repeater facing south powered true locked false delay 1
94 1 repeater facing west powered true locked false delay 1
94 2 repeater facing north powered true locked false delay 1
94 3 repeater facing east powered true locked false delay 1
94 4 repeater facing south powered true locked false delay 2
94 5 repeater facing west powered true locked false delay 2
94 6 repeater facing north powered true locked false delay 2
94 7 repeater facing east powered true locked false delay 2
94 8 repeater facing south powered true locked false delay 3
94 9 repeater facing west powered true locked false delay 3
94 10 repeater facing north powered true locked false delay 3
94 11 repeater facing east powered true locked false delay 3
94 12 repeater facing south powered true locked false delay 4
94 13 repeater facing west powered true locked false delay 4
94 14 repeater facing north powered true locked false delay 4
94 15 repeater facing east powered true locked false delay 4
95 0 white_stained_glass
95 1 orange_stained_glass
95 2 magenta_stained_glass
95 3 light_blue_stained_glass
95 4 yellow_stained_glass
95 5 lime_stained_glass
95 6 pink_stained_glass
95 7 gray_stained_glass
95 8 light_gray_stained_glass
95 9 cyan_stained_glass
95 10 purple_stained_glass
95 11 blue_stained_glass
95 12 brown_stained_glass
95 13 green_stained_glass
95 14 red_stained_glass
95 15 black_stained_glass
96 0 oak_trapdoor facing north open false half bottom
96 1 oak_trapdoor facing south open false half bottom
96 2 oak_trapdoor facing west open false half bottom
96 3 oak_trapdoor facing east open false half bottom
96 4 oak_trapdoor facing north open true half bottom
96 5 oak_trapdoor facing south open true half bottom
96 6 oak_trapdoor facing west open true half bottom
96 7 oak_trapdoor facing east open true half bottom
96 8 oak_trapdoor facing north open false half top
96 9 oak_trapdoor facing south open false half top
96 10 oak_trapdoor facing west open false half top
96 11 oak_trapdoor facing east open false half top
96 12 oak_trapdoor facing north open true half top
96 13 oak_trapdoor facing south open true half top
96 14 oak_trapdoor facing west open true half top
96 15 oak_trapdoor facing east open true half top
97 0 infested_stone
97 1 infested_cobblestone
97 2 infested_stone_bricks
97 3 infested_mossy_stone_bricks
97 4 infested_cracked_stone_bricks
97 5 infested_chiseled_stone_bricks
98 0 stone_bricks
98 1 mossy_stone_bricks
98 2 cracked_stone_bricks
98 3 chiseled_stone_bricks
99 0 brown_mushroom_block down false south false east false north false up false west false
99 1 brown_mushroom_block down false south false east false north true up true west true
99 2 brown_mushroom_block down false south false east false north true up true west false
99 3 brown_mushroom_block down false south false east true north true up true west false
99 4 brown_mushroom_block down false south false east false north false up true west true
99 5 brown_mushroom_block down false south false east false north false up true west false
99 6 brown_mushroom_block down false south false east true north false up true west false
99 7 brown_mushroom_block down false south true east false north false up true west true
99 8 brown_mushroom_block down false south true east false north false up true west false
99 9 brown_mushroom_block down false south true east true north false up true west false
99 10 mushroom_stem down false south true east true north true up false west true
99 11 brown_mushroom_block down false south false east false north false up false west false
99 12 brown_mushroom_block down false south false east false north false up false west false
99 13 brown_mushroom_block down false south false east false north false up false west false
99 14 brown_mushroom_block down true south true east true north true up true west true
99 15 mushroom_stem down true south true east true north true up true west true
100 0 red_mushroom_block down false south false east false north false up false west false
100 1 red_mushroom_block down false south false east false north true up true west true
100 2 red_mushroom_block down false south false east false north true up true west false
100 3 red_mushroom_block down false south false east true north true up true west false
100 4 red_mushroom_block down false south false east false north false up true west true
100 5 red_mushroom_block down false south false east false north false up true west false
100 6 red_mushroom_block down false south false east true north false up true west false
100 7 red_mushroom_block down false south true east false north false up true west true
100 8 red_mushroom_block down false south true east false north false up true west false
100 9 red_mushroom_block down false south true east true north false up true west false
100 10 mushroom_stem down false south true east true north true up false west true
100 11 red_mushroom_block down false south false east false north false up false west false
100 12 red_mushroom_block down false south false east false north false up false west false
100 13 red_mushroom_block down false south false east false north false up false west false
100 14 red_mushroom_block down true south true east true north true up true west true
100 15 mushroom_stem down true south true east true north true up true west true
101 0 iron_bars east false north false west false south false
102 0 glass_pane east false north false west false south false
103 0 melon_block
104 0 pumpkin_stem age 0
104 1 pumpkin_stem age 1
104 2 pumpkin_stem age 2
104 3 pumpkin_stem age 3
104 4 pumpkin_stem age 4
104 5 pumpkin_stem age 5
104 6 pumpkin_stem age 6
104 7 pumpkin_stem age 7
105 0 melon_stem age 0
105 1 melon_stem age 1
105 2 melon_stem age 2
105 3 melon_stem age 3
105 4 melon_stem age 4
105 5 melon_stem age 5
105 6 melon_stem age 6
105 7 melon_stem age 7
106 0 vine south false east false north false up true west false
106 1 vine south true east false north false up true west false
106 2 vine south false east false north false up true west true
106 3 vine south true east false north false up true west true
106 4 vine south false east false north true up true west false
106 5 vine south true east false north true up true west false
106 6 vine south false east false north true up true west true
106 7 vine south true east false north true up true west true
106 8 vine south false east true north false up true west false
106 9 vine south true east true north false up true west false
106 10 vine south false east true north false up true west true
106 11 vine south true east true north false up true west true
106 12 vine south false east true north true up true west false
106 13 vine south true east true north true up true west false
106 14 vine south false east true north true up true west true
106 15 vine south true east true north true up true west true
107 0 oak_fence_gate facing south powered false open false in_wall false
107 1 oak_fence_gate facing west powered false open false in_wall false
107 2 oak_fence_gate facing north powered false open false in_wall false
107 3 oak_fence_gate facing east powered false open false in_wall false
107 4 oak_fence_gate facing south powered false open true in_wall false
107 5 oak_fence_gate facing west powered false open true in_wall false
107 6 oak_fence_gate facing north powered false open true in_wall false
107 7 oak_fence_gate facing east powered false open true in_wall false
107 8 oak_fence_gate facing south powered true open false in_wall false
107 9 oak_fence_gate facing west powered true open false in_wall false
107 10 oak_fence_gate facing north powered true open false in_wall false
107 11 oak_fence_gate facing east powered true open false in_wall false
107 12 oak_fence_gate facing south powered true open true in_wall false
107 13 oak_fence_gate facing west powered true open true in_wall false
107 14 oak_fence_gate facing north powered true open true in_wall false
107 15 oak_fence_gate facing east powered true open true in_wall false
108 0 brick_stairs facing east shape straight half bottom
108 1 brick_stairs facing west shape straight half bottom
108 2 brick_stairs facing south shape straight half bottom
108 3 brick_stairs facing north shape straight half bottom
108 4 brick_stairs facing east shape straight half top
108 5 brick_stairs facing west shape straight half top
108 6 brick_stairs facing south shape straight half top
108 7 brick_stairs facing north shape straight half top
109 0 stone_brick_stairs facing east shape straight half bottom
109 1 stone_brick_stairs facing west shape straight half bottom
109 2 stone_brick_stairs facing south shape straight half bottom
109 3 stone_brick_stairs facing north shape straight half bottom
109 4 stone_brick_stairs facing east shape straight half top
109 5 stone_brick_stairs facing west shape straight half top
109 6 stone_brick_stairs facing south shape straight half top
109 7 stone_brick_stairs facing north shape straight half top
110 0 mycelium snowy false
111 0 lily_pad
112 0 nether_bricks
113 0 nether_brick_fence east false north false west false south false
114 0 nether_brick_stairs facing east shape straight half bottom
114 1 nether_brick_stairs facing west shape straight half bottom
114 2 nether_brick_stairs facing south shape straight half bottom
114 3 nether_brick_stairs facing north shape straight half bottom
114 4 nether_brick_stairs facing east shape straight half top
114 5 nether_brick_stairs facing west shape straight half top
114 6 nether_brick_stairs facing south shape straight half top
114 7 nether_brick_stairs facing north shape straight half top
115 0 nether_wart age 0
115 1 nether_wart age 1
115 2 nether_wart age 2
115 3 nether_wart age 3
116 0 enchanting_table
117 0 brewing_stand has_bottle_0 false has_bottle_1 false has_bottle_2 false
117 1 brewing_stand has_bottle_0 true has_bottle_1 false has_bottle_2 false
117 2 brewing_stand has_bottle_0 false has_bottle_1 true has_bottle_2 false
117 3 brewing_stand has_bottle_0 true has_bottle_1 true has_bottle_2 false
117 4 brewing_stand has_bottle_0 false has_bottle_1 false has_bottle_2 true
117 5 brewing_stand has_bottle_0 true has_bottle_1 false has_bottle_2 true
117 6 brewing_stand has_bottle_0 false has_bottle_1 true has_bottle_2 true
117 7 brewing_stand has_bottle_0 true has_bottle_1 true has_bottle_2 true
118 0 cauldron level 0
118 1 cauldron level 1
118 2 cauldron level 2
118 3 cauldron level 3
119 0 end_portal
120 0 end_portal_frame facing south eye false
120 1 end_portal_frame facing west eye false
120 2 end_portal_frame facing north eye false
120 3 end_portal_frame facing east eye false
120 4 end_portal_frame facing south eye true
120 5 end_portal_frame facing west eye true
120 6 end_portal_frame facing north eye true
120 7 end_portal_frame facing east eye true
121 0 end_stone
122 0 dragon_egg
123 0 redstone_lamp lit false
124 0 redstone_lamp lit true
125 0 oak_slab type double
125 1 spruce_slab type double
125 2 birch_slab type double
125 3 jungle_slab type double
125 4 acacia_slab type double
125 5 dark_oak_slab type double
126 0 oak_slab type bottom
126 1 spruce_slab type bottom
126 2 birch_slab type bottom
126 3 jungle_slab type bottom
126 4 acacia_slab type bottom
126 5 dark_oak_slab type bottom
126 8 oak_slab type top
126 9 spruce_slab type top
126 10 birch_slab type top
126 11 jungle_slab type top
126 12 acacia_slab type top
126 13 dark_oak_slab type top
127 0 cocoa facing south age 0
127 1 cocoa facing west age 0
127 2 cocoa facing north age 0
127 3 cocoa facing east age 0
127 4 cocoa facing south age 1
127 5 cocoa facing west age 1
127 6 cocoa facing north age 1
127 7 cocoa facing east age 1
127 8 cocoa facing south age 2
127 9 cocoa facing west age 2
127 10 cocoa facing north age 2
127 11 cocoa facing east age 2
128 0 sandstone_stairs facing east shape straight half bottom
128 1 sandstone_stairs facing west shape straight half bottom
128 2 sandstone_stairs facing south shape straight half bottom
128 3 sandstone_stairs facing north shape straight half bottom
128 4 sandstone_stairs facing east shape straight half top
128 5 sandstone_stairs facing west shape straight half top
128 6 sandstone_stairs facing south shape straight half top
128 7 sandstone_stairs facing north shape straight half top
129 0 emerald_ore
130 2 ender_chest facing north
130 3 ender_chest facing south
130 4 ender_chest facing west
130 5 ender_chest facing east
131 0 tripwire_hook attached false facing south powered false
131 1 tripwire_hook attached false facing west powered false
131 2 tripwire_hook attached false facing north powered false
131 3 tripwire_hook attached false facing east powered false
131 4 tripwire_hook attached true facing south powered false
131 5 tripwire_hook attached true facing west powered false
131 6 tripwire_hook attached true facing north powered false
131 7 tripwire_hook attached true facing east powered false
131 8 tripwire_hook attached false facing south powered true
131 9 tripwire_hook attached false facing west powered true
131 10 tripwire_hook attached false facing north powered true
131 11 tripwire_hook attached false facing east powered true
131 12 tripwire_hook attached true facing south powered true
131 13 tripwire_hook attached true facing west powered true
131 14 tripwire_hook attached true facing north powered true
131 15 tripwire_hook attached true facing east powered true
132 0 tripwire attached false disarmed false powered false east false north false south false west false
132 1 tripwire attached false disarmed false powered true east false north false south false west false
132 2 tripwire attached false disarmed false powered false east false north false south false west false
132 3 tripwire attached false disarmed false powered true east false north false south false west false
132 4 tripwire attached true disarmed false powered false east false north false south false west false
132 5 tripwire attached true disarmed false powered true east false north false south false west false
132 6 tripwire attached true disarmed false powered false east false north false south false west false
132 7 tripwire attached true disarmed false powered true east false north false south false west false
132 8 tripwire attached false disarmed true powered false east false north false south false west false
132 9 tripwire attached false disarmed true powered true east false north false south false west false
132 10 tripwire attached false disarmed true powered false east false north false south false west false
132 11 tripwire attached false disarmed true powered true east false north false south false west false
132 12 tripwire attached true disarmed true powered false east false north false south false west false
132 13 tripwire attached true disarmed true powered true east false north false south false west false
132 14 tripwire attached true disarmed true powered false east false north false south false west false
133 0 emerald_block
134 0 spruce_stairs facing east shape straight half bottom
134 1 spruce_stairs facing west shape straight half bottom
134 2 spruce_stairs facing south shape straight half bottom
134 3 spruce_stairs facing north shape straight half bottom
134 4 spruce_stairs facing east shape straight half top
134 5 spruce_stairs facing west shape straight half top
134 6 spruce_stairs facing south shape straight half top
134 7 spruce_stairs facing north shape straight half top
135 0 birch_stairs facing east shape straight half bottom
135 1 birch_stairs facing west shape straight half bottom
135 2 birch_stairs facing south shape straight half bottom
135 3 birch_stairs facing north shape straight half bottom
135 4 birch_stairs facing east shape straight half top
135 5 birch_stairs facing west shape straight half top
135 6 birch_stairs facing south shape straight half top
135 7 birch_stairs facing north shape straight half top
136 0 jungle_stairs facing east shape straight half bottom
136 1 jungle_stairs facing west shape straight half bottom
136 2 jungle_stairs facing south shape straight half bottom
136 3 jungle_stairs facing north shape straight half bottom
136 4 jungle_stairs facing east shape straight half top
136 5 jungle_stairs facing west shape straight half top
136 6 jungle_stairs facing south shape straight half top
136 7 jungle_stairs facing north shape straight half top
137 0 command_block conditional false facing down
137 1 command_block conditional false facing up
137 2 command_block conditional false facing north
137 3 command_block conditional false facing south
137 4 command_block conditional false facing west
137 5 command_block conditional false facing east
137 8 command_block conditional true facing down
137 9 command_block conditional true facing up
137 10 command_block conditional true facing north
137 11 command_block conditional true facing south
137 12 command_block conditional true facing west
137 13 command_block conditional true facing east
138 0 beacon
139 0 cobblestone_wall south false east false north false up false west false
139 1 mossy_cobblestone_wall south false east false north false up false west false
140 0 potted_cactus
140 1 potted_cactus
140 2 potted_cactus
140 3 potted_cactus
140 4 potted_cactus
140 5 potted_cactus
140 6 potted_cactus
140 7 potted_cactus
140 8 potted_cactus
140 9 potted_cactus
140 10 potted_cactus
140 11 potted_cactus
140 12 potted_cactus
140 13 potted_cactus
140 14 potted_cactus
140 15 potted_cactus
141 0 carrots age 0
141 1 carrots age 1
141 2 carrots age 2
141 3 carrots age 3
141 4 carrots age 4
141 5 carrots age 5
141 6 carrots age 6
141 7 carrots age 7
142 0 potatoes age 0
142 1 potatoes age 1
142 2 potatoes age 2
142 3 potatoes age 3
142 4 potatoes age 4
142 5 potatoes age 5
142 6 potatoes age 6
142 7 potatoes age 7
143 0 oak_button facing north face ceiling powered false
143 1 oak_button facing east face wall powered false
143 2 oak_button facing west face wall powered false
143 3 oak_button facing south face wall powered false
143 4 oak_button facing north face wall powered false
143 5 oak_button facing north face floor powered false
143 8 oak_button facing north face ceiling powered true
143 9 oak_button facing east face wall powered true
143 10 oak_button facing west face wall powered true
143 11 oak_button facing south face wall powered true
143 12 oak_button facing north face wall powered true
143 13 oak_button facing north face floor powered true
144 0 %%FILTER_ME%% facing down nodrop false
144 1 %%FILTER_ME%% facing up nodrop false
144 2 %%FILTER_ME%% facing north nodrop false
144 3 %%FILTER_ME%% facing south nodrop false
144 4 %%FILTER_ME%% facing west nodrop false
144 5 %%FILTER_ME%% facing east nodrop false
144 8 %%FILTER_ME%% facing down nodrop true
144 9 %%FILTER_ME%% facing up nodrop true
144 10 %%FILTER_ME%% facing north nodrop true
144 11 %%FILTER_ME%% facing south nodrop true
144 12 %%FILTER_ME%% facing west nodrop true
144 13 %%FILTER_ME%% facing east nodrop true
145 0 anvil facing south
145 1 anvil facing west
145 2 anvil facing north
145 3 anvil facing east
145 4 chipped_anvil facing south
145 5 chipped_anvil facing west
145 6 chipped_anvil facing north
145 7 chipped_anvil facing east
145 8 damaged_anvil facing south
145 9 damaged_anvil facing west
145 10 damaged_anvil facing north
145 11 damaged_anvil facing east
146 2 trapped_chest facing north type single
146 3 trapped_chest facing south type single
146 4 trapped_chest facing west type single
146 5 trapped_chest facing east type single
147 0 light_weighted_pressure_plate power 0
147 1 light_weighted_pressure_plate power 1
147 2 light_weighted_pressure_plate power 2
147 3 light_weighted_pressure_plate power 3
147 4 light_weighted_pressure_plate power 4
147 5 light_weighted_pressure_plate power 5
147 6 light_weighted_pressure_plate power 6
147 7 light_weighted_pressure_plate power 7
147 8 light_weighted_pressure_plate power 8
147 9 light_weighted_pressure_plate power 9
147 10 light_weighted_pressure_plate power 10
147 11 light_weighted_pressure_plate power 11
147 12 light_weighted_pressure_plate power 12
147 13 light_weighted_pressure_plate power 13
147 14 light_weighted_pressure_plate power 14
147 15 light_weighted_pressure_plate power 15
148 0 heavy_weighted_pressure_plate power 0
148 1 heavy_weighted_pressure_plate power 1
148 2 heavy_weighted_pressure_plate power 2
148 3 heavy_weighted_pressure_plate power 3
148 4 heavy_weighted_pressure_plate power 4
148 5 heavy_weighted_pressure_plate power 5
148 6 heavy_weighted_pressure_plate power 6
148 7 heavy_weighted_pressure_plate power 7
148 8 heavy_weighted_pressure_plate power 8
148 9 heavy_weighted_pressure_plate power 9
148 10 heavy_weighted_pressure_plate power 10
148 11 heavy_weighted_pressure_plate power 11
148 12 heavy_weighted_pressure_plate power 12
148 13 heavy_weighted_pressure_plate power 13
148 14 heavy_weighted_pressure_plate power 14
148 15 heavy_weighted_pressure_plate power 15
149 0 comparator facing south mode compare powered false
149 1 comparator facing west mode compare powered false
149 2 comparator facing north mode compare powered false
149 3 comparator facing east mode compare powered false
149 4 comparator facing south mode subtract powered false
149 5 comparator facing west mode subtract powered false
149 6 comparator facing north mode subtract powered false
149 7 comparator facing east mode subtract powered false
149 8 comparator facing south mode compare powered true
149 9 comparator facing west mode compare powered true
149 10 comparator facing north mode compare powered true
149 11 comparator facing east mode compare powered true
149 12 comparator facing south mode subtract powered true
149 13 comparator facing west mode subtract powered true
149 14 comparator facing north mode subtract powered true
149 15 comparator facing east mode subtract powered true
150 0 comparator facing south mode compare powered false
150 1 comparator facing west mode compare powered false
150 2 comparator facing north mode compare powered false
150 3 comparator facing east mode compare powered false
150 4 comparator facing south mode subtract powered false
150 5 comparator facing west mode subtract powered false
150 6 comparator facing north mode subtract powered false
150 7 comparator facing east mode subtract powered false
150 8 comparator facing south mode compare powered true
150 9 comparator facing west mode compare powered true
150 10 comparator facing north mode compare powered true
150 11 comparator facing east mode compare powered true
150 12 comparator facing south mode subtract powered true
150 13 comparator facing west mode subtract powered true
150 14 comparator facing north mode subtract powered true
150 15 comparator facing east mode subtract powered true
151 0 daylight_detector inverted false power 0
151 1 daylight_detector inverted false power 1
151 2 daylight_detector inverted false power 2
151 3 daylight_detector inverted false power 3
151 4 daylight_detector inverted false power 4
151 5 daylight_detector inverted false power 5
151 6 daylight_detector inverted false power 6
151 7 daylight_detector inverted false power 7
151 8 daylight_detector inverted false power 8
151 9 daylight_detector inverted false power 9
151 10 daylight_detector inverted false power 10
151 11 daylight_detector inverted false power 11
151 12 daylight_detector inverted false power 12
151 13 daylight_detector inverted false power 13
151 14 daylight_detector inverted false power 14
151 15 daylight_detector inverted false power 15
152 0 redstone_block
153 0 nether_quartz_ore
154 0 hopper facing down enabled true
154 2 hopper facing north enabled true
154 3 hopper facing south enabled true
154 4 hopper facing west enabled true
154 5 hopper facing east enabled true
154 8 hopper facing down enabled false
154 10 hopper facing north enabled false
154 11 hopper facing south enabled false
154 12 hopper facing west enabled false
154 13 hopper facing east enabled false
155 0 quartz_block
155 1 chiseled_quartz_block
155 2 quartz_pillar axis y
155 3 quartz_pillar axis x
155 4 quartz_pillar axis z
156 0 quartz_stairs facing east shape straight half bottom
156 1 quartz_stairs facing west shape straight half bottom
156 2 quartz_stairs facing south shape straight half bottom
156 3 quartz_stairs facing north shape straight half bottom
156 4 quartz_stairs facing east shape straight half top
156 5 quartz_stairs facing west shape straight half top
156 6 quartz_stairs facing south shape straight half top
156 7 quartz_stairs facing north shape straight half top
157 0 activator_rail shape north_south powered false
157 1 activator_rail shape east_west powered false
157 2 activator_rail shape ascending_east powered false
157 3 activator_rail shape ascending_west powered false
157 4 activator_rail shape ascending_north powered false
157 5 activator_rail shape ascending_south powered false
157 8 activator_rail shape north_south powered true
157 9 activator_rail shape east_west powered true
157 10 activator_rail shape ascending_east powered true
157 11 activator_rail shape ascending_west powered true
157 12 activator_rail shape ascending_north powered true
157 13 activator_rail shape ascending_south powered true
158 0 dropper facing down triggered false
158 1 dropper facing up triggered false
158 2 dropper facing north triggered false
158 3 dropper facing south triggered false
158 4 dropper facing west triggered false
158 5 dropper facing east triggered false
158 8 dropper facing down triggered true
158 9 dropper facing up triggered true
158 10 dropper facing north triggered true
158 11 dropper facing south triggered true
158 12 dropper facing west triggered true
158 13 dropper facing east triggered true
159 0 white_terracotta
159 1 orange_terracotta
159 2 magenta_terracotta
159 3 light_blue_terracotta
159 4 yellow_terracotta
159 5 lime_terracotta
159 6 pink_terracotta
159 7 gray_terracotta
159 8 light_gray_terracotta
159 9 cyan_terracotta
159 10 purple_terracotta
159 11 blue_terracotta
159 12 brown_terracotta
159 13 green_terracotta
159 14 red_terracotta
159 15 black_terracotta
160 0 white_stained_glass_pane east false north false west false south false
160 1 orange_stained_glass_pane east false north false west false south false
160 2 magenta_stained_glass_pane east false north false west false south false
160 3 light_blue_stained_glass_pane east false north false west false south false
160 4 yellow_stained_glass_pane east false north false west false south false
160 5 lime_stained_glass_pane east false north false west false south false
160 6 pink_stained_glass_pane east false north false west false south false
160 7 gray_stained_glass_pane east false north false west false south false
160 8 light_gray_stained_glass_pane east false north false west false south false
160 9 cyan_stained_glass_pane east false north false west false south false
160 10 purple_stained_glass_pane east false north false west false south false
160 11 blue_stained_glass_pane east false north false west false south false
160 12 brown_stained_glass_pane east false north false west false south false
160 13 green_stained_glass_pane east false north false west false south false
160 14 red_stained_glass_pane east false north false west false south false
160 15 black_stained_glass_pane east false north false west false south false
161 0 acacia_leaves decayable true check_decay false
161 1 dark_oak_leaves decayable true check_decay false
161 4 acacia_leaves decayable false check_decay false
161 5 dark_oak_leaves decayable false check_decay false
161 8 acacia_leaves decayable true check_decay true
161 9 dark_oak_leaves decayable true check_decay true
161 12 acacia_leaves decayable false check_decay true
161 13 dark_oak_leaves decayable false check_decay true
162 0 acacia_log axis y
162 1 dark_oak_log axis y
162 4 acacia_log axis x
162 5 dark_oak_log axis x
162 8 acacia_log axis z
162 9 dark_oak_log axis z
162 12 acacia_bark
162 13 dark_oak_bark
163 0 acacia_stairs facing east shape straight half bottom
163 1 acacia_stairs facing west shape straight half bottom
163 2 acacia_stairs facing south shape straight half bottom
163 3 acacia_stairs facing north shape straight half bottom
163 4 acacia_stairs facing east shape straight half top
163 5 acacia_stairs facing west shape straight half top
163 6 acacia_stairs facing south shape straight half top
163 7 acacia_stairs facing north shape straight half top
164 0 dark_oak_stairs facing east shape straight half bottom
164 1 dark_oak_stairs facing west shape straight half bottom
164 2 dark_oak_stairs facing south shape straight half bottom
164 3 dark_oak_stairs facing north shape straight half bottom
164 4 dark_oak_stairs facing east shape straight half top
164 5 dark_oak_stairs facing west shape straight half top
164 6 dark_oak_stairs facing south shape straight half top
164 7 dark_oak_stairs facing north shape straight half top
165 0 slime_block
166 0 barrier
167 0 iron_trapdoor facing north open false half bottom
167 1 iron_trapdoor facing south open false half bottom
167 2 iron_trapdoor facing west open false half bottom
167 3 iron_trapdoor facing east open false half bottom
167 4 iron_trapdoor facing north open true half bottom
167 5 iron_trapdoor facing south open true half bottom
167 6 iron_trapdoor facing west open true half bottom
167 7 iron_trapdoor facing east open true half bottom
167 8 iron_trapdoor facing north open false half top
167 9 iron_trapdoor facing south open false half top
167 10 iron_trapdoor facing west open false half top
167 11 iron_trapdoor facing east open false half top
167 12 iron_trapdoor facing north open true half top
167 13 iron_trapdoor facing south open true half top
167 14 iron_trapdoor facing west open true half top
167 15 iron_trapdoor facing east open true half top
168 0 prismarine
168 1 prismarine_bricks
168 2 dark_prismarine
169 0 sea_lantern
170 0 hay_block axis y
170 4 hay_block axis x
170 8 hay_block axis z
171 0 white_carpet
171 1 orange_carpet
171 2 magenta_carpet
171 3 light_blue_carpet
171 4 yellow_carpet
171 5 lime_carpet
171 6 pink_carpet
171 7 gray_carpet
171 8 light_gray_carpet
171 9 cyan_carpet
171 10 purple_carpet
171 11 blue_carpet
171 12 brown_carpet
171 13 green_carpet
171 14 red_carpet
171 15 black_carpet
172 0 terracotta
173 0 coal_block
174 0 packed_ice
175 0 sunflower half lower
175 1 lilac half lower
175 2 tall_grass half lower
175 3 large_fern half lower
175 4 rose_bush half lower
175 5 peony half lower
175 8 peony half upper
175 9 peony half upper
175 10 peony half upper
175 11 peony half upper
176 0 white_banner rotation 0
176 1 white_banner rotation 1
176 2 white_banner rotation 2
176 3 white_banner rotation 3
176 4 white_banner rotation 4
176 5 white_banner rotation 5
176 6 white_banner rotation 6
176 7 white_banner rotation 7
176 8 white_banner rotation 8
176 9 white_banner rotation 9
176 10 white_banner rotation 10
176 11 white_banner rotation 11
176 12 white_banner rotation 12
176 13 white_banner rotation 13
176 14 white_banner rotation 14
176 15 white_banner rotation 15
177 2 white_wall_banner facing north
177 3 white_wall_banner facing south
177 4 white_wall_banner facing west
177 5 white_wall_banner facing east
178 0 daylight_detector inverted true power 0
178 1 daylight_detector inverted true power 1
178 2 daylight_detector inverted true power 2
178 3 daylight_detector inverted true power 3
178 4 daylight_detector inverted true power 4
178 5 daylight_detector inverted true power 5
178 6 daylight_detector inverted true power 6
178 7 daylight_detector inverted true power 7
178 8 daylight_detector inverted true power 8
178 9 daylight_detector inverted true power 9
178 10 daylight_detector inverted true power 10
178 11 daylight_detector inverted true power 11
178 12 daylight_detector inverted true power 12
178 13 daylight_detector inverted true power 13
178 14 daylight_detector inverted true power 14
178 15 daylight_detector inverted true power 15
179 0 red_sandstone
179 1 chiseled_red_sandstone
179 2 cut_red_sandstone
180 0 red_sandstone_stairs facing east shape straight half bottom
180 1 red_sandstone_stairs facing west shape straight half bottom
180 2 red_sandstone_stairs facing south shape straight half bottom
180 3 red_sandstone_stairs facing north shape straight half bottom
180 4 red_sandstone_stairs facing east shape straight half top
180 5 red_sandstone_stairs facing west shape straight half top
180 6 red_sandstone_stairs facing south shape straight half top
180 7 red_sandstone_stairs facing north shape straight half top
181 0 red_sandstone_slab type double
181 8 smooth_red_sandstone
182 0 red_sandstone_slab type bottom
182 8 red_sandstone_slab type top
183 0 spruce_fence_gate facing south powered false open false in_wall false
183 1 spruce_fence_gate facing west powered false open false in_wall false
183 2 spruce_fence_gate facing north powered false open false in_wall false
183 3 spruce_fence_gate facing east powered false open false in_wall false
183 4 spruce_fence_gate facing south powered false open true in_wall false
183 5 spruce_fence_gate facing west powered false open true in_wall false
183 6 spruce_fence_gate facing north powered false open true in_wall false
183 7 spruce_fence_gate facing east powered false open true in_wall false
183 8 spruce_fence_gate facing south powered true open false in_wall false
183 9 spruce_fence_gate facing west powered true open false in_wall false
183 10 spruce_fence_gate facing north powered true open false in_wall false
183 11 spruce_fence_gate facing east powered true open false in_wall false
183 12 spruce_fence_gate facing south powered true open true in_wall false
183 13 spruce_fence_gate facing west powered true open true in_wall false
183 14 spruce_fence_gate facing north powered true open true in_wall false
183 15 spruce_fence_gate facing east powered true open true in_wall false
184 0 birch_fence_gate facing south powered false open false in_wall false
184 1 birch_fence_gate facing west powered false open false in_wall false
184 2 birch_fence_gate facing north powered false open false in_wall false
184 3 birch_fence_gate facing east powered false open false in_wall false
184 4 birch_fence_gate facing south powered false open true in_wall false
184 5 birch_fence_gate facing west powered false open true in_wall false
184 6 birch_fence_gate facing north powered false open true in_wall false
184 7 birch_fence_gate facing east powered false open true in_wall false
184 8 birch_fence_gate facing south powered true open false in_wall false
184 9 birch_fence_gate facing west powered true open false in_wall false
184 10 birch_fence_gate facing north powered true open false in_wall false
184 11 birch_fence_gate facing east powered true open false in_wall false
184 12 birch_fence_gate facing south powered true open true in_wall false
184 13 birch_fence_gate facing west powered true open true in_wall false
184 14 birch_fence_gate facing north powered true open true in_wall false
184 15 birch_fence_gate facing east powered true open true in_wall false
185 0 jungle_fence_gate facing south powered false open false in_wall false
185 1 jungle_fence_gate facing west powered false open false in_wall false
185 2 jungle_fence_gate facing north powered false open false in_wall false
185 3 jungle_fence_gate facing east powered false open false in_wall false
185 4 jungle_fence_gate facing south powered false open true in_wall false
185 5 jungle_fence_gate facing west powered false open true in_wall false
185 6 jungle_fence_gate facing north powered false open true in_wall false
185 7 jungle_fence_gate facing east powered false open true in_wall false
185 8 jungle_fence_gate facing south powered true open false in_wall false
185 9 jungle_fence_gate facing west powered true open false in_wall false
185 10 jungle_fence_gate facing north powered true open false in_wall false
185 11 jungle_fence_gate facing east powered true open false in_wall false
185 12 jungle_fence_gate facing south powered true open true in_wall false
185 13 jungle_fence_gate facing west powered true open true in_wall false
185 14 jungle_fence_gate facing north powered true open true in_wall false
185 15 jungle_fence_gate facing east powered true open true in_wall false
186 0 dark_oak_fence_gate facing south powered false open false in_wall false
186 1 dark_oak_fence_gate facing west powered false open false in_wall false
186 2 dark_oak_fence_gate facing north powered false open false in_wall false
186 3 dark_oak_fence_gate facing east powered false open false in_wall false
186 4 dark_oak_fence_gate facing south powered false open true in_wall false
186 5 dark_oak_fence_gate facing west powered false open true in_wall false
186 6 dark_oak_fence_gate facing north powered false open true in_wall false
186 7 dark_oak_fence_gate facing east powered false open true in_wall false
186 8 dark_oak_fence_gate facing south powered true open false in_wall false
186 9 dark_oak_fence_gate facing west powered true open false in_wall false
186 10 dark_oak_fence_gate facing north powered true open false in_wall false
186 11 dark_oak_fence_gate facing east powered true open false in_wall false
186 12 dark_oak_fence_gate facing south powered true open true in_wall false
186 13 dark_oak_fence_gate facing west powered true open true in_wall false
186 14 dark_oak_fence_gate facing north powered true open true in_wall false
186 15 dark_oak_fence_gate facing east powered true open true in_wall false
187 0 acacia_fence_gate facing south powered false open false in_wall false
187 1 acacia_fence_gate facing west powered false open false in_wall false
187 2 acacia_fence_gate facing north powered false open false in_wall false
187 3 acacia_fence_gate facing east powered false open false in_wall false
187 4 acacia_fence_gate facing south powered false open true in_wall false
187 5 acacia_fence_gate facing west powered false open true in_wall false
187 6 acacia_fence_gate facing north powered false open true in_wall false
187 7 acacia_fence_gate facing east powered false open true in_wall false
187 8 acacia_fence_gate facing south powered true open false in_wall false
187 9 acacia_fence_gate facing west powered true open false in_wall false
187 10 acacia_fence_gate facing north powered true open false in_wall false
187 11 acacia_fence_gate facing east powered true open false in_wall false
187 12 acacia_fence_gate facing south powered true open true in_wall false
187 13 acacia_fence_gate facing west powered true open true in_wall false
187 14 acacia_fence_gate facing north powered true open true in_wall false
187 15 acacia_fence_gate facing east powered true open true in_wall false
188 0 spruce_fence east false north false west false south false
189 0 birch_fence east false north false west false south false
190 0 jungle_fence east false north false west false south false
191 0 dark_oak_fence east false north false west false south false
192 0 acacia_fence east false north false west false south false
193 0 spruce_door hinge right half lower facing east powered false open false
193 1 spruce_door hinge right half lower facing south powered false open false
193 2 spruce_door hinge right half lower facing west powered false open false
193 3 spruce_door hinge right half lower facing north powered false open false
193 4 spruce_door hinge right half lower facing east powered false open true
193 5 spruce_door hinge right half lower facing south powered false open true
193 6 spruce_door hinge right half lower facing west powered false open true
193 7 spruce_door hinge right half lower facing north powered false open true
193 8 spruce_door hinge left half upper facing east powered false open false
193 9 spruce_door hinge right half upper facing east powered false open false
193 10 spruce_door hinge left half upper facing east powered true open false
193 11 spruce_door hinge right half upper facing east powered true open false
194 0 birch_door hinge right half lower facing east powered false open false
194 1 birch_door hinge right half lower facing south powered false open false
194 2 birch_door hinge right half lower facing west powered false open false
194 3 birch_door hinge right half lower facing north powered false open false
194 4 birch_door hinge right half lower facing east powered false open true
194 5 birch_door hinge right half lower facing south powered false open true
194 6 birch_door hinge right half lower facing west powered false open true
194 7 birch_door hinge right half lower facing north powered false open true
194 8 birch_door hinge left half upper facing east powered false open false
194 9 birch_door hinge right half upper facing east powered false open false
194 10 birch_door hinge left half upper facing east powered true open false
194 11 birch_door hinge right half upper facing east powered true open false
195 0 jungle_door hinge right half lower facing east powered false open false
195 1 jungle_door hinge right half lower facing south powered false open false
195 2 jungle_door hinge right half lower facing west powered false open false
195 3 jungle_door hinge right half lower facing north powered false open false
195 4 jungle_door hinge right half lower facing east powered false open true
195 5 jungle_door hinge right half lower facing south powered false open true
195 6 jungle_door hinge right half lower facing west powered false open true
195 7 jungle_door hinge right half lower facing north powered false open true
195 8 jungle_door hinge left half upper facing east powered false open false
195 9 jungle_door hinge right half upper facing east powered false open false
195 10 jungle_door hinge left half upper facing east powered true open false
195 11 jungle_door hinge right half upper facing east powered true open false
196 0 acacia_door hinge right half lower facing east powered false open false
196 1 acacia_door hinge right half lower facing south powered false open false
196 2 acacia_door hinge right half lower facing west powered false open false
196 3 acacia_door hinge right half lower facing north powered false open false
196 4 acacia_door hinge right half lower facing east powered false open true
196 5 acacia_door hinge right half lower facing south powered false open true
196 6 acacia_door hinge right half lower facing west powered false open true
196 7 acacia_door hinge right half lower facing north powered false open true
196 8 acacia_door hinge left half upper facing east powered false open false
196 9 acacia_door hinge right half upper facing east powered false open false
196 10 acacia_door hinge left half upper facing east powered true open false
196 11 acacia_door hinge right half upper facing east powered true open false
197 0 dark_oak_door hinge right half lower facing east powered false open false
197 1 dark_oak_door hinge right half lower facing south powered false open false
197 2 dark_oak_door hinge right half lower facing west powered false open false
197 3 dark_oak_door hinge right half lower facing north powered false open false
197 4 dark_oak_door hinge right half lower facing east powered false open true
197 5 dark_oak_door hinge right half lower facing south powered false open true
197 6 dark_oak_door hinge right half lower facing west powered false open true
197 7 dark_oak_door hinge right half lower facing north powered false open true
197 8 dark_oak_door hinge left half upper facing east powered false open false
197 9 dark_oak_door hinge right half upper facing east powered false open false
197 10 dark_oak_door hinge left half upper facing east powered true open false
197 11 dark_oak_door hinge right half upper facing east powered true open false
198 0 end_rod facing down
198 1 end_rod facing up
198 2 end_rod facing north
198 3 end_rod facing south
198 4 end_rod facing west
198 5 end_rod facing east
199 0 chorus_plant up false south false east false north false down false west false
200 0 chorus_flower age 0
200 1 chorus_flower age 1
200 2 chorus_flower age 2
200 3 chorus_flower age 3
200 4 chorus_flower age 4
200 5 chorus_flower age 5
201 0 purpur_block
202 0 purpur_pillar axis y
202 4 purpur_pillar axis x
202 8 purpur_pillar axis z
203 0 purpur_stairs facing east shape straight half bottom
203 1 purpur_stairs facing west shape straight half bottom
203 2 purpur_stairs facing south shape straight half bottom
203 3 purpur_stairs facing north shape straight half bottom
203 4 purpur_stairs facing east shape straight half top
203 5 purpur_stairs facing west shape straight half top
203 6 purpur_stairs facing south shape straight half top
203 7 purpur_stairs facing north shape straight half top
204 0 purpur_slab type double
205 0 purpur_slab type bottom
205 8 purpur_slab type top
206 0 end_stone_bricks
207 0 beetroots age 0
207 1 beetroots age 1
207 2 beetroots age 2
207 3 beetroots age 3
208 0 grass_path
209 0 end_gateway
210 0 repeating_command_block conditional false facing down
210 1 repeating_command_block conditional false facing up
210 2 repeating_command_block conditional false facing north
210 3 repeating_command_block conditional false facing south
210 4 repeating_command_block conditional false facing west
210 5 repeating_command_block conditional false facing east
210 8 repeating_command_block conditional true facing down
210 9 repeating_command_block conditional true facing up
210 10 repeating_command_block conditional true facing north
210 11 repeating_command_block conditional true facing south
210 12 repeating_command_block conditional true facing west
210 13 repeating_command_block conditional true facing east
211 0 chain_command_block conditional false facing down
211 1 chain_command_block conditional false facing up
211 2 chain_command_block conditional false facing north
211 3 chain_command_block conditional false facing south
211 4 chain_command_block conditional false facing west
211 5 chain_command_block conditional false facing east
211 8 chain_command_block conditional true facing down
211 9 chain_command_block conditional true facing up
211 10 chain_command_block conditional true facing north
211 11 chain_command_block conditional true facing south
211 12 chain_command_block conditional true facing west
211 13 chain_command_block conditional true facing east
212 0 frosted_ice age 0
212 1 frosted_ice age 1
212 2 frosted_ice age 2
212 3 frosted_ice age 3
213 0 magma_block
214 0 nether_wart_block
215 0 red_nether_bricks
216 0 bone_block axis y
216 4 bone_block axis x
216 8 bone_block axis z
217 0 structure_void
218 0 observer facing down powered false
218 1 observer facing up powered false
218 2 observer facing north powered false
218 3 observer facing south powered false
218 4 observer facing west powered false
218 5 observer facing east powered false
218 8 observer facing down powered true
218 9 observer facing up powered true
218 10 observer facing north powered true
218 11 observer facing south powered true
218 12 observer facing west powered true
218 13 observer facing east powered true
219 0 white_shulker_box facing down
219 1 white_shulker_box facing up
219 2 white_shulker_box facing north
219 3 white_shulker_box facing south
219 4 white_shulker_box facing west
219 5 white_shulker_box facing east
220 0 orange_shulker_box facing down
220 1 orange_shulker_box facing up
220 2 orange_shulker_box facing north
220 3 orange_shulker_box facing south
220 4 orange_shulker_box facing west
220 5 orange_shulker_box facing east
221 0 magenta_shulker_box facing down
221 1 magenta_shulker_box facing up
221 2 magenta_shulker_box facing north
221 3 magenta_shulker_box facing south
221 4 magenta_shulker_box facing west
221 5 magenta_shulker_box facing east
222 0 light_blue_shulker_box facing down
222 1 light_blue_shulker_box facing up
222 2 light_blue_shulker_box facing north
222 3 light_blue_shulker_box facing south
222 4 light_blue_shulker_box facing west
222 5 light_blue_shulker_box facing east
223 0 yellow_shulker_box facing down
223 1 yellow_shulker_box facing up
223 2 yellow_shulker_box facing north
223 3 yellow_shulker_box facing south
223 4 yellow_shulker_box facing west
223 5 yellow_shulker_box facing east
224 0 lime_shulker_box facing down
224 1 lime_shulker_box facing up
224 2 lime_shulker_box facing north
224 3 lime_shulker_box facing south
224 4 lime_shulker_box facing west
224 5 lime_shulker_box facing east
225 0 pink_shulker_box facing down
225 1 pink_shulker_box facing up
225 2 pink_shulker_box facing north
225 3 pink_shulker_box facing south
225 4 pink_shulker_box facing west
225 5 pink_shulker_box facing east
226 0 gray_shulker_box facing down
226 1 gray_shulker_box facing up
226 2 gray_shulker_box facing north
226 3 gray_shulker_box facing south
226 4 gray_shulker_box facing west
226 5 gray_shulker_box facing east
227 0 light_gray_shulker_box facing down
227 1 light_gray_shulker_box facing up
227 2 light_gray_shulker_box facing north
227 3 light_gray_shulker_box facing south
227 4 light_gray_shulker_box facing west
227 5 light_gray_shulker_box facing east
228 0 cyan_shulker_box facing down
228 1 cyan_shulker_box facing up
228 2 cyan_shulker_box facing north
228 3 cyan_shulker_box facing south
228 4 cyan_shulker_box facing west
228 5 cyan_shulker_box facing east
229 0 purple_shulker_box facing down
229 1 purple_shulker_box facing up
229 2 purple_shulker_box facing north
229 3 purple_shulker_box facing south
229 4 purple_shulker_box facing west
229 5 purple_shulker_box facing east
230 0 blue_shulker_box facing down
230 1 blue_shulker_box facing up
230 2 blue_shulker_box facing north
230 3 blue_shulker_box facing south
230 4 blue_shulker_box facing west
230 5 blue_shulker_box facing east
231 0 brown_shulker_box facing down
231 1 brown_shulker_box facing up
231 2 brown_shulker_box facing north
231 3 brown_shulker_box facing south
231 4 brown_shulker_box facing west
231 5 brown_shulker_box facing east
232 0 green_shulker_box facing down
232 1 green_shulker_box facing up
232 2 green_shulker_box facing north
232 3 green_shulker_box facing south
232 4 green_shulker_box facing west
232 5 green_shulker_box facing east
233 0 red_shulker_box facing down
233 1 red_shulker_box facing up
233 2 red_shulker_box facing north
233 3 red_shulker_box facing south
233 4 red_shulker_box facing west
233 5 red_shulker_box facing east
234 0 black_shulker_box facing down
234 1 black_shulker_box facing up
234 2 black_shulker_box facing north
234 3 black_shulker_box facing south
234 4 black_shulker_box facing west
234 5 black_shulker_box facing east
235 0 white_glazed_terracotta facing south
235 1 white_glazed_terracotta facing west
235 2 white_glazed_terracotta facing north
235 3 white_glazed_terracotta facing east
236 0 orange_glazed_terracotta facing south
236 1 orange_glazed_terracotta facing west
236 2 orange_glazed_terracotta facing north
236 3 orange_glazed_terracotta facing east
237 0 magenta_glazed_terracotta facing south
237 1 magenta_glazed_terracotta facing west
237 2 magenta_glazed_terracotta facing north
237 3 magenta_glazed_terracotta facing east
238 0 light_blue_glazed_terracotta facing south
238 1 light_blue_glazed_terracotta facing west
238 2 light_blue_glazed_terracotta facing north
238 3 light_blue_glazed_terracotta facing east
239 0 yellow_glazed_terracotta facing south
239 1 yellow_glazed_terracotta facing west
239 2 yellow_glazed_terracotta facing north
239 3 yellow_glazed_terracotta facing east
240 0 lime_glazed_terracotta facing south
240 1 lime_glazed_terracotta facing west
240 2 lime_glazed_terracotta facing north
240 3 lime_glazed_terracotta facing east
241 0 pink_glazed_terracotta facing south
241 1 pink_glazed_terracotta facing west
241 2 pink_glazed_terracotta facing north
241 3 pink_glazed_terracotta facing east
242 0 gray_glazed_terracotta facing south
242 1 gray_glazed_terracotta facing west
242 2 gray_glazed_terracotta facing north
242 3 gray_glazed_terracotta facing east
243 0 light_gray_glazed_terracotta facing south
243 1 light_gray_glazed_terracotta facing west
243 2 light_gray_glazed_terracotta facing north
243 3 light_gray_glazed_terracotta facing east
244 0 cyan_glazed_terracotta facing south
244 1 cyan_glazed_terracotta facing west
244 2 cyan_glazed_terracotta facing north
244 3 cyan_glazed_terracotta facing east
245 0 purple_glazed_terracotta facing south
245 1 purple_glazed_terracotta facing west
245 2 purple_glazed_terracotta facing north
245 3 purple_glazed_terracotta facing east
246 0 blue_glazed_terracotta facing south
246 1 blue_glazed_terracotta facing west
246 2 blue_glazed_terracotta facing north
246 3 blue_glazed_terracotta facing east
247 0 brown_glazed_terracotta facing south
247 1 brown_glazed_terracotta facing west
247 2 brown_glazed_terracotta facing north
247 3 brown_glazed_terracotta facing east
248 0 green_glazed_terracotta facing south
248 1 green_glazed_terracotta facing west
248 2 green_glazed_terracotta facing north
248 3 green_glazed_terracotta facing east
249 0 red_glazed_terracotta facing south
249 1 red_glazed_terracotta facing west
249 2 red_glazed_terracotta facing north
249 3 red_glazed_terracotta facing east
250 0 black_glazed_terracotta facing south
250 1 black_glazed_terracotta facing west
250 2 black_glazed_terracotta facing north
250 3 black_glazed_terracotta facing east
251 0 white_concrete
251 1 orange_concrete
251 2 magenta_concrete
251 3 light_blue_concrete
251 4 yellow_concrete
251 5 lime_concrete
251 6 pink_concrete
251 7 gray_concrete
251 8 light_gray_concrete
251 9 cyan_concrete
251 10 purple_concrete
251 11 blue_concrete
251 12 brown_concrete
251 13 green_concrete
251 14 red_concrete
251 15 black_concrete
252 0 white_concrete_powder
252 1 orange_concrete_powder
252 2 magenta_concrete_powder
252 3 light_blue_concrete_powder
252 4 yellow_concrete_powder
252 5 lime_concrete_powder
252 6 pink_concrete_powder
252 7 gray_concrete_powder
252 8 light_gray_concrete_powder
252 9 cyan_concrete_powder
252 10 purple_concrete_powder
252 11 blue_concrete_powder
252 12 brown_concrete_powder
252 13 green_concrete_powder
252 14 red_concrete_powder
252 15 black_concrete_powder
255 0 structure_block mode save
255 1 structure_block mode load
255 2 structure_block mode corner
255 3 structure_block mode data
================================================
FILE: Server/README.txt
================================================
--------------------------------------------------------------------------------
Welcome to your new Cuberite server, compatible with Minecraft 1.8 - 1.12!
--------------------------------------------------------------------------------
- To get started with your server, read the user's manual at
https://book.cuberite.org/
- Subscribe to the Newsletter for update news and important information at
https://cuberite.org/news/#subscribe
- For information about adding plugins to your server, visit
https://cuberite.org/plugins/
- For additional support, visit https://cuberite.org/discuss/
--------------------------------------------------------------------------------
================================================
FILE: Server/brewing.txt
================================================
#*****************#
# Brewing Recipes #
#*****************#
# The time for a brewing recipe is always 20 seconds (400 ticks).
#
# Minecraft-Wiki Brewing:
# https://minecraft.wiki/w/Brewing
#
# A brewing recipe has this format:
# Data Value + Ingredient = Potion
### Primary ###
# Akward Potion
0 + netherwart = 8208
# Mundane Potion
0 + redstonedust = 8192
0 + ghasttear = 8192
0 + glisteringmelon = 8192
0 + blazepowder = 8192
0 + magmacream = 8192
0 + sugar = 8192
0 + spidereye = 8192
0 + rabbitsfoot = 8192
# Thick Potion
0 + glowstonedust = 8224
# Potion of Weakness
0 + fermentedspidereye = 8200
### Secondary ###
## Positive ##
# Potion of Healing
8208 + glisteringmelon = 8197
# Potion of Fire Resistance
8208 + magmacream = 8195
# Potion of Regeneration
8208 + ghasttear = 8193
# Potion of Strength
8208 + blazepowder = 8201
# Potion of Swiftness
8208 + sugar = 8194
# Potion of Night Vision
8208 + goldencarrot = 8198
# Potion of Water Breathing
8208 + pufferfish = 8205
# Potion of Leaping
8208 + rabbitsfoot = 8203
## Negative ##
# Potion of Poison
8208 + spidereye = 8196
# Potion of Weakness (extended)
8200 + redstonedust = 8264
### Tertiary ###
## Positive ##
# Potion of Fire Resistance (extended)
8195 + redstonedust = 8259
# Potion of Healing II
8197 + glowstonedust = 8229
# Potion of Regeneration (extended)
8193 + redstonedust = 8257
# Potion of Regeneration II
8193 + glowstonedust = 8225
# Potion of Strength (extended)
8201 + redstonedust = 8265
# Potion of Strength II
8201 + glowstonedust = 8233
# Potion of Swiftness (extended)
8194 + redstonedust = 8258
# Potion of Swiftness II
8194 + glowstonedust = 8226
# Potion of Night Vision (extended)
8198 + redstonedust = 8262
# Potion of Invisibility
8198 + fermentedspidereye = 8206
# Potion of Invisibility (extended)
8262 + fermentedspidereye = 8270
# Potion of Invisibility (extended)
8206 + redstonedust = 8270
# Potion of Water Breathing (extended)
8205 + redstonedust = 8269
# Potion of Leaping II
8203 + glowstonedust = 8235
# Potion of Leaping (extended)
8203 + redstonedust = 8267
## Negative ##
# Potion of Harming
8196 + fermentedspidereye = 8204
8197 + fermentedspidereye = 8204
8260 + fermentedspidereye = 8204
# Potion of Harming II
8228 + fermentedspidereye = 8236
8229 + fermentedspidereye = 8236
# Potion of Harming II
8204 + glowstonedust = 8236
# Potion of Poison (extended)
8196 + redstonedust = 8260
# Potion of Poison II
8196 + glowstonedust = 8228
# Potion of Slowness
8194 + fermentedspidereye = 8202
8203 + fermentedspidereye = 8202
# Potion of Slowness (extended)
8202 + redstonedust = 8266
# Potion of Slowness (extended)
8258 + fermentedspidereye = 8266
8267 + fermentedspidereye = 8266
================================================
FILE: Server/delete_windows_service.cmd
================================================
@echo off
set SERVICENAME="Cuberite"
sc delete %SERVICENAME%
================================================
FILE: Server/furnace.txt
================================================
#*****************#
# Furnace Recipes #
#*****************#
#
#
#******************************************************#
# Basic Notation Help
#
# **** Item Definition ****
# An Item is defined by an Item Type, an amount (and damage)
# The damage is optional, and if not specified it's assumed to be 0.
# If a damage of -1 is specified, then the damage won't be checked when matching recipes.
# Note that when specifying items using names from items.ini, those already contain the damage value in them,
# so the damage value doesn't need to be specified here.
#
# Cactus Green example:
# 351 : 2 ( , 1 )
# ItemType : Damage ( , Amount )
# or simple use the item name (marked in items.ini):
# CactusGreen ( , 1 )
#
#
# **** Recipe and result ****
#
# Cobble @ 200 = Stone $ 15 -> Produces 1 smooth stone from 1 cobblestone in 200 ticks (10 seconds). Rewards 15 experience.
#
# Write in full:
# Cobble : 0 , 1 @ 200 = 1 : 1 , 1 $ 10
# ItemType : Damage , Amount @ ticks = ItemType : Damage , Amount $ Experience
#
# If the experience parameter isn't included, experience reward will default to zero.
#
# **** Fuel ****
#
# !17:1 = 300 -> 1 Wood burns for 300 ticks (15 s)
#
# ! Wood , 1 = 300
# Fuel ItemType , Amount = ticks
#
#******************************************************#
#--------------------------
# Smelting recipes
Beef = Steak $ 0.35
BlackTerracotta = BlackGlazedTerracotta $ 0.1
BlueTerracotta = BlueGlazedTerracotta $ 0.1
BrownTerracotta = BrownGlazedTerracotta $ 0.10
Cactus = CactusGreen $ 0.2
ChainmailBoots:-1 = IronNugget $ 0.1
ChainmailChestplate:-1 = IronNugget $ 0.1
ChainmailHelmet:-1 = IronNugget $ 0.1
ChainmailLeggings:-1 = IronNugget $ 0.1
Chicken = CookedChicken $ 0.35
ChorusFruit = PoppedChorusFruit $ 0.1
Clay = Brick $ 0.3
ClayBlock = HardenedClay $ 0.35
CoalOre = Coal $ 0.1
Cobblestone = Stone $ 0.1
CyanTerracotta = CyanGlazedTerracotta $ 0.1
DiamondOre = Diamond $ 1.0
EmeraldOre = Emerald $ 1.0
Fish = CookedFish $ 0.35
GoldOre = GoldIngot $ 1.0
GoldAxe:-1 = GoldNugget $ 0.1
GoldBoots:-1 = GoldNugget $ 0.1
GoldChestplate:-1 = GoldNugget $ 0.1
GoldHorseArmor:-1 = GoldNugget $ 0.1
GoldHelmet:-1 = GoldNugget $ 0.1
GoldHoe:-1 = GoldNugget $ 0.1
GoldPants:-1 = GoldNugget $ 0.1
GoldPickaxe:-1 = GoldNugget $ 0.1
GoldShovel:-1 = GoldNugget $ 0.1
GoldSword:-1 = GoldNugget $ 0.1
GrayTerracotta = GrayGlazedTerracotta $ 0.1
GreenTerracotta = GreenGlazedTerracotta $ 0.1
IronOre = IronIngot $ 0.7
IronAxe:-1 = IronNugget $ 0.1
IronBoots:-1 = IronNugget $ 0.1
IronChestplate:-1 = IronNugget $ 0.1
IronHorseArmor:-1 = IronNugget $ 0.1
IronHelmet:-1 = IronNugget $ 0.1
IronHoe:-1 = IronNugget $ 0.1
IronLeggings:-1 = IronNugget $ 0.1
IronPickaxe:-1 = IronNugget $ 0.1
IronShovel:-1 = IronNugget $ 0.1
IronSword:-1 = IronNugget $ 0.1
LapisOre = LapisLazuli $ 0.2
LightBlueTerracotta = LightBlueGlazedTerracotta $ 0.1
LightGrayTerracotta = LightGrayGlazedTerracotta $ 0.1
LimeTerracotta = LimeGlazedTerracotta $ 0.1
Log:-1 = CharCoal $ 0.15
Log2:-1 = CharCoal $ 0.15
MagentaTerracotta = MagentaGlazedTerracotta $ 0.1
Mutton = CookedMutton $ 0.35
NetherQuartzOre = NetherQuartz $ 0.2
Netherrack = NetherBrick $ 0.1
OrangeTerracotta = OrangeGlazedTerracotta $ 0.1
PinkTerracotta = PinkGlazedTerracotta $ 0.1
Porkchop = CookedPorkchop $ 0.35
Potato = BakedPotato $ 0.35
PurpleTerracotta = PurpleGlazedTerracotta $ 0.1
Rabbit = CookedRabbit $ 0.35
RedTerracotta = RedGlazedTerracotta $ 0.1
RedstoneOre = Redstone $ 0.7
Salmon = CookedSalmon $ 0.35
Sand = Glass $ 0.1
StoneBrick = CrackedStoneBricks $ 0.1
WetSponge = Sponge $ 0.15
WhiteTerracotta = WhiteGlazedTerracotta $ 0.1
YellowTerracotta = YellowGlazedTerracotta $ 0.1
#--------------------------
# Fuels
! AcaciaBoat = 400 # -> 20 sec
! AcaciaDoor = 200 # -> 10 sec
! AcaciaFence = 300 # -> 15 sec
! AcaciaFenceGate = 300 # -> 15 sec
! AcaciaStairs = 300 # -> 15 sec
! Banner = 300 # -> 15 sec
! BirchBoat = 400 # -> 20 sec
! BirchDoor = 200 # -> 10 sec
! BirchFence = 300 # -> 15 sec
! BirchFenceGate = 300 # -> 15 sec
! BirchStairs = 300 # -> 15 sec
! BlazeRod = 2400 # -> 120 sec
! Boat = 400 # -> 20 sec
! Bookshelf = 300 # -> 15 sec
! Bow = 300 # -> 15 sec
! Bowl = 100 # -> 5 sec
! BrownMushroomBlock = 300 # -> 15 sec
! Carpet = 67 # -> 3.35 sec
! CharCoal = 1600 # -> 80 sec
! Chest = 300 # -> 15 sec
! Coal = 1600 # -> 80 sec
! CoalBlock = 16000 # -> 800 sec
! CraftingTable = 300 # -> 15 sec
! DarkOakBoat = 400 # -> 20 sec
! DarkOakDoor = 200 # -> 10 sec
! DarkOakFence = 300 # -> 15 sec
! DarkOakFenceGate = 300 # -> 15 sec
! DarkOakStairs = 300 # -> 15 sec
! DaylightSensor = 300 # -> 15 sec
! Fence = 300 # -> 15 sec
! FenceGate = 300 # -> 15 sec
! FishingRod = 300 # -> 15 sec
! Jukebox = 300 # -> 15 sec
! JungleBoat = 400 # -> 20 sec
! JungleDoor = 200 # -> 10 sec
! JungleFence = 300 # -> 15 sec
! JungleFenceGate = 300 # -> 15 sec
! JungleStairs = 300 # -> 15 sec
! Ladder = 300 # -> 15 sec
! Lavabucket = 20000 # -> 1000 sec
! Log = 300 # -> 15 sec
! Log2 = 300 # -> 15 sec
! NoteBlock = 300 # -> 15 sec
! OakStairs = 300 # -> 15 sec
! Planks = 300 # -> 15 sec
! RedMushroomBlock = 300 # -> 15 sec
! Sapling = 100 # -> 5 sec
! Sign = 200 # -> 10 sec
! SpruceBoat = 400 # -> 20 sec
! SpruceDoor = 200 # -> 10 sec
! SpruceFence = 300 # -> 15 sec
! SpruceFenceGate = 300 # -> 15 sec
! SpruceStairs = 300 # -> 15 sec
! Stick = 100 # -> 5 sec
! Trapdoor = 300 # -> 15 sec
! TrappedChest = 300 # -> 15 sec
! WoodenAxe = 200 # -> 10 sec
! WoodenButton = 100 # -> 5 sec
! WoodenDoor = 200 # -> 10 sec
! WoodenHoe = 200 # -> 10 sec
! WoodenPressurePlate = 300 # -> 15 sec
! WoodenPickaxe = 200 # -> 10 sec
! WoodenSlab = 150 # -> 7.5 sec
! WoodenShovel = 200 # -> 10 sec
! WoodenSword = 200 # -> 10 sec
! Wool = 100 # -> 5 sec
================================================
FILE: Server/hg
================================================
#! /bin/bash
# This script runs Cuberite under helgrind
# It expects valgrind to be normally installed and available
# Note that this is for Linux only and debug-only, since it slows down MCS way too much
valgrind --log-file=helgrind.log --suppressions=hg.supp --gen-suppressions=all --tool=helgrind -v ./Cuberite
================================================
FILE: Server/hg.supp
================================================
# This is a valgrind suppressions file for running helgrind on Cuberite
# Use by adding "--suppressions=hg.supp" to the helgrind commandline
# This covers GCC bug 40518, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
# "Erasing an empty string causes a global value write / race condition warning in helgrind"
# Original suppression authored by Jonathan Wakely: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518#c20
# Modified by Mattes to match the mangled function name used on Ubuntu
{
libstdcxx_std_string_race_pr40518
Helgrind:Race
fun:_ZNSs9_M_mutateEjjj
}
================================================
FILE: Server/install_windows_service.cmd
================================================
rem Alter this if you need to install multiple instances.
@echo off
set SERVICENAME="Cuberite"
set CURRENTDIR=%CD%
sc create %SERVICENAME% binPath= "%CURRENTDIR%\Cuberite.exe -d" start= auto DisplayName= "@%CURRENTDIR%\Cuberite.exe,-1"
sc description %SERVICENAME% "@%CURRENTDIR%\Cuberite.exe,-2"
================================================
FILE: Server/vg
================================================
#! /bin/bash
# This script runs Cuberite under valgrind
# It expects valgrind to be normally installed and available
# Note that this is for Linux only and debug-only, since it slows down MCS way too much
valgrind --log-file=valgrind.log --suppressions=vg.supp --tool=memcheck --leak-check=full --leak-resolution=high --show-reachable=yes --track-origins=yes -v ./Cuberite
================================================
FILE: Server/vg.supp
================================================
================================================
FILE: Server/webadmin/GenerateSelfSignedHTTPSCertUsingOpenssl.cmd
================================================
@echo off
echo This script generates the certificate and private key for the https webadmin
echo Note that the generated certificate is self-signed, and therefore not trusted by browsers
echo Note that this script requires openssl to be installed and in PATH
echo.
echo When OpenSSL asks you for Common Name, you need to enter the fully qualified domain name of the server, that is, e. g. gallery.xoft.cz
echo.
echo If OpenSSL fails with an error, "WARNING: can't open config file: /usr/local/ssl/openssl.cnf", you need to run this script as an administrator
echo.
openssl req -x509 -newkey rsa:2048 -keyout httpskey.pem -out httpscert.crt -days 3650 -nodes
pause
================================================
FILE: Server/webadmin/GenerateSelfSignedHTTPSCertUsingOpenssl.sh
================================================
#!/bin/bash
echo "This script generates the certificate and private key for the https webadmin"
echo "Note that the generated certificate is self-signed, and therefore not trusted by browsers"
echo "Note that this script requires openssl to be installed and in PATH"
echo ""
echo "When OpenSSL asks you for Common Name, you need to enter the fully qualified domain name of the server, that is, e. g. gallery.xoft.cz"
echo ""
openssl req -x509 -newkey rsa:2048 -keyout httpskey.pem -out httpscert.crt -days 3650 -nodes
================================================
FILE: Server/webadmin/files/guest.html
================================================
Guest Information
Hello! Welcome to the Cuberite WebAdmin.
This is a default message, edit files/guest.html to add your own custom message.
================================================
FILE: Server/webadmin/template.lua
================================================
-- Use a table for fast concatenation of strings
local SiteContent = {}
function Output(String)
table.insert(SiteContent, String)
end
local function GetDefaultPage()
local PM = cRoot:Get():GetPluginManager()
local SubTitle = "Current Game"
local Content = ""
Content = Content .. "
Plugins:
"
PM:ForEachPlugin(
function (a_CBPlugin)
if (a_CBPlugin:IsLoaded()) then
Content = Content .. "
";
return Content, SubTitle
end
function ShowPage(WebAdmin, TemplateRequest)
SiteContent = {}
local BaseURL = cWebAdmin:GetBaseURL(TemplateRequest.Request.Path)
local Title = "Cuberite WebAdmin"
local NumPlayers = cRoot:Get():GetServer():GetNumPlayers()
local MemoryUsageKiB = cRoot:GetPhysicalRAMUsage()
local NumChunks = cRoot:Get():GetTotalChunkCount()
local PluginPage = cWebAdmin:GetPage(TemplateRequest.Request)
local PageContent = PluginPage.Content
local SubTitle = PluginPage.PluginFolder
if (PluginPage.UrlPath ~= "") then
SubTitle = PluginPage.PluginFolder .. " - " .. PluginPage.TabTitle
end
if (PageContent == "") then
PageContent, SubTitle = GetDefaultPage()
end
Output([[
]] .. Title .. [[
]])
-- Get all tabs:
local perPluginTabs = {}
for _, tab in ipairs(cWebAdmin:GetAllWebTabs()) do
local pluginTabs = perPluginTabs[tab.PluginName] or {};
perPluginTabs[tab.PluginName] = pluginTabs
table.insert(pluginTabs, tab)
end
-- Sort by plugin:
local pluginNames = {}
for pluginName, pluginTabs in pairs(perPluginTabs) do
table.insert(pluginNames, pluginName)
end
table.sort(pluginNames)
-- Output by plugin, then alphabetically:
for _, pluginName in ipairs(pluginNames) do
local pluginTabs = perPluginTabs[pluginName]
table.sort(pluginTabs,
function(a_Tab1, a_Tab2)
return ((a_Tab1.Title or "") < (a_Tab2.Title or ""))
end
)
-- Translate the plugin name into the folder name (-> title)
local pluginWebTitle = cPluginManager:Get():GetPluginFolderName(pluginName) or pluginName
Output("
" .. pluginWebTitle .. "
\n");
-- Output each tab:
for _, tab in pairs(pluginTabs) do
Output("
]])
return table.concat(SiteContent)
end
================================================
FILE: SetFlags.cmake
================================================
macro (add_flags_lnk FLAGS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_COVERAGE} ${FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_COVERAGE} ${FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS_COVERAGE "${CMAKE_MODULE_LINKER_FLAGS_COVERAGE} ${FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} ${FLAGS}")
endmacro()
macro(add_flags_cxx FLAGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
endmacro()
macro(enable_profile)
# Declare the flags used for profiling builds:
if (MSVC)
set (CXX_PROFILING "/Zi")
set (LNK_PROFILING "/PROFILE /DEBUG")
else()
set (CXX_PROFILING "-pg")
set (LNK_PROFILING "-pg")
endif()
# Declare the profiling configurations:
SET(CMAKE_CXX_FLAGS_DEBUGPROFILE
"${CMAKE_CXX_FLAGS_DEBUG} ${CXX_PROFILING}"
CACHE STRING "Flags used by the C++ compiler during profile builds."
FORCE )
SET(CMAKE_C_FLAGS_DEBUGPROFILE
"${CMAKE_C_FLAGS_DEBUG} ${CXX_PROFILING}"
CACHE STRING "Flags used by the C compiler during profile builds."
FORCE )
SET(CMAKE_EXE_LINKER_FLAGS_DEBUGPROFILE
"${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${LNK_PROFILING}"
CACHE STRING "Flags used for linking binaries during profile builds."
FORCE )
SET(CMAKE_SHARED_LINKER_FLAGS_DEBUGPROFILE
"${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${LNK_PROFILING}"
CACHE STRING "Flags used by the shared libraries linker during profile builds."
FORCE )
MARK_AS_ADVANCED(
CMAKE_CXX_FLAGS_DEBUGPROFILE
CMAKE_C_FLAGS_DEBUGPROFILE
CMAKE_EXE_LINKER_FLAGS_DEBUGPROFILE
CMAKE_SHARED_LINKER_FLAGS_DEBUGPROFILE )
SET(CMAKE_CXX_FLAGS_RELEASEPROFILE
"${CMAKE_CXX_FLAGS_RELEASE} ${CXX_PROFILING}"
CACHE STRING "Flags used by the C++ compiler during profile builds."
FORCE )
SET(CMAKE_C_FLAGS_RELEASEPROFILE
"${CMAKE_C_FLAGS_RELEASE} ${CXX_PROFILING}"
CACHE STRING "Flags used by the C compiler during profile builds."
FORCE )
SET(CMAKE_EXE_LINKER_FLAGS_RELEASEPROFILE
"${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${LNK_PROFILING}"
CACHE STRING "Flags used for linking binaries during profile builds."
FORCE )
SET(CMAKE_SHARED_LINKER_FLAGS_RELEASEPROFILE
"${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${LNK_PROFILING}"
CACHE STRING "Flags used by the shared libraries linker during profile builds."
FORCE )
MARK_AS_ADVANCED(
CMAKE_CXX_FLAGS_RELEASEPROFILE
CMAKE_C_FLAGS_RELEASEPROFILE
CMAKE_EXE_LINKER_FLAGS_RELEASEPROFILE
CMAKE_SHARED_LINKER_FLAGS_RELEASEPROFILE )
# The configuration types need to be set after their respective c/cxx/linker flags and before the project directive
if(MSVC)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;DebugProfile;ReleaseProfile" CACHE STRING "" FORCE)
else()
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;DebugProfile;ReleaseProfile;Coverage" CACHE STRING "" FORCE)
endif()
endmacro()
function(set_global_flags)
if(MSVC)
# Make build use multiple threads under MSVC:
add_compile_options(/MP)
# Make build use Unicode:
add_compile_definitions(UNICODE _UNICODE)
# Turn off CRT warnings:
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
return ()
endif()
# Allow for a forced 32-bit build under 64-bit OS:
if (FORCE_32)
add_compile_options(-m32)
add_link_options(-m32)
endif()
# https://en.wikipedia.org/wiki/Uname
# https://gcc.gnu.org/onlinedocs/gcc/index.html
# Have the compiler generate code specifically targeted at the current machine on Linux:
if(NOT NO_NATIVE_OPTIMIZATION AND NOT CMAKE_CROSSCOMPILING)
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} SYSTEM_PROCESSOR)
if (SYSTEM_PROCESSOR MATCHES "^(i386|i686|x86|amd64|mips)")
message(STATUS "Optimising for this machine (march=native)")
add_compile_options(-march=native)
elseif (SYSTEM_PROCESSOR MATCHES "^(arm|aarch|powerpc|ppc|sparc|alpha)")
message(STATUS "Optimising for this machine (mcpu=native)")
add_compile_options(-mcpu=native)
endif()
endif()
endfunction()
function(set_exe_flags TARGET)
if (MSVC)
# TODO: Warnings as errors
target_compile_options(
${TARGET} PRIVATE
# Warnings level 4:
/W4
# Excessive amount of logspam (Unreferenced formal parameter), disable for now:
/wd4100
)
return ()
endif()
target_compile_options(
${TARGET} PRIVATE
# We use a signed char (fixes #640 on RasPi)
# TODO: specify this in code, not a compile flag:
-fsigned-char
# We support non-IEEE 754 FPUs so can make no guarantees about error:
-ffast-math
# All warnings:
-Wall -Wextra
# Excessive amount of logspam, disable for now:
-Wno-unused-parameter
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(
${TARGET} PRIVATE
# TODO: actually fix the warnings instead of disabling them
# or at least disable on a file-level basis:
-Wno-missing-noreturn -Wno-padded -Wno-implicit-fallthrough
-Wno-double-promotion
# This is a pretty useless warning, we've already got -Wswitch which is what we need:
-Wno-switch-enum
# Weverything with Clang exceptions:
-Weverything -Wno-exit-time-destructors -Wno-error=disabled-macro-expansion -Wno-weak-vtables
-Wno-string-conversion -Wno-c++98-compat-pedantic -Wno-c++2a-compat-pedantic -Wno-documentation
-Wno-documentation-unknown-command -Wno-reserved-id-macro -Wno-error=unused-command-line-argument
)
# Werror only for debug builds
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_options(
${TARGET} PRIVATE
# Warnings-as-errors only on Clang for now:
-Werror
)
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
target_compile_options(
${TARGET} PRIVATE
# We aren't using C++11:
-Wno-return-std-move-in-c++11
)
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
target_compile_options(
${TARGET} PRIVATE
# int to float conversions happen a lot, not worth fixing all warnings:
-Wno-implicit-int-float-conversion
)
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
target_compile_options(
${TARGET} PRIVATE
# TODO: fix
-Wno-reserved-identifier
)
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16)
target_compile_options(
${TARGET} PRIVATE
-Wno-unsafe-buffer-usage
)
endif()
endif()
endfunction()
================================================
FILE: TESTING.md
================================================
Contributing by Testing Cuberite
================================
You can help us even if you are not a programmer! This document explains how.
If you would like to help with coding instead, see [GETTING-STARTED.md][1] and [CONTRIBUTING.md][2].
Here are things you can help with without being a programmer:
- Run and test Cuberite. Report issues, bugs, crashes, and stacktraces at the [issue tracker][3]. This is best done in debug mode.
- Test unmerged versions (known as branches or Pull Requests) which are marked with the [ingame-testing-needed][4] label.
Note that code marked with `ingame-testing-needed` is not always available, and sometimes the above list will be empty.
Please use the issue tracker search feature and make sure your issue has not been reported before!
Obtaining Debug Builds
----------------------
When testing Cuberite, debug builds are preferred because they output detailed info about the problem that had occurred at the server console.
Currently, we do not provide debug builds. You will have to compile Cuberite yourself to obtain them. See the compilation instructions.
You can also test with regular builds.
Testing Unmerged Pull Requests
------------------------------
To test unmerged branches, pick one from the ingame-testing-needed list, and follow the download instructions.
If you are familiar with git, you can also fetch and compile the unmerged branch instead.
[1]: https://github.com/cuberite/cuberite/blob/master/GETTING-STARTED.md
[2]: https://github.com/cuberite/cuberite/blob/master/CONTRIBUTING.md
[3]: https://github.com/cuberite/cuberite/issues
[4]: https://github.com/cuberite/cuberite/pulls?q=is%3Aopen+is%3Apr+label%3Astatus%2Fingame-testing-needed
================================================
FILE: Tools/.gitignore
================================================
Debug/
================================================
FILE: Tools/AnvilStats/.gitignore
================================================
*.vcproj
*.vcxproj
*.sln
*.user
.xls
Statistics.txt
*.bmp
Debug/
Release/
Profiling
*.png
world/
*.html
*.xls
================================================
FILE: Tools/AnvilStats/AnvilStats.cpp
================================================
// AnvilStats.cpp
// Implements the main app entrypoint
#include "Globals.h"
#include "Processor.h"
#include "Statistics.h"
#include "BiomeMap.h"
#include "HeightMap.h"
#include "HeightBiomeMap.h"
#include "ChunkExtract.h"
#include "SpringStats.h"
int main(int argc, char * argv[])
{
if (argc < 2)
{
LOG("Usage: %s []", argv[0]);
LOG("Available methods:");
LOG(" 0 - statistics");
LOG(" 1 - biome map");
LOG(" 2 - height map");
LOG(" 3 - extract chunks");
LOG(" 4 - count lava- and water- springs");
LOG(" 5 - biome and height map");
LOG("\nNo method number present, aborting.");
return -1;
}
AString WorldFolder;
if (argc > 2)
{
WorldFolder = argv[2];
}
else
{
WorldFolder = "." + cFile::PathSeparator;
}
cCallbackFactory * Factory = NULL;
switch (atol(argv[1]))
{
case 0: Factory = new cStatisticsFactory; break;
case 1: Factory = new cBiomeMapFactory; break;
case 2: Factory = new cHeightMapFactory; break;
case 3: Factory = new cChunkExtractFactory(WorldFolder); break;
case 4: Factory = new cSpringStatsFactory; break;
case 5: Factory = new cHeightBiomeMapFactory; break;
default:
{
LOG("Unknown method \"%s\", aborting.", argv[1]);
return -2;
}
}
cProcessor Processor;
Processor.ProcessWorld(WorldFolder, *Factory);
LOG("Processing finished");
delete Factory;
LOG("Done");
}
================================================
FILE: Tools/AnvilStats/AnvilStats.txt
================================================
// AnvilStats.txt
// A Readme for the project
/*
AnvilStats
==========
This is a project for measuring various metrics throughout an Anvil world, presumably created by a vanilla MC.
It works by parsing the MCA files in the path specified as its param (or current directory, if no params) and
feeding each decompressed chunk into the statistics-gathering callback function.
Possible usage:
- count the per-chunk density of specific blocks
- count the per-chunk density of dungeons, by measuring the number of zombie/skeleton/regularspider spawners
- count the per-chunk-per-biome density of trees, by measuring the number of dirt-log vertical transitions, correlating to biome data
- draw a vertical map of the world based on a specific measured value (biome, elevation, ...)
This project is Windows-only, although it shouldn't be too difficult to make it portable.
Because this project uses NBT extensively, it runs much faster in Release mode.
*/
================================================
FILE: Tools/AnvilStats/BiomeMap.cpp
================================================
// BiomeMap.cpp
// Implements the cBiomeMap class representing a cCallback descendant that draws a map of biomes for the world
#include "Globals.h"
#include "BiomeMap.h"
#include "../BiomeVisualiser/BiomeColors.h"
static const unsigned char g_BMPHeader[] =
{
0x42, 0x4D, 0x36, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x13, 0x0B, 0x00, 0x00, 0x13, 0x0B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
} ;
cBiomeMap::cBiomeMap(void) :
m_CurrentRegionX(0),
m_CurrentRegionZ(0),
m_IsCurrentRegionValid(false)
{
}
void cBiomeMap::Finish(void)
{
if (m_IsCurrentRegionValid)
{
StartNewRegion(0, 0);
}
}
bool cBiomeMap::OnNewChunk(int a_ChunkX, int a_ChunkZ)
{
int RegionX = (a_ChunkX < 0) ? (a_ChunkX - 31) / 32 : a_ChunkX / 32;
int RegionZ = (a_ChunkZ < 0) ? (a_ChunkZ - 31) / 32 : a_ChunkZ / 32;
if ((RegionX != m_CurrentRegionX) || (RegionZ != m_CurrentRegionZ))
{
if (m_IsCurrentRegionValid)
{
StartNewRegion(RegionX, RegionZ);
}
m_CurrentRegionX = RegionX;
m_CurrentRegionZ = RegionZ;
}
m_IsCurrentRegionValid = true;
m_CurrentChunkX = a_ChunkX;
m_CurrentChunkZ = a_ChunkZ;
m_CurrentChunkOffX = m_CurrentChunkX - m_CurrentRegionX * 32;
m_CurrentChunkOffZ = m_CurrentChunkZ - m_CurrentRegionZ * 32;
return false;
}
bool cBiomeMap::OnBiomes(const unsigned char * a_BiomeData)
{
ASSERT(m_CurrentChunkOffX >= 0);
ASSERT(m_CurrentChunkOffX < 32);
ASSERT(m_CurrentChunkOffZ >= 0);
ASSERT(m_CurrentChunkOffZ < 32);
char * BaseBiomes = m_Biomes + m_CurrentChunkOffZ * 16 * 512 + m_CurrentChunkOffX * 16;
for (int z = 0; z < 16; z++)
{
char * Row = BaseBiomes + z * 512;
memcpy(Row, a_BiomeData + z * 16, 16);
} // for z
return true;
}
void cBiomeMap::StartNewRegion(int a_RegionX, int a_RegionZ)
{
AString FileName;
Printf(FileName, "Biomes.%d.%d.bmp", m_CurrentRegionX, m_CurrentRegionZ);
cFile f;
if (!f.Open(FileName, cFile::fmWrite))
{
LOG("Cannot open file \"%s\" for writing the biome map. Data for this region lost.", FileName.c_str());
}
else
{
f.Write(g_BMPHeader, sizeof(g_BMPHeader));
for (int z = 0; z < 512; z++)
{
int RowData[512];
unsigned char * BiomeRow = (unsigned char *)m_Biomes + z * 512;
for (int x = 0; x < 512; x++)
{
RowData[x] = g_BiomeColors[BiomeRow[x]];
}
f.Write(RowData, sizeof(RowData));
} // for z
}
memset(m_Biomes, 0, sizeof(m_Biomes));
m_CurrentRegionX = a_RegionX;
m_CurrentRegionZ = a_RegionZ;
}
////////////////////////////////////////////////////////////////////////////////
// cBiomeMapFactory:
cBiomeMapFactory::~cBiomeMapFactory()
{
// Force all threads to save their last regions:
for (cCallbacks::iterator itr = m_Callbacks.begin(), end = m_Callbacks.end(); itr != end; ++itr)
{
((cBiomeMap *)(*itr))->Finish();
}
// TODO: Join all the files into one giant image file
}
================================================
FILE: Tools/AnvilStats/BiomeMap.h
================================================
// BiomeMap.h
// Interfaces to the cBiomeMap class representing a cCallback descendant that draws a map of biomes for the world
#pragma once
#include "Callback.h"
class cBiomeMap :
public cCallback
{
public:
cBiomeMap(void);
/** Saves the last region that it was processing */
void Finish(void);
protected:
int m_CurrentChunkX; // Absolute chunk coords
int m_CurrentChunkZ;
int m_CurrentChunkOffX; // Chunk offset from the start of the region
int m_CurrentChunkOffZ;
int m_CurrentRegionX;
int m_CurrentRegionZ;
bool m_IsCurrentRegionValid;
char m_Biomes[16 * 32 * 16 * 32]; // Biome map of the entire current region [x + 16 * 32 * z]
// cCallback overrides:
virtual bool OnNewChunk(int a_ChunkX, int a_ChunkZ) override;
virtual bool OnHeader(int a_FileOffset, unsigned char a_NumSectors, int a_Timestamp) override { return false; }
virtual bool OnCompressedDataSizePos(int a_CompressedDataSize, int a_DataOffset, char a_CompressionMethod) override { return false; }
virtual bool OnDecompressedData(const char * a_DecompressedNBT, int a_DataSize) override { return false; }
virtual bool OnRealCoords(int a_ChunkX, int a_ChunkZ) override { return false; }
virtual bool OnLastUpdate(Int64 a_LastUpdate) override { return false; }
virtual bool OnTerrainPopulated(bool a_Populated) override { return false; } // We don't care about "populated", the biomes are the same
virtual bool OnBiomes(const unsigned char * a_BiomeData) override;
void StartNewRegion(int a_RegionX, int a_RegionZ);
} ;
class cBiomeMapFactory :
public cCallbackFactory
{
public:
virtual ~cBiomeMapFactory();
virtual cCallback * CreateNewCallback(void) override
{
return new cBiomeMap;
}
} ;
================================================
FILE: Tools/AnvilStats/CMakeLists.txt
================================================
project (AnvilStats)
# Set include paths to the used libraries:
include_directories("../../lib")
include_directories("../../src")
function(flatten_files arg1)
set(res "")
foreach(f ${${arg1}})
get_filename_component(f ${f} ABSOLUTE)
list(APPEND res ${f})
endforeach()
set(${arg1} "${res}" PARENT_SCOPE)
endfunction()
add_subdirectory(../../lib/zlib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/lib/zlib)
# Include the shared files:
set(SHARED_SRC
../../src/ByteBuffer.cpp
../../src/StringUtils.cpp
../../src/LoggerListeners.cpp
../../src/Logger.cpp
../../src/WorldStorage/FastNBT.cpp
../BiomeVisualiser/BiomeColors.cpp
)
set(SHARED_HDR
../../src/ByteBuffer.h
../../src/StringUtils.h
../../src/LoggerListeners.h
../../src/Logger.h
../../src/WorldStorage/FastNBT.h
../BiomeVisualiser/BiomeColors.h
)
set(SHARED_OSS_SRC
../../src/OSSupport/CriticalSection.cpp
../../src/OSSupport/Event.cpp
../../src/OSSupport/File.cpp
../../src/OSSupport/GZipFile.cpp
../../src/OSSupport/IsThread.cpp
)
set(SHARED_OSS_HDR
../../src/OSSupport/CriticalSection.h
../../src/OSSupport/Event.h
../../src/OSSupport/File.h
../../src/OSSupport/GZipFile.h
../../src/OSSupport/IsThread.h
)
flatten_files(SHARED_SRC)
flatten_files(SHARED_HDR)
flatten_files(SHARED_OSS_SRC)
flatten_files(SHARED_OSS_HDR)
source_group("Shared" FILES ${SHARED_SRC} ${SHARED_HDR})
source_group("Shared\\OSSupport" FILES ${SHARED_OSS_SRC} ${SHARED_OSS_HDR})
# Include the main source files:
set(SOURCES
AnvilStats.cpp
BiomeMap.cpp
ChunkExtract.cpp
Globals.cpp
HeightBiomeMap.cpp
HeightMap.cpp
ImageComposingCallback.cpp
Processor.cpp
SpringStats.cpp
Statistics.cpp
Utils.cpp
)
set(HEADERS
BiomeMap.h
Callback.h
ChunkExtract.h
Globals.h
HeightBiomeMap.h
HeightMap.h
ImageComposingCallback.h
Processor.h
SpringStats.h
Statistics.h
Utils.h
AnvilStats.txt
)
source_group("" FILES ${SOURCES} ${HEADERS})
add_definitions(-DNBT_RESERVE_SIZE=10000)
add_executable(AnvilStats
${SOURCES}
${HEADERS}
${SHARED_SRC}
${SHARED_HDR}
${SHARED_OSS_SRC}
${SHARED_OSS_HDR}
)
target_link_libraries(AnvilStats zlib)
include(../../SetFlags.cmake)
set_exe_flags(AnvilStats)
# Under MSVC we need to enlarge the default stack size for the executable:
if (MSVC)
get_target_property(TEMP AnvilStats LINK_FLAGS)
if (TEMP STREQUAL "TEMP-NOTFOUND")
SET(TEMP "") # set to empty string
message("LINKER_FLAGS not found")
else ()
SET(TEMP "${TEMP} ") # a space to cleanly separate from existing content
message("LINKER_FLAGS: ${LINKER_FLAGS}")
endif ()
# append our values
SET(TEMP "${TEMP}/STACK:16777216")
set_target_properties(AnvilStats PROPERTIES LINK_FLAGS ${TEMP})
endif ()
================================================
FILE: Tools/AnvilStats/Callback.h
================================================
// Callback.h
// Interfaces to the cCallback base class used as the base class for all statistical callbacks
#pragma once
// fwd:
class cParsedNBT;
/** The base class for all chunk-processor callbacks, declares the interface.
The processor calls each virtual function in the order they are declared here with the specified args.
If the function returns true, the processor doesn't process the data item, moves on to the next chunk
and starts calling the callbacks again from start with the new chunk data.
So if a statistics collector doesn't need data decompression at all, it can stop the processor from doing so early-enough
and still get meaningful data.
A callback is guaranteed to run in a single thread and always the same thread for the same chunk.
A callback is guaranteed to run on all chunks in a region and one region is guaranteed to be handled by only callback.
*/
class cCallback abstract
{
public:
enum
{
CALLBACK_CONTINUE = false,
CALLBACK_ABORT = true,
} ;
virtual ~cCallback() {} // Force a virtual destructor in each descendant
/** Called when a new region file is about to be opened; by default allow the region */
virtual bool OnNewRegion(int a_RegionX, int a_RegionZ) { return CALLBACK_CONTINUE; }
/** Called to inform the stats module of the chunk coords for newly processing chunk */
virtual bool OnNewChunk(int a_ChunkX, int a_ChunkZ) = 0;
/** Called to inform about the chunk's data offset in the file (chunk mini-header), the number of sectors it uses and the timestamp field value */
virtual bool OnHeader(int a_FileOffset, unsigned char a_NumSectors, int a_Timestamp) { return CALLBACK_ABORT; }
/** Called to inform of the compressed chunk data size and position in the file (offset from file start to the actual data) */
virtual bool OnCompressedDataSizePos(int a_CompressedDataSize, int a_DataOffset, char a_CompressionMethod) { return CALLBACK_ABORT; }
/** Just in case you wanted to process the NBT yourself ;) */
virtual bool OnDecompressedData(const char * a_DecompressedNBT, int a_DataSize) { return CALLBACK_ABORT; }
/** The chunk's NBT should specify chunk coords, these are sent here: */
virtual bool OnRealCoords(int a_ChunkX, int a_ChunkZ) { return CALLBACK_ABORT; }
/** The chunk contains a LastUpdate value specifying the last tick in which it was saved. */
virtual bool OnLastUpdate(Int64 a_LastUpdate) { return CALLBACK_ABORT; }
virtual bool OnTerrainPopulated(bool a_Populated) { return CALLBACK_ABORT; }
virtual bool OnBiomes(const unsigned char * a_BiomeData) { return CALLBACK_ABORT; }
/** Called when a heightmap for the chunk is read from the file.
Note that the heightmap is given in big-endian ints, so if you want it, you need to ntohl() it first!
*/
virtual bool OnHeightMap(const int * a_HeightMapBE) { return CALLBACK_ABORT; }
/** If there is data for the section, this callback is called; otherwise OnEmptySection() is called instead.
All OnSection() callbacks are called first, and only then all the remaining sections are reported in OnEmptySection().
*/
virtual bool OnSection(
unsigned char a_Y,
const BLOCKTYPE * a_BlockTypes,
const NIBBLETYPE * a_BlockAdditional,
const NIBBLETYPE * a_BlockMeta,
const NIBBLETYPE * a_BlockLight,
const NIBBLETYPE * a_BlockSkyLight
) { return CALLBACK_ABORT; }
/** If there is no data for a section, this callback is called; otherwise OnSection() is called instead.
OnEmptySection() callbacks are called after all OnSection() callbacks.
*/
virtual bool OnEmptySection(unsigned char a_Y) { return CALLBACK_CONTINUE; }
/** Called after all sections have been processed via either OnSection() or OnEmptySection().
*/
virtual bool OnSectionsFinished(void) { return CALLBACK_ABORT; }
/** Called for each entity in the chunk.
Common parameters are parsed from the NBT.
The callback may parse any other param from the a_NBT and a_NBTTag parameters.
The a_NBTTag parameter points to the entity compound tag inside the Entities tag.
*/
virtual bool OnEntity(
const AString & a_EntityType,
double a_PosX, double a_PosY, double a_PosZ,
double a_SpeedX, double a_SpeedY, double a_SpeedZ,
float a_Yaw, float a_Pitch,
float a_FallDistance,
short a_FireTicksLeft,
short a_AirTicks,
char a_IsOnGround,
cParsedNBT & a_NBT,
int a_NBTTag
) { return CALLBACK_ABORT; }
/** Called for each tile entity in the chunk.
Common parameters are parsed from the NBT.
The callback may parse any other param from the a_NBT and a_NBTTag parameters.
The a_NBTTag parameter points to the tile entity compound tag inside the TileEntities tag.
*/
virtual bool OnTileEntity(
const AString & a_EntityType,
int a_PosX, int a_PosY, int a_PosZ,
cParsedNBT & a_NBT,
int a_NBTTag
) { return CALLBACK_ABORT; }
/** Called for each tile tick in the chunk */
virtual bool OnTileTick(
int a_BlockType,
int a_TicksLeft,
int a_PosX, int a_PosY, int a_PosZ
) { return CALLBACK_ABORT; }
/** Called after the entire region file has been processed. No more callbacks for this region will be called. No processing by default */
virtual void OnRegionFinished(int a_RegionX, int a_RegionZ) {}
} ;
typedef std::vector cCallbacks;
/** The base class for a factory that creates callback objects for separate threads.
The processor creates a callback for each thread on which it runs using this factory.
The factory is guaranteed to be called from a single thread.
The factory keeps track of all the callbacks that it has created and deletes them when destructed
*/
class cCallbackFactory
{
public:
virtual ~cCallbackFactory()
{
for (cCallbacks::iterator itr = m_Callbacks.begin(), end = m_Callbacks.end(); itr != end; ++itr)
{
delete *itr;
}
}
/** Descendants override this method to return the correct callback type */
virtual cCallback * CreateNewCallback(void) = 0;
/** cProcessor uses this method to request a new callback */
cCallback * GetNewCallback(void)
{
cCallback * Callback = CreateNewCallback();
if (Callback != NULL)
{
m_Callbacks.push_back(Callback);
}
return Callback;
}
protected:
cCallbacks m_Callbacks;
} ;
================================================
FILE: Tools/AnvilStats/ChunkExtract.cpp
================================================
// ChunkExtract.cpp
// Implements the cChunkExtract class representing a cCallback descendant that extracts raw chunk data into separate .chunk files
#include "Globals.h"
#include "ChunkExtract.h"
#include "../../src/OSSupport/GZipFile.h"
cChunkExtract::cChunkExtract(const AString & iWorldFolder) :
mWorldFolder(iWorldFolder)
{
}
bool cChunkExtract::OnNewChunk(int a_ChunkX, int a_ChunkZ)
{
int AnvilX = (a_ChunkX - ((a_ChunkX > 0) ? 0 : 31)) / 32;
int AnvilZ = (a_ChunkZ - ((a_ChunkZ > 0) ? 0 : 31)) / 32;
if ((AnvilX != mCurAnvilX) || (AnvilZ != mCurAnvilZ))
{
OpenAnvilFile(AnvilX, AnvilZ);
}
mCurChunkX = a_ChunkX;
mCurChunkZ = a_ChunkZ;
return false;
}
bool cChunkExtract::OnCompressedDataSizePos(int a_CompressedDataSize, int a_DataOffset, char a_CompressionMethod)
{
if (!mAnvilFile.IsOpen())
{
return true;
}
cFile ChunkFile;
AString ChunkPath = Printf("%d.%d.zchunk", mCurChunkX, mCurChunkZ);
if (!ChunkFile.Open(ChunkPath, cFile::fmWrite))
{
LOG("Cannot open zchunk file \"%s\" for writing. Chunk [%d, %d] skipped.", ChunkPath.c_str(), mCurChunkX, mCurChunkZ);
return false;
}
// Copy data from mAnvilFile to ChunkFile:
mAnvilFile.Seek(a_DataOffset);
for (int BytesToCopy = a_CompressedDataSize; BytesToCopy > 0;)
{
char Buffer[64000];
int NumBytes = std::min(BytesToCopy, (int)sizeof(Buffer));
int BytesRead = mAnvilFile.Read(Buffer, NumBytes);
if (BytesRead != NumBytes)
{
LOG("Cannot copy chunk data, chunk [%d, %d] is probably corrupted. Skipping chunk.", mCurChunkX, mCurChunkZ);
return false;
}
ChunkFile.Write(Buffer, BytesRead);
BytesToCopy -= BytesRead;
} // for BytesToCopy
return false;
}
bool cChunkExtract::OnDecompressedData(const char * a_DecompressedNBT, int a_DataSize)
{
ASSERT(mAnvilFile.IsOpen()); // If it weren't, the OnCompressedDataSizePos would've prevented this from running
AString FileName = Printf("%d.%d.gzchunk", mCurChunkX, mCurChunkZ);
cGZipFile GZipChunk;
if (!GZipChunk.Open(FileName, cGZipFile::fmWrite))
{
LOG("Cannot open gzchunk file \"%s\" for writing. Chunk [%d, %d] skipped.", FileName.c_str(), mCurChunkX, mCurChunkZ);
return true;
}
GZipChunk.Write(a_DecompressedNBT, a_DataSize);
return true;
}
void cChunkExtract::OpenAnvilFile(int a_AnvilX, int a_AnvilZ)
{
mAnvilFile.Close();
AString FileName = Printf("%s/r.%d.%d.mca", mWorldFolder.c_str(), a_AnvilX, a_AnvilZ);
if (!mAnvilFile.Open(FileName, cFile::fmRead))
{
LOG("Cannot open Anvil file \"%s\" for reading", FileName.c_str());
}
mCurAnvilX = a_AnvilX;
mCurAnvilZ = a_AnvilZ;
}
================================================
FILE: Tools/AnvilStats/ChunkExtract.h
================================================
// ChunkExtract.h
// Declares the cChunkExtract class representing a cCallback descendant that extracts raw chunk data into separate .chunk files
#pragma once
#include "Callback.h"
class cChunkExtract :
public cCallback
{
public:
cChunkExtract(const AString & iWorldFolder);
protected:
AString mWorldFolder;
cFile mAnvilFile;
int mCurAnvilX; // X-coord of mAnvilFile, in Anvil-coords (1 Anvil-coord = 32 chunks)
int mCurAnvilZ; // Z-coord of mAnvilFile, -"-
int mCurChunkX; // X-coord of the chunk being processed
int mCurChunkZ; // Z-coord of the chunk being processed
/** Opens new anvil file into mAnvilFile, sets mCurAnvilX and mCurAnvilZ */
void OpenAnvilFile(int a_AnvilX, int a_AnvilZ);
// cCallback overrides:
virtual bool OnNewChunk(int a_ChunkX, int a_ChunkZ) override;
virtual bool OnHeader(int a_FileOffset, unsigned char a_NumSectors, int a_Timestamp) override { return false; }
virtual bool OnCompressedDataSizePos(int a_CompressedDataSize, int a_DataOffset, char a_CompressionMethod) override;
virtual bool OnDecompressedData(const char * a_DecompressedNBT, int a_DataSize) override;
} ;
class cChunkExtractFactory :
public cCallbackFactory
{
public:
cChunkExtractFactory(const AString & iWorldFolder) :
mWorldFolder(iWorldFolder)
{
}
virtual cCallback * CreateNewCallback(void) override
{
return new cChunkExtract(mWorldFolder);
}
protected:
AString mWorldFolder;
} ;
================================================
FILE: Tools/AnvilStats/Globals.cpp
================================================
// Globals.cpp
// This file is used for precompiled header generation in MSVC environments
#include "Globals.h"
================================================
FILE: Tools/AnvilStats/Globals.h
================================================
// Globals.h
// This file gets included from every module in the project, so that global symbols may be introduced easily
// Also used for precompiled header generation in MSVC environments
// Compiler-dependent stuff:
#if defined(_MSC_VER)
// MSVC produces warning C4481 on the override keyword usage, so disable the warning altogether
#pragma warning(disable:4481)
// Disable some warnings that we don't care about:
#pragma warning(disable:4100)
#define _CRT_SECURE_NO_WARNINGS
#elif defined(__GNUC__)
// TODO: Can GCC explicitly mark classes as abstract (no instances can be created)?
#define abstract
#else
#error "You are using an unsupported compiler, you might need to #define some stuff here for your compiler"
#endif
// Integral types with predefined sizes:
typedef long long Int64;
typedef int Int32;
typedef short Int16;
typedef unsigned long long UInt64;
typedef unsigned int UInt32;
typedef unsigned short UInt16;
// A macro to disallow the copy constructor and operator= functions
// This should be used in the private: declarations for any class that shouldn't allow copying itself
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName &); \
void operator=(const TypeName &)
// A macro that is used to mark unused function parameters, to avoid pedantic warnings in gcc
#define UNUSED(X) (void)(X)
// OS-dependent stuff:
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include
#include
// Windows SDK defines min and max macros, messing up with our std::min and std::max usage
#undef min
#undef max
// Windows SDK defines GetFreeSpace as a constant, probably a Win16 API remnant
#ifdef GetFreeSpace
#undef GetFreeSpace
#endif // GetFreeSpace
#else
#include
#include // for mkdir
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#endif
// CRT stuff:
#include
#include
#include
#include
#include
// STL stuff:
#include
#include
#include
#include
#include