Full Code of ZeppelinMC/Zeppelin for AI

main ed75f63fe8f4 cached
1356 files
1.4 MB
457.9k tokens
4870 symbols
1 requests
Download .txt
Showing preview only (1,678K chars total). Download the full file or copy to clipboard to get everything.
Repository: ZeppelinMC/Zeppelin
Branch: main
Commit: ed75f63fe8f4
Files: 1356
Total size: 1.4 MB

Directory structure:
gitextract_f2qo_zll/

├── .github/
│   └── workflows/
│       └── go.yml
├── LICENSE
├── commands/
│   ├── commands.go
│   ├── debug.go
│   ├── gc.go
│   ├── mem.go
│   ├── tick.go
│   └── time.go
├── go.mod
├── go.sum
├── main.go
├── properties/
│   ├── decode.go
│   ├── encode.go
│   └── properties.go
├── protocol/
│   ├── nbt/
│   │   ├── decoder.go
│   │   ├── encoder.go
│   │   ├── qnbt/
│   │   │   ├── abi.go
│   │   │   ├── buffer.go
│   │   │   ├── decode.go
│   │   │   ├── list.go
│   │   │   ├── malloc.go
│   │   │   ├── map.go
│   │   │   ├── primitive.go
│   │   │   ├── qnbt.go
│   │   │   └── struct.go
│   │   └── staticReader.go
│   ├── net/
│   │   ├── authentication.go
│   │   ├── cfb8/
│   │   │   └── cfb8.go
│   │   ├── config.go
│   │   ├── conn.go
│   │   ├── encryption.go
│   │   ├── io/
│   │   │   ├── buffers/
│   │   │   │   └── buffers.go
│   │   │   ├── compress/
│   │   │   │   ├── compress.go
│   │   │   │   ├── lz4.go
│   │   │   │   └── zlib.go
│   │   │   └── encoding/
│   │   │       ├── encoding.go
│   │   │       ├── reader.go
│   │   │       └── writer.go
│   │   ├── listener.go
│   │   ├── metadata/
│   │   │   ├── metadata.go
│   │   │   └── new.go
│   │   ├── packet/
│   │   │   ├── configuration/
│   │   │   │   ├── clientInfo.go
│   │   │   │   ├── cookie.go
│   │   │   │   ├── disconnect.go
│   │   │   │   ├── finish.go
│   │   │   │   ├── keepAlive.go
│   │   │   │   ├── ping.go
│   │   │   │   ├── plugin.go
│   │   │   │   ├── registryData.go
│   │   │   │   └── resetChat.go
│   │   │   ├── handshake/
│   │   │   │   └── handshake.go
│   │   │   ├── login/
│   │   │   │   ├── cookie.go
│   │   │   │   ├── disconnect.go
│   │   │   │   ├── encryption.go
│   │   │   │   ├── loginStart.go
│   │   │   │   ├── loginSuccess.go
│   │   │   │   ├── plugin.go
│   │   │   │   └── setCompression.go
│   │   │   ├── packet.go
│   │   │   ├── play/
│   │   │   │   ├── acknowledgeBlockChange.go
│   │   │   │   ├── blockAction.go
│   │   │   │   ├── blockEntityData.go
│   │   │   │   ├── blockUpdate.go
│   │   │   │   ├── bundleDelimiter.go
│   │   │   │   ├── changeDifficulty.go
│   │   │   │   ├── chatCommand.go
│   │   │   │   ├── chatMessage.go
│   │   │   │   ├── chunkBatch.go
│   │   │   │   ├── chunkData.go
│   │   │   │   ├── clickContainer.go
│   │   │   │   ├── clientInfo.go
│   │   │   │   ├── closeContainer.go
│   │   │   │   ├── commands.go
│   │   │   │   ├── confirmTeleport.go
│   │   │   │   ├── damageEvent.go
│   │   │   │   ├── deleteMessage.go
│   │   │   │   ├── disconnect.go
│   │   │   │   ├── disguisedChatMessage.go
│   │   │   │   ├── entityAnimation.go
│   │   │   │   ├── entityEvent.go
│   │   │   │   ├── entitySoundEffect.go
│   │   │   │   ├── gameEvent.go
│   │   │   │   ├── hurtAnimation.go
│   │   │   │   ├── interact.go
│   │   │   │   ├── keepAlive.go
│   │   │   │   ├── login.go
│   │   │   │   ├── openScreen.go
│   │   │   │   ├── playerAbilitiesCB.go
│   │   │   │   ├── playerAbilitiesSB.go
│   │   │   │   ├── playerChatMessage.go
│   │   │   │   ├── playerCommand.go
│   │   │   │   ├── playerInfoRemove.go
│   │   │   │   ├── playerInfoUpdate.go
│   │   │   │   ├── playerSession.go
│   │   │   │   ├── plugin.go
│   │   │   │   ├── removeEntities.go
│   │   │   │   ├── serverData.go
│   │   │   │   ├── serverLinks.go
│   │   │   │   ├── setCenterChunk.go
│   │   │   │   ├── setContainerContent.go
│   │   │   │   ├── setCreativeModeSlot.go
│   │   │   │   ├── setDefaultSpawnPosition.go
│   │   │   │   ├── setEntityMetadata.go
│   │   │   │   ├── setEntityVelocity.go
│   │   │   │   ├── setHeadRotation.go
│   │   │   │   ├── setHeldItemCB.go
│   │   │   │   ├── setHeldItemSB.go
│   │   │   │   ├── setPlayerOnGround.go
│   │   │   │   ├── setPlayerPosition.go
│   │   │   │   ├── setPlayerPositionAndRotation.go
│   │   │   │   ├── setPlayerRotation.go
│   │   │   │   ├── setTickingState.go
│   │   │   │   ├── signedChatCommand.go
│   │   │   │   ├── soundEffect.go
│   │   │   │   ├── spawnEntity.go
│   │   │   │   ├── stepTick.go
│   │   │   │   ├── swingArm.go
│   │   │   │   ├── synchronizePlayerPosition.go
│   │   │   │   ├── systemChatMessage.go
│   │   │   │   ├── updateEntityPosition.go
│   │   │   │   ├── updateEntityPositionAndRotation.go
│   │   │   │   ├── updateEntityRotation.go
│   │   │   │   ├── updateRecipeBook.go
│   │   │   │   ├── updateSectionBlocks.go
│   │   │   │   ├── updateTags.go
│   │   │   │   ├── updateTime.go
│   │   │   │   └── useItemOn.go
│   │   │   └── status/
│   │   │       ├── ping.go
│   │   │       └── status.go
│   │   ├── pool.go
│   │   ├── registry/
│   │   │   ├── embed.go
│   │   │   └── registry.go
│   │   ├── slot/
│   │   │   ├── comp_dec.go
│   │   │   └── slot.go
│   │   └── tags/
│   │       └── tags.go
│   └── text/
│       ├── builder.go
│       ├── color.go
│       └── text.go
├── readme.md
├── server/
│   ├── command/
│   │   ├── builder.go
│   │   ├── command.go
│   │   ├── graph.go
│   │   └── manager.go
│   ├── container/
│   │   └── container.go
│   ├── entity/
│   │   ├── entity.go
│   │   └── levelEntity.go
│   ├── player/
│   │   ├── chunks.go
│   │   ├── conn.go
│   │   ├── handler_chat_command.go
│   │   ├── player.go
│   │   ├── playerlist.go
│   │   └── state/
│   │       ├── list/
│   │       │   └── playerlist.go
│   │       ├── playerEntity.go
│   │       └── playerEntityManager.go
│   ├── plugin.go
│   ├── registry/
│   │   ├── activity.go
│   │   ├── armor_material.go
│   │   ├── attribute.go
│   │   ├── block.go
│   │   ├── block_entity_type.go
│   │   ├── block_predicate_type.go
│   │   ├── block_type.go
│   │   ├── cat_variant.go
│   │   ├── chunk_status.go
│   │   ├── command_argument_type.go
│   │   ├── creative_mode_tab.go
│   │   ├── custom_stat.go
│   │   ├── data_component_type.go
│   │   ├── decorated_pot_pattern.go
│   │   ├── enchantment_effect_component_type.go
│   │   ├── enchantment_entity_effect_type.go
│   │   ├── enchantment_level_based_value_type.go
│   │   ├── enchantment_location_based_effect_type.go
│   │   ├── enchantment_provider_type.go
│   │   ├── enchantment_value_effect_type.go
│   │   ├── entity_sub_predicate_type.go
│   │   ├── entity_type.go
│   │   ├── float_provider_type.go
│   │   ├── fluid.go
│   │   ├── frog_variant.go
│   │   ├── game_event.go
│   │   ├── height_provider_type.go
│   │   ├── instrument.go
│   │   ├── int_provider_type.go
│   │   ├── item.go
│   │   ├── item_sub_predicate_type.go
│   │   ├── loot_condition_type.go
│   │   ├── loot_function_type.go
│   │   ├── loot_nbt_provider_type.go
│   │   ├── loot_number_provider_type.go
│   │   ├── loot_pool_entry_type.go
│   │   ├── loot_score_provider_type.go
│   │   ├── map_decoration_type.go
│   │   ├── memory_module_type.go
│   │   ├── menu.go
│   │   ├── mob_effect.go
│   │   ├── number_format_type.go
│   │   ├── particle_type.go
│   │   ├── point_of_interest_type.go
│   │   ├── pos_rule_test.go
│   │   ├── position_source_type.go
│   │   ├── potion.go
│   │   ├── recipe_serializer.go
│   │   ├── recipe_type.go
│   │   ├── registry.go
│   │   ├── rule_block_entity_modifier.go
│   │   ├── rule_test.go
│   │   ├── schedule.go
│   │   ├── sensor_type.go
│   │   ├── sound_event.go
│   │   ├── stat_type.go
│   │   ├── trigger_type.go
│   │   ├── villager_profession.go
│   │   ├── villager_type.go
│   │   ├── worldgen_biome_source.go
│   │   ├── worldgen_block_state_provider_type.go
│   │   ├── worldgen_carver.go
│   │   ├── worldgen_chunk_generator.go
│   │   ├── worldgen_density_function_type.go
│   │   ├── worldgen_feature.go
│   │   ├── worldgen_feature_size_type.go
│   │   ├── worldgen_foliage_placer_type.go
│   │   ├── worldgen_material_condition.go
│   │   ├── worldgen_material_rule.go
│   │   ├── worldgen_placement_modifier_type.go
│   │   ├── worldgen_pool_alias_binding.go
│   │   ├── worldgen_root_placer_type.go
│   │   ├── worldgen_structure_piece.go
│   │   ├── worldgen_structure_placement.go
│   │   ├── worldgen_structure_pool_element.go
│   │   ├── worldgen_structure_processor.go
│   │   ├── worldgen_structure_type.go
│   │   ├── worldgen_tree_decorator_type.go
│   │   └── worldgen_trunk_placer_type.go
│   ├── server.go
│   ├── tick/
│   │   └── tick.go
│   └── world/
│       ├── block/
│       │   ├── 0block.go
│       │   ├── acaciaButton.go
│       │   ├── acaciaDoor.go
│       │   ├── acaciaFence.go
│       │   ├── acaciaFenceGate.go
│       │   ├── acaciaHangingSign.go
│       │   ├── acaciaLeaves.go
│       │   ├── acaciaLog.go
│       │   ├── acaciaPlanks.go
│       │   ├── acaciaPressurePlate.go
│       │   ├── acaciaSapling.go
│       │   ├── acaciaSign.go
│       │   ├── acaciaSlab.go
│       │   ├── acaciaStairs.go
│       │   ├── acaciaTrapdoor.go
│       │   ├── acaciaWallHangingSign.go
│       │   ├── acaciaWallSign.go
│       │   ├── acaciaWood.go
│       │   ├── activatorRail.go
│       │   ├── air.go
│       │   ├── allium.go
│       │   ├── amethystBlock.go
│       │   ├── amethystCluster.go
│       │   ├── ancientDebris.go
│       │   ├── andesite.go
│       │   ├── andesiteSlab.go
│       │   ├── andesiteStairs.go
│       │   ├── andesiteWall.go
│       │   ├── anvil.go
│       │   ├── attachedMelonStem.go
│       │   ├── attachedPumpkinStem.go
│       │   ├── azalea.go
│       │   ├── azaleaLeaves.go
│       │   ├── azureBluet.go
│       │   ├── bamboo.go
│       │   ├── bambooBlock.go
│       │   ├── bambooButton.go
│       │   ├── bambooDoor.go
│       │   ├── bambooFence.go
│       │   ├── bambooFenceGate.go
│       │   ├── bambooHangingSign.go
│       │   ├── bambooMosaic.go
│       │   ├── bambooMosaicSlab.go
│       │   ├── bambooMosaicStairs.go
│       │   ├── bambooPlanks.go
│       │   ├── bambooPressurePlate.go
│       │   ├── bambooSapling.go
│       │   ├── bambooSign.go
│       │   ├── bambooSlab.go
│       │   ├── bambooStairs.go
│       │   ├── bambooTrapdoor.go
│       │   ├── bambooWallHangingSign.go
│       │   ├── bambooWallSign.go
│       │   ├── barrel.go
│       │   ├── barrier.go
│       │   ├── basalt.go
│       │   ├── beacon.go
│       │   ├── bedrock.go
│       │   ├── beeNest.go
│       │   ├── beehive.go
│       │   ├── beetroots.go
│       │   ├── bell.go
│       │   ├── bigDripleaf.go
│       │   ├── bigDripleafStem.go
│       │   ├── birchButton.go
│       │   ├── birchDoor.go
│       │   ├── birchFence.go
│       │   ├── birchFenceGate.go
│       │   ├── birchHangingSign.go
│       │   ├── birchLeaves.go
│       │   ├── birchLog.go
│       │   ├── birchPlanks.go
│       │   ├── birchPressurePlate.go
│       │   ├── birchSapling.go
│       │   ├── birchSign.go
│       │   ├── birchSlab.go
│       │   ├── birchStairs.go
│       │   ├── birchTrapdoor.go
│       │   ├── birchWallHangingSign.go
│       │   ├── birchWallSign.go
│       │   ├── birchWood.go
│       │   ├── blackBanner.go
│       │   ├── blackBed.go
│       │   ├── blackCandle.go
│       │   ├── blackCandleCake.go
│       │   ├── blackCarpet.go
│       │   ├── blackConcrete.go
│       │   ├── blackConcretePowder.go
│       │   ├── blackGlazedTerracotta.go
│       │   ├── blackShulkerBox.go
│       │   ├── blackStainedGlass.go
│       │   ├── blackStainedGlassPane.go
│       │   ├── blackTerracotta.go
│       │   ├── blackWallBanner.go
│       │   ├── blackWool.go
│       │   ├── blackstone.go
│       │   ├── blackstoneSlab.go
│       │   ├── blackstoneStairs.go
│       │   ├── blackstoneWall.go
│       │   ├── blastFurnace.go
│       │   ├── blueBanner.go
│       │   ├── blueBed.go
│       │   ├── blueCandle.go
│       │   ├── blueCandleCake.go
│       │   ├── blueCarpet.go
│       │   ├── blueConcrete.go
│       │   ├── blueConcretePowder.go
│       │   ├── blueGlazedTerracotta.go
│       │   ├── blueIce.go
│       │   ├── blueOrchid.go
│       │   ├── blueShulkerBox.go
│       │   ├── blueStainedGlass.go
│       │   ├── blueStainedGlassPane.go
│       │   ├── blueTerracotta.go
│       │   ├── blueWallBanner.go
│       │   ├── blueWool.go
│       │   ├── boneBlock.go
│       │   ├── bookshelf.go
│       │   ├── brainCoral.go
│       │   ├── brainCoralBlock.go
│       │   ├── brainCoralFan.go
│       │   ├── brainCoralWallFan.go
│       │   ├── brewingStand.go
│       │   ├── brickSlab.go
│       │   ├── brickStairs.go
│       │   ├── brickWall.go
│       │   ├── bricks.go
│       │   ├── brownBanner.go
│       │   ├── brownBed.go
│       │   ├── brownCandle.go
│       │   ├── brownCandleCake.go
│       │   ├── brownCarpet.go
│       │   ├── brownConcrete.go
│       │   ├── brownConcretePowder.go
│       │   ├── brownGlazedTerracotta.go
│       │   ├── brownMushroom.go
│       │   ├── brownMushroomBlock.go
│       │   ├── brownShulkerBox.go
│       │   ├── brownStainedGlass.go
│       │   ├── brownStainedGlassPane.go
│       │   ├── brownTerracotta.go
│       │   ├── brownWallBanner.go
│       │   ├── brownWool.go
│       │   ├── bubbleColumn.go
│       │   ├── bubbleCoral.go
│       │   ├── bubbleCoralBlock.go
│       │   ├── bubbleCoralFan.go
│       │   ├── bubbleCoralWallFan.go
│       │   ├── buddingAmethyst.go
│       │   ├── cactus.go
│       │   ├── cake.go
│       │   ├── calcite.go
│       │   ├── calibratedSculkSensor.go
│       │   ├── campfire.go
│       │   ├── candle.go
│       │   ├── candleCake.go
│       │   ├── carrots.go
│       │   ├── cartographyTable.go
│       │   ├── carvedPumpkin.go
│       │   ├── cauldron.go
│       │   ├── caveAir.go
│       │   ├── caveVines.go
│       │   ├── caveVinesPlant.go
│       │   ├── chain.go
│       │   ├── chainCommandBlock.go
│       │   ├── cherryButton.go
│       │   ├── cherryDoor.go
│       │   ├── cherryFence.go
│       │   ├── cherryFenceGate.go
│       │   ├── cherryHangingSign.go
│       │   ├── cherryLeaves.go
│       │   ├── cherryLog.go
│       │   ├── cherryPlanks.go
│       │   ├── cherryPressurePlate.go
│       │   ├── cherrySapling.go
│       │   ├── cherrySign.go
│       │   ├── cherrySlab.go
│       │   ├── cherryStairs.go
│       │   ├── cherryTrapdoor.go
│       │   ├── cherryWallHangingSign.go
│       │   ├── cherryWallSign.go
│       │   ├── cherryWood.go
│       │   ├── chest.go
│       │   ├── chippedAnvil.go
│       │   ├── chiseledBookshelf.go
│       │   ├── chiseledCopper.go
│       │   ├── chiseledDeepslate.go
│       │   ├── chiseledNetherBricks.go
│       │   ├── chiseledPolishedBlackstone.go
│       │   ├── chiseledQuartzBlock.go
│       │   ├── chiseledRedSandstone.go
│       │   ├── chiseledSandstone.go
│       │   ├── chiseledStoneBricks.go
│       │   ├── chiseledTuff.go
│       │   ├── chiseledTuffBricks.go
│       │   ├── chorusFlower.go
│       │   ├── chorusPlant.go
│       │   ├── clay.go
│       │   ├── coalBlock.go
│       │   ├── coalOre.go
│       │   ├── coarseDirt.go
│       │   ├── cobbledDeepslate.go
│       │   ├── cobbledDeepslateSlab.go
│       │   ├── cobbledDeepslateStairs.go
│       │   ├── cobbledDeepslateWall.go
│       │   ├── cobblestone.go
│       │   ├── cobblestoneSlab.go
│       │   ├── cobblestoneStairs.go
│       │   ├── cobblestoneWall.go
│       │   ├── cobweb.go
│       │   ├── cocoa.go
│       │   ├── commandBlock.go
│       │   ├── comparator.go
│       │   ├── composter.go
│       │   ├── conduit.go
│       │   ├── copperBlock.go
│       │   ├── copperBulb.go
│       │   ├── copperDoor.go
│       │   ├── copperGrate.go
│       │   ├── copperOre.go
│       │   ├── copperTrapdoor.go
│       │   ├── cornflower.go
│       │   ├── crackedDeepslateBricks.go
│       │   ├── crackedDeepslateTiles.go
│       │   ├── crackedNetherBricks.go
│       │   ├── crackedPolishedBlackstoneBricks.go
│       │   ├── crackedStoneBricks.go
│       │   ├── crafter.go
│       │   ├── craftingTable.go
│       │   ├── creeperHead.go
│       │   ├── creeperWallHead.go
│       │   ├── crimsonButton.go
│       │   ├── crimsonDoor.go
│       │   ├── crimsonFence.go
│       │   ├── crimsonFenceGate.go
│       │   ├── crimsonFungus.go
│       │   ├── crimsonHangingSign.go
│       │   ├── crimsonHyphae.go
│       │   ├── crimsonNylium.go
│       │   ├── crimsonPlanks.go
│       │   ├── crimsonPressurePlate.go
│       │   ├── crimsonRoots.go
│       │   ├── crimsonSign.go
│       │   ├── crimsonSlab.go
│       │   ├── crimsonStairs.go
│       │   ├── crimsonStem.go
│       │   ├── crimsonTrapdoor.go
│       │   ├── crimsonWallHangingSign.go
│       │   ├── crimsonWallSign.go
│       │   ├── cryingObsidian.go
│       │   ├── cutCopper.go
│       │   ├── cutCopperSlab.go
│       │   ├── cutCopperStairs.go
│       │   ├── cutRedSandstone.go
│       │   ├── cutRedSandstoneSlab.go
│       │   ├── cutSandstone.go
│       │   ├── cutSandstoneSlab.go
│       │   ├── cyanBanner.go
│       │   ├── cyanBed.go
│       │   ├── cyanCandle.go
│       │   ├── cyanCandleCake.go
│       │   ├── cyanCarpet.go
│       │   ├── cyanConcrete.go
│       │   ├── cyanConcretePowder.go
│       │   ├── cyanGlazedTerracotta.go
│       │   ├── cyanShulkerBox.go
│       │   ├── cyanStainedGlass.go
│       │   ├── cyanStainedGlassPane.go
│       │   ├── cyanTerracotta.go
│       │   ├── cyanWallBanner.go
│       │   ├── cyanWool.go
│       │   ├── damagedAnvil.go
│       │   ├── dandelion.go
│       │   ├── darkOakButton.go
│       │   ├── darkOakDoor.go
│       │   ├── darkOakFence.go
│       │   ├── darkOakFenceGate.go
│       │   ├── darkOakHangingSign.go
│       │   ├── darkOakLeaves.go
│       │   ├── darkOakLog.go
│       │   ├── darkOakPlanks.go
│       │   ├── darkOakPressurePlate.go
│       │   ├── darkOakSapling.go
│       │   ├── darkOakSign.go
│       │   ├── darkOakSlab.go
│       │   ├── darkOakStairs.go
│       │   ├── darkOakTrapdoor.go
│       │   ├── darkOakWallHangingSign.go
│       │   ├── darkOakWallSign.go
│       │   ├── darkOakWood.go
│       │   ├── darkPrismarine.go
│       │   ├── darkPrismarineSlab.go
│       │   ├── darkPrismarineStairs.go
│       │   ├── daylightDetector.go
│       │   ├── deadBrainCoral.go
│       │   ├── deadBrainCoralBlock.go
│       │   ├── deadBrainCoralFan.go
│       │   ├── deadBrainCoralWallFan.go
│       │   ├── deadBubbleCoral.go
│       │   ├── deadBubbleCoralBlock.go
│       │   ├── deadBubbleCoralFan.go
│       │   ├── deadBubbleCoralWallFan.go
│       │   ├── deadBush.go
│       │   ├── deadFireCoral.go
│       │   ├── deadFireCoralBlock.go
│       │   ├── deadFireCoralFan.go
│       │   ├── deadFireCoralWallFan.go
│       │   ├── deadHornCoral.go
│       │   ├── deadHornCoralBlock.go
│       │   ├── deadHornCoralFan.go
│       │   ├── deadHornCoralWallFan.go
│       │   ├── deadTubeCoral.go
│       │   ├── deadTubeCoralBlock.go
│       │   ├── deadTubeCoralFan.go
│       │   ├── deadTubeCoralWallFan.go
│       │   ├── decoratedPot.go
│       │   ├── deepslate.go
│       │   ├── deepslateBrickSlab.go
│       │   ├── deepslateBrickStairs.go
│       │   ├── deepslateBrickWall.go
│       │   ├── deepslateBricks.go
│       │   ├── deepslateCoalOre.go
│       │   ├── deepslateCopperOre.go
│       │   ├── deepslateDiamondOre.go
│       │   ├── deepslateEmeraldOre.go
│       │   ├── deepslateGoldOre.go
│       │   ├── deepslateIronOre.go
│       │   ├── deepslateLapisOre.go
│       │   ├── deepslateRedstoneOre.go
│       │   ├── deepslateTileSlab.go
│       │   ├── deepslateTileStairs.go
│       │   ├── deepslateTileWall.go
│       │   ├── deepslateTiles.go
│       │   ├── detectorRail.go
│       │   ├── diamondBlock.go
│       │   ├── diamondOre.go
│       │   ├── diorite.go
│       │   ├── dioriteSlab.go
│       │   ├── dioriteStairs.go
│       │   ├── dioriteWall.go
│       │   ├── dirt.go
│       │   ├── dirtPath.go
│       │   ├── dispenser.go
│       │   ├── dragonEgg.go
│       │   ├── dragonHead.go
│       │   ├── dragonWallHead.go
│       │   ├── driedKelpBlock.go
│       │   ├── dripstoneBlock.go
│       │   ├── dropper.go
│       │   ├── emeraldBlock.go
│       │   ├── emeraldOre.go
│       │   ├── enchantingTable.go
│       │   ├── endGateway.go
│       │   ├── endPortal.go
│       │   ├── endPortalFrame.go
│       │   ├── endRod.go
│       │   ├── endStone.go
│       │   ├── endStoneBrickSlab.go
│       │   ├── endStoneBrickStairs.go
│       │   ├── endStoneBrickWall.go
│       │   ├── endStoneBricks.go
│       │   ├── enderChest.go
│       │   ├── exposedChiseledCopper.go
│       │   ├── exposedCopper.go
│       │   ├── exposedCopperBulb.go
│       │   ├── exposedCopperDoor.go
│       │   ├── exposedCopperGrate.go
│       │   ├── exposedCopperTrapdoor.go
│       │   ├── exposedCutCopper.go
│       │   ├── exposedCutCopperSlab.go
│       │   ├── exposedCutCopperStairs.go
│       │   ├── farmland.go
│       │   ├── fern.go
│       │   ├── fire.go
│       │   ├── fireCoral.go
│       │   ├── fireCoralBlock.go
│       │   ├── fireCoralFan.go
│       │   ├── fireCoralWallFan.go
│       │   ├── fletchingTable.go
│       │   ├── flowerPot.go
│       │   ├── floweringAzalea.go
│       │   ├── floweringAzaleaLeaves.go
│       │   ├── frogspawn.go
│       │   ├── frostedIce.go
│       │   ├── furnace.go
│       │   ├── gildedBlackstone.go
│       │   ├── glass.go
│       │   ├── glassPane.go
│       │   ├── glowLichen.go
│       │   ├── glowstone.go
│       │   ├── goldBlock.go
│       │   ├── goldOre.go
│       │   ├── granite.go
│       │   ├── graniteSlab.go
│       │   ├── graniteStairs.go
│       │   ├── graniteWall.go
│       │   ├── grassBlock.go
│       │   ├── gravel.go
│       │   ├── grayBanner.go
│       │   ├── grayBed.go
│       │   ├── grayCandle.go
│       │   ├── grayCandleCake.go
│       │   ├── grayCarpet.go
│       │   ├── grayConcrete.go
│       │   ├── grayConcretePowder.go
│       │   ├── grayGlazedTerracotta.go
│       │   ├── grayShulkerBox.go
│       │   ├── grayStainedGlass.go
│       │   ├── grayStainedGlassPane.go
│       │   ├── grayTerracotta.go
│       │   ├── grayWallBanner.go
│       │   ├── grayWool.go
│       │   ├── greenBanner.go
│       │   ├── greenBed.go
│       │   ├── greenCandle.go
│       │   ├── greenCandleCake.go
│       │   ├── greenCarpet.go
│       │   ├── greenConcrete.go
│       │   ├── greenConcretePowder.go
│       │   ├── greenGlazedTerracotta.go
│       │   ├── greenShulkerBox.go
│       │   ├── greenStainedGlass.go
│       │   ├── greenStainedGlassPane.go
│       │   ├── greenTerracotta.go
│       │   ├── greenWallBanner.go
│       │   ├── greenWool.go
│       │   ├── grindstone.go
│       │   ├── hangingRoots.go
│       │   ├── hayBlock.go
│       │   ├── heavyCore.go
│       │   ├── heavyWeightedPressurePlate.go
│       │   ├── honeyBlock.go
│       │   ├── honeycombBlock.go
│       │   ├── hopper.go
│       │   ├── hornCoral.go
│       │   ├── hornCoralBlock.go
│       │   ├── hornCoralFan.go
│       │   ├── hornCoralWallFan.go
│       │   ├── ice.go
│       │   ├── infestedChiseledStoneBricks.go
│       │   ├── infestedCobblestone.go
│       │   ├── infestedCrackedStoneBricks.go
│       │   ├── infestedDeepslate.go
│       │   ├── infestedMossyStoneBricks.go
│       │   ├── infestedStone.go
│       │   ├── infestedStoneBricks.go
│       │   ├── ironBars.go
│       │   ├── ironBlock.go
│       │   ├── ironDoor.go
│       │   ├── ironOre.go
│       │   ├── ironTrapdoor.go
│       │   ├── jackOLantern.go
│       │   ├── jigsaw.go
│       │   ├── jukebox.go
│       │   ├── jungleButton.go
│       │   ├── jungleDoor.go
│       │   ├── jungleFence.go
│       │   ├── jungleFenceGate.go
│       │   ├── jungleHangingSign.go
│       │   ├── jungleLeaves.go
│       │   ├── jungleLog.go
│       │   ├── junglePlanks.go
│       │   ├── junglePressurePlate.go
│       │   ├── jungleSapling.go
│       │   ├── jungleSign.go
│       │   ├── jungleSlab.go
│       │   ├── jungleStairs.go
│       │   ├── jungleTrapdoor.go
│       │   ├── jungleWallHangingSign.go
│       │   ├── jungleWallSign.go
│       │   ├── jungleWood.go
│       │   ├── kelp.go
│       │   ├── kelpPlant.go
│       │   ├── ladder.go
│       │   ├── lantern.go
│       │   ├── lapisBlock.go
│       │   ├── lapisOre.go
│       │   ├── largeAmethystBud.go
│       │   ├── largeFern.go
│       │   ├── lava.go
│       │   ├── lavaCauldron.go
│       │   ├── lectern.go
│       │   ├── lever.go
│       │   ├── light.go
│       │   ├── lightBlueBanner.go
│       │   ├── lightBlueBed.go
│       │   ├── lightBlueCandle.go
│       │   ├── lightBlueCandleCake.go
│       │   ├── lightBlueCarpet.go
│       │   ├── lightBlueConcrete.go
│       │   ├── lightBlueConcretePowder.go
│       │   ├── lightBlueGlazedTerracotta.go
│       │   ├── lightBlueShulkerBox.go
│       │   ├── lightBlueStainedGlass.go
│       │   ├── lightBlueStainedGlassPane.go
│       │   ├── lightBlueTerracotta.go
│       │   ├── lightBlueWallBanner.go
│       │   ├── lightBlueWool.go
│       │   ├── lightGrayBanner.go
│       │   ├── lightGrayBed.go
│       │   ├── lightGrayCandle.go
│       │   ├── lightGrayCandleCake.go
│       │   ├── lightGrayCarpet.go
│       │   ├── lightGrayConcrete.go
│       │   ├── lightGrayConcretePowder.go
│       │   ├── lightGrayGlazedTerracotta.go
│       │   ├── lightGrayShulkerBox.go
│       │   ├── lightGrayStainedGlass.go
│       │   ├── lightGrayStainedGlassPane.go
│       │   ├── lightGrayTerracotta.go
│       │   ├── lightGrayWallBanner.go
│       │   ├── lightGrayWool.go
│       │   ├── lightWeightedPressurePlate.go
│       │   ├── lightningRod.go
│       │   ├── lilac.go
│       │   ├── lilyOfTheValley.go
│       │   ├── lilyPad.go
│       │   ├── limeBanner.go
│       │   ├── limeBed.go
│       │   ├── limeCandle.go
│       │   ├── limeCandleCake.go
│       │   ├── limeCarpet.go
│       │   ├── limeConcrete.go
│       │   ├── limeConcretePowder.go
│       │   ├── limeGlazedTerracotta.go
│       │   ├── limeShulkerBox.go
│       │   ├── limeStainedGlass.go
│       │   ├── limeStainedGlassPane.go
│       │   ├── limeTerracotta.go
│       │   ├── limeWallBanner.go
│       │   ├── limeWool.go
│       │   ├── lodestone.go
│       │   ├── loom.go
│       │   ├── magentaBanner.go
│       │   ├── magentaBed.go
│       │   ├── magentaCandle.go
│       │   ├── magentaCandleCake.go
│       │   ├── magentaCarpet.go
│       │   ├── magentaConcrete.go
│       │   ├── magentaConcretePowder.go
│       │   ├── magentaGlazedTerracotta.go
│       │   ├── magentaShulkerBox.go
│       │   ├── magentaStainedGlass.go
│       │   ├── magentaStainedGlassPane.go
│       │   ├── magentaTerracotta.go
│       │   ├── magentaWallBanner.go
│       │   ├── magentaWool.go
│       │   ├── magmaBlock.go
│       │   ├── mangroveButton.go
│       │   ├── mangroveDoor.go
│       │   ├── mangroveFence.go
│       │   ├── mangroveFenceGate.go
│       │   ├── mangroveHangingSign.go
│       │   ├── mangroveLeaves.go
│       │   ├── mangroveLog.go
│       │   ├── mangrovePlanks.go
│       │   ├── mangrovePressurePlate.go
│       │   ├── mangrovePropagule.go
│       │   ├── mangroveRoots.go
│       │   ├── mangroveSign.go
│       │   ├── mangroveSlab.go
│       │   ├── mangroveStairs.go
│       │   ├── mangroveTrapdoor.go
│       │   ├── mangroveWallHangingSign.go
│       │   ├── mangroveWallSign.go
│       │   ├── mangroveWood.go
│       │   ├── mediumAmethystBud.go
│       │   ├── melon.go
│       │   ├── melonStem.go
│       │   ├── mossBlock.go
│       │   ├── mossCarpet.go
│       │   ├── mossyCobblestone.go
│       │   ├── mossyCobblestoneSlab.go
│       │   ├── mossyCobblestoneStairs.go
│       │   ├── mossyCobblestoneWall.go
│       │   ├── mossyStoneBrickSlab.go
│       │   ├── mossyStoneBrickStairs.go
│       │   ├── mossyStoneBrickWall.go
│       │   ├── mossyStoneBricks.go
│       │   ├── movingPiston.go
│       │   ├── mud.go
│       │   ├── mudBrickSlab.go
│       │   ├── mudBrickStairs.go
│       │   ├── mudBrickWall.go
│       │   ├── mudBricks.go
│       │   ├── muddyMangroveRoots.go
│       │   ├── mushroomStem.go
│       │   ├── mycelium.go
│       │   ├── netherBrickFence.go
│       │   ├── netherBrickSlab.go
│       │   ├── netherBrickStairs.go
│       │   ├── netherBrickWall.go
│       │   ├── netherBricks.go
│       │   ├── netherGoldOre.go
│       │   ├── netherPortal.go
│       │   ├── netherQuartzOre.go
│       │   ├── netherSprouts.go
│       │   ├── netherWart.go
│       │   ├── netherWartBlock.go
│       │   ├── netheriteBlock.go
│       │   ├── netherrack.go
│       │   ├── noteBlock.go
│       │   ├── oakButton.go
│       │   ├── oakDoor.go
│       │   ├── oakFence.go
│       │   ├── oakFenceGate.go
│       │   ├── oakHangingSign.go
│       │   ├── oakLeaves.go
│       │   ├── oakLog.go
│       │   ├── oakPlanks.go
│       │   ├── oakPressurePlate.go
│       │   ├── oakSapling.go
│       │   ├── oakSign.go
│       │   ├── oakSlab.go
│       │   ├── oakStairs.go
│       │   ├── oakTrapdoor.go
│       │   ├── oakWallHangingSign.go
│       │   ├── oakWallSign.go
│       │   ├── oakWood.go
│       │   ├── observer.go
│       │   ├── obsidian.go
│       │   ├── ochreFroglight.go
│       │   ├── orangeBanner.go
│       │   ├── orangeBed.go
│       │   ├── orangeCandle.go
│       │   ├── orangeCandleCake.go
│       │   ├── orangeCarpet.go
│       │   ├── orangeConcrete.go
│       │   ├── orangeConcretePowder.go
│       │   ├── orangeGlazedTerracotta.go
│       │   ├── orangeShulkerBox.go
│       │   ├── orangeStainedGlass.go
│       │   ├── orangeStainedGlassPane.go
│       │   ├── orangeTerracotta.go
│       │   ├── orangeTulip.go
│       │   ├── orangeWallBanner.go
│       │   ├── orangeWool.go
│       │   ├── oxeyeDaisy.go
│       │   ├── oxidizedChiseledCopper.go
│       │   ├── oxidizedCopper.go
│       │   ├── oxidizedCopperBulb.go
│       │   ├── oxidizedCopperDoor.go
│       │   ├── oxidizedCopperGrate.go
│       │   ├── oxidizedCopperTrapdoor.go
│       │   ├── oxidizedCutCopper.go
│       │   ├── oxidizedCutCopperSlab.go
│       │   ├── oxidizedCutCopperStairs.go
│       │   ├── packedIce.go
│       │   ├── packedMud.go
│       │   ├── pearlescentFroglight.go
│       │   ├── peony.go
│       │   ├── petrifiedOakSlab.go
│       │   ├── piglinHead.go
│       │   ├── piglinWallHead.go
│       │   ├── pinkBanner.go
│       │   ├── pinkBed.go
│       │   ├── pinkCandle.go
│       │   ├── pinkCandleCake.go
│       │   ├── pinkCarpet.go
│       │   ├── pinkConcrete.go
│       │   ├── pinkConcretePowder.go
│       │   ├── pinkGlazedTerracotta.go
│       │   ├── pinkPetals.go
│       │   ├── pinkShulkerBox.go
│       │   ├── pinkStainedGlass.go
│       │   ├── pinkStainedGlassPane.go
│       │   ├── pinkTerracotta.go
│       │   ├── pinkTulip.go
│       │   ├── pinkWallBanner.go
│       │   ├── pinkWool.go
│       │   ├── piston.go
│       │   ├── pistonHead.go
│       │   ├── pitcherCrop.go
│       │   ├── pitcherPlant.go
│       │   ├── playerHead.go
│       │   ├── playerWallHead.go
│       │   ├── podzol.go
│       │   ├── pointedDripstone.go
│       │   ├── polishedAndesite.go
│       │   ├── polishedAndesiteSlab.go
│       │   ├── polishedAndesiteStairs.go
│       │   ├── polishedBasalt.go
│       │   ├── polishedBlackstone.go
│       │   ├── polishedBlackstoneBrickSlab.go
│       │   ├── polishedBlackstoneBrickStairs.go
│       │   ├── polishedBlackstoneBrickWall.go
│       │   ├── polishedBlackstoneBricks.go
│       │   ├── polishedBlackstoneButton.go
│       │   ├── polishedBlackstonePressurePlate.go
│       │   ├── polishedBlackstoneSlab.go
│       │   ├── polishedBlackstoneStairs.go
│       │   ├── polishedBlackstoneWall.go
│       │   ├── polishedDeepslate.go
│       │   ├── polishedDeepslateSlab.go
│       │   ├── polishedDeepslateStairs.go
│       │   ├── polishedDeepslateWall.go
│       │   ├── polishedDiorite.go
│       │   ├── polishedDioriteSlab.go
│       │   ├── polishedDioriteStairs.go
│       │   ├── polishedGranite.go
│       │   ├── polishedGraniteSlab.go
│       │   ├── polishedGraniteStairs.go
│       │   ├── polishedTuff.go
│       │   ├── polishedTuffSlab.go
│       │   ├── polishedTuffStairs.go
│       │   ├── polishedTuffWall.go
│       │   ├── poppy.go
│       │   ├── pos/
│       │   │   └── pos.go
│       │   ├── potatoes.go
│       │   ├── pottedAcaciaSapling.go
│       │   ├── pottedAllium.go
│       │   ├── pottedAzaleaBush.go
│       │   ├── pottedAzureBluet.go
│       │   ├── pottedBamboo.go
│       │   ├── pottedBirchSapling.go
│       │   ├── pottedBlueOrchid.go
│       │   ├── pottedBrownMushroom.go
│       │   ├── pottedCactus.go
│       │   ├── pottedCherrySapling.go
│       │   ├── pottedCornflower.go
│       │   ├── pottedCrimsonFungus.go
│       │   ├── pottedCrimsonRoots.go
│       │   ├── pottedDandelion.go
│       │   ├── pottedDarkOakSapling.go
│       │   ├── pottedDeadBush.go
│       │   ├── pottedFern.go
│       │   ├── pottedFloweringAzaleaBush.go
│       │   ├── pottedJungleSapling.go
│       │   ├── pottedLilyOfTheValley.go
│       │   ├── pottedMangrovePropagule.go
│       │   ├── pottedOakSapling.go
│       │   ├── pottedOrangeTulip.go
│       │   ├── pottedOxeyeDaisy.go
│       │   ├── pottedPinkTulip.go
│       │   ├── pottedPoppy.go
│       │   ├── pottedRedMushroom.go
│       │   ├── pottedRedTulip.go
│       │   ├── pottedSpruceSapling.go
│       │   ├── pottedTorchflower.go
│       │   ├── pottedWarpedFungus.go
│       │   ├── pottedWarpedRoots.go
│       │   ├── pottedWhiteTulip.go
│       │   ├── pottedWitherRose.go
│       │   ├── powderSnow.go
│       │   ├── powderSnowCauldron.go
│       │   ├── poweredRail.go
│       │   ├── prismarine.go
│       │   ├── prismarineBrickSlab.go
│       │   ├── prismarineBrickStairs.go
│       │   ├── prismarineBricks.go
│       │   ├── prismarineSlab.go
│       │   ├── prismarineStairs.go
│       │   ├── prismarineWall.go
│       │   ├── pumpkin.go
│       │   ├── pumpkinStem.go
│       │   ├── purpleBanner.go
│       │   ├── purpleBed.go
│       │   ├── purpleCandle.go
│       │   ├── purpleCandleCake.go
│       │   ├── purpleCarpet.go
│       │   ├── purpleConcrete.go
│       │   ├── purpleConcretePowder.go
│       │   ├── purpleGlazedTerracotta.go
│       │   ├── purpleShulkerBox.go
│       │   ├── purpleStainedGlass.go
│       │   ├── purpleStainedGlassPane.go
│       │   ├── purpleTerracotta.go
│       │   ├── purpleWallBanner.go
│       │   ├── purpleWool.go
│       │   ├── purpurBlock.go
│       │   ├── purpurPillar.go
│       │   ├── purpurSlab.go
│       │   ├── purpurStairs.go
│       │   ├── quartzBlock.go
│       │   ├── quartzBricks.go
│       │   ├── quartzPillar.go
│       │   ├── quartzSlab.go
│       │   ├── quartzStairs.go
│       │   ├── rail.go
│       │   ├── rawCopperBlock.go
│       │   ├── rawGoldBlock.go
│       │   ├── rawIronBlock.go
│       │   ├── redBanner.go
│       │   ├── redBed.go
│       │   ├── redCandle.go
│       │   ├── redCandleCake.go
│       │   ├── redCarpet.go
│       │   ├── redConcrete.go
│       │   ├── redConcretePowder.go
│       │   ├── redGlazedTerracotta.go
│       │   ├── redMushroom.go
│       │   ├── redMushroomBlock.go
│       │   ├── redNetherBrickSlab.go
│       │   ├── redNetherBrickStairs.go
│       │   ├── redNetherBrickWall.go
│       │   ├── redNetherBricks.go
│       │   ├── redSand.go
│       │   ├── redSandstone.go
│       │   ├── redSandstoneSlab.go
│       │   ├── redSandstoneStairs.go
│       │   ├── redSandstoneWall.go
│       │   ├── redShulkerBox.go
│       │   ├── redStainedGlass.go
│       │   ├── redStainedGlassPane.go
│       │   ├── redTerracotta.go
│       │   ├── redTulip.go
│       │   ├── redWallBanner.go
│       │   ├── redWool.go
│       │   ├── redstoneBlock.go
│       │   ├── redstoneLamp.go
│       │   ├── redstoneOre.go
│       │   ├── redstoneTorch.go
│       │   ├── redstoneWallTorch.go
│       │   ├── redstoneWire.go
│       │   ├── reinforcedDeepslate.go
│       │   ├── repeater.go
│       │   ├── repeatingCommandBlock.go
│       │   ├── respawnAnchor.go
│       │   ├── rootedDirt.go
│       │   ├── roseBush.go
│       │   ├── sand.go
│       │   ├── sandstone.go
│       │   ├── sandstoneSlab.go
│       │   ├── sandstoneStairs.go
│       │   ├── sandstoneWall.go
│       │   ├── scaffolding.go
│       │   ├── sculk.go
│       │   ├── sculkCatalyst.go
│       │   ├── sculkSensor.go
│       │   ├── sculkShrieker.go
│       │   ├── sculkVein.go
│       │   ├── seaLantern.go
│       │   ├── seaPickle.go
│       │   ├── seagrass.go
│       │   ├── shortGrass.go
│       │   ├── shroomlight.go
│       │   ├── shulkerBox.go
│       │   ├── skeletonSkull.go
│       │   ├── skeletonWallSkull.go
│       │   ├── slimeBlock.go
│       │   ├── smallAmethystBud.go
│       │   ├── smallDripleaf.go
│       │   ├── smithingTable.go
│       │   ├── smoker.go
│       │   ├── smoothBasalt.go
│       │   ├── smoothQuartz.go
│       │   ├── smoothQuartzSlab.go
│       │   ├── smoothQuartzStairs.go
│       │   ├── smoothRedSandstone.go
│       │   ├── smoothRedSandstoneSlab.go
│       │   ├── smoothRedSandstoneStairs.go
│       │   ├── smoothSandstone.go
│       │   ├── smoothSandstoneSlab.go
│       │   ├── smoothSandstoneStairs.go
│       │   ├── smoothStone.go
│       │   ├── smoothStoneSlab.go
│       │   ├── snifferEgg.go
│       │   ├── snow.go
│       │   ├── snowBlock.go
│       │   ├── soulCampfire.go
│       │   ├── soulFire.go
│       │   ├── soulLantern.go
│       │   ├── soulSand.go
│       │   ├── soulSoil.go
│       │   ├── soulTorch.go
│       │   ├── soulWallTorch.go
│       │   ├── spawner.go
│       │   ├── sponge.go
│       │   ├── sporeBlossom.go
│       │   ├── spruceButton.go
│       │   ├── spruceDoor.go
│       │   ├── spruceFence.go
│       │   ├── spruceFenceGate.go
│       │   ├── spruceHangingSign.go
│       │   ├── spruceLeaves.go
│       │   ├── spruceLog.go
│       │   ├── sprucePlanks.go
│       │   ├── sprucePressurePlate.go
│       │   ├── spruceSapling.go
│       │   ├── spruceSign.go
│       │   ├── spruceSlab.go
│       │   ├── spruceStairs.go
│       │   ├── spruceTrapdoor.go
│       │   ├── spruceWallHangingSign.go
│       │   ├── spruceWallSign.go
│       │   ├── spruceWood.go
│       │   ├── stickyPiston.go
│       │   ├── stone.go
│       │   ├── stoneBrickSlab.go
│       │   ├── stoneBrickStairs.go
│       │   ├── stoneBrickWall.go
│       │   ├── stoneBricks.go
│       │   ├── stoneButton.go
│       │   ├── stonePressurePlate.go
│       │   ├── stoneSlab.go
│       │   ├── stoneStairs.go
│       │   ├── stonecutter.go
│       │   ├── strippedAcaciaLog.go
│       │   ├── strippedAcaciaWood.go
│       │   ├── strippedBambooBlock.go
│       │   ├── strippedBirchLog.go
│       │   ├── strippedBirchWood.go
│       │   ├── strippedCherryLog.go
│       │   ├── strippedCherryWood.go
│       │   ├── strippedCrimsonHyphae.go
│       │   ├── strippedCrimsonStem.go
│       │   ├── strippedDarkOakLog.go
│       │   ├── strippedDarkOakWood.go
│       │   ├── strippedJungleLog.go
│       │   ├── strippedJungleWood.go
│       │   ├── strippedMangroveLog.go
│       │   ├── strippedMangroveWood.go
│       │   ├── strippedOakLog.go
│       │   ├── strippedOakWood.go
│       │   ├── strippedSpruceLog.go
│       │   ├── strippedSpruceWood.go
│       │   ├── strippedWarpedHyphae.go
│       │   ├── strippedWarpedStem.go
│       │   ├── structureBlock.go
│       │   ├── structureVoid.go
│       │   ├── sugarCane.go
│       │   ├── sunflower.go
│       │   ├── suspiciousGravel.go
│       │   ├── suspiciousSand.go
│       │   ├── sweetBerryBush.go
│       │   ├── tallGrass.go
│       │   ├── tallSeagrass.go
│       │   ├── target.go
│       │   ├── terracotta.go
│       │   ├── tintedGlass.go
│       │   ├── tnt.go
│       │   ├── torch.go
│       │   ├── torchflower.go
│       │   ├── torchflowerCrop.go
│       │   ├── trappedChest.go
│       │   ├── trialSpawner.go
│       │   ├── tripwire.go
│       │   ├── tripwireHook.go
│       │   ├── tubeCoral.go
│       │   ├── tubeCoralBlock.go
│       │   ├── tubeCoralFan.go
│       │   ├── tubeCoralWallFan.go
│       │   ├── tuff.go
│       │   ├── tuffBrickSlab.go
│       │   ├── tuffBrickStairs.go
│       │   ├── tuffBrickWall.go
│       │   ├── tuffBricks.go
│       │   ├── tuffSlab.go
│       │   ├── tuffStairs.go
│       │   ├── tuffWall.go
│       │   ├── turtleEgg.go
│       │   ├── twistingVines.go
│       │   ├── twistingVinesPlant.go
│       │   ├── vault.go
│       │   ├── verdantFroglight.go
│       │   ├── vine.go
│       │   ├── voidAir.go
│       │   ├── wallTorch.go
│       │   ├── warpedButton.go
│       │   ├── warpedDoor.go
│       │   ├── warpedFence.go
│       │   ├── warpedFenceGate.go
│       │   ├── warpedFungus.go
│       │   ├── warpedHangingSign.go
│       │   ├── warpedHyphae.go
│       │   ├── warpedNylium.go
│       │   ├── warpedPlanks.go
│       │   ├── warpedPressurePlate.go
│       │   ├── warpedRoots.go
│       │   ├── warpedSign.go
│       │   ├── warpedSlab.go
│       │   ├── warpedStairs.go
│       │   ├── warpedStem.go
│       │   ├── warpedTrapdoor.go
│       │   ├── warpedWallHangingSign.go
│       │   ├── warpedWallSign.go
│       │   ├── warpedWartBlock.go
│       │   ├── water.go
│       │   ├── waterCauldron.go
│       │   ├── waxedChiseledCopper.go
│       │   ├── waxedCopperBlock.go
│       │   ├── waxedCopperBulb.go
│       │   ├── waxedCopperDoor.go
│       │   ├── waxedCopperGrate.go
│       │   ├── waxedCopperTrapdoor.go
│       │   ├── waxedCutCopper.go
│       │   ├── waxedCutCopperSlab.go
│       │   ├── waxedCutCopperStairs.go
│       │   ├── waxedExposedChiseledCopper.go
│       │   ├── waxedExposedCopper.go
│       │   ├── waxedExposedCopperBulb.go
│       │   ├── waxedExposedCopperDoor.go
│       │   ├── waxedExposedCopperGrate.go
│       │   ├── waxedExposedCopperTrapdoor.go
│       │   ├── waxedExposedCutCopper.go
│       │   ├── waxedExposedCutCopperSlab.go
│       │   ├── waxedExposedCutCopperStairs.go
│       │   ├── waxedOxidizedChiseledCopper.go
│       │   ├── waxedOxidizedCopper.go
│       │   ├── waxedOxidizedCopperBulb.go
│       │   ├── waxedOxidizedCopperDoor.go
│       │   ├── waxedOxidizedCopperGrate.go
│       │   ├── waxedOxidizedCopperTrapdoor.go
│       │   ├── waxedOxidizedCutCopper.go
│       │   ├── waxedOxidizedCutCopperSlab.go
│       │   ├── waxedOxidizedCutCopperStairs.go
│       │   ├── waxedWeatheredChiseledCopper.go
│       │   ├── waxedWeatheredCopper.go
│       │   ├── waxedWeatheredCopperBulb.go
│       │   ├── waxedWeatheredCopperDoor.go
│       │   ├── waxedWeatheredCopperGrate.go
│       │   ├── waxedWeatheredCopperTrapdoor.go
│       │   ├── waxedWeatheredCutCopper.go
│       │   ├── waxedWeatheredCutCopperSlab.go
│       │   ├── waxedWeatheredCutCopperStairs.go
│       │   ├── weatheredChiseledCopper.go
│       │   ├── weatheredCopper.go
│       │   ├── weatheredCopperBulb.go
│       │   ├── weatheredCopperDoor.go
│       │   ├── weatheredCopperGrate.go
│       │   ├── weatheredCopperTrapdoor.go
│       │   ├── weatheredCutCopper.go
│       │   ├── weatheredCutCopperSlab.go
│       │   ├── weatheredCutCopperStairs.go
│       │   ├── weepingVines.go
│       │   ├── weepingVinesPlant.go
│       │   ├── wetSponge.go
│       │   ├── wheat.go
│       │   ├── whiteBanner.go
│       │   ├── whiteBed.go
│       │   ├── whiteCandle.go
│       │   ├── whiteCandleCake.go
│       │   ├── whiteCarpet.go
│       │   ├── whiteConcrete.go
│       │   ├── whiteConcretePowder.go
│       │   ├── whiteGlazedTerracotta.go
│       │   ├── whiteShulkerBox.go
│       │   ├── whiteStainedGlass.go
│       │   ├── whiteStainedGlassPane.go
│       │   ├── whiteTerracotta.go
│       │   ├── whiteTulip.go
│       │   ├── whiteWallBanner.go
│       │   ├── whiteWool.go
│       │   ├── witherRose.go
│       │   ├── witherSkeletonSkull.go
│       │   ├── witherSkeletonWallSkull.go
│       │   ├── yellowBanner.go
│       │   ├── yellowBed.go
│       │   ├── yellowCandle.go
│       │   ├── yellowCandleCake.go
│       │   ├── yellowCarpet.go
│       │   ├── yellowConcrete.go
│       │   ├── yellowConcretePowder.go
│       │   ├── yellowGlazedTerracotta.go
│       │   ├── yellowShulkerBox.go
│       │   ├── yellowStainedGlass.go
│       │   ├── yellowStainedGlassPane.go
│       │   ├── yellowTerracotta.go
│       │   ├── yellowWallBanner.go
│       │   ├── yellowWool.go
│       │   ├── zombieHead.go
│       │   └── zombieWallHead.go
│       ├── chunk/
│       │   ├── anvil.go
│       │   ├── chunk.go
│       │   ├── encode.go
│       │   ├── heightmaps/
│       │   │   └── heightmaps.go
│       │   └── section/
│       │       ├── block.go
│       │       ├── blockRegister.go
│       │       ├── data/
│       │       │   └── blocks.nbt
│       │       └── section.go
│       ├── dimension/
│       │   ├── dimension.go
│       │   ├── manager.go
│       │   ├── tick.go
│       │   └── window/
│       │       └── window.go
│       ├── level/
│       │   ├── entity.go
│       │   ├── item/
│       │   │   ├── attribute_modifiers.go
│       │   │   ├── banner_patterns.go
│       │   │   ├── bees.go
│       │   │   ├── bucket_entity_data.go
│       │   │   ├── can_do.go
│       │   │   ├── container_loot.go
│       │   │   ├── creative_slot_lock.go
│       │   │   ├── enchantments.go
│       │   │   ├── entity_data.go
│       │   │   ├── fire_resistant.go
│       │   │   ├── firework_explosion.go
│       │   │   ├── fireworks.go
│       │   │   ├── food.go
│       │   │   ├── hide_additional_tooltip.go
│       │   │   ├── hide_tooltip.go
│       │   │   ├── intangible_projectile.go
│       │   │   ├── item.go
│       │   │   ├── items.go
│       │   │   ├── jukebox_playable.go
│       │   │   ├── lodestone_tracker.go
│       │   │   ├── map_post_processing.go
│       │   │   ├── stored_enchantments.go
│       │   │   ├── susipicious_stew_effects.go
│       │   │   ├── tool.go
│       │   │   ├── trim.go
│       │   │   ├── unbreakable.go
│       │   │   ├── writable_book_content.go
│       │   │   └── written_book_content.go
│       │   ├── level.go
│       │   ├── playerdata.go
│       │   ├── region/
│       │   │   ├── anvil.go
│       │   │   ├── region_dec.go
│       │   │   └── region_enc.go
│       │   ├── seed/
│       │   │   └── seed.go
│       │   └── uuid/
│       │       └── uuid.go
│       ├── terrain/
│       │   ├── superflat.go
│       │   └── terrain.go
│       └── world.go
└── util/
    ├── atomic/
    │   ├── atomic.go
    │   └── slice.go
    ├── console/
    │   └── console.go
    ├── log/
    │   └── log.go
    ├── mapequal.go
    ├── rot.go
    └── unit.go

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

================================================
FILE: .github/workflows/go.yml
================================================
name: Build Zeppelin

on:
  push:
  pull_request:
  workflow_dispatch:
  release:
    types: [published]

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        go-version: ["1.22.x"]
        os: [ubuntu-latest, macos-latest]
        arch: [amd64, arm64]

    steps:
      - uses: actions/checkout@v4
      - name: Setup Go
        uses: actions/setup-go@v4
        with:
          go-version: ${{ matrix.go-version }}
      - name: Install libdeflate
        run: |
          if [ ${{ runner.os }} == 'Linux' ]; then
            sudo apt-get update
            sudo apt-get install -y libdeflate-dev
          elif [ ${{ runner.os }} == 'macOS' ]; then
            brew install libdeflate
          fi
      - name: Build
        run: go build -v
      - name: Upload Go build results linux
        uses: actions/upload-artifact@v3
        if: ${{ runner.os == 'Linux' && matrix.arch == 'amd64' }}
        with:
          name: Zeppelin-AMD64-Linux.zip
          path: zeppelin
      - name: Upload Go build results arm64-linux
        uses: actions/upload-artifact@v3
        if: ${{ runner.os == 'Linux' && matrix.arch == 'arm64' }}
        with:
          name: Zeppelin-ARM64-Linux.zip
          path: zeppelin
      - name: Upload Go build results macos
        uses: actions/upload-artifact@v3
        if: ${{ runner.os == 'macOS' && matrix.arch == 'amd64' }}
        with:
          name: Zeppelin-AMD64-macOS.zip
          path: zeppelin
      - name: Upload Go build results arm64-macos
        uses: actions/upload-artifact@v3
        if: ${{ runner.os == 'macOS' && matrix.arch == 'arm64' }}
        with:
          name: Zeppelin-ARM64-macOS.zip
          path: zeppelin

================================================
FILE: LICENSE
================================================
                                 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: commands/commands.go
================================================
package commands

import "github.com/zeppelinmc/zeppelin/server/command"

var Commands = []command.Command{
	mem, debug, tick, timecmd, gc,
}


================================================
FILE: commands/debug.go
================================================
package commands

import (
	"github.com/zeppelinmc/zeppelin/server/player"
	"math"

	"github.com/zeppelinmc/zeppelin/protocol/text"
	"github.com/zeppelinmc/zeppelin/server/command"

	//"github.com/zeppelinmc/zeppelin/server/session"
	"github.com/zeppelinmc/zeppelin/util"
)

var debug = command.Command{
	Node:      command.NewLiteral("debug"),
	Aliases:   []string{"f3"},
	Namespace: "zeppelin",
	Callback: func(ccc command.CommandCallContext) {
		player, ok := ccc.Executor.(*player.Player)
		if !ok {
			ccc.Executor.SystemMessage(text.TextComponent{
				Text:  "This command should be used by a player.",
				Color: "red",
			})
			return
		}
		x, y, z := player.Position()
		chunkX, chunkY, chunkZ := int32(x)>>4, int32(y)>>4, int32(z)>>4
		xb, yb, zb := int32(math.Floor(x)), int32(math.Floor(y)), int32(math.Floor(z))
		rx, rz := chunkX>>5, chunkZ>>5

		yaw, pitch := player.Rotation()

		dimension := player.Dimension()

		c, err := dimension.GetChunk(chunkX, chunkZ)
		if err != nil {
			ccc.Executor.SystemMessage(text.TextComponent{
				Text:  "Unrendered chunk",
				Color: "red",
			})
			return
		}
		onBlock, _ := c.Block(xb&0x0f, yb-1, zb&0x0f)
		sky, _ := c.SkyLightLevel(xb&0x0f, yb, zb&0x0f)

		ccc.Executor.SystemMessage(text.Unmarshalf(
			'&', //ccc.Executor.Config().ChatFormatter.Rune(),
			"XYZ: %.03f / %.05f / %.03f\nBlock: %d %d %d [%d %d %d]\nChunk: %d %d %d [%d %d in r.%d.%d.mca]\nStanding on: %s [%v]\nFacing: (%.01f / %.01f)\nClient Light: %d (%d sky, 0 block)\n\nYou are using: %s",
			x, y, z,
			xb, yb, zb,
			xb&0xf, yb&0xf, zb&0xf,
			chunkX, chunkY, chunkZ,
			chunkX&31, chunkZ&31,
			rx, rz,
			onBlock.Name, onBlock.Properties,
			util.NormalizeYaw(yaw), pitch,
			sky, sky,
			"idk",
			//s.ClientName(),
		))
	},
}


================================================
FILE: commands/gc.go
================================================
package commands

import (
	"runtime"

	"github.com/zeppelinmc/zeppelin/protocol/text"
	"github.com/zeppelinmc/zeppelin/server/command"
)

var gc = command.Command{
	Node:      command.NewLiteral("gc"),
	Namespace: "zeppelin",
	Callback: func(ccc command.CommandCallContext) {
		runtime.GC()

		ccc.Executor.SystemMessage(text.Text("Done.").WithColor(text.BrightGreen))
	},
}


================================================
FILE: commands/mem.go
================================================
package commands

import (
	"fmt"
	"runtime"

	"github.com/zeppelinmc/zeppelin/protocol/net/io/buffers"
	"github.com/zeppelinmc/zeppelin/protocol/text"
	"github.com/zeppelinmc/zeppelin/server"
	"github.com/zeppelinmc/zeppelin/server/command"
)

var memStats runtime.MemStats

var mem = command.Command{
	Node:      command.NewLiteral("mem"),
	Namespace: "zeppelin",
	Callback: func(ccc command.CommandCallContext) {
		runtime.ReadMemStats(&memStats)
		loaded := ccc.Server.(*server.Server).World.LoadedChunks()
		goroutines := runtime.NumGoroutine()

		ccc.Executor.SystemMessage(text.TextComponent{
			Text: fmt.Sprintf(
				"Server memory usage: \n\nAlloc: %dMiB, Total Alloc: %dMiB\nLoaded Chunks: %d\nBuffer size: %dB\nGoroutines: %d",
				memStats.Alloc/1024/1024, memStats.TotalAlloc/1024/1024, loaded, buffers.Size(), goroutines,
			),
		})
	},
}


================================================
FILE: commands/tick.go
================================================
package commands

import (
	"time"

	"github.com/zeppelinmc/zeppelin/protocol/text"
	"github.com/zeppelinmc/zeppelin/server"
	"github.com/zeppelinmc/zeppelin/server/command"
)

var tick = command.Command{
	Node: command.NewLiteral("tick", command.NewLiteral("info"), command.NewLiteral("freeze"), command.NewLiteral("unfreeze")),
	Callback: func(ccc command.CommandCallContext) {
		tickManager := ccc.Server.(*server.Server).TickManager
		command := ccc.Arguments.Fallback(0, "info")
		num := tickManager.Count()

		switch command {
		case "info":
			freq := tickManager.Frequency()
			ccc.Executor.SystemMessage(text.Sprintf(
				"Server Tickers: %d\nTicking Frequency: %.02ftps (expected ticks per second)",
				num, 1/(float64(freq)/float64(time.Second)),
			))
		case "freeze":
			tickManager.Freeze()
			ccc.Executor.SystemMessage(text.Sprintf("Froze %d tickers", num))
		case "unfreeze":
			tickManager.Unfreeze()
			ccc.Executor.SystemMessage(text.Sprintf("Froze %d tickers", num))
		}

	},
}


================================================
FILE: commands/time.go
================================================
package commands

import (
	"github.com/zeppelinmc/zeppelin/server/command"
)

var timecmd = command.Command{
	Node: command.NewLiteral("time" /*command.NewCommand("add", command.NewTimeArgument("time", 0)), command.NewCommand("set", command.NewTimeArgument("time", 0))*/),
	Callback: func(ccc command.CommandCallContext) {
		/*command := ccc.Arguments.At(0)
		w := ccc.Server.(*server.Server).World

		switch command {
		case "set":
			t := ccc.Arguments.At(1)
			time, err := strconv.Atoi(t)
			if t == "" || err != nil {
				ccc.Reply(text.Sprint("Invalid time"))
				return
			}

			a, _ := w.Time()
			ccc.Executor.UpdateTime(a, int64(time))
		}*/
	},
}


================================================
FILE: go.mod
================================================
module github.com/zeppelinmc/zeppelin

go 1.23

require (
	github.com/fatih/color v1.17.0
	github.com/google/uuid v1.6.0
	golang.org/x/term v0.22.0
)

require (
	github.com/4kills/go-libdeflate/v2 v2.2.0
	github.com/pierrec/lz4/v4 v4.1.21
)

require github.com/oq-x/unsafe2 v0.0.0-20240901191313-2b7bec1d9e3b

require (
	github.com/aimjel/mine-net v0.0.0-20241231185445-f0751c927ecb // indirect
	github.com/grailbio/base v0.0.11 // indirect
)

require (
	github.com/4kills/go-zlib v1.2.0
	github.com/aimjel/minecraft v0.0.0-20240907220502-e1fe5798908b
	github.com/aquilax/go-perlin v1.1.0
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.20 // indirect
	golang.org/x/sys v0.25.0 // indirect
)


================================================
FILE: go.sum
================================================
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
github.com/4kills/go-libdeflate/v2 v2.2.0 h1:2kdYT79I+k23LO6VLn9p0l1Og47EWWgKbC1n353zE30=
github.com/4kills/go-libdeflate/v2 v2.2.0/go.mod h1:hyouZv4OAhHaaMpYuejstUN0xOg8mA+yy75WE3Ty6SM=
github.com/4kills/go-zlib v1.2.0 h1:h/OjHfOi0ZGAhotXzFVJK7V97cKNsEqRJVmJo4e8H6A=
github.com/4kills/go-zlib v1.2.0/go.mod h1:ngBUonyN1YJBHSknfLPNtWokAjYhHsaZDio8yS+BqSo=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/aimjel/mine-net v0.0.0-20241231184943-192b6fd6bfdc h1:Fl6/rTVRsK3yRvLIe59RgElHb/fpVVo8fOm1SYvAfS8=
github.com/aimjel/mine-net v0.0.0-20241231184943-192b6fd6bfdc/go.mod h1:2p/uMjMBAOvMK8NvNnTsXS7s00IYvbS3Ji3YM2ApzxA=
github.com/aimjel/mine-net v0.0.0-20241231185445-f0751c927ecb h1:DzjkzmO1C8qXdEUSWU0I4hHEi0tuaFNrKeLeRZ8ntZo=
github.com/aimjel/mine-net v0.0.0-20241231185445-f0751c927ecb/go.mod h1:2p/uMjMBAOvMK8NvNnTsXS7s00IYvbS3Ji3YM2ApzxA=
github.com/aimjel/minecraft v0.0.0-20240907220502-e1fe5798908b h1:P5dA2C10r7BqzbhXqjjx07+LBV1tcsioFJrogWBOOBY=
github.com/aimjel/minecraft v0.0.0-20240907220502-e1fe5798908b/go.mod h1:jb47g4nDw3J8JdA4WxQpDx25NoIZiyNCjFOtM1b3Urk=
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
github.com/aquilax/go-perlin v1.1.0 h1:Gg+3jQ24wT4Y5GI7TCRLmYarzUG0k+n/JATFqOimb7s=
github.com/aquilax/go-perlin v1.1.0/go.mod h1:z9Rl7EM4BZY0Ikp2fEN1I5mKSOJ26HQpk0O2TBdN2HE=
github.com/aws/aws-sdk-go v1.23.14/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.23.22/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.34.31/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
github.com/biogo/store v0.0.0-20190426020002-884f370e325d/go.mod h1:Iev9Q3MErcn+w3UOJD/DkEzllvugfdx7bGcMOFhvr/4=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gops v0.3.6/go.mod h1:RZ1rH95wsAGX4vMWKmqBOIWynmWisBf4QFdgT/k/xOI=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/grailbio/base v0.0.1/go.mod h1:wVM2Cq2/HT0rt6WYGQhXJ3CCLkNnGjeAAOPHCZ2IsN0=
github.com/grailbio/base v0.0.11 h1:F/khklg9LwJDZpdHaHBvJIQrZfthNfcz3h2WuiwqK7E=
github.com/grailbio/base v0.0.11/go.mod h1:8xmAiPsu9U7ZrRuaUCSuT2SDJS97QXGqVKpn0Den8GA=
github.com/grailbio/testutil v0.0.1/go.mod h1:j7teGaXqRY1n6m7oM8oy954lxL37Myt7nEJZlif3nMA=
github.com/grailbio/testutil v0.0.3/go.mod h1:f9+y7xMXeXwyNcdV5cmo6GzRiitSOubMmqcqEON7NQQ=
github.com/grailbio/v23/factories/grail v0.0.0-20190904050408-8a555d238e9a/go.mod h1:2g5HI42KHw+BDBdjLP3zs+WvTHlDK3RoE8crjCl26y4=
github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok=
github.com/hanwen/go-fuse/v2 v2.0.2/go.mod h1:HH3ygZOoyRbP9y2q7y3+JM6hPL+Epe29IbWaS0UA81o=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/keybase/go-keychain v0.0.0-20190828153431-2390ae572545/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc=
github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999/go.mod h1:hY+WOq6m2FpbvyrI93sMaypsttvaIL5nhVR92dTMUcQ=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.8.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.8.6/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/oq-x/unsafe2 v0.0.0-20240901191313-2b7bec1d9e3b h1:ffDVPOtSkPRHwJxp34oBUxgxR8H4arPUSzQMwT3fZi8=
github.com/oq-x/unsafe2 v0.0.0-20240901191313-2b7bec1d9e3b/go.mod h1:x0z103mg/p7DX2tk7+9ubWfXbh+ynkAtwRlEOVEbIkk=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil v2.19.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/vanadium/go-mdns-sd v0.0.0-20181006014439-f1a1ccd1252e/go.mod h1:35fXDjvKtzyf89fHHhyTTNLHaG2CkI7u/GvO59PIjP4=
github.com/vitessio/vitess v2.1.1+incompatible/go.mod h1:A11WWLimUfZAYYm8P1I63RryRPP2GdpHRgQcfa++OnQ=
github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
github.com/yasushi-saito/zlibng v0.0.0-20190905015749-ec536402779e/go.mod h1:qD8maXXiM82RPOfKUGWetL74si8WnsRS7LNPDWK7byI=
github.com/yasushi-saito/zlibng v0.0.0-20190922135643-2a860060b80c/go.mod h1:fmRgeAuoXV70NcmjNe3PyhylzfGSgyLv9nZaW/I/C7Q=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA=
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20171017063910-8dbc5d05d6ed/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.0.0-20190902003836-43865b531bee/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
k8s.io/api v0.0.0-20181213150558-05914d821849/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA=
k8s.io/apimachinery v0.0.0-20181127025237-2b1284ed4c93/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0=
k8s.io/client-go v10.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/goversion v1.0.0/go.mod h1:Eih9y/uIBS3ulggl7KNJ09xGSLcuNaLgmvvqa07sgfo=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
v.io v0.1.5/go.mod h1:Apu/AQfn7lq+o3m+ReLtlrKxkZTTo2p6mLXlioAUWA0=
v.io v0.1.15/go.mod h1:Ort0a9YYK5eDJZ1Bc5m5hroWkygXzkifJzmlRpaGbWk=
v.io/x/lib v0.1.4/go.mod h1:maU79RWqiiC9ARbvS+2Q8tqZUnQiHxeJDriXcW7cYg8=
v.io/x/lib v0.1.6/go.mod h1:aLm+mPXyXf4Vd/n+1f4LcSQFFgqNhNzwQvHYfXoOLlE=
v.io/x/lib v0.1.7/go.mod h1:aLm+mPXyXf4Vd/n+1f4LcSQFFgqNhNzwQvHYfXoOLlE=
v.io/x/ref/internal/logger v0.1.1/go.mod h1:00nuJdZEVCzMOn9y474jZ+e6B9R/ydLW7d6IQFl/NHU=
v.io/x/ref/lib/flags/sitedefaults v0.1.1/go.mod h1:ew4Igo60KMBDYhnxH6l7P+qBCJiqR8PVp7fJJYGqILA=


================================================
FILE: main.go
================================================
package main

import (
	_ "embed"
	"github.com/zeppelinmc/zeppelin/properties"
	"math/rand"
	"os"
	"runtime"
	"runtime/debug"
	"runtime/pprof"
	"slices"
	"strconv"
	"time"

	"github.com/zeppelinmc/zeppelin/commands"
	"github.com/zeppelinmc/zeppelin/server"
	"github.com/zeppelinmc/zeppelin/server/command"
	"github.com/zeppelinmc/zeppelin/server/world"
	"github.com/zeppelinmc/zeppelin/util"
	"github.com/zeppelinmc/zeppelin/util/console"
	"github.com/zeppelinmc/zeppelin/util/log"
	"golang.org/x/term"
)

var timeStart = time.Now()

func main() {
	log.Infolnf("Zeppelin 1.21 Minecraft server with %s on platform %s-%s", runtime.Version(), runtime.GOOS, runtime.GOARCH)

	max, ok := console.GetFlag("xmem")
	if ok {
		m, err := util.ParseSizeUnit(max)
		if err == nil {
			debug.SetMemoryLimit(int64(m))
			log.Infolnf("Memory usage is limited to %s", util.FormatSizeUnit(m))
		}
	}

	if slices.Index(os.Args, "--cpuprof") != -1 {
		if f, err := os.Create("zeppelin-cpu-profile"); err == nil {
			pprof.StartCPUProfile(f)
			log.Infoln("Started CPU profiler (writing to zeppelin-cpu-profile)")

			defer func() {
				log.Infoln("Stopped CPU profiler")
				pprof.StopCPUProfile()
				f.Close()
			}()
		}
	}

	if slices.Index(os.Args, "--memprof") != -1 {
		defer func() {
			log.InfolnClean("Writing memory profile to zeppelin-mem-profile")
			f, _ := os.Create("zeppelin-mem-profile")
			pprof.Lookup("allocs").WriteTo(f, 0)
			f.Close()
		}()
	}

	cfg := loadConfig()
	if cfg.LevelSeed == "" {
		cfg.LevelSeed = strconv.FormatInt(rand.Int63(), 10)
	}

	w, err := world.NewWorld(cfg)
	if err != nil {
		log.Errorlnf("Error preparing level: %v", w)
		return
	}

	log.Infof("Binding server to %s:%d\n", cfg.ServerIp, cfg.ServerPort)

	rawTerminal := slices.Index(os.Args, "--no-raw-terminal") == -1

	srv, err := server.New(cfg, w)
	if err != nil {
		log.Errorln("Error binding server:", err)
		return
	}
	srv.CommandManager = command.NewManager(srv, commands.Commands...)
	if rawTerminal {
		oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
		if err != nil {
			panic(err)
		}

		go console.StartRawConsole(srv)

		defer term.Restore(int(os.Stdin.Fd()), oldState)
	} else {
		go console.StartConsole(srv)
	}
	srv.Start(timeStart)
}

func loadConfig() properties.ServerProperties {
	file, err := os.ReadFile("server.properties")
	if err != nil {
		file, err := os.Create("server.properties")
		if err == nil {
			properties.Marshal(file, properties.Default)
			file.Close()
		}
		return properties.Default
	}
	var cfg properties.ServerProperties

	err = properties.Unmarshal(string(file), &cfg)
	if err != nil {
		cfg = properties.Default
	}

	return cfg
}


================================================
FILE: properties/decode.go
================================================
// Package properties provides parsing of .properties files
package properties

import (
	"fmt"
	"reflect"
	"strconv"
	"strings"
)

// Unmarshal decodes the properties file
func Unmarshal(src string, dst any) error {
	properties := strings.Split(src, "\n")
	val := reflect.ValueOf(dst)

	switch val.Kind() {
	case reflect.Pointer:
		val = val.Elem()
		switch val.Kind() {
		case reflect.Struct:
			return unmarshalStruct(properties, structMap(val))
		default:
			return fmt.Errorf("Unmarshal excepts a pointer of a struct or map, not %s", val.Kind())
		}
	default:
		return fmt.Errorf("Unmarshal excepts a pointer of a struct or map, not %s", val.Kind())
	}
}

func unmarshalStruct(props []string, v map[string]reflect.Value) error {
	for _, line := range props {
		if len(line) == 0 {
			continue //comment
		}
		if line[0] == '#' {
			continue //comment
		}
		if line[0] == '!' {
			continue //comment
		}

		var key, value string
		for i, char := range line {
			if char == '=' || char == ':' || char == ' ' {
				key = line[:i]
				if i != len(line)-2 {
					value = line[i+1:]
				}
				break
			}
		}

		if value == "" {
			continue
		}

		value = strings.TrimSpace(value)
		value = strings.ReplaceAll(value, "\\n", "\n")
		value = strings.ReplaceAll(value, "\\r", "\r")
		value = strings.ReplaceAll(value, "\\t", "\t")

		field, ok := v[key]
		if !ok {
			continue
		}

		switch field.Kind() {
		case reflect.String:
			field.SetString(value)
		case reflect.Bool:
			switch value {
			case "true":
				field.SetBool(true)
			case "false":
				field.SetBool(false)
			default:
				return fmt.Errorf("unsupported value %s for type boolean", value)
			}
		case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
			i, err := strconv.ParseInt(value, 10, field.Type().Bits())
			if err != nil {
				return fmt.Errorf("unsupported value %s for type integer: %v", value, err)
			}
			field.SetInt(i)
		case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
			i, err := strconv.ParseUint(value, 10, field.Type().Bits())
			if err != nil {
				return fmt.Errorf("unsupported value %s for type integer: %v", value, err)
			}
			field.SetUint(i)
		}
	}

	return nil
}

func structMap(val reflect.Value) map[string]reflect.Value {
	var sm = make(map[string]reflect.Value, val.NumField())

	vt := val.Type()
	for i := 0; i < val.NumField(); i++ {
		ft := vt.Field(i)
		fv := val.Field(i)

		if !ft.IsExported() {
			continue
		}
		name := ft.Name
		propName, ok := ft.Tag.Lookup("properties")
		if ok {
			if propName == "-" {
				continue
			}
			name = propName
			if i := strings.Index(name, ",omitempty"); i != -1 {
				name = name[:i]
			}
		}
		if name == "" {
			name = ft.Name
		}

		sm[name] = fv
	}

	return sm
}


================================================
FILE: properties/encode.go
================================================
package properties

import (
	"fmt"
	"io"
	"reflect"
	"strings"
	"unsafe"
)

// Marshal encodes the properties file
func Marshal(dst io.Writer, p any) error {
	val := reflect.ValueOf(p)
	switch val.Kind() {
	case reflect.Struct:
		return encodePropsStruct(dst, val)
	default:
		return fmt.Errorf("Marshal excepts a struct or map, not %s", val.Kind())
	}
}

func encodePropsStruct(dst io.Writer, v reflect.Value) error {
	vt := v.Type()
	for i := 0; i < v.NumField(); i++ {
		tf := vt.Field(i)
		vf := v.Field(i)
		name, ok, omitempty := name(tf)
		if !ok {
			continue
		}
		if omitempty && vf.IsZero() {
			continue
		}

		if i != 0 {
			if err := writeString(dst, "\n"); err != nil {
				return err
			}
		}

		if err := writeString(dst, name+"="); err != nil {
			return err
		}

		switch vf.Kind() {
		case reflect.String, reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
			if err := writeString(dst, fmt.Sprint(vf.Interface())); err != nil {
				return err
			}
		default:
			return fmt.Errorf("unsupported kind %s for encode struct", vf.Kind())
		}
	}

	return nil
}

func name(tf reflect.StructField) (n string, ok bool, omitempty bool) {
	if !tf.IsExported() {
		return "", false, false
	}
	name := tf.Name

	propName, ok := tf.Tag.Lookup("properties")
	if !ok {
		return name, true, false
	}
	if propName == "-" {
		return name, false, false
	}
	name = propName

	i := strings.Index(name, ",omitempty")
	if i == -1 {
		return name, true, false
	}

	name = name[:i]
	if name == "" {
		name = tf.Name
	}

	return name, true, true
}

func writeString(w io.Writer, str string) error {
	_, err := w.Write(unsafe.Slice(unsafe.StringData(str), len(str)))

	return err
}


================================================
FILE: properties/properties.go
================================================
// Package properties provides encoding and decoding of .properties files

package properties

type formatter string

func (f formatter) Rune() rune {
	return rune(f[0])
}

type ServerProperties struct {
	AcceptTransfers       bool   `properties:"accept-transfers"`
	AllowFlight           bool   `properties:"allow-flight"`
	AllowNether           bool   `properties:"allow-nether"`
	BroadcastConsoleToOps bool   `properties:"broadcast-console-to-ops"`
	BroadcastRconToOps    bool   `properties:"broadcast-rcon-to-ops"`
	Difficulty            string `properties:"difficulty"`

	EnableCommandBlock bool      `properties:"enable-command-block"`
	EnableRCON         bool      `properties:"enable-rcon"`
	EnableStatus       bool      `properties:"enable-status"`
	EnableQuery        bool      `properties:"enable-query"`
	EnableChat         bool      `properties:"enable-chat"`
	EnableEncryption   bool      `properties:"enable-encryption"`
	ChatFormatter      formatter `properties:"chat-formatter"`

	SystemChatFormat string `properties:"system-chat-format"`

	EnforceSecureProfile           bool   `properties:"enforce-secure-profile"`
	EnforceWhitelist               bool   `properties:"enforce-whitelist"`
	EntityBroadcastRangePrecentage int    `properties:"state-broadcast-range-precentage"`
	ForceGamemode                  bool   `properties:"force-gamemode"`
	FunctionPermissionLevel        int    `properties:"function-permission-level"`
	Gamemode                       string `properties:"gamemode"`
	GenerateStructures             bool   `properties:"generate-structures"`
	GeneratorSettings              string `properties:"generator-settings"`
	Hardcore                       bool   `properties:"hardcore"`
	HideOnlinePlayers              bool   `properties:"hide-online-players"`
	InitialDisabledPacks           string `properties:"initial-disabled-packs"`
	InitialEnabledPacks            string `properties:"initial-enabled-packs"`
	LevelName                      string `properties:"level-name"`
	LevelSeed                      string `properties:"level-seed"`
	LevelType                      string `properties:"level-type"`
	LogIPs                         bool   `properties:"log-ips"`
	MaxPlayers                     int    `properties:"max-players"`
	MOTD                           string `properties:"motd"`
	NetworkCompressionThreshold    int    `properties:"network-compression-threshold"`

	OnlineMode              bool   `properties:"online-mode"`
	OpPermissionLevel       int    `properties:"op-permission-level"`
	PlayerIdleTimeout       int    `properties:"player-idle-timeout"`
	PreventProxyConnections bool   `properties:"prevent-proxy-connections"`
	PvP                     bool   `properties:"pvp"`
	QueryPort               uint16 `properties:"query.port"`
	RCONPassword            string `properties:"rcon.password"`
	RCONPort                uint16 `properties:"rcon.port"`

	// NOTE: unlike java edition, this accepts deflate, lz4, none AND gzip.
	RegionFileCompression string `properties:"region-file-compression"`
	ResourcePack          string `properties:"resource-pack"`
	ResourcePackId        string `properties:"resource-pack-id"`
	ResourcePackSha1      string `properties:"resource-pack-sha1"`
	RequireResourcePack   string `properties:"require-resource-pack"`
	ServerIp              string `properties:"server-ip"`
	ServerPort            uint16 `properties:"server-port"`

	SimulationDistance int32 `properties:"simulation-distance"`

	SpawnMonsters   bool `properties:"spawn-monsters"`
	SpawnProtection int  `properties:"spawn-protection"`

	ViewDistance int32 `properties:"view-distance"`
	WhiteList    bool  `properties:"white-list"`
}

var Default = ServerProperties{
	AllowNether:                    true,
	BroadcastConsoleToOps:          true,
	BroadcastRconToOps:             true,
	Difficulty:                     "easy",
	EnableStatus:                   true,
	EnableChat:                     true,
	ChatFormatter:                  "§",
	EntityBroadcastRangePrecentage: 100,
	FunctionPermissionLevel:        2,
	Gamemode:                       "survival",
	GenerateStructures:             true,
	InitialEnabledPacks:            "vanilla",
	LevelName:                      "world",
	LevelType:                      "minecraft:normal",
	LogIPs:                         true,
	MaxPlayers:                     20,
	MOTD:                           "A Minecraft Server",
	NetworkCompressionThreshold:    256,
	OnlineMode:                     true,
	OpPermissionLevel:              4,
	PvP:                            true,
	QueryPort:                      25565,
	RCONPort:                       25575,
	RegionFileCompression:          "deflate",
	ServerPort:                     25565,
	SimulationDistance:             10,
	SpawnMonsters:                  true,
	SpawnProtection:                16,
	ViewDistance:                   10,
}


================================================
FILE: protocol/nbt/decoder.go
================================================
package nbt

import (
	"bytes"
	"fmt"
	"io"
	"math"
	"reflect"
	"strings"
	"sync"
	"unsafe"
)

var valueMap = sync.Pool{
	New: func() any {
		return make(map[string]reflect.Value)
	}}

func generateMap(v reflect.Value) map[string]reflect.Value {
	m := valueMap.Get().(map[string]reflect.Value)
	clear(m)
	ty := v.Type()
	for i := 0; i < v.NumField(); i++ {
		ft := ty.Field(i)

		if !ft.IsExported() {
			continue
		}

		found := ft.Name
		if n, ok := ft.Tag.Lookup("nbt"); ok {
			found = n
		}
		if i := strings.Index(found, ",omitempty"); i != -1 {
			found = found[:i]
		}

		m[found] = v.Field(i)
	}

	return m
}

const (
	End = iota
	Byte
	Short
	Int
	Long
	Float
	Double
	ByteArray
	String
	List
	Compound
	IntArray
	LongArray
)

type Decoder struct {
	rd io.Reader
	dontReadRootCompoundName,
	disallowUnknownFields bool
}

func NewDecoder(rd io.Reader) *Decoder {
	return &Decoder{rd: rd}
}

func (d *Decoder) ReadRootName(v bool) {
	d.dontReadRootCompoundName = !v
}

func (d *Decoder) DisallowUnknownFields(v bool) {
	d.disallowUnknownFields = v
}

// Unmarshal is the same as making a new decoder and using it on a bytes.Reader of the input
func Unmarshal(input []byte, v any) (rootName string, err error) {
	return NewDecoder(bytes.NewReader(input)).Decode(v)
}

func (d *Decoder) DecodeRootCompound(v any) (rootName string, err error) {
	val := reflect.ValueOf(v)
	if val.Kind() != reflect.Pointer {
		return "", fmt.Errorf("Decode expects a pointer")
	}
	val = val.Elem()

	if !d.dontReadRootCompoundName {
		rootName, err = d.readString()
		if err != nil {
			return
		}
	}

	switch val.Kind() {
	case reflect.Struct:
		m := generateMap(val)
		defer func() {
			clear(m)
			valueMap.Put(m)
		}()

		if err := d.decodeCompoundStruct(m); err != nil {
			return "", err
		}
	case reflect.Map:
		if val.IsNil() {
			val.Set(reflect.MakeMap(val.Type()))
		}
		if err := d.decodeCompoundMap(val); err != nil {
			return rootName, err
		}
	default:
		return rootName, fmt.Errorf("Decode expects a pointer of struct/map, not %s", val.Type())
	}

	return
}

// Decode will decode the nbt file into v and return the root name of the file
func (d *Decoder) Decode(v any) (rootName string, err error) {
	val := reflect.ValueOf(v)
	if val.Kind() != reflect.Pointer {
		return "", fmt.Errorf("Decode expects a pointer")
	}
	val = val.Elem()

	typeId, err := d.readByte()
	if err != nil {
		return "", err
	}
	if typeId != Compound {
		return "", fmt.Errorf("expected a compound first element")
	}

	if !d.dontReadRootCompoundName {
		rootName, err = d.readString()
		if err != nil {
			return
		}
	}

	switch val.Kind() {
	case reflect.Struct:
		m := generateMap(val)
		defer func() {
			clear(m)
			valueMap.Put(m)
		}()

		if err := d.decodeCompoundStruct(m); err != nil {
			return "", err
		}
	case reflect.Map:
		if val.IsNil() {
			val.Set(reflect.MakeMap(val.Type()))
		}
		if err := d.decodeCompoundMap(val); err != nil {
			return rootName, err
		}
	default:
		return rootName, fmt.Errorf("Decode expects a pointer of struct/map, not %s", val.Type())
	}

	return
}

func (d *Decoder) decodeCompoundMap(_map reflect.Value) error {
	var typeId [1]byte
	for {
		err := d.readTo(typeId[:])
		if err != nil {
			return err
		}
		if typeId[0] == End {
			return nil
		}

		name, err := d.readString()
		if err != nil {
			return err
		}

		nameVal := reflect.ValueOf(name)
		switch typeId[0] {
		case Byte:
			d, err := d.readByte()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Uint8:
				_map.SetMapIndex(nameVal, reflect.ValueOf(uint8(d)))
			case reflect.Int8:
			case reflect.Bool:
				_map.SetMapIndex(nameVal, reflect.ValueOf(*(*bool)(unsafe.Pointer(&d))))
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign byte to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case Short:
			d, err := d.readShort()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Uint16:
				_map.SetMapIndex(nameVal, reflect.ValueOf(uint16(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign short to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case Int:
			d, err := d.readInt()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Uint32:
				_map.SetMapIndex(nameVal, reflect.ValueOf(uint32(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign int to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case Long:
			d, err := d.readLong()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Uint64:
				_map.SetMapIndex(nameVal, reflect.ValueOf(uint64(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign long to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case String:
			d, err := d.readString()
			if err != nil {
				return err
			}

			if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
				_map.SetMapIndex(nameVal, reflect.ValueOf(d))
			} else {
				if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
				} else {
					return fmt.Errorf("cannot assign string to type %s for field %s", _map.Type().Elem(), name)
				}
			}
		case Float:
			d, err := d.readFloat()
			if err != nil {
				return err
			}

			if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
				_map.SetMapIndex(nameVal, reflect.ValueOf(d))
			} else {
				if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
				} else {
					return fmt.Errorf("cannot assign float to type %s for field %s", _map.Type().Elem(), name)
				}
			}
		case Double:
			d, err := d.readDouble()
			if err != nil {
				return err
			}

			if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
				_map.SetMapIndex(nameVal, reflect.ValueOf(d))
			} else {
				if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
				} else {
					return fmt.Errorf("cannot assign double to type %s for field %s", _map.Type().Elem(), name)
				}
			}
		case ByteArray:
			d, err := d.readByteArray()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Slice:
				switch _map.Type().Elem().Elem().Kind() {
				case reflect.Int8:
					_map.SetMapIndex(nameVal, reflect.ValueOf(*(*[]int8)(unsafe.Pointer(&d))))
				}
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign byte array to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case IntArray:
			d, err := d.readIntArray()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Slice:
				switch _map.Type().Elem().Elem().Kind() {
				case reflect.Uint32:
					_map.SetMapIndex(nameVal, reflect.ValueOf(*(*[]uint32)(unsafe.Pointer(&d))))
				}
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign int array to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case LongArray:
			d, err := d.readLongArray()
			if err != nil {
				return err
			}

			switch _map.Type().Elem().Kind() {
			case reflect.Slice:
				switch _map.Type().Elem().Elem().Kind() {
				case reflect.Uint64:
					_map.SetMapIndex(nameVal, reflect.ValueOf(*(*[]uint64)(unsafe.Pointer(&d))))
				}
			default:
				if reflect.TypeOf(d).AssignableTo(_map.Type().Elem()) {
					_map.SetMapIndex(nameVal, reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(_map.Type().Elem()) {
						_map.SetMapIndex(nameVal, reflect.ValueOf(d).Convert(_map.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign long array to type %s for field %s", _map.Type().Elem(), name)
					}
				}
			}
		case List:
			switch _map.Type().Elem().Kind() {
			case reflect.Slice:
				s := reflect.MakeSlice(_map.Type().Elem(), 0, 0)
				d.decodeList(s)
				_map.SetMapIndex(nameVal, s)
			case reflect.Array:
				s := reflect.New(_map.Type().Elem()).Elem()
				d.decodeList(s)
				_map.SetMapIndex(nameVal, s)
			}
		case Compound:
			switch _map.Type().Elem().Kind() {
			case reflect.Map:
				s := reflect.MakeMap(_map.Type().Elem())
				if err := d.decodeCompoundMap(s); err != nil {
					return err
				}
				_map.SetMapIndex(nameVal, s)
			case reflect.Struct:
				z := reflect.New(_map.Type().Elem()).Elem()
				m := generateMap(z)
				defer func() {
					clear(m)
					valueMap.Put(m)
				}()

				if err := d.decodeCompoundStruct(m); err != nil {
					return err
				}
				_map.SetMapIndex(nameVal, z)
			case reflect.Interface:
				if _map.Type().Elem().NumMethod() == 0 {
					s := reflect.MakeMap(reflect.TypeOf(map[string]any{}))

					if err := d.decodeCompoundMap(s); err != nil {
						return err
					}
					_map.SetMapIndex(nameVal, s)
					continue
				}
				fallthrough
			default:
				return fmt.Errorf("cannot assign compound to type %s on field %s", _map.Type().Elem(), name)
			}
		default:
			return fmt.Errorf("unknown tag %d", typeId[0])
		}
	}
}

func (d *Decoder) decodeCompoundStruct(_struct map[string]reflect.Value) error {
	var typeId [1]byte
	for {
		err := d.readTo(typeId[:])
		if err != nil {
			return err
		}
		if typeId[0] == End {
			return nil
		}

		name, err := d.readString()
		if err != nil {
			return err
		}

		var z, valid = _struct[name]

		switch typeId[0] {
		case Byte:
			d, err := d.readByte()
			if err != nil {
				return err
			}
			if valid {
				switch z.Kind() {
				case reflect.Uint8:
					z.SetUint(uint64(d))
				case reflect.Int8:
					z.SetInt(int64(d))
				case reflect.Bool:
					z.SetBool(*(*bool)(unsafe.Pointer(&d)))
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign byte to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case Short:
			d, err := d.readShort()
			if err != nil {
				return err
			}

			if valid {
				switch z.Kind() {
				case reflect.Uint16:
					z.SetUint(uint64(d))
				case reflect.Int16:
					z.SetInt(int64(d))
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign short to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case Int:
			d, err := d.readInt()
			if err != nil {
				return err
			}

			if valid {
				switch z.Type().Kind() {
				case reflect.Uint32, reflect.Uint:
					z.SetUint(uint64(d))
				case reflect.Int32, reflect.Int:
					z.SetInt(int64(d))
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign int to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case Long:
			d, err := d.readLong()
			if err != nil {
				return err
			}

			if valid {
				switch z.Type().Kind() {
				case reflect.Uint64:
					z.SetUint(uint64(d))
				case reflect.Int64:
					z.SetInt(d)
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign long to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case String:
			d, err := d.readString()
			if err != nil {
				return err
			}

			if valid {
				if reflect.TypeOf(d).AssignableTo(z.Type()) {
					z.Set(reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
						z.Set(reflect.ValueOf(d).Convert(z.Type()))
					} else {
						return fmt.Errorf("cannot assign string to type %s for field %s", z.Type(), name)
					}
				}
			}
		case Float:
			d, err := d.readFloat()

			if err != nil {
				return err
			}

			if valid {
				if reflect.TypeOf(d).AssignableTo(z.Type()) {
					z.Set(reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
						z.Set(reflect.ValueOf(d).Convert(z.Type().Elem()))
					} else {
						return fmt.Errorf("cannot assign float to type %s for field %s", z.Type(), name)
					}
				}
			}
		case Double:
			d, err := d.readDouble()
			if err != nil {
				return err
			}

			if valid {
				if reflect.TypeOf(d).AssignableTo(z.Type()) {
					z.Set(reflect.ValueOf(d))
				} else {
					if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
						z.Set(reflect.ValueOf(d).Convert(z.Type()))
					} else {
						return fmt.Errorf("cannot assign double to type %s for field %s", z.Type(), name)
					}
				}
			}
		case ByteArray:
			d, err := d.readByteArray()
			if err != nil {
				return err
			}

			if valid {
				switch z.Type().Kind() {
				case reflect.Slice:
					switch z.Type().Elem().Kind() {
					case reflect.Int8:
						z.Set(reflect.ValueOf(*(*[]int8)(unsafe.Pointer(&d))))
					case reflect.Uint8:
						z.Set(reflect.ValueOf(d))
					}
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign byte array to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case IntArray:
			d, err := d.readIntArray()

			if err != nil {
				return err
			}

			if valid {
				switch z.Type().Kind() {
				case reflect.Slice:
					switch z.Type().Elem().Kind() {
					case reflect.Uint32:
						z.Set(reflect.ValueOf(*(*[]uint32)(unsafe.Pointer(&d))))
					case reflect.Int32:
						z.Set(reflect.ValueOf(d))
					}
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign int array to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case LongArray:
			d, err := d.readLongArray()
			if err != nil {
				return err
			}

			if valid {
				switch z.Type().Kind() {
				case reflect.Slice:
					switch z.Type().Elem().Kind() {
					case reflect.Uint64:
						z.Set(reflect.ValueOf(*(*[]uint64)(unsafe.Pointer(&d))))
					case reflect.Int64:
						z.Set(reflect.ValueOf(d))
					}
				default:
					if reflect.TypeOf(d).AssignableTo(z.Type()) {
						z.Set(reflect.ValueOf(d))
					} else {
						if reflect.TypeOf(d).ConvertibleTo(z.Type()) {
							z.Set(reflect.ValueOf(d).Convert(z.Type()))
						} else {
							return fmt.Errorf("cannot assign long array to type %s for field %s", z.Type(), name)
						}
					}
				}
			}
		case List:
			if valid {
				switch z.Type().Kind() {
				case reflect.Slice:
					d.decodeList(z)
				case reflect.Array:
					s := reflect.New(z.Type()).Elem()
					d.decodeList(s)
					z.Set(s)
				}
			} else {
				d._decodeList()
			}
		case Compound:
			if valid {
				switch z.Type().Kind() {
				case reflect.Struct:
					m := generateMap(_struct[name])
					defer valueMap.Put(m)

					if err := d.decodeCompoundStruct(m); err != nil {
						return err
					}
				case reflect.Interface:
					if z.Type().NumMethod() == 0 {
						s := reflect.MakeMap(reflect.TypeOf(map[string]any{}))

						if err := d.decodeCompoundMap(s); err != nil {
							return err
						}
						z.Set(s)
						continue
					}
					fallthrough
				case reflect.Map:
					s := reflect.MakeMap(z.Type())
					if err := d.decodeCompoundMap(s); err != nil {
						return err
					}
					z.Set(s)
				default:
					return fmt.Errorf("cannot assign compound to type %s on field %s", z.Type(), name)
				}
			} else {
				d.decodeCompound()
			}
		default:
			return fmt.Errorf("unknown tag %d", typeId[0])
		}
	}
}

// TODO add byte, int, long array IMPORTANT!
func (d *Decoder) decodeList(list reflect.Value) error {
	typeId, err := d.readByte()
	if err != nil {
		return err
	}
	length, err := d.readInt()
	if err != nil {
		return err
	}
	if list.Len() < int(length) {
		switch list.Kind() {
		case reflect.Slice:
			list.Set(reflect.MakeSlice(list.Type(), int(length), int(length)))
		case reflect.Array:
			return fmt.Errorf("list of size %d is too big for array %s", length, list.Type())
		}
	}

	for i := 0; i < int(length); i++ {
		switch typeId {
		case Byte:
			d, err := d.readByte()
			if err != nil {
				return err
			}

			switch list.Type().Elem().Kind() {
			case reflect.Uint8:
				list.Index(i).Set(reflect.ValueOf(uint8(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
					list.Index(i).Set(reflect.ValueOf(d))
				} else {
					return fmt.Errorf("cannot assign byte to type %s for index %d", list.Type().Elem(), i)
				}
			}
		case Short:
			d, err := d.readShort()
			if err != nil {
				return err
			}

			switch list.Type().Elem().Kind() {
			case reflect.Uint16:
				list.Index(i).Set(reflect.ValueOf(uint16(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
					list.Index(i).Set(reflect.ValueOf(d))
				} else {
					return fmt.Errorf("cannot assign short to type %s for index %d", list.Type().Elem(), i)
				}
			}
		case Int:
			d, err := d.readInt()
			if err != nil {
				return err
			}

			switch list.Type().Elem().Kind() {
			case reflect.Uint32:
				list.Index(i).Set(reflect.ValueOf(uint32(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
					list.Index(i).Set(reflect.ValueOf(d))
				} else {
					return fmt.Errorf("cannot assign int to type %s for index %d", list.Type().Elem(), i)
				}
			}
		case Long:
			d, err := d.readLong()
			if err != nil {
				return err
			}

			switch list.Type().Elem().Kind() {
			case reflect.Uint64:
				list.Index(i).Set(reflect.ValueOf(uint64(d)))
			default:
				if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
					list.Index(i).Set(reflect.ValueOf(d))
				} else {
					return fmt.Errorf("cannot assign long to type %s for index %d", list.Type().Elem(), i)
				}
			}
		case Float:
			d, err := d.readFloat()
			if err != nil {
				return err
			}

			if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
				list.Index(i).Set(reflect.ValueOf(d))
			} else {
				return fmt.Errorf("cannot assign float to type %s for index %d", list.Type().Elem(), i)
			}
		case Double:
			d, err := d.readDouble()
			if err != nil {
				return err
			}

			if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
				list.Index(i).Set(reflect.ValueOf(d))
			} else {
				return fmt.Errorf("cannot assign double to type %s for index %d", list.Type().Elem(), i)
			}
		case String:
			d, err := d.readString()
			if err != nil {
				return err
			}

			if reflect.TypeOf(d).AssignableTo(list.Type().Elem()) {
				list.Index(i).Set(reflect.ValueOf(d))
			} else {
				return fmt.Errorf("cannot assign string to type %s for index %d", list.Type().Elem(), i)
			}
		case Compound:
			switch list.Type().Elem().Kind() {
			case reflect.Struct:
				m := generateMap(list.Index(i))
				defer valueMap.Put(m)

				if err := d.decodeCompoundStruct(m); err != nil {
					return err
				}
			case reflect.Map:
				list.Index(i).Set(reflect.MakeMap(list.Type().Elem()))
				if err := d.decodeCompoundMap(list.Index(i)); err != nil {
					return err
				}
			default:
				return fmt.Errorf("cannot assign compound to type %s on index %d", list.Type().Elem(), i)
			}
		case List:
			switch list.Type().Elem().Kind() {
			case reflect.Slice:
				list.Index(i).Set(reflect.MakeSlice(list.Type().Elem(), 0, 0))
				fallthrough
			case reflect.Array:
				if err := d.decodeList(list.Index(i)); err != nil {
					return err
				}
			default:
				return fmt.Errorf("cannot assign list to type %s on index %d", list.Type().Elem(), i)
			}
		default:
			return fmt.Errorf("unknown tag %d", typeId)
		}
	}

	return nil
}

func (d *Decoder) decodeCompound() error {
	for {
		typeId, err := d.readByte()
		if err != nil {
			return err
		}

		if typeId == End {
			return nil
		}
		_, err = d.readString()
		if err != nil {
			return err
		}

		switch typeId {
		case Byte:
			_, err := d.readByte()
			if err != nil {
				return err
			}
		case Short:
			_, err := d.readShort()
			if err != nil {
				return err
			}
		case Int:
			_, err := d.readInt()
			if err != nil {
				return err
			}
		case Long:
			_, err := d.readLong()
			if err != nil {
				return err
			}
		case Float:
			_, err := d.readFloat()
			if err != nil {
				return err
			}
		case Double:
			_, err := d.readDouble()
			if err != nil {
				return err
			}
		case ByteArray:
			_, err := d.readByteArray()
			if err != nil {
				return err
			}
		case IntArray:
			_, err := d.readIntArray()
			if err != nil {
				return err
			}
		case LongArray:
			_, err := d.readLongArray()
			if err != nil {
				return err
			}
		case String:
			_, err := d.readString()
			if err != nil {
				return err
			}
		case Compound:
			if err := d.decodeCompound(); err != nil {
				return err
			}
		case List:
			if err := d._decodeList(); err != nil {
				return err
			}
		}
	}
}

func (d *Decoder) _decodeList() error {
	typeId, err := d.readByte()
	if err != nil {
		return err
	}
	length, err := d.readInt()
	if err != nil {
		return err
	}
	for i := 0; i < int(length); i++ {
		switch typeId {
		case Byte:
			if _, err := d.readByte(); err != nil {
				return err
			}
		case Short:
			if _, err := d.readShort(); err != nil {
				return err
			}
		case Int:
			if _, err := d.readInt(); err != nil {
				return err
			}
		case Long:
			if _, err := d.readLong(); err != nil {
				return err
			}
		case Float:
			if _, err := d.readFloat(); err != nil {
				return err
			}
		case Double:
			if _, err := d.readDouble(); err != nil {
				return err
			}
		case String:
			if _, err := d.readString(); err != nil {
				return err
			}
		case List:
			if err := d._decodeList(); err != nil {
				return err
			}
		case Compound:
			if err := d.decodeCompound(); err != nil {
				return err
			}
		case ByteArray:
			if _, err := d.readByteArray(); err != nil {
				return err
			}
		case IntArray:
			if _, err := d.readIntArray(); err != nil {
				return err
			}
		case LongArray:
			if _, err := d.readLongArray(); err != nil {
				return err
			}
		}
	}
	return nil
}

func (d *Decoder) readByte() (int8, error) {
	var data [1]byte
	_, err := d.rd.Read(data[:])
	return int8(data[0]), err
}

func (d *Decoder) readTo(t []byte) error {
	_, err := d.rd.Read(t)
	return err
}

func (d *Decoder) readShort() (int16, error) {
	var data [2]byte
	_, err := d.rd.Read(data[:])

	return int16(data[0])<<8 | int16(data[1]), err
}

func (d *Decoder) readInt() (int32, error) {
	var data [4]byte
	_, err := d.rd.Read(data[:])

	return int32(data[0])<<24 | int32(data[1])<<16 | int32(data[2])<<8 | int32(data[3]), err
}

func (d *Decoder) readLong() (int64, error) {
	var data [8]byte
	_, err := d.rd.Read(data[:])

	return int64(data[0])<<56 | int64(data[1])<<48 | int64(data[2])<<40 | int64(data[3])<<32 | int64(data[4])<<24 | int64(data[5])<<16 | int64(data[6])<<8 | int64(data[7]), err
}

func (d *Decoder) readFloat() (float32, error) {
	i, err := d.readInt()
	return math.Float32frombits(uint32(i)), err
}

func (d *Decoder) readDouble() (float64, error) {
	i, err := d.readLong()
	return math.Float64frombits(uint64(i)), err
}

func (d *Decoder) readString() (string, error) {
	l, err := d.readShort()

	if err != nil {
		return "", err
	}

	if l < 0 {
		return "", fmt.Errorf("negative length for make (read string)")
	}

	var data = make([]byte, l)
	_, err = d.rd.Read(data)
	return string(data), err
}

func (d *Decoder) readByteArray() ([]byte, error) {
	l, err := d.readInt()
	if err != nil {
		return nil, err
	}

	if l < 0 {
		return nil, fmt.Errorf("negative length for make (read byte array)")
	}

	var data = make([]byte, l)
	_, err = d.rd.Read(data)

	return data, err
}

func (d *Decoder) readIntArray() ([]int32, error) {
	l, err := d.readInt()
	if err != nil {
		return nil, err
	}
	if l < 0 {
		return nil, fmt.Errorf("negative length for make (read int array)")
	}
	var data = make([]byte, l*4)
	_, err = d.rd.Read(data)
	if err != nil {
		return nil, err
	}

	var sl = make([]int32, l)

	for i := range sl {
		sl[i] = int32(data[i*4+0])<<24 | int32(data[i*4+1])<<16 | int32(data[i*4+2])<<8 | int32(data[i*4+3])
	}
	return sl, nil
}

func (d *Decoder) readLongArray() ([]int64, error) {
	l, err := d.readInt()
	if err != nil {
		return nil, err
	}
	if l < 0 {
		return nil, fmt.Errorf("negative length for make (read long array)")
	}
	var data = make([]byte, l*8)
	_, err = d.rd.Read(data)

	if err != nil {
		return nil, err
	}

	var sl = make([]int64, l)

	for i := range sl {
		sl[i] = int64(data[i*8+0])<<56 | int64(data[i*8+1])<<48 | int64(data[i*8+2])<<40 | int64(data[i*8+3])<<32 | int64(data[i*8+4])<<24 | int64(data[i*8+5])<<16 | int64(data[i*8+6])<<8 | int64(data[i*8+7])
	}
	return sl, nil
}


================================================
FILE: protocol/nbt/encoder.go
================================================
package nbt

import (
	"encoding/binary"
	"fmt"
	"io"
	"math"
	"reflect"
	"strings"
	"unsafe"
)

type Encoder struct {
	w                         io.Writer
	dontWriteRootCompoundName bool
}

func NewEncoder(w io.Writer) *Encoder {
	return &Encoder{w: w}
}

func (e *Encoder) Encode(name string, v any) error {
	if err := e.writeByte(Compound); err != nil {
		return err
	}
	if !e.dontWriteRootCompoundName {
		if err := e.writeString(name); err != nil {
			return err
		}
	}
	val := reflect.ValueOf(v)
	switch val.Kind() {
	case reflect.Struct:
		return e.encodeCompoundStruct(val)
	case reflect.Map:
		return e.encodeCompoundMap(val)
	default:
		return fmt.Errorf("Encode expects map/struct, not %s", val.Type())
	}
}

func (e *Encoder) WriteRootName(val bool) {
	e.dontWriteRootCompoundName = !val
}

func (e *Encoder) writeBytes(b ...byte) error {
	_, err := e.w.Write(b)
	return err
}

func (e *Encoder) writeByte(b int8) error {
	return e.writeBytes(byte(b))
}

func (e *Encoder) writeShort(s int16) error {
	return e.writeBytes(
		byte(s>>8),
		byte(s),
	)
}

func (e *Encoder) writeInt(i int32) error {
	return e.writeBytes(
		byte(i>>24),
		byte(i>>16),
		byte(i>>8),
		byte(i),
	)
}

func (e *Encoder) writeLong(l int64) error {
	return e.writeBytes(
		byte(l>>56),
		byte(l>>48),
		byte(l>>40),
		byte(l>>32),
		byte(l>>24),
		byte(l>>16),
		byte(l>>8),
		byte(l),
	)
}

func (e *Encoder) writeFloat(f float32) error {
	return e.writeInt(int32(math.Float32bits(f)))
}

func (e *Encoder) writeDouble(d float64) error {
	return e.writeLong(int64(math.Float64bits(d)))
}

func (e *Encoder) writeIntArray(il []int32) error {
	if err := e.writeInt(int32(len(il))); err != nil {
		return err
	}
	return binary.Write(e.w, binary.BigEndian, il)
}

func (e *Encoder) writeLongArray(ll []int64) error {
	if err := e.writeInt(int32(len(ll))); err != nil {
		return err
	}
	return binary.Write(e.w, binary.BigEndian, ll)
}

func (e *Encoder) writeString(s string) error {
	if err := e.writeShort(int16(len(s))); err != nil {
		return err
	}
	return e.writeBytes([]byte(s)...)
}

func (e *Encoder) encodeCompoundStruct(val reflect.Value) error {
	for i := 0; i < val.NumField(); i++ {
		tf := val.Type().Field(i)
		f := val.Field(i)
		if !tf.IsExported() {
			continue
		}
		name := tf.Name
		if v, ok := tf.Tag.Lookup("nbt"); ok {
			name = v
		}
		if name == "-" {
			continue
		}
		var omitempty bool

		i := strings.Index(name, ",omitempty")
		if i != -1 {
			name = name[:i]
			omitempty = true
		}

		if omitempty && f.IsZero() {
			continue
		}

		if f.Kind() == reflect.Interface {
			f = f.Elem()
		}
		switch f.Kind() {
		case reflect.Bool:
			if err := e.writeByte(Byte); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			b := f.Bool()
			if err := e.writeByte(*(*int8)(unsafe.Pointer(&b))); err != nil {
				return err
			}
		case reflect.Int8, reflect.Uint8:
			if err := e.writeByte(Byte); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeByte(int8(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeByte(int8(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Int16, reflect.Uint16:
			if err := e.writeByte(Short); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeShort(int16(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeShort(int16(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Int32, reflect.Uint32:
			if err := e.writeByte(Int); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeInt(int32(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeInt(int32(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Int64, reflect.Uint64:
			if err := e.writeByte(Long); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeLong(int64(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeLong(int64(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Float32:
			if err := e.writeByte(Float); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.writeFloat(float32(f.Float())); err != nil {
				return err
			}
		case reflect.Float64:
			if err := e.writeByte(Double); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.writeDouble(f.Float()); err != nil {
				return err
			}
		case reflect.String:
			if err := e.writeByte(String); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.writeString(f.String()); err != nil {
				return err
			}
		case reflect.Slice, reflect.Array:
			switch f.Type().Elem().Kind() {
			case reflect.Uint8, reflect.Int8:
				if err := e.writeByte(ByteArray); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}

				if err := e.writeInt(int32(f.Len())); err != nil {
					return err
				}
				for i := 0; i < f.Len(); i++ {
					val := f.Index(i)
					switch val.Kind() {
					case reflect.Int8:
						if err := e.writeByte(int8(val.Int())); err != nil {
							return err
						}
					case reflect.Uint8:
						if err := e.writeByte(int8(val.Uint())); err != nil {
							return err
						}
					}
				}
			case reflect.Uint32, reflect.Int32:
				if err := e.writeByte(IntArray); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.writeInt(int32(f.Len())); err != nil {
					return err
				}
				for i := 0; i < f.Len(); i++ {
					fi := f.Index(i)
					if f.CanUint() {
						if err := e.writeInt(int32(fi.Uint())); err != nil {
							return err
						}
					} else {
						if err := e.writeInt(int32(fi.Int())); err != nil {
							return err
						}
					}
				}
			case reflect.Uint64, reflect.Int64:
				if err := e.writeByte(LongArray); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.writeInt(int32(f.Len())); err != nil {
					return err
				}
				for i := 0; i < f.Len(); i++ {
					x := f.Index(i)

					if x.CanUint() {
						if err := e.writeLong(int64(x.Uint())); err != nil {
							return err
						}
					} else {
						if err := e.writeLong(x.Int()); err != nil {
							return err
						}
					}
				}
			default:
				if err := e.writeByte(List); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.encodeList(f); err != nil {
					return err
				}
			}
		case reflect.Struct:
			if err := e.writeByte(Compound); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.encodeCompoundStruct(f); err != nil {
				return err
			}
		case reflect.Map:
			if err := e.writeByte(Compound); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.encodeCompoundMap(f); err != nil {
				return err
			}
		}

	}
	return e.writeByte(0)
}

func (e *Encoder) encodeCompoundMap(val reflect.Value) error {
	for _, key := range val.MapKeys() {
		f := val.MapIndex(key)
		name := key.String()

		switch f.Kind() {
		case reflect.Bool:
			if err := e.writeByte(Byte); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			b := f.Bool()
			if err := e.writeByte(*(*int8)(unsafe.Pointer(&b))); err != nil {
				return err
			}
		case reflect.Int8, reflect.Uint8:
			if err := e.writeByte(Byte); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeByte(int8(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeByte(int8(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Int16, reflect.Uint16:
			if err := e.writeByte(Short); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeShort(int16(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeShort(int16(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Int32, reflect.Uint32:
			if err := e.writeByte(Int); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeInt(int32(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeInt(int32(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Int64, reflect.Uint64:
			if err := e.writeByte(Long); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if f.CanUint() {
				if err := e.writeLong(int64(f.Uint())); err != nil {
					return err
				}
			} else {
				if err := e.writeLong(int64(f.Int())); err != nil {
					return err
				}
			}
		case reflect.Float32:
			if err := e.writeByte(Float); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.writeFloat(float32(f.Float())); err != nil {
				return err
			}
		case reflect.Float64:
			if err := e.writeByte(Double); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.writeDouble(f.Float()); err != nil {
				return err
			}
		case reflect.String:
			if err := e.writeByte(String); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.writeString(f.String()); err != nil {
				return err
			}
		case reflect.Slice, reflect.Array:
			switch f.Type().Elem().Kind() {
			case reflect.Uint8, reflect.Int8:
				if err := e.writeByte(ByteArray); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.writeInt(int32(f.Len())); err != nil {
					return err
				}
				for i := 0; i < f.Len(); i++ {
					val := f.Index(i)
					switch val.Kind() {
					case reflect.Int8:
						if err := e.writeByte(int8(val.Int())); err != nil {
							return err
						}
					case reflect.Uint8:
						if err := e.writeByte(int8(val.Uint())); err != nil {
							return err
						}
					}
				}
			case reflect.Uint32, reflect.Int32:
				if err := e.writeByte(IntArray); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.writeIntArray(*(*[]int32)(f.UnsafePointer())); err != nil {
					return err
				}
			case reflect.Uint64, reflect.Int64:
				if err := e.writeByte(LongArray); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.writeLongArray(*(*[]int64)(f.UnsafePointer())); err != nil {
					return err
				}
			default:
				if err := e.writeByte(List); err != nil {
					return err
				}
				if err := e.writeString(name); err != nil {
					return err
				}
				if err := e.encodeList(f); err != nil {
					return err
				}
			}
		case reflect.Struct:
			if err := e.writeByte(Compound); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.encodeCompoundStruct(f); err != nil {
				return err
			}
		case reflect.Map:
			if err := e.writeByte(Compound); err != nil {
				return err
			}
			if err := e.writeString(name); err != nil {
				return err
			}
			if err := e.encodeCompoundMap(f); err != nil {
				return err
			}
		}

	}
	return e.writeByte(0)
}

func (e *Encoder) encodeList(val reflect.Value) error {
	if err := e.writeByte(e.tagFor(val.Type().Elem())); err != nil {
		return err
	}

	if err := e.writeInt(int32(val.Len())); err != nil {
		return err
	}

	for i := 0; i < val.Len(); i++ {
		f := val.Index(i)
		switch val.Type().Elem().Kind() {
		case reflect.Bool:

			b := f.Bool()
			if err := e.writeByte(*(*int8)(unsafe.Pointer(&b))); err != nil {
				return err
			}
		case reflect.Int8:
			if err := e.writeByte(int8(f.Int())); err != nil {
				return err
			}
		case reflect.Uint8:
			if err := e.writeByte(int8(f.Uint())); err != nil {
				return err
			}
		case reflect.Int16:
			if err := e.writeShort(int16(f.Int())); err != nil {
				return err
			}
		case reflect.Uint16:
			if err := e.writeShort(int16(f.Uint())); err != nil {
				return err
			}
		case reflect.Int32:
			if err := e.writeInt(int32(f.Int())); err != nil {
				return err
			}
		case reflect.Uint32:
			if err := e.writeInt(int32(f.Uint())); err != nil {
				return err
			}
		case reflect.Int64:
			if err := e.writeLong(f.Int()); err != nil {
				return err
			}
		case reflect.Uint64:
			if err := e.writeLong(int64(f.Uint())); err != nil {
				return err
			}
		case reflect.String:
			if err := e.writeString(f.String()); err != nil {
				return err
			}
		case reflect.Slice, reflect.Array:
			switch f.Type().Elem().Kind() {
			case reflect.Uint8, reflect.Int8:
				if err := e.writeInt(int32(f.Len())); err != nil {
					return err
				}
				for i := 0; i < f.Len(); i++ {
					val := f.Index(i)
					switch val.Kind() {
					case reflect.Int8:
						if err := e.writeByte(int8(val.Int())); err != nil {
							return err
						}
					case reflect.Uint8:
						if err := e.writeByte(int8(val.Uint())); err != nil {
							return err
						}
					}
				}
			case reflect.Uint32, reflect.Int32:
				if err := e.writeIntArray(*(*[]int32)(f.UnsafePointer())); err != nil {
					return err
				}
			case reflect.Uint64, reflect.Int64:
				if err := e.writeInt(int32(f.Len())); err != nil {
					return err
				}
				for i := 0; i < f.Len(); i++ {
					x := f.Index(i)

					if x.CanUint() {
						if err := e.writeLong(int64(x.Uint())); err != nil {
							return err
						}
					} else {
						if err := e.writeLong(x.Int()); err != nil {
							return err
						}
					}
				}
			default:
				if err := e.encodeList(f); err != nil {
					return err
				}
			}
		case reflect.Float32:
			if err := e.writeFloat(float32(f.Float())); err != nil {
				return err
			}
		case reflect.Float64:
			if err := e.writeDouble(f.Float()); err != nil {
				return err
			}
		case reflect.Struct:
			if err := e.encodeCompoundStruct(f); err != nil {
				return err
			}
		case reflect.Map:
			if err := e.encodeCompoundMap(f); err != nil {
				return err
			}
		}
	}
	return nil
}

func (e *Encoder) tagFor(typ reflect.Type) int8 {
	switch typ.Kind() {
	case reflect.Uint8, reflect.Int8, reflect.Bool:
		return Byte
	case reflect.Uint16, reflect.Int16:
		return Short
	case reflect.Uint32, reflect.Int32:
		return Int
	case reflect.Uint64, reflect.Int64:
		return Long
	case reflect.Float32:
		return Float
	case reflect.Float64:
		return Double
	case reflect.Struct, reflect.Map:
		return Compound
	case reflect.String:
		return String
	case reflect.Slice, reflect.Array:
		{
			switch typ.Elem().Kind() {
			case reflect.Uint8, reflect.Int8:
				return ByteArray
			case reflect.Uint32, reflect.Int32:
				return IntArray
			case reflect.Uint64, reflect.Int64:
				return LongArray
			default:
				return List
			}
		}
	default:
		return 0
	}
}


================================================
FILE: protocol/nbt/qnbt/abi.go
================================================
package qnbt

import (
	"unsafe"

	"github.com/oq-x/unsafe2"
)

type name struct {
	Bytes *byte
}

func (n name) exported() bool {
	return (*n.Bytes)&(1<<0) != 0
}

func (n name) hastag() bool {
	return (*n.Bytes)&(1<<1) != 0
}

func (n name) embedded() bool {
	return (*n.Bytes)&(1<<3) != 0
}

func (n name) rvi(off int) (int, int) {
	v := 0
	for i := 0; ; i++ {
		x := *n.data(off + i)
		v += int(x&0x7f) << (7 * i)
		if x&0x80 == 0 {
			return i + 1, v
		}
	}
}

func (n name) data(off int) *byte {
	return (*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(n.Bytes)) + uintptr(off)))
}

func (n name) name() string {
	i, l := n.rvi(1)
	return unsafe.String(n.data(i+1), l)
}

func (n name) tag() string {
	if !n.hastag() {
		return ""
	}
	i, l := n.rvi(1)
	i2, l2 := n.rvi(1 + i + l)
	return unsafe.String(n.data(1+i+l+i2), l2)
}

type structField struct {
	name name
	typ  *unsafe2.Type
	off  uintptr
}

type structType struct {
	unsafe2.Type
	pkgPath name
	fields  []structField
}

type ptrType struct {
	unsafe2.Type
	elem *unsafe2.Type
}

type arrayType struct {
	unsafe2.Type
	elem  *unsafe2.Type
	slice *unsafe2.Type
	len   uintptr
}

type mapType struct {
	unsafe2.Type
	key  *unsafe2.Type
	elem *unsafe2.Type
	// rest is unimportant
}

// returns the element of a pointer
func ptrelem(t *unsafe2.Type, v uintptr) (*unsafe2.Type, unsafe.Pointer) {
	ptr_t := *(*ptrType)(unsafe.Pointer(t))

	elem_t := ptr_t.elem

	return elem_t, unsafe.Pointer(v)
}

func kindOf(t *unsafe2.Type) uint8 {
	return t.Kind & kindm
}

const (
	kindm = (1 << 5) - 1
)

func kind_name(k uint8) string {
	switch k {
	case bool_k:
		return "bool"

	case int_k:
		return "int"
	case int8_k:
		return "int8"
	case int16_k:
		return "int16"
	case int32_k:
		return "int32"
	case int64_k:
		return "int64"

	case uint_k:
		return "uint"
	case uint8_k:
		return "uint8"
	case uint16_k:
		return "uint16"
	case uint32_k:
		return "uint32"
	case uint64_k:
		return "uint64"
	case uintptr_k:
		return "uintptr"

	case float32_k:
		return "float32"
	case float64_k:
		return "float64"
	case complex64_k:
		return "complex64"
	case complex128_k:
		return "complex128"

	case array_k:
		return "array"
	case chan_k:
		return "chan"
	case func_k:
		return "func"
	case interface_k:
		return "interface"
	case map_k:
		return "map"
	case pointer_k:
		return "pointer"
	case slice_k:
		return "slice"
	case string_k:
		return "string"
	case struct_k:
		return "struct"
	case unsafe_ptr_k:
		return "unsafe.Pointer"
	default:
		return "invalid"
	}
}

const (
	invalid_k uint8 = iota
	bool_k
	int_k
	int8_k
	int16_k
	int32_k
	int64_k
	uint_k
	uint8_k
	uint16_k
	uint32_k
	uint64_k
	uintptr_k
	float32_k
	float64_k
	complex64_k
	complex128_k
	array_k
	chan_k
	func_k
	interface_k
	map_k
	pointer_k
	slice_k
	string_k
	struct_k
	unsafe_ptr_k
)

func setSliceArray(s, a unsafe.Pointer, l int) {
	*(*uintptr)(s) = uintptr(a)
	*(*int)(unsafe.Add(s, ptrSize)) = l
	*(*int)(unsafe.Add(s, ptrSize*2)) = l
}

var ptrSize = unsafe.Sizeof(0)


================================================
FILE: protocol/nbt/qnbt/buffer.go
================================================
package qnbt

import (
	"io"
	"unsafe"
)

type bufferedReader struct {
	src io.Reader
	buf []byte

	r, w int
}

func (rd *bufferedReader) available() int {
	return rd.w - rd.r
}

func (rd *bufferedReader) readBytes(num int) ([]byte, error) {
	if err := rd.fill(num); err != nil {
		return nil, err
	}
	b := rd.buf[rd.r : rd.r+num]
	rd.r += num

	return b, nil
}

func (rd *bufferedReader) readBytesString(num int) (string, error) {
	b, err := rd.readBytes(num)
	if err != nil {
		return "", err
	}

	return unsafe.String(unsafe.SliceData(b), num), nil
}

func (rd *bufferedReader) fill(min int) error {
	if rd.available() < min {
		rd.r, rd.w = 0, copy(rd.buf, rd.buf[rd.r:rd.w])

		for i := 0; i < 5; i++ {
			n, err := rd.src.Read(rd.buf[rd.w:])
			rd.w += n
			if err != nil {
				return err
			}

			min -= n
			if min <= 0 || rd.w == len(rd.buf) {
				return nil
			}
		}
		return io.ErrNoProgress
	}

	return nil
}

func (rd *bufferedReader) skip(n int) error {
	avail := rd.w - rd.r
	if avail > n {
		rd.r += n
		return nil
	}

	n -= avail
	rd.r += avail

	rd.r, rd.w = 0, copy(rd.buf, rd.buf[rd.r:rd.w])

	for n > 0 {
		mx := n
		if mx >= len(rd.buf) {
			mx = len(rd.buf)
		}
		x, err := rd.src.Read(rd.buf[rd.w : rd.w+mx])
		rd.w += x
		rd.r += x
		if err != nil {
			return err
		}

		if rd.w == len(rd.buf) {
			rd.r, rd.w = 0, 0
		}

		n -= x
	}

	return nil
}


================================================
FILE: protocol/nbt/qnbt/decode.go
================================================
// deprecated: :(
package qnbt

import (
	"errors"
	"fmt"
	"io"
	"sync"
	"unsafe"

	"github.com/oq-x/unsafe2"
)

type MismatchError struct {
	// name of the field trying to decode
	name string
	// the type kind expected
	expectedKind string
	// the type kind got
	gotKind string
	// the tag got
	tag string
}

func (m MismatchError) Error() string {
	return fmt.Sprintf("MismatchError: tag %s (expected %s), got %s (while decoding %s)", m.tag, m.expectedKind, m.gotKind, m.name)
}

var (
	ErrExpectPointer = errors.New("expected a pointer for dst")
	ErrUnsupported   = errors.New("unsupported type")
	ErrUnknownTag    = errors.New("unknown tag")
)

var decoders = sync.Pool{
	New: func() any {
		return new(Decoder)
	},
}

var readers = sync.Pool{
	New: func() any {
		r := new(bufferedReader)
		r.buf = make([]byte, 1024)
		return r
	},
}

type Decoder struct {
	// if disallowUnknownKeys is enabled, the decoder will return an error if it reads a name not in the struct
	disallowUnknownKeys bool
	// if networkNBT is enabled, the name for the root compound will not be read
	networkNBT bool

	rd *bufferedReader
}

// Close closes the decoder for further use and puts it back in the decoder pool
func (d *Decoder) Close() {
	readers.Put(d.rd)
	d.rd = nil
	decoders.Put(d)
}

func NewDecoder(rd io.Reader) *Decoder {
	dc := decoders.Get().(*Decoder)
	dc.disallowUnknownKeys, dc.networkNBT = false, false
	dc.rd = &bufferedReader{
		src: rd,
		buf: make([]byte, 1024),
	}

	dc.rd = readers.Get().(*bufferedReader)
	dc.rd.buf, dc.rd.src, dc.rd.r, dc.rd.w = slicesize(dc.rd.buf, 1024), rd, 0, 0

	return dc
}

func slicesize(s []byte, l int) []byte {
	if l < len(s) {
		return s[:l]
	} else {
		return make([]byte, l)
	}
}

func (dc *Decoder) DisallowUnknownKeys(v bool) *Decoder {
	dc.disallowUnknownKeys = v
	return dc
}

func (dc *Decoder) NetworkNBT(v bool) *Decoder {
	dc.networkNBT = v
	return dc
}

func Unmarshal(data []byte, dst any) (rootName string, err error) {
	dc := decoders.Get().(*Decoder)
	defer decoders.Put(dc)

	dc.disallowUnknownKeys, dc.networkNBT = false, false

	dc.rd = readers.Get().(*bufferedReader)
	dc.rd.buf, dc.rd.src, dc.rd.r, dc.rd.w = data, nil, 0, len(data)

	return dc.DecodeAndClose(dst)
}

// DecodeAndClose decodes into dst and closes the decoder
func (d *Decoder) DecodeAndClose(dst any) (rootName string, err error) {
	defer d.Close()
	return d.Decode(dst)
}

func (d *Decoder) Decode(dst any) (rootName string, err error) {
	id := unsafe2.InterfaceData(dst)
	typ := (*unsafe2.Type)(unsafe.Pointer(id.Type))

	if kindOf(typ) != pointer_k {
		return rootName, ErrExpectPointer
	}

	typ, v := ptrelem(typ, id.Value)

	rootTagS, err := d.rd.readBytesString(1)
	if err != nil {
		return rootName, err
	}

	if !d.networkNBT {
		if err := d.readString(&rootName); err != nil {
			return rootName, err
		}
	}

	switch rootTagS {
	case string_t_b:
		if k := kindOf(typ); k != string_k {
			return rootName, MismatchError{
				expectedKind: "string",
				gotKind:      kind_name(k),
				tag:          tagName(rootTagS),
				name:         "root",
			}
		}
	case compound_t_b:
		switch k := kindOf(typ); k {
		case struct_k:
			typ := (*structType)(unsafe.Pointer(typ))
			s := newStruct(typ, v)
			defer structs.Put(s)

			if err := d.decodeStructCompound(s); err != nil {
				return rootName, err
			}
		default:
			return rootName, MismatchError{
				expectedKind: "struct",
				gotKind:      kind_name(k),
				tag:          tagName(rootTagS),
				name:         "root",
			}
		}
	default:
		return rootName, ErrUnsupported
	}

	return rootName, nil
}

func (d *Decoder) discardCompound() error {
	for {
		tag, err := d.readByte2()
		if err != nil {
			return err
		}

		if tag == end_t {
			return nil
		}
		if err := d.skipString(); err != nil {
			return err
		}

		s, err := d.discard(tag)
		if err != nil {
			return err
		}
		if !s {
			switch tag {
			case compound_t:
				if err := d.discardCompound(); err != nil {
					return err
				}
			case list_t:
				if err := d.discardList(); err != nil {
					return err
				}
			default:
				return ErrUnknownTag
			}
		}
	}
}

func (d *Decoder) discard(tag_b byte) (skipped bool, err error) {
	switch tag_b {
	case byte_t:
		return true, d.rd.skip(1)
	case short_t:
		return true, d.rd.skip(2)
	case int_t, float_t:
		return true, d.rd.skip(4)
	case long_t, double_t:
		return true, d.rd.skip(8)
	case byte_array_t:
		l, err := d.readInt()
		if err != nil {
			return true, err
		}
		return true, d.rd.skip(int(l))
	case string_t:
		l, err := d.readShort()
		if err != nil {
			return true, err
		}
		return true, d.rd.skip(int(l))
	case int_array_t:
		l, err := d.readInt()
		if err != nil {
			return true, err
		}
		return true, d.rd.skip(int(l) * 4)
	case long_array_t:
		l, err := d.readInt()
		if err != nil {
			return true, err
		}
		return true, d.rd.skip(int(l) * 8)
	default:
		return
	}
}


================================================
FILE: protocol/nbt/qnbt/list.go
================================================
package qnbt

import (
	"fmt"
	"strconv"
	"unsafe"

	"github.com/oq-x/unsafe2"
)

func (d *Decoder) decodeListSlice(ptr unsafe.Pointer, t *ptrType) error {
	tag, err := d.readByte2()
	if err != nil {
		return err
	}

	l, err := d.readInt()
	if err != nil {
		return err
	}

	if tag == end_t {
		return nil
	}

	cap := *(*int)(unsafe.Add(ptr, ptrSize*2))
	array := &array_t{
		elem: t.elem,
		ptr:  unsafe.Pointer(*(*uintptr)(ptr)),
		len:  uintptr(cap),
	}

	if int(l) > cap {
		array.ptr = mallocgc(uintptr(l)*array.elem.Size, nil, true)
		array.len = uintptr(l)
		setSliceArray(ptr, array.ptr, int(l))
	}

	return d.readListArray(tag, l, array)
}

type array_t struct {
	elem *unsafe2.Type
	ptr  unsafe.Pointer
	len  uintptr
}

func (a *array_t) index(i int) unsafe.Pointer {
	return unsafe.Add(a.ptr, a.elem.Size*uintptr(i))
}

func (d *Decoder) decodeListArray(a *array_t) error {
	tag, err := d.readByte2()
	if err != nil {
		return err
	}

	l, err := d.readInt()
	if err != nil {
		return err
	}

	if tag == end_t {
		return nil
	}

	if uintptr(l) < a.len {
		return fmt.Errorf("array too small")
	}

	return d.readListArray(tag, l, a)
}

func (d *Decoder) readListArray(tag byte, l int32, a *array_t) error {
	kind := kindOf(a.elem)

	for i := 0; i < int(l); i++ {
		iptr := a.index(i)

		//if err := match("", tag, a.elem); err != nil {
		//	return err
		//}

		switch tag {
		case byte_t:
			if err := d.readBytePtr(iptr); err != nil {
				return err
			}
		case short_t:
			if err := d.readShortPtr(iptr); err != nil {
				return err
			}
		case int_t, float_t:
			if err := d.readIntPtr(iptr); err != nil {
				return err
			}
		case long_t, double_t:
			if err := d.readLongPtr(iptr); err != nil {
				return err
			}
		case byte_array_t:
			switch kind {
			case array_k:
				if err := d.readByteArray(iptr); err != nil {
					return err
				}
			case slice_k:
				l, err := d.readInt()
				if err != nil {
					return err
				}

				ptr := mallocgc(uintptr(l), nil, true)
				if err := d.decodeByteArray(int(l), ptr); err != nil {
					return err
				}
				setSliceArray(iptr, ptr, int(l))
			}
		case string_t:
			if err := d.readStringPtr(iptr); err != nil {
				return err
			}
		case long_array_t:
			switch kind {
			case array_k:
				if err := d.readLongArray(iptr); err != nil {
					return err
				}
			case slice_k:
				l, err := d.readInt()
				if err != nil {
					return err
				}

				ptr := mallocgc(uintptr(l)*8, nil, true)
				if err := d.decodeLongArray(int(l), ptr); err != nil {
					return err
				}
				setSliceArray(iptr, ptr, int(l))
			}
		case int_array_t:
			switch kind {
			case array_k:
				if err := d.readIntArray(iptr); err != nil {
					return err
				}
			case slice_k:
				l, err := d.readInt()
				if err != nil {
					return err
				}

				ptr := mallocgc(uintptr(l)*4, nil, true)
				if err := d.decodeIntArray(int(l), ptr); err != nil {
					return err
				}
				setSliceArray(iptr, ptr, int(l))
			}
		case compound_t:
			switch kind {
			case struct_k:
				s := newStruct((*structType)(unsafe.Pointer(a.elem)), iptr)
				if err := d.decodeStructCompound(s); err != nil {
					return err
				}
				structs.Put(s)
			case map_k:
				t := (*mapType)(unsafe.Pointer(a.elem))
				if kK, kE := kindOf(t.key), kindOf(t.elem); kK != string_k || kE != string_k {
					return MismatchError{
						name:         strconv.Itoa(i),
						expectedKind: "struct/map[string]string",
						gotKind:      fmt.Sprintf("map[%s]%s", kind_name(kK), kind_name(kE)),
						//tag:          tagName(tag),
					}
				}

				m := *(*map[string]string)(iptr)

				if m == nil {
					m = make(map[string]string)
					*(*map[string]string)(iptr) = m
				}

				if err := d.decodeMapString(m); err != nil {
					return err
				}
			}
		case list_t:
			switch kind {
			case array_k:
				arr := (*arrayType)(unsafe.Pointer(a.elem))
				if err := d.decodeListArray(&array_t{arr.elem, iptr, arr.len}); err != nil {
					return err
				}
			case slice_k:
				if err := d.decodeListSlice(iptr, (*ptrType)(unsafe.Pointer(a.elem))); err != nil {
					return err
				}
			}
		default:
			return ErrUnknownTag
		}
	}
	return nil
}

func (d *Decoder) discardList() error {
	tag, err := d.readByte2()
	if err != nil {
		return err
	}

	len, err := d.readInt()
	if err != nil {
		return err
	}

	f := fixedSize(tag)
	if f == 0 {
		return nil
	}
	if f != -1 {
		return d.rd.skip(f * int(len))
	}

	for i := int32(0); i < len; i++ {
		s, err := d.discard(tag)
		if err != nil {
			return err
		}
		if !s {
			switch tag {
			case compound_t:
				if err := d.discardCompound(); err != nil {
					return err
				}
			case list_t:
				if err := d.discardList(); err != nil {
					return err
				}
			default:
				return ErrUnknownTag
			}
		}
	}

	return nil
}

func fixedSize(tag byte) int {
	switch tag {
	case end_t:
		return 0
	case byte_t:
		return 1
	case short_t:
		return 2
	case int_t, float_t:
		return 4
	case long_t, double_t:
		return 8
	default:
		return -1
	}
}


================================================
FILE: protocol/nbt/qnbt/malloc.go
================================================
package qnbt

import (
	"unsafe"

	"github.com/oq-x/unsafe2"
)

//go:linkname mallocgc runtime.mallocgc
func mallocgc(size uintptr, typ *unsafe2.Type, needzero bool) unsafe.Pointer


================================================
FILE: protocol/nbt/qnbt/map.go
================================================
package qnbt

import "fmt"

func (d *Decoder) decodeMapString(m map[string]string) error {
	var name string
	for {
		tag, err := d.rd.readBytesString(1)
		if err != nil {
			return err
		}

		if tag == end_t_b {
			return nil
		}
		if err := d.readStringNonCopy(&name); err != nil {
			return err
		}

		if tag != string_t_b {
			return fmt.Errorf("expected string tag, got %s", tagName(tag))
		}

		var v string
		if err := d.readString(&v); err != nil {
			return err
		}
		m[name] = v
	}
}


================================================
FILE: protocol/nbt/qnbt/primitive.go
================================================
package qnbt

import (
	"encoding/binary"
	"unsafe"

	"github.com/zeppelinmc/zeppelin/protocol/nbt/qnbt/native"
)

const (
	end_t = iota
	byte_t
	short_t
	int_t
	long_t
	float_t
	double_t
	byte_array_t
	string_t
	list_t
	compound_t
	int_array_t
	long_array_t
)

// a little trick to avoid allocations
var (
	end_t_b        = string([]byte{end_t})
	byte_t_b       = string([]byte{byte_t})
	short_t_b      = string([]byte{short_t})
	int_t_b        = string([]byte{int_t})
	long_t_b       = string([]byte{long_t})
	float_t_b      = string([]byte{float_t})
	double_t_b     = string([]byte{double_t})
	byte_array_t_b = string([]byte{byte_array_t})
	string_t_b     = string([]byte{string_t})
	list_t_b       = string([]byte{list_t})
	compound_t_b   = string([]byte{compound_t})
	int_array_t_b  = string([]byte{int_array_t})
	long_array_t_b = string([]byte{long_array_t})
)

func tagName(t string) string {
	switch t {
	case end_t_b:
		return "TAG_End"
	case byte_t_b:
		return "TAG_Byte"
	case short_t_b:
		return "TAG_Short"
	case int_t_b:
		return "TAG_Int"
	case long_t_b:
		return "TAG_Long"
	case float_t_b:
		return "TAG_Float"
	case double_t_b:
		return "TAG_Double"
	case byte_array_t_b:
		return "TAG_Byte_Array"
	case string_t_b:
		return "TAG_String"
	case list_t_b:
		return "TAG_List"
	case compound_t_b:
		return "TAG_Compound"
	case int_array_t_b:
		return "TAG_Int_Array"
	case long_array_t_b:
		return "TAG_Long_Array"
	default:
		return "Unknown"
	}
}

func (d *Decoder) load(length int) []byte {
	b := d.rd.buf[d.rd.r : d.rd.r+length]
	d.rd.r += length

	return b
}

func (d *Decoder) readByte(b *byte) error {
	if err := d.rd.fill(1); err != nil {
		return err
	}

	*b = d.rd.buf[d.rd.r]
	d.rd.r++

	return nil
}

func (d *Decoder) readByte2() (byte, error) {
	if err := d.rd.fill(1); err != nil {
		return 0, err
	}

	b := d.rd.buf[d.rd.r]
	d.rd.r++

	return b, nil
}
func (d *Decoder) readBytePtr(ptr unsafe.Pointer) error {
	return d.readByte((*byte)(ptr))
}

func (d *Decoder) readShort() (int16, error) {
	if err := d.rd.fill(2); err != nil {
		return 0, err
	}

	return int16(binary.BigEndian.Uint16(d.load(2))), nil
}

func (d *Decoder) readShortPtr(ptr unsafe.Pointer) error {
	if err := d.rd.fill(2); err != nil {
		return err
	}
	s := unsafe.Slice((*byte)(ptr), 2)

	copy(s, d.load(2))

	if !native.SystemBigEndian {
		native.Convert16(s)
	}

	return nil
}

func (d *Decoder) readInt() (int32, error) {
	if err := d.rd.fill(4); err != nil {
		return 0, err
	}

	return int32(binary.BigEndian.Uint32(d.load(4))), nil
}

func (d *Decoder) readIntPtr(ptr unsafe.Pointer) error {
	if err := d.rd.fill(4); err != nil {
		return err
	}
	s := unsafe.Slice((*byte)(ptr), 4)

	copy(s, d.load(4))

	if !native.SystemBigEndian {
		native.Convert32(s)
	}

	return nil
}

func (d *Decoder) readLongPtr(ptr unsafe.Pointer) error {
	if err := d.rd.fill(8); err != nil {
		return err
	}
	s := unsafe.Slice((*byte)(ptr), 8)

	copy(s, d.load(8))

	if !native.SystemBigEndian {
		native.Convert64(s)
	}

	return nil
}

func (d *Decoder) skipString() error {
	l, err := d.readShort()
	if err != nil {
		return err
	}
	return d.rd.skip(int(l))
}

func (d *Decoder) readString(dst *string) error {
	l, err := d.readShort()
	if err != nil {
		return err
	}

	if err := d.rd.fill(int(l)); err != nil {
		return err
	}

	*dst = string(d.load(int(l)))

	return nil
}

func (d *Decoder) readStringNonCopy(dst *string) error {
	l, err := d.readShort()
	if err != nil {
		return err
	}

	if err := d.rd.fill(int(l)); err != nil {
		return err
	}

	buf := d.rd.buf[d.rd.r : d.rd.r+int(l)]
	d.rd.r += int(l)

	*dst = unsafe.String(unsafe.SliceData(buf), len(buf))

	return nil
}

func (d *Decoder) readStringPtr(dst unsafe.Pointer) error {
	return d.readString((*string)(dst))
}

func (d *Decoder) readLongArray(ptr unsafe.Pointer) error {
	l, err := d.readInt()
	if err != nil {
		return err
	}

	return d.decodeLongArray(int(l), ptr)
}

func (d *Decoder) decodeLongArray(len int, ptr unsafe.Pointer) error {
	for i := 0; i < len; i++ {
		if err := d.readLongPtr(ptr); err != nil {
			return err
		}

		ptr = unsafe.Add(ptr, 8)
	}

	return nil
}

func (d *Decoder) readIntArray(ptr unsafe.Pointer) error {
	l, err := d.readInt()
	if err != nil {
		return err
	}

	return d.decodeIntArray(int(l), ptr)
}

func (d *Decoder) decodeIntArray(len int, ptr unsafe.Pointer) error {
	for i := 0; i < len; i++ {
		if err := d.readIntPtr(ptr); err != nil {
			return err
		}

		ptr = unsafe.Add(ptr, 4)
	}

	return nil
}

func (d *Decoder) readByteArray(ptr unsafe.Pointer) error {
	l, err := d.readInt()
	if err != nil {
		return err
	}

	return d.decodeByteArray(int(l), ptr)
}

/*func (d *Decoder) decodeByteArray(len int, ptr unsafe.Pointer) error {
	data, err := d.rd.readBytes(len)
	if err != nil {
		return err
	}
	copy(unsafe.Slice((*byte)(ptr), len), data)

	return nil
}
*/

func (d *Decoder) decodeByteArray(l int, ptr unsafe.Pointer) error {
	for l > 0 {
		lr := min(len(d.rd.buf), l)
		data, err := d.rd.readBytes(lr)
		if err != nil {
			return err
		}

		copy(unsafe.Slice((*byte)(ptr), l), data)
		l -= lr
		ptr = unsafe.Add(ptr, lr)
	}

	return nil
}


================================================
FILE: protocol/nbt/qnbt/qnbt.go
================================================
// qNBT is a very efficient NBT decoder!
// Caveats: does not work with []any, map[string]any or maps in general (except for map[string]string)
// Specification:
// Uses very lite, custom reflection (mostly unsafe)

package qnbt


================================================
FILE: protocol/nbt/qnbt/struct.go
================================================
package qnbt

import (
	"fmt"
	"strings"
	"sync"
	"unsafe"

	"github.com/oq-x/unsafe2"
)

var structs = sync.Pool{
	New: func() any {
		return &struct_t{
			names: make(map[string]int),
		}
	}}

func newStruct(t *structType, ptr unsafe.Pointer) *struct_t {
	s := structs.Get().(*struct_t)
	clear(s.names)

	s.t = t
	s.ptr = ptr

	for i, f := range t.fields {
		if !f.name.exported() {
			continue
		}
		name := f.name.name()

		if nbtname, ok := findNBTTag(f.name.tag()); ok {
			name = nbtname
			if name == "-" {
				continue
			}
			if i := strings.Index(name, ",omitempty"); i != -1 {
				name = name[:i]
			}
		}

		s.names[name] = i
	}

	return s
}

func findNBTTag(tag string) (string, bool) {
	i := strings.Index(tag, `nbt:"`)
	if i == -1 {
		return "", false
	}
	tag = tag[i+5:]
	i = strings.Index(tag, `"`)
	if i == -1 {
		return "", false
	}

	return tag[:i], true
}

type struct_t struct {
	t *structType

	names map[string]int
	ptr   unsafe.Pointer
}

func (s *struct_t) field(n string) (f *structField, ptr unsafe.Pointer, ok bool) {
	i, ok := s.names[n]

	if !ok {
		return nil, nil, ok
	}

	ft := s.t.fields[i]

	return &ft, unsafe.Add(s.ptr, ft.off), ok
}

func (d *Decoder) decodeStructCompound(s *struct_t) error {
	var name string
	for {
		tag, err := d.readByte2()
		if err != nil {
			return err
		}

		if tag == end_t {
			return nil
		}
		if err := d.readStringNonCopy(&name); err != nil {
			return err
		}

		field, fieldPtr, ok := s.field(name)

		if ok {
			//if err := match(name, tag, field.typ); err != nil {
			//	return err
			//}

			switch tag {
			case byte_t:
				if err := d.readBytePtr(fieldPtr); err != nil {
					return err
				}
			case string_t:
				if err := d.readStringPtr(fieldPtr); err != nil {
					return err
				}
			case short_t:
				if err := d.readShortPtr(fieldPtr); err != nil {
					return err
				}
			case int_t, float_t:
				if err := d.readIntPtr(fieldPtr); err != nil {
					return err
				}
			case long_t, double_t:
				if err := d.readLongPtr(fieldPtr); err != nil {
					return err
				}
			case byte_array_t:
				switch kindOf(field.typ) {
				case array_k:
					if err := d.readByteArray(fieldPtr); err != nil {
						return err
					}
				case slice_k:
					l, err := d.readInt()
					if err != nil {
						return err
					}

					ptr := mallocgc(uintptr(l), nil, true)
					if err := d.decodeByteArray(int(l), ptr); err != nil {
						return err
					}
					setSliceArray(fieldPtr, ptr, int(l))
				}
			case long_array_t:
				switch kindOf(field.typ) {
				case array_k:
					if err := d.readLongArray(fieldPtr); err != nil {
						return err
					}
				case slice_k:
					l, err := d.readInt()
					if err != nil {
						return err
					}

					ptr := mallocgc(uintptr(l)*8, nil, true)
					if err := d.decodeLongArray(int(l), ptr); err != nil {
						return err
					}
					setSliceArray(fieldPtr, ptr, int(l))
				}
			case int_array_t:
				switch kindOf(field.typ) {
				case array_k:
					if err := d.readIntArray(fieldPtr); err != nil {
						return err
					}
				case slice_k:
					l, err := d.readInt()
					if err != nil {
						return err
					}

					ptr := mallocgc(uintptr(l)*4, nil, true)
					if err := d.decodeIntArray(int(l), ptr); err != nil {
						return err
					}
					setSliceArray(fieldPtr, ptr, int(l))
				}
			case compound_t:
				switch kindOf(field.typ) {
				case struct_k:
					s := newStruct((*structType)(unsafe.Pointer(field.typ)), fieldPtr)
					if err := d.decodeStructCompound(s); err != nil {
						return err
					}
					structs.Put(s)
				case map_k:
					t := (*mapType)(unsafe.Pointer(field.typ))
					if kK, kE := kindOf(t.key), kindOf(t.elem); kK != string_k || kE != string_k {
						return MismatchError{
							name:         name,
							expectedKind: "struct/map[string]string",
							gotKind:      fmt.Sprintf("map[%s]%s", kind_name(kK), kind_name(kE)),
							tag:          tagName(string([]byte{tag})),
						}
					}

					m := *(*map[string]string)(fieldPtr)

					if m == nil {
						m = make(map[string]string)
						*(*map[string]string)(fieldPtr) = m
					}

					if err := d.decodeMapString(m); err != nil {
						return err
					}
				}
			case list_t:
				switch kindOf(field.typ) {
				case array_k:
					t := (*arrayType)(unsafe.Pointer(field.typ))
					if err := d.decodeListArray(&array_t{t.elem, fieldPtr, t.len}); err != nil {
						return err
					}
				case slice_k:
					if err := d.decodeListSlice(fieldPtr, (*ptrType)(unsafe.Pointer(field.typ))); err != nil {
						return err
					}
				}
			default:
				return ErrUnknownTag
			}
		} else {
			s, err := d.discard(tag)
			if err != nil {
				return err
			}
			if !s {
				switch tag {
				case compound_t:
					if err := d.discardCompound(); err != nil {
						return err
					}
				case list_t:
					if err := d.discardList(); err != nil {
						return err
					}
				default:
					return ErrUnknownTag
				}
			}
		}
		//fmt.Println(tag, name)
	}
}

func match(name, tag_b string, t *unsafe2.Type) error {
	k := kindOf(t)
	switch tag_b {
	case byte_t_b:
		if k != uint8_k && k != int8_k && k != bool_k {
			return MismatchError{
				name:         name,
				expectedKind: "uint8/int8/bool",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case short_t_b:
		if k != int16_k && k != uint16_k {
			return MismatchError{
				name:         name,
				expectedKind: "int16/uint16",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case int_t_b:
		if k != int32_k && k != uint32_k {
			return MismatchError{
				name:         name,
				expectedKind: "int32/uint32",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case long_t_b:
		if k != int64_k && k != uint64_k {
			return MismatchError{
				name:         name,
				expectedKind: "int64/uint64",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case float_t_b:
		if k != float32_k {
			return MismatchError{
				name:         name,
				expectedKind: "float32",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case double_t_b:
		if k != float64_k {
			return MismatchError{
				name:         name,
				expectedKind: "float64",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case byte_array_t_b:
		if k != slice_k && k != array_k {
			return MismatchError{
				name:         name,
				expectedKind: "[]uint8/[]int8",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
		base := (*ptrType)(unsafe.Pointer(t))

		elemKind := kindOf(base.elem)

		if elemKind != int8_k && elemKind != uint8_k {
			return MismatchError{
				name:         name,
				expectedKind: "[]uint8/[]int8",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case string_t_b:
		if k != string_k {
			return MismatchError{
				name:         name,
				expectedKind: "string",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case list_t_b:
		if k != slice_k && k != array_k {
			return MismatchError{
				name:         name,
				expectedKind: "slice/array",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case compound_t_b:
		if k != struct_k && k != map_k {
			return MismatchError{
				name:         name,
				expectedKind: "struct/map[string]string",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case int_array_t_b:
		if k != slice_k && k != array_k {
			return MismatchError{
				name:         name,
				expectedKind: "[]uint32/[]int32",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
		base := (*ptrType)(unsafe.Pointer(t))

		elemKind := kindOf(base.elem)

		if elemKind != int32_k && elemKind != uint32_k {
			return MismatchError{
				name:         name,
				expectedKind: "[]uint32/[]int32",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	case long_array_t_b:
		if k != slice_k && k != array_k {
			return MismatchError{
				name:         name,
				expectedKind: "[]uint64/[]int64",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
		base := (*ptrType)(unsafe.Pointer(t))

		elemKind := kindOf(base.elem)

		if elemKind != int64_k && elemKind != uint64_k {
			return MismatchError{
				name:         name,
				expectedKind: "[]uint64/[]int64",
				gotKind:      kind_name(k),
				tag:          tagName(tag_b),
			}
		}
	}
	return nil
}


================================================
FILE: protocol/nbt/staticReader.go
================================================
package nbt

import (
	"fmt"
	"io"
	"unsafe"
)

/*
Reader is an NBT decoder that uses no reflection. it should be used for static structures.

The read functions read the type id, name and value
*/
type StaticReader struct {
	r io.Reader
}

func NewStaticReader(r io.Reader) StaticReader {
	return StaticReader{r}
}

// reads a byte
func (r StaticReader) readByte() (byte, error) {
	var data [1]byte
	_, err := r.r.Read(data[:])

	return data[0], err
}

// reads a short, big endian
func (r StaticReader) readShort() (int16, error) {
	var data [2]byte
	_, err := r.r.Read(data[:])

	return int16(data[0])<<8 | int16(data[1]), err
}

// reads an int, big endian
func (r StaticReader) readInt() (int32, error) {
	var data [4]byte
	_, err := r.r.Read(data[:])

	return int32(data[0])<<24 | int32(data[1])<<16 | int32(data[2])<<8 | int32(data[3]), err
}

// reads a long, big endian
func (r StaticReader) readLong() (int64, error) {
	var data [8]byte
	_, err := r.r.Read(data[:])

	return int64(data[0])<<56 | int64(data[1])<<48 | int64(data[2])<<40 | int64(data[3])<<32 | int64(data[4])<<24 | int64(data[5])<<16 | int64(data[6])<<8 | int64(data[7]), err
}

// reads a string prefixed by a short of its length
func (r StaticReader) readString() (string, error) {
	length, err := r.readShort()
	if err != nil {
		return "", err
	}
	if length < 0 {
		return "", fmt.Errorf("negative length for make (read string)")
	}
	var data = make([]byte, length)

	if _, err := r.r.Read(data); err != nil {
		return "", err
	}

	return unsafe.String(unsafe.SliceData(data), len(data)), nil //*(*string)(unsafe.Pointer(&data)), nil
}

func (r StaticReader) ReadRoot(withName bool) (typeId byte, name string, err error) {
	typeId, err = r.readByte()
	if err != nil {
		return typeId, "", err
	}
	if withName {
		name, err = r.readString()
	}

	return
}

func (r StaticReader) Byte(dst *byte) (string, error) {
	typeId, err := r.readByte()
	if err != nil {
		return "", err
	}
	if typeId != Byte {
		return "", fmt.Errorf("tried reading TAG_Byte, got %d", typeId)
	}

	name, err := r.readString()
	if err != nil {
		return "", err
	}

	*dst, err = r.readByte()
	return name, err
}

func (r StaticReader) Short(dst *int16) (string, error) {
	typeId, err := r.readByte()
	if err != nil {
		return "", err
	}
	if typeId != Short {
		return "", fmt.Errorf("tried reading TAG_Short, got %d", typeId)
	}

	name, err := r.readString()
	if err != nil {
		return "", err
	}

	*dst, err = r.readShort()
	return name, err
}

func (r StaticReader) Int(dst *int32) (string, error) {
	typeId, err := r.readByte()
	if err != nil {
		return "", err
	}
	if typeId != Int {
		return "", fmt.Errorf("tried reading TAG_Int, got %d", typeId)
	}

	name, err := r.readString()
	if err != nil {
		return "", err
	}

	*dst, err = r.readInt()
	return name, err
}

func (r StaticReader) Long(dst *int64) (string, error) {
	typeId, err := r.readByte()
	if err != nil {
		return "", err
	}
	if typeId != Long {
		return "", fmt.Errorf("tried reading TAG_Long, got %d", typeId)
	}

	name, err := r.readString()
	if err != nil {
		return "", err
	}

	*dst, err = r.readLong()
	return name, err
}

func (r StaticReader) String(dst *string) (string, error) {
	typeId, err := r.readByte()
	if err != nil {
		return "", err
	}
	if typeId != String {
		return "", fmt.Errorf("tried reading TAG_String, got %d", typeId)
	}

	name, err := r.readString()
	if err != nil {
		return "", err
	}

	*dst, err = r.readString()
	return name, err
}

func (r StaticReader) Compound(dst *CompoundReader) (string, error, bool) {
	typeId, err := r.readByte()
	if err != nil {
		return "", err, false
	}
	if typeId == End {
		return "", nil, true
	}
	if typeId != Compound {
		return "", fmt.Errorf("tried reading TAG_Compound, got %d", typeId), false
	}

	name, err := r.readString()
	if err != nil {
		return "", err, false
	}

	*dst = CompoundReader{r}
	return name, err, false
}

type CompoundReader struct {
	r StaticReader
}

// super convenient
func (cr CompoundReader) ReadStringMap(tgt map[string]string) error {
	for {
		typeId, err := cr.r.readByte()
		if err != nil {
			return err
		}
		if typeId == End {
			return nil
		}
		name, err := cr.r.readString()
		if err != nil {
			return err
		}

		switch typeId {
		case String:
			str, err := cr.r.readString()
			if err != nil {
				return err
			}
			tgt[name] = str
		default:
			return fmt.Errorf("unsupported tag %d for string map", typeId)
		}
	}
}

func (cr CompoundReader) ReadAll(targets ...any) error {
	for i := 0; i < len(targets)+1; i++ { //+1 to read end
		typeId, err := cr.r.readByte()
		if err != nil {
			return err
		}
		if typeId == End {
			return nil
		}
		_, err = cr.r.readString()
		if err != nil {
			return err
		}

		switch typeId {
		case Byte:
			dst, ok := targets[i].(*byte)
			if !ok {
				return fmt.Errorf("mismatched type Byte and %T", targets[i])
			}
			*dst, err = cr.r.readByte()
			if err != nil {
				return err
			}
		case Short:
			dst, ok := targets[i].(*int16)
			if !ok {
				return fmt.Errorf("mismatched type Short and %T", targets[i])
			}
			*dst, err = cr.r.readShort()
			if err != nil {
				return err
			}
		case Int:
			dst, ok := targets[i].(*int32)
			if !ok {
				return fmt.Errorf("mismatched type Int and %T", targets[i])
			}
			*dst, err = cr.r.readInt()
			if err != nil {
				return err
			}
		case Long:
			dst, ok := targets[i].(*int64)
			if !ok {
				return fmt.Errorf("mismatched type Long and %T", targets[i])
			}
			*dst, err = cr.r.readLong()
			if err != nil {
				return err
			}
		case String:
			dst, ok := targets[i].(*string)
			if !ok {
				return fmt.Errorf("mismatched type String and %T", targets[i])
			}
			*dst, err = cr.r.readString()
			if err != nil {
				return err
			}
		case Compound:
			switch dst := targets[i].(type) {
			case []any:
				CompoundReader{r: cr.r}.ReadAll(dst)
			case map[string]string:
				CompoundReader{r: cr.r}.ReadStringMap(dst)
			default:
				return fmt.Errorf("mismatched type Compound and %T", targets[i])
			}
		case List:
			dst, ok := targets[i].(func(len int32, rd ListReader))
			if !ok {
				return fmt.Errorf("mismatched type List and %T", targets[i])
			}
			typeId, err := cr.r.readByte()
			if err != nil {
				return err
			}
			len, err := cr.r.readInt()
			if err != nil {
				return err
			}
			dst(len, ListReader{typeId: typeId, r: cr.r})
		}
	}
	return nil
}

type ListReader struct {
	typeId byte
	r      StaticReader
}

func (lr ListReader) Read(tgt any) (err error) {
	switch lr.typeId {
	case Byte:
		dst, ok := tgt.(*byte)
		if !ok {
			return fmt.Errorf("mismatched type Byte and %T", tgt)
		}
		*dst, err = lr.r.readByte()
		if err != nil {
			return err
		}
	case Short:
		dst, ok := tgt.(*int16)
		if !ok {
			return fmt.Errorf("mismatched type Short and %T", tgt)
		}
		*dst, err = lr.r.readShort()
		if err != nil {
			return err
		}
	case Int:
		dst, ok := tgt.(*int32)
		if !ok {
			return fmt.Errorf("mismatched type Int and %T", tgt)
		}
		*dst, err = lr.r.readInt()
		if err != nil {
			return err
		}
	case Long:
		dst, ok := tgt.(*int64)
		if !ok {
			return fmt.Errorf("mismatched type Long and %T", tgt)
		}
		*dst, err = lr.r.readLong()
		if err != nil {
			return err
		}
	case String:
		dst, ok := tgt.(*string)
		if !ok {
			return fmt.Errorf("mismatched type String and %T", tgt)
		}
		*dst, err = lr.r.readString()
		if err != nil {
			return err
		}
	case Compound:
		dst, ok := tgt.([]any)
		if !ok {
			return fmt.Errorf("mismatched type Compound and %T", lr)
		}
		CompoundReader{r: lr.r}.ReadAll(dst...)
	case List:
		dst, ok := tgt.(func(ListReader))
		if !ok {
			return fmt.Errorf("mismatched type List and %T", tgt)
		}
		typeId, err := lr.r.readByte()
		if err != nil {
			return err
		}
		dst(ListReader{typeId: typeId, r: lr.r})
	}
	return nil
}


================================================
FILE: protocol/net/authentication.go
================================================
package net

import (
	"crypto/sha1"
	"crypto/x509"
	"encoding/hex"
	"encoding/json"
	"fmt"
	"net/http"
	"strings"
	"unsafe"

	"github.com/google/uuid"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet/login"
)

func authurl(u, h string) string {
	return "https://sessionserver.mojang.com/session/minecraft/hasJoined?username=" + u + "&serverId=" + h
}

func (conn *Conn) authenticate() error {
	key, err := x509.MarshalPKIXPublicKey(&conn.listener.privKey.PublicKey)
	if err != nil {
		return err
	}
	hash := conn.sessionHash(key)
	res, err := http.Get(authurl(conn.username, hash))
	if err != nil {
		return err
	}

	if res.StatusCode != http.StatusOK {
		return fmt.Errorf("authenticated error: player not joined")
	}

	var response struct {
		ID         string `json:"id"`
		Name       string `json:"name"`
		Properties []struct {
			Name      string `json:"name"`
			Value     string `json:"value"`
			Signature string `json:"signature"`
		} `json:"properties"`
	}

	err = json.NewDecoder(res.Body).Decode(&response)

	if err != nil {
		return err
	}

	conn.username = response.Name
	conn.uuid, err = uuid.Parse(response.ID)
	if err != nil {
		return err
	}
	conn.properties = *(*[]login.Property)(unsafe.Pointer(&response.Properties))

	return nil
}

func (conn *Conn) sessionHash(publicKey []byte) string {
	hash := sha1.New()
	hash.Write(conn.sharedSecret)
	hash.Write(publicKey)

	sum := hash.Sum(nil)

	negative := (sum[0] & 0x80) == 0x80
	if negative {
		sum = twosComplement(sum)
	}

	// Trim away zeroes
	res := strings.TrimLeft(hex.EncodeToString(sum), "0")
	if negative {
		res = "-" + res
	}
	return res
}

func twosComplement(p []byte) []byte {
	carry := true
	for i := len(p) - 1; i >= 0; i-- {
		p[i] = byte(^p[i])
		if carry {
			carry = p[i] == 0xff
			p[i]++
		}
	}
	return p
}


================================================
FILE: protocol/net/cfb8/cfb8.go
================================================
package cfb8

import "crypto/cipher"

// CFB stream with 8 bit segment size
// See http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
type CFB8 struct {
	// the input block used to produce an output block
	//also the same as the iv, but overtime it's changed
	input []byte

	//output used to decipher and cipher plaintext and cipher segments
	output []byte

	//block is the forward crypto function
	block cipher.Block

	decrypt bool
}

func (x *CFB8) XORKeyStream(dst, src []byte) {
	//notes:
	//the plaintext and ciphertext segments consist of s bits(8 in this case)

	for i, v := range src {
		//the forward crypto operation is applied to
		//the IV to produce the first output block
		x.block.Encrypt(x.output, x.input)

		//both the cipher plain text and segments are XOR with the msb s bits of the output block
		dst[i] = v ^ x.output[0]

		//makes room to concatenate s bits of cipher text segment for
		//encryption, and plaintext segment for decryption
		copy(x.input, x.input[1:16])
		if x.decrypt {
			x.input[15] = v
		} else {
			x.input[15] = dst[i]
		}
	}
}

func NewCFB8(b cipher.Block, iv []byte, decrypt bool) *CFB8 {
	if b.BlockSize() != len(iv) {
		panic("blockSize and IV must be the same length")
	}

	cfb8 := &CFB8{
		block:   b,
		input:   make([]byte, len(iv)),
		output:  make([]byte, len(iv)),
		decrypt: decrypt,
	}

	//in CFB encryption, the first input block is the IV
	copy(cfb8.input, iv)
	return cfb8
}


================================================
FILE: protocol/net/config.go
================================================
package net

import (
	"crypto/rand"
	"crypto/rsa"
	"net"

	"github.com/zeppelinmc/zeppelin/protocol/net/packet/status"
	"github.com/zeppelinmc/zeppelin/protocol/text"
)

type Config struct {
	Status StatusProvider

	PacketWriteChanBuffer int
	IP                    net.IP
	Port                  int
	CompressionThreshold  int32
	Encrypt               bool
	Authenticate          bool
	AcceptTransfers       bool
}

type StatusProvider func(*Conn) status.StatusResponseData

func (c Config) New() (*Listener, error) {
	l, err := net.ListenTCP("tcp", &net.TCPAddr{
		IP: c.IP, Port: c.Port,
	})
	if err != nil {
		return nil, err
	}
	lis := &Listener{
		cfg:      c,
		Listener: l,

		newConns: make(chan *Conn),
		err:      make(chan error),
		ApprovePlayer: func(c *Conn) (ok bool, disconnectionReason *text.TextComponent) {
			return true, nil
		},
	}
	if c.Encrypt {
		lis.privKey, err = rsa.GenerateKey(rand.Reader, 1024)
	}

	go lis.listen()

	return lis, err
}

func Status(s status.StatusResponseData) StatusProvider {
	return func(*Conn) status.StatusResponseData {
		return s
	}
}


================================================
FILE: protocol/net/conn.go
================================================
package net

import (
	"bytes"
	"crypto/md5"
	"encoding/binary"
	"fmt"
	"io"
	"net"
	"sync"
	"sync/atomic"
	"unicode/utf16"

	"github.com/zeppelinmc/zeppelin/protocol/net/cfb8"
	"github.com/zeppelinmc/zeppelin/protocol/net/io/compress"
	"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet/handshake"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet/login"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet/status"
	"github.com/zeppelinmc/zeppelin/protocol/text"

	"github.com/google/uuid"
)

var PacketEncodeInterceptor func(c *Conn, pk packet.Encodeable) (stop bool)
var PacketDecodeInterceptor func(c *Conn, pk packet.Decodeable) (stop bool)

var PacketWriteInterceptor func(c *Conn, pk *bytes.Buffer, headerSize int32) (stop bool)
var PacketReadInterceptor func(c *Conn, pk *bytes.Reader, packetId int32) (stop bool)

const (
	clientVeryOldMsg = "Your client is WAYYYYYY too old!!! this server supports MC 1.21"
	clientTooOldMsg  = "Your client is too old! this server supports MC 1.21"
	clientTooNewMsg  = "Your client is too new! this server supports MC 1.21"
)

type Conn struct {
	net.Conn

	listener *Listener

	username   string
	uuid       uuid.UUID
	properties []login.Property

	state atomic.Int32

	encrypted                 bool
	sharedSecret, verifyToken []byte

	decrypter, encrypter *cfb8.CFB8
	compressionSet       bool

	usesForge bool
	read_mu   sync.Mutex
	write_mu  sync.Mutex

	packetWriteChan chan packet.Encodeable
}

func (conn *Conn) UsesForge() bool {
	return conn.usesForge
}

func (conn *Conn) Username() string {
	return conn.username
}

func (conn *Conn) UUID() uuid.UUID {
	return conn.uuid
}

func (conn *Conn) Properties() []login.Property {
	return conn.properties
}

func (conn *Conn) SetState(state int32) {
	conn.state.Store(state)
}
func (conn *Conn) State() int32 {
	return conn.state.Load()
}

var pkpool = sync.Pool{
	New: func() any {
		return bytes.NewBuffer(nil)
	},
}

var pkcppool = sync.Pool{
	New: func() any {
		return bytes.NewBuffer(nil)
	},
}

func (conn *Conn) wpk(pk packet.Encodeable) error {
	if PacketEncodeInterceptor != nil {
		if PacketEncodeInterceptor(conn, pk) {
			return nil
		}
	}

	var packetBuf = pkpool.Get().(*bytes.Buffer)
	packetBuf.Reset()
	defer pkpool.Put(packetBuf)

	w := encoding.NewWriter(packetBuf)
	// write the header for the packet

	var headerSize int32
	if conn.listener.cfg.CompressionThreshold < 0 || !conn.compressionSet {
		packetBuf.Write([]byte{0x80, 0x80, 0})
		headerSize = 3
	} else if conn.compressionSet {
		packetBuf.Write([]byte{0x80, 0x80, 0, 0x80, 0x80, 0})
		headerSize = 6
	}

	if err := w.VarInt(pk.ID()); err != nil {
		return err
	}
	if err := pk.Encode(w); err != nil {
		return err
	}

	if PacketWriteInterceptor != nil {
		if PacketWriteInterceptor(conn, packetBuf, headerSize) {
			return nil
		}
	}

	if conn.listener.cfg.CompressionThreshold < 0 || !conn.compressionSet { // no compression
		i := encoding.PutVarInt(packetBuf.Bytes()[:3], int32(packetBuf.Len()-3))
		if i != 2 {
			packetBuf.Bytes()[i] |= 0x80
		}

		_, err := conn.Write(packetBuf.Bytes())
		return err
	} else { // yes compression
		if conn.listener.cfg.CompressionThreshold > int32(packetBuf.Len())-6 { // packet is too small to be compressed
			i := encoding.PutVarInt(packetBuf.Bytes()[:3], int32(packetBuf.Len()-3))
			if i != 2 {
				packetBuf.Bytes()[i] |= 0x80
			}

			_, err := conn.Write(packetBuf.Bytes())
			return err
		} else { // packet is compressed
			uncompressedLength := int32(packetBuf.Len() - 6)
			if i := encoding.PutVarInt(packetBuf.Bytes()[3:6], uncompressedLength); i != 2 {
				packetBuf.Bytes()[i+3] |= 0x80
			}

			compressedPacket, err := compress.CompressZlib(packetBuf.Bytes()[6:], &MaxCompressedPacketSize)
			if err != nil {
				return err
			}

			packetBuf.Truncate(6)
			packetBuf.Write(compressedPacket)

			if i := encoding.PutVarInt(packetBuf.Bytes()[:3], int32(packetBuf.Len())-3); i != 2 {
				packetBuf.Bytes()[i] |= 0x80
			}

			if _, err := conn.Write(packetBuf.Bytes()); err != nil {
				return err
			}

			return err
		}
	}
}

func (conn *Conn) WritePacket(pk packet.Encodeable) error {
	if conn.encrypted {
		conn.write_mu.Lock()
		defer conn.write_mu.Unlock()
	} //no lock seems to work fine without encryption (?)
	return conn.wpk(pk)
}

// 1MiB
var MaxCompressedPacketSize = 1024 * 1024

func (conn *Conn) Read(dst []byte) (i int, err error) {
	i, err = conn.Conn.Read(dst)
	if err != nil {
		return i, err
	}
	if conn.encrypted {
		conn.decryptd(dst, dst)
	}

	return i, err
}

func (conn *Conn) Write(data []byte) (i int, err error) {
	if !conn.encrypted {
		return conn.Conn.Write(data)
	}
	conn.encryptd(data, data)

	return conn.Conn.Write(data)
}

func (conn *Conn) ReadPacket() (decoded packet.Decodeable, interceptionStopped bool, err error) {
	conn.read_mu.Lock()
	defer conn.read_mu.Unlock()

	var rd = encoding.NewReader(conn, 0)
	var (
		length, packetId int32
	)
	if conn.listener.cfg.CompressionThreshold < 0 || !conn.compressionSet { // no compression
		if _, err := rd.VarInt(&length); err != nil {
			return nil, false, err
		}
		if length <= 0 {
			return nil, false, fmt.Errorf("malformed packet: empty")
		}
		if length > 4096 {
			return nil, false, fmt.Errorf("packet too big")
		}

		var packet = make([]byte, length)
		if _, err := conn.Read(packet); err != nil {
			return nil, false, err
		}
		id, data, err := encoding.VarInt(packet)
		if err != nil {
			return nil, false, err
		}
		packetId = id
		packet = data
		length = int32(len(data))
		br := bytes.NewReader(packet)

		if PacketReadInterceptor != nil {
			if PacketReadInterceptor(conn, br, packetId) {
				return nil, true, nil
			}
		}

		rd = encoding.NewReader(br, int(length))
	} else {
		var packetLength int32
		if _, err := rd.VarInt(&packetLength); err != nil {
			return nil, false, err
		}
		if packetLength <= 0 {
			return nil, false, fmt.Errorf("malformed packet: empty")
		}
		var dataLength int32
		dataLengthSize, err := rd.VarInt(&dataLength)
		if err != nil {
			return nil, false, err
		}
		if dataLength < 0 {
			return nil, false, fmt.Errorf("malformed packet: negative length")
		}
		if dataLength == 0 { //packet is uncompressed
			length = packetLength - int32(dataLengthSize)
			if length < 0 {
				return nil, false, fmt.Errorf("malformed packet: negative length")
			}
			if length != 0 {
				var packet = make([]byte, length)
				if _, err := conn.Read(packet); err != nil {
					return nil, false, err
				}

				id, data, err := encoding.VarInt(packet)
				if err != nil {
					return nil, false, err
				}
				packetId = id
				packet = data
				length = int32(len(data))

				r := bytes.NewReader(packet)

				if PacketReadInterceptor != nil {
					if PacketReadInterceptor(conn, r, packetId) {
						return nil, true, nil
					}
				}

				rd = encoding.NewReader(r, int(length))
			}
		} else { //packet is compressed
			length = dataLength
			compressedLength := packetLength - int32(dataLengthSize)

			var ilength = int(length)

			var packetBuf = pkpool.Get().(*bytes.Buffer)
			packetBuf.Reset()
			packetBuf.ReadFrom(io.LimitReader(conn, int64(compressedLength)))
			defer pkpool.Put(packetBuf)

			uncompressedPacket, err := compress.DecompressZlib(packetBuf.Bytes(), &ilength)
			if err != nil {
				return nil, false, err
			}

			id, data, err := encoding.VarInt(uncompressedPacket)
			if err != nil {
				return nil, false, err
			}
			packetId = id
			uncompressedPacket = data
			length = int32(len(data))

			r := bytes.NewReader(uncompressedPacket)

			if PacketReadInterceptor != nil {
				if PacketReadInterceptor(conn, r, packetId) {
					return nil, true, nil
				}
			}

			rd = encoding.NewReader(r, int(length))
		}
	}

	var pk packet.Decodeable
	pc, ok := ServerboundPool[conn.state.Load()][packetId]

	if !ok {
		return packet.UnknownPacket{
			Id:      packetId,
			Length:  length,
			Payload: rd,
		}, false, nil
	} else {
		pk = pc()

		if PacketDecodeInterceptor != nil {
			if PacketDecodeInterceptor(conn, pk) {
				return nil, true, nil
			}
		}

		err := pk.Decode(rd)
		return pk, false, err
	}
}

// PushPacket adds a packet to the queue without waiting for it to be sent
func (conn *Conn) PushPacket(pk packet.Encodeable) {
	conn.packetWriteChan <- pk
}

func (conn *Conn) packetWriteChanListen() {
	go func() {
		for pk := range conn.packetWriteChan {
			if conn.encrypted {
				conn.write_mu.Lock()
			}

			conn.WritePacket(pk)

			if conn.encrypted {
				conn.write_mu.Unlock()
			}
		}
	}()
}

func (conn *Conn) writeLegacyStatus(status status.StatusResponseData) {
	protocolString := fmt.Sprint(status.Version.Protocol)
	onlineString := fmt.Sprint(status.Players.Online)
	maxString := fmt.Sprint(status.Players.Max)

	stringData := make([]rune, 3, 3+len(protocolString)+len(status.Version.Name)+len(status.Description.Text)+len(onlineString)+len(maxString))
	stringData[0], stringData[1] = '§', '1'
	stringData = append(append(stringData, []rune(protocolString)...), 0)
	stringData = append(append(stringData, []rune(status.Version.Name)...), 0)
	stringData = append(append(stringData, []rune(status.Description.Text)...), 0)
	stringData = append(append(stringData, []rune(onlineString)...), 0)
	stringData = append(stringData, []rune(maxString)...)

	utf16be := utf16.Encode([]rune(stringData))

	length := uint16(len(utf16be))
	conn.Write([]byte{
		0xFF, byte(length >> 8), byte(length),
	})

	binary.Write(conn, binary.BigEndian, utf16be)
}

func (conn *Conn) writeLegacyDisconnect(reason string) {
	var data = []byte{0xFF}

	var strdata = utf16.Encode([]rune(reason))
	var strlen = int16(len(strdata))

	data = append(data, byte(strlen>>8), byte(strlen))
	conn.Write(data)
	binary.Write(conn, binary.BigEndian, strdata)
}

func (conn *Conn) writeClassicDisconnect(reason string) {
	var data = []byte{0x0E}
	data = append(data, reason...)
	for len(data)-1 < 64 {
		data = append(data, 0x20)
	}

	conn.Write(data)
}

var fml2hs = [...]byte{0, 70, 79, 82, 71, 69}

// Handles the handshake, and status/login state for the connection
// Returns true if the client is logging in
func (conn *Conn) handleHandshake() bool {
	pk, s, err := conn.ReadPacket()
	if err != nil {
		conn.writeClassicDisconnect(clientVeryOldMsg)
		return false
	}
	if s {
		return false
	}
	handshaking, ok := pk.(*handshake.Handshaking)
	if !ok {
		if pk.ID() == 122 {
			conn.writeLegacyStatus(conn.listener.cfg.Status(conn))
		}
		if pk.ID() == 78 {
			conn.writeLegacyDisconnect(clientTooOldMsg)
		}
		return false
	}
	if addr := []byte(handshaking.ServerAddress); len(addr) > len(fml2hs) && [6]byte(addr[len(addr)-len(fml2hs):]) == fml2hs {
		conn.usesForge = true
	}

	switch handshaking.NextState {
	case handshake.Status:
		conn.state.Store(StatusState)
		pk, s, err := conn.ReadPacket()
		if err != nil || s {
			return false
		}
		switch pac := pk.(type) {
		case *status.StatusRequest:
			if err := conn.WritePacket(&status.StatusResponse{Data: conn.listener.cfg.Status(conn)}); err != nil {
				return false
			}

			pk, s, err = conn.ReadPacket()
			if err != nil || s {
				return false
			}

			p, ok := pk.(*status.Ping)
			if !ok {
				return false
			}

			conn.WritePacket(p)
		case *status.Ping:
			conn.WritePacket(pac)
		}
	case handshake.Transfer:
		if !conn.listener.cfg.AcceptTransfers {
			conn.WritePacket(&login.Disconnect{Reason: text.Sprint("Transfers are not allowed.")})
			conn.Close()
			return false
		}
		fallthrough
	case handshake.Login:
		conn.state.Store(LoginState)
		if handshaking.ProtocolVersion > ProtocolVersion {
			conn.WritePacket(&login.Disconnect{Reason: text.TextComponent{Text: clientTooNewMsg}})
			return false
		}
		if handshaking.ProtocolVersion < ProtocolVersion {
			conn.WritePacket(&login.Disconnect{Reason: text.TextComponent{Text: clientTooOldMsg}})
			return false
		}
		pk, s, err := conn.ReadPacket()
		if err != nil || s {
			return false
		}
		loginStart, ok := pk.(*login.LoginStart)
		if !ok {
			return false
		}
		if ok, r := conn.listener.ApprovePlayer(conn); !ok {
			var reason = text.Sprint("Disconnected")
			if r != nil {
				reason = *r
			}
			conn.WritePacket(&login.Disconnect{Reason: reason})
			conn.Close()
			return false
		}
		conn.username = loginStart.Name
		conn.uuid = loginStart.PlayerUUID

		if conn.listener.cfg.Encrypt {
			if err := conn.encrypt(); err != nil {
				return false
			}
			if conn.listener.cfg.Authenticate {
				if err := conn.authenticate(); err != nil && conn.listener.cfg.Authenticate {
					conn.WritePacket(&login.Disconnect{Reason: text.TextComponent{Text: "This server uses authenticated encryption mode, and you are using a cracked account."}})
					return false
				}
			}
		}
		if !conn.listener.cfg.Authenticate {
			conn.uuid = username2v3(conn.username)
		}

		if err := conn.WritePacket(&login.SetCompression{Threshold: conn.listener.cfg.CompressionThreshold}); err != nil {
			return false
		}
		conn.compressionSet = true

		suc := &login.LoginSuccess{
			UUID:       conn.uuid,
			Username:   conn.username,
			Properties: conn.properties,
		}
		if err := conn.WritePacket(suc); err != nil {
			return false
		}
		pk, s, err = conn.ReadPacket()
		if err != nil || s {
			return false
		}
		_, ok = pk.(*login.LoginAcknowledged)
		if !ok {
			return false
		}
		conn.state.Store(ConfigurationState)
		return true
	}
	return false
}

func username2v3(username string) uuid.UUID {
	d := append([]byte("OfflinePlayer:"), username...)

	sum := md5.Sum(d)
	sum[6] &= 0x0f /* clear version        */
	sum[6] |= 0x30 /* set to version 3     */
	sum[8] &= 0x3f /* clear variant        */
	sum[8] |= 0x80 /* set to IETF variant  */

	return uuid.UUID(sum)
}


================================================
FILE: protocol/net/encryption.go
================================================
package net

import (
	"crypto/aes"
	"crypto/rand"
	"crypto/rsa"
	"crypto/x509"
	"fmt"

	"github.com/zeppelinmc/zeppelin/protocol/net/cfb8"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet/login"
)

func (conn *Conn) encryptd(plaintext, dst []byte) {
	conn.encrypter.XORKeyStream(dst, plaintext)
}

func (conn *Conn) decryptd(ciphertext, dst []byte) {
	conn.decrypter.XORKeyStream(dst, ciphertext)
}

func (conn *Conn) encrypt() error {
	key, err := x509.MarshalPKIXPublicKey(&conn.listener.privKey.PublicKey)
	if err != nil {
		return err
	}

	verifyToken := make([]byte, 4)
	rand.Read(verifyToken)

	conn.WritePacket(&login.EncryptionRequest{
		PublicKey:          key,
		VerifyToken:        verifyToken,
		ShouldAuthenticate: conn.listener.cfg.Authenticate,
	})
	p, s, err := conn.ReadPacket()
	if err != nil || s {
		return err
	}
	res, ok := p.(*login.EncryptionResponse)
	if !ok {
		return fmt.Errorf("unsuccessful encryption")
	}
	conn.encrypted = ok

	conn.sharedSecret, err = rsa.DecryptPKCS1v15(nil, conn.listener.privKey, res.SharedSecret)
	if err != nil {
		return err
	}
	conn.verifyToken, err = rsa.DecryptPKCS1v15(nil, conn.listener.privKey, res.VerifyToken)
	if err != nil {
		return err
	}

	if [4]byte(conn.verifyToken) != [4]byte(verifyToken) {
		return fmt.Errorf("unsuccessful encryption")
	}

	block, err := aes.NewCipher(conn.sharedSecret)
	if err != nil {
		return err
	}
	conn.encrypter = cfb8.NewCFB8(block, conn.sharedSecret, false)
	conn.decrypter = cfb8.NewCFB8(block, conn.sharedSecret, true)

	return nil
}


================================================
FILE: protocol/net/io/buffers/buffers.go
================================================
package buffers

import (
	"bytes"
	"sync"
)

var Buffers = sync.Pool{
	New: func() any {
		return new(bytes.Buffer)
	},
}

func Size() int {
	buf := Buffers.Get().(*bytes.Buffer)
	defer Buffers.Put(buf)

	return buf.Cap()
}


================================================
FILE: protocol/net/io/compress/compress.go
================================================
package compress

import (
	"bytes"
	"compress/gzip"
	"sync"

	"github.com/4kills/go-libdeflate/v2"
	"github.com/4kills/go-zlib"
)

var decompressors = sync.Pool{
	New: func() any {
		dc, _ := libdeflate.NewDecompressor()
		return dc
	},
}

var compressors = sync.Pool{
	New: func() any {
		dc, _ := libdeflate.NewCompressor()
		return dc
	},
}

var bufs = sync.Pool{
	New: func() any { return new(bytes.Buffer) },
}

// RZlib is a pool of zlib.Reader's that can be reused to avoid allocations
var RZlib = sync.Pool{
	New: func() any { d, _ := zlib.NewReader(nil); return d },
}

// RGzip is a pool of gzip.Reader's that can be reused to avoid allocations
var RGzip = sync.Pool{
	New: func() any { d, _ := gzip.NewReader(nil); return d },
}

// WZlib is a pool of zlib.Writer's that can be reused to avoid allocations
var WZlib = sync.Pool{
	New: func() any { return zlib.NewWriter(nil) },
}

// WGzip is a pool of gzip.Writer's that can be reused to avoid allocations
var WGzip = sync.Pool{
	New: func() any { return gzip.NewWriter(nil) },
}


================================================
FILE: protocol/net/io/compress/lz4.go
================================================
package compress

import (
	"bytes"
	"encoding/binary"
	"fmt"

	"github.com/pierrec/lz4/v4"
)

// Decompress a lz4-java data. The data returned is only safe to use until the next operation
func DecompressLZ4(data []byte) ([]byte, error) {
	var buf = bufs.Get().(*bytes.Buffer)
	defer bufs.Put(buf)

	buf.Reset()

	var (
		offsetFile   int
		offsetBuffer int
	)
	for {
		if offsetFile == len(data) {
			return buf.Bytes()[:offsetBuffer], nil
		}
		header := data[offsetFile : offsetFile+21]
		offsetFile += 21

		if string(header[:8]) != magic {
			return buf.Bytes()[:offsetBuffer], fmt.Errorf("invalid magic value")
		}

		token := header[8]
		compressedLength := int(binary.LittleEndian.Uint32(header[9:13]))

		compressionMethod := token & 0xf0

		switch compressionMethod {
		case methodUncompressed:
			if buf.Cap()-offsetBuffer < compressedLength {
				buf.Grow(offsetBuffer + compressedLength)
			}

			copy(buf.Bytes()[offsetBuffer:offsetBuffer+compressedLength], data[offsetFile:offsetFile+compressedLength])
			offsetBuffer += compressedLength
		case methodLZ4:
			decompressedLength := int(binary.LittleEndian.Uint32(header[13:17]))

			if buf.Cap()-offsetBuffer < decompressedLength {
				buf.Grow(offsetBuffer + decompressedLength)
			}

			if _, err := lz4.UncompressBlock(data[offsetFile:offsetFile+compressedLength], buf.Bytes()[offsetBuffer:offsetBuffer+decompressedLength]); err != nil {
				return buf.Bytes()[:offsetBuffer], err
			}
			offsetBuffer += decompressedLength
		}
		offsetFile += compressedLength
	}
}

const magic = "LZ4Block"
const (
	methodUncompressed = 1 << (iota + 4)
	methodLZ4
)


================================================
FILE: protocol/net/io/compress/zlib.go
================================================
package compress

import (
	"bytes"

	"github.com/4kills/go-libdeflate/v2"
)

// Decompress zlib. If decompressedLength is provided, the data returned will only be safe to use until the next operation
// It is recommmended to provide the decompressed length to avoid allocation. If you don't know it, provide a number likely bigger than the decompressed length.
func DecompressZlib(compressed []byte, decompressedLength *int) ([]byte, error) {
	dc := decompressors.Get().(libdeflate.Decompressor)
	defer decompressors.Put(dc)

	if decompressedLength != nil {
		dst := bufs.Get().(*bytes.Buffer)
		if dst.Len() < int(*decompressedLength) {
			dst.Grow(*decompressedLength)
		}
		defer bufs.Put(dst)

		c := dst.Bytes()[:*decompressedLength]

		_, decompressedResult, err := dc.DecompressZlib(compressed, c)

		return decompressedResult, err
	} else {
		_, decompressedResult, err := dc.DecompressZlib(compressed, nil)
		return decompressedResult, err
	}
}

// Compresses zlib. If compressedLength is provided, data returned will only be safe to use until the next operation.
// It is recommmended to provide the compressed length to avoid allocation. If you don't know it, provide a number likely bigger than the compressed length.
func CompressZlib(decompressedData []byte, compressedLength *int) (compressed []byte, err error) {
	c := compressors.Get().(libdeflate.Compressor)
	defer compressors.Put(c)

	if compressedLength != nil {
		dst := bufs.Get().(*bytes.Buffer)
		if dst.Len() < int(*compressedLength) {
			dst.Grow(*compressedLength)
		}
		defer bufs.Put(dst)

		dc := dst.Bytes()[:*compressedLength]

		_, compressedResult, err := c.CompressZlib(decompressedData, dc)

		return compressedResult, err
	} else {
		_, compressedResult, err := c.CompressZlib(decompressedData, nil)

		return compressedResult, err
	}
}


================================================
FILE: protocol/net/io/encoding/encoding.go
================================================
// Package encoding provides encoding and decoding of minecraft data types
package encoding

import (
	"fmt"
	"io"
	"unsafe"
)

func AppendByte(data []byte, b int8) []byte {
	return append(data, byte(b))
}

func AppendUbyte(data []byte, b byte) []byte {
	return append(data, b)
}

func AppendShort(data []byte, s int16) []byte {
	return append(data, byte(s>>8), byte(s))
}

func AppendUshort(data []byte, s uint16) []byte {
	return append(data, byte(s>>8), byte(s))
}

func AppendInt(data []byte, i int32) []byte {
	return append(data, byte(i>>24), byte(i>>16), byte(i>>8), byte(i))
}

func AppendLong(data []byte, l int64) []byte {
	return append(data, byte(l>>56), byte(l>>48), byte(l>>40), byte(l>>32), byte(l>>24), byte(l>>16), byte(l>>8), byte(l))
}

func AppendVarInt(data []byte, value int32) []byte {
	ux := uint32(value)
	for ux >= 0x80 {
		data = append(data, byte(ux&0x7F)|0x80)
		ux >>= 7
	}
	return append(data, byte(ux))
}

func PutVarInt(data []byte, value int32) (n int) {
	ux := uint32(value)
	var i int
	for ; ux >= 0x80; i++ {
		data[i] = byte(ux&0x7F) | 0x80
		ux >>= 7
	}
	data[i] = byte(ux)

	return i
}

func WriteVarInt(w io.Writer, value int32) error {
	ux := uint32(value)
	for ux >= 0x80 {
		if _, err := w.Write([]byte{byte(ux&0x7F) | 0x80}); err != nil {
			return err
		}

		ux >>= 7
	}

	_, err := w.Write([]byte{byte(ux)})
	return err
}

func VarInt(data []byte) (int32, []byte, error) {
	var (
		position    int
		currentByte byte

		value int32
	)

	for {
		if len(data) == 0 {
			return value, data, io.EOF
		}
		currentByte = data[0]
		data = data[1:]

		value |= int32(currentByte&127) << position

		if (currentByte & 128) == 0 {
			break
		}

		position += 7

		if position >= 32 {
			return value, data, fmt.Errorf("VarInt is too big")
		}
	}

	return value, data, nil
}

func ReadVarInt(r io.Reader) (int32, error) {
	var (
		position    int32
		currentByte byte
		continueBit byte = 128
		segmentBits byte = 127

		value int32
	)

	for {
		if _, err := r.Read(unsafe.Slice(&currentByte, 1)); err != nil {
			return value, err
		}

		value |= int32(currentByte&segmentBits) << position

		if (currentByte & continueBit) == 0 {
			break
		}

		position += 7

		if position >= 32 {
			return value, fmt.Errorf("VarInt is too big")
		}
	}

	return value, nil
}

func AppendVarLong(data []byte, value int64) []byte {
	var (
		continueBit int64 = 128
		segmentBits int64 = 127
	)
	for {
		if (value & ^segmentBits) == 0 {
			return append(data, byte(value))
		}

		data = append(data, byte((value&segmentBits)|continueBit))

		value >>= 7
	}
}

func AppendString(data []byte, str string) []byte {
	data = AppendVarInt(data, int32(len(str)))

	return append(data, str...)
}

func String(data []byte) (string, error) {
	l, strd, err := VarInt(data)
	if err != nil {
		return "", err
	}

	return unsafe.String(unsafe.SliceData(strd), l), nil
}

type BitSet []int64

func (set BitSet) Get(i int) bool {
	return (set[i/64] & (1 << (i % 64))) != 0
}

func (set BitSet) Set(i int) {
	set[i/64] |= 1 << (i % 64)
}

func (set BitSet) Unset(i int) {
	set[i/64] &= ^(1 << (i % 64))
}

type FixedBitSet []byte

func (set FixedBitSet) Get(i int) bool {
	return (set[i/8] & (1 << (i % 8))) != 0
}

func (set FixedBitSet) Set(i int) {
	set[i/8] |= 1 << (i % 8)
}

func (set FixedBitSet) Unset(i int) {
	set[i/8] &= ^(1 << (i % 8))
}


================================================
FILE: protocol/net/io/encoding/reader.go
================================================
package encoding

import (
	"encoding/json"
	"fmt"
	"io"
	"math"
	"unsafe"

	"github.com/zeppelinmc/zeppelin/protocol/nbt"
	"github.com/zeppelinmc/zeppelin/protocol/text"

	"github.com/google/uuid"
)

type Reader struct {
	r      io.Reader
	length int
}

func NewReader(r io.Reader, length int) Reader {
	return Reader{r, length}
}

func (r *Reader) SetLength(length int) {
	r.length = length
}

func (r Reader) readBytes(l int) ([]byte, error) {
	if l < 0 {
		return nil, fmt.Errorf("negative length for make (read bytes)")
	}
	arr := make([]byte, l)
	_, err := r.r.Read(arr)
	return arr, err
}

func (r Reader) Read(dst []byte) (i int, err error) {
	return r.r.Read(dst)
}

func (r Reader) Bool(b *bool) error {
	var byt byte
	err := r.Ubyte(&byt)
	*b = byt != 0
	return err
}

func (r Reader) ReadAll(data *[]byte) (err error) {
	*data, err = r.readBytes(r.length)
	return err
}

func (r Reader) Byte(i *int8) error {
	d, err := r.readBytes(1)
	*i = int8(d[0])
	return err
}
func (r Reader) Ubyte(i *byte) error {
	d, err := r.readBytes(1)
	*i = d[0]
	return err
}

func (r Reader) Short(i *int16) error {
	d, err := r.readBytes(2)
	*i = int16(d[0])<<8 | int16(d[1])
	return err
}
func (r Reader) Ushort(i *uint16) error {
	d, err := r.readBytes(2)
	*i = uint16(d[0])<<8 | uint16(d[1])
	return err
}

func (r Reader) Int(i *int32) error {
	d, err := r.readBytes(4)
	*i = int32(d[0])<<24 | int32(d[1])<<16 | int32(d[2])<<8 | int32(d[3])
	return err
}

func (r Reader) Long(i *int64) error {
	d, err := r.readBytes(8)
	*i = int64(d[0])<<56 | int64(d[1])<<48 | int64(d[2])<<40 | int64(d[3])<<32 | int64(d[4])<<24 | int64(d[5])<<16 | int64(d[6])<<8 | int64(d[7])
	return err
}

func (r Reader) Float(f *float32) error {
	return r.Int((*int32)(unsafe.Pointer(f)))
}
func (r Reader) Double(f *float64) error {
	return r.Long((*int64)(unsafe.Pointer(f)))
}

func (r Reader) String(s *string) error {
	var l int32
	if _, err := r.VarInt(&l); err != nil {
		return err
	}
	d, err := r.readBytes(int(l))
	*s = unsafe.String(unsafe.SliceData(d), len(d))

	return err
}

func (r Reader) Identifier(s *string) error {
	return r.String(s)
}

func (r Reader) VarInt(value *int32) (i int, err error) {
	var (
		position     int32
		currentByte  byte
		CONTINUE_BIT byte = 128
		SEGMENT_BITS byte = 127

		size int
	)

	for {
		if err := r.Ubyte(&currentByte); err != nil {
			return size, err
		}

		*value |= int32((currentByte & SEGMENT_BITS)) << position
		size++

		if (currentByte & CONTINUE_BIT) == 0 {
			break
		}

		position += 7

		if position >= 32 {
			return size, fmt.Errorf("VarInt is too big")
		}
	}

	return size, nil
}

func (r Reader) VarLong(value *int64) error {
	var (
		position     int64
		currentByte  byte
		CONTINUE_BIT byte = 128
		SEGMENT_BITS byte = 127
	)

	for {
		if err := r.Ubyte(&currentByte); err != nil {
			return err
		}
		*value |= int64((currentByte & SEGMENT_BITS)) << position

		if (currentByte & CONTINUE_BIT) == 0 {
			break
		}

		position += 7

		if position >= 32 {
			return fmt.Errorf("VarInt is too big")
		}
	}

	return nil
}

func (r Reader) Position(x, y, z *int32) error {
	var l int64
	err := r.Long(&l)

	*x = int32(l >> 38)
	*y = int32(l << 52 >> 52)
	*z = int32(l << 26 >> 38)

	return err
}

func (r Reader) UUID(u *uuid.UUID) error {
	d, err := r.readBytes(16)

	*u = uuid.UUID(d)
	return err
}

func (r Reader) BitSet(data *BitSet) error {
	var l int32
	if _, err := r.VarInt(&l); err != nil {
		return err
	}
	if l < 0 {
		return fmt.Errorf("negative length for make (bitset)")
	}
	*data = make([]int64, l)

	for _, l := range *data {
		if err := r.Long(&l); err != nil {
			return err
		}
	}
	return nil
}

func (r Reader) FixedBitSet(data *FixedBitSet, bits int32) error {
	*data = make(FixedBitSet, int(math.Ceil(float64(bits)/8)))
	for _, l := range *data {
		if err := r.Ubyte(&l); err != nil {
			return err
		}
	}
	return nil
}

// Length prefixed byte array
func (r Reader) ByteArray(s *[]byte) error {
	var l int32
	if _, err := r.VarInt(&l); err != nil {
		return err
	}
	d, err := r.readBytes(int(l))
	*s = d

	return err
}

func (r Reader) FixedByteArray(s []byte) error {
	_, err := r.r.Read(s)
	return err
}

func (r Reader) NBT(v any) error {
	dec := nbt.NewDecoder(r.r)
	dec.ReadRootName(false)

	_, err := dec.Decode(v)

	return err
}

func (r Reader) JSONTextComponent(comp *text.TextComponent) error {
	var d []byte
	if err := r.ByteArray(&d); err != nil {
		return err
	}
	return json.Unmarshal(d, comp)
}

func (r Reader) TextComponent(comp *text.TextComponent) error {
	var tag int8
	if err := r.Byte(&tag); err != nil {
		return err
	}
	switch tag {
	case nbt.String:
		return r.nbtString(&comp.Text)
	case nbt.Compound:
		return r.NBT(comp)
	default:
		return fmt.Errorf("invalid text component root compound")
	}
}

func (r Reader) nbtString(v *string) error {
	var stringlen int16
	if err := r.Short(&stringlen); err != nil {
		return err
	}
	d, err := r.readBytes(int(stringlen))
	*v = unsafe.String(unsafe.SliceData(d), len(d))

	return err
}


================================================
FILE: protocol/net/io/encoding/writer.go
================================================
package encoding

import (
	"bytes"
	"encoding/json"
	"fmt"
	"math"
	"unsafe"

	"github.com/zeppelinmc/zeppelin/protocol/nbt"
	"github.com/zeppelinmc/zeppelin/protocol/text"

	"github.com/google/uuid"
)

type Writer struct {
	w *bytes.Buffer
}

func NewWriter(w *bytes.Buffer) Writer {
	return Writer{w}
}

func (w Writer) Write(data []byte) (i int, err error) {
	return w.w.Write(data)
}

func (w Writer) Bool(b bool) error {
	return w.Ubyte(*(*byte)(unsafe.Pointer(&b)))
}

func (w Writer) Byte(i int8) error {
	return w.Ubyte(uint8(i))
}
func (w Writer) Ubyte(i uint8) error {
	_, err := w.Write([]byte{i})

	return err
}

func (w Writer) Short(i int16) error {
	return w.Ushort(uint16(i))
}
func (w Writer) Ushort(i uint16) error {
	_, err := w.Write(
		[]byte{
			byte(i >> 8),
			byte(i),
		},
	)
	return err
}

func (w Writer) Int(i int32) error {
	_, err := w.Write(
		[]byte{
			byte(i >> 24),
			byte(i >> 16),
			byte(i >> 8),
			byte(i),
		},
	)
	return err
}

func (w Writer) Long(i int64) error {
	_, err := w.Write(
		[]byte{
			byte(i >> 56),
			byte(i >> 48),
			byte(i >> 40),
			byte(i >> 32),
			byte(i >> 24),
			byte(i >> 16),
			byte(i >> 8),
			byte(i),
		},
	)
	return err
}

func (w Writer) Float(f float32) error {
	return w.Int(int32(math.Float32bits(f)))
}
func (w Writer) Double(f float64) error {
	return w.Long(int64(math.Float64bits(f)))
}

func (w Writer) String(s string) error {
	if err := w.VarInt(int32(len(s))); err != nil {
		return err
	}
	_, err := w.Write(unsafe.Slice(unsafe.StringData(s), len(s))) //(*(*[]byte)(unsafe.Pointer(&s)))
	return err
}

func (w Writer) Identifier(s string) error {
	if len(s) > 32767 {
		return fmt.Errorf("expected identifier len to be smaller than 32767, got %d", len(s))
	}
	if err := w.VarInt(int32(len(s))); err != nil {
		return err
	}
	_, err := w.Write(unsafe.Slice(unsafe.StringData(s), len(s))) //(*(*[]byte)(unsafe.Pointer(&s)))
	return err
}

func (w Writer) VarInt(value int32) error {
	ux := uint32(value)
	for ux >= 0x80 {
		if err := w.Ubyte(byte(ux&0x7F) | 0x80); err != nil {
			return err
		}

		ux >>= 7
	}

	return w.Ubyte(byte(ux))
}

func (w Writer) VarLong(value int64) error {
	var (
		CONTINUE_BIT int64 = 128
		SEGMENT_BITS int64 = 127
	)
	for {
		if (value & ^SEGMENT_BITS) == 0 {
			return w.Ubyte(byte(value))
		}

		if err := w.Ubyte(byte((value & SEGMENT_BITS) | CONTINUE_BIT)); err != nil {
			return err
		}

		value >>= 7
	}
}

func (w Writer) Position(x, y, z int32) error {
	return w.Long(((int64(x) & 0x3FFFFFF) << 38) | ((int64(z) & 0x3FFFFFF) << 12) | (int64(y) & 0xFFF))
}

func (w Writer) UUID(u uuid.UUID) error {
	d := [16]byte(u)
	_, err := w.Write(d[:])
	return err
}

func (w Writer) BitSet(data BitSet) error {
	if err := w.VarInt(int32(len(data))); err != nil {
		return err
	}
	for _, l := range data {
		if err := w.Long(l); err != nil {
			return err
		}
	}
	return nil
}

func (w Writer) FixedBitSet(data FixedBitSet) error {
	for _, l := range data {
		if err := w.Ubyte(l); err != nil {
			return err
		}
	}
	return nil
}

// Length prefixed byte array
func (w Writer) ByteArray(s []byte) error {
	if err := w.VarInt(int32(len(s))); err != nil {
		return err
	}
	_, err := w.w.Write(s)

	return err
}

func (w Writer) FixedByteArray(s []byte) error {
	_, err := w.w.Write(s)

	return err
}

func (w Writer) JSONTextComponent(comp text.TextComponent) error {
	d, _ := json.Marshal(comp)

	return w.ByteArray(d)
}

func (w Writer) TextComponent(comp text.TextComponent) error {
	return w.NBT(comp)
}

func (w Writer) StringTextComponent(text string) error {
	if err := w.Byte(8); err != nil {
		return err
	}
	if err := w.Short(int16(len(text))); err != nil {
		return err
	}

	return w.String(text)
}

func (w Writer) NBT(data any) error {
	enc := nbt.NewEncoder(w.w)
	enc.WriteRootName(false)

	return enc.Encode("", data)
}


================================================
FILE: protocol/net/listener.go
================================================
// Package net provides tools for creating minecraft servers, such as packet sending, registry data, encryption, authentication, compression and more
package net

import (
	"crypto/rsa"
	"fmt"
	"github.com/zeppelinmc/zeppelin/protocol/net/packet"
	"net"

	"github.com/zeppelinmc/zeppelin/protocol/text"
)

const (
	ProtocolVersion = 767
)

const (
	HandshakingState = iota
	StatusState
	LoginState
	ConfigurationState
	PlayState
)

type Listener struct {
	net.Listener
	cfg Config

	ApprovePlayer func(*Conn) (ok bool, disconnectionReason *text.TextComponent)

	newConns chan *Conn
	err      chan error

	privKey *rsa.PrivateKey
}

func (l *Listener) SetStatusProvider(p StatusProvider) {
	l.cfg.Status = p
}

func (l *Listener) StatusProvider() StatusProvider {
	return l.cfg.Status
}

func (l *Listener) listen() {
	for {
		c, err := l.Listener.Accept()
		if err != nil {
			l.err <- err
			close(l.newConns)
			return
		}
		conn := l.newConn(c)

		go func() {
			if conn.handleHandshake() {
				l.newConns <- conn
			}
		}()
	}
}

func (l *Listener) newConn(c net.Conn) *Conn {
	conn := &Conn{
		Conn:     c,
		listener: l,

		packetWriteChan: make(chan packet.Encodeable, l.cfg.PacketWriteChanBuffer),
	}

	return conn
}

func (l *Listener) Close() error {
	close(l.newConns)
	l.err <- fmt.Errorf("listener closed")

	return nil
}

func (l *Listener) Accept() (*Conn, error) {
	conn, ok := <-l.newConns
	if !ok {
		return nil, <-l.err
	}

	return conn, nil
}


================================================
FILE: protocol/net/metadata/metadata.go
================================================
package metadata

import (
	"github.com/google/uuid"
	"github.com/zeppelinmc/zeppelin/protocol/net/slot"
	"github.com/zeppelinmc/zeppelin/protocol/text"
)

/*
	[index] -> value

value must be one of the types below

learn more about metadata at https://wiki.vg/Entity_metadata
*/
type Metadata map[byte]any

type (
	Byte    int8    //0
	VarInt  int32   //1
	VarLong int64   //2
	Float   float32 //3
	String  string  //4

	TextComponent         text.TextComponent  //5
	OptionalTextComponent *text.TextComponent //6
	Slot                  = slot.Slot         //7
	Boolean               bool                //8
	Rotations             [3]Float            //9
	Position              [3]int32            //10
	OptionalPosition      *[3]int32           //11
	Direction             VarInt              //12
	OptionalUUID          *uuid.UUID          //13
	BlockState            VarInt              //14
	OptionalBlockState    VarInt              //15
	NBT                   any                 //16
	// Particle //17
	VillagerData   [3]Float //18 | [type, profession, level]
	OptionalVarInt VarInt   //19
	Pose           VarInt   //20
	CatVariant     VarInt   //21
	FrogVariant    VarInt   //22

	GlobalPosition struct {
		DimensionIdentifier String
		Position            Position
	}
	OptionalGlobalPosition *GlobalPosition //23

	PaintingVariant VarInt   //24
	SnifferState    VarInt   //25
	Vector3         [3]Float //26
	Quatermion      [4]Float //27
)

const (
	Standing Pose = iota
	FallFlying
	Sleeping
	Swimming
	SpinAttack
	Sneaking
	LongJumping
	Dying
	Croaking
	UsingTongue
	Sitting
	Roaring
	Sniffing
	Emerging
	Digging
)

const (
	SnifferIdling SnifferState = iota
	SnifferFeelingHappy
	SnifferScenting
	SnifferSniffing
	SnifferSearching
	SnifferDigging
	SnifferRising
)

const (
	VillagerTypeDesert = iota
	VillagerTypeJungle
	VillagerTypePlains
	VillagerTypeSavanna
	VillagerTypeSnow
	VillagerTypeSwamp
	VillagerTypeTaiga
)

const (
	VillagerProfessionNone = iota
	VillagerProfessionArmorer
	VillagerProfessionButcher
	VillagerProfessionCartographer
	VillagerProfessionCleric
	VillagerProfessionFarmer
	VillagerProfessionFisherman
	VillagerProfessionFletcher
	VillagerProfessionLeatherworker
	VillagerProfessionLibrarian
	VillagerProfessionMason // hi mason
	VillagerProfessionNitwit
	VillagerProfessionShepherd
	VillagerProfessionToolsmith
	VillagerProfessionWeaponsmith
)

const (
	IsOnFire = 1 << iota
	IsCrouching
	IsRiding_unused
	IsSprinting
	IsSwimming
	IsInvisible
	HasGlowingEffect
	IsFlyingWithElytra
)

const (
	IsHandActive = 1 << iota
	IsOffhandActive
	IsInRiptideSpinAttack
)

// base state
const (
	// Byte (0)
	BaseIndex = iota
	// VarInt (1)
	AirTicksIndex
	// OptionalTextComponent (6)
	CustomNameIndex
	// Boolean (8)
	IsCustomNameVisibleIndex
	// Boolean (8)
	IsSilentIndex
	// Boolean (8)
	HasNoGravityIndex
	// Pose (21)
	PoseIndex
	// VarInt (1)
	TicksFrozenInPowderedSnowIndex
)

// living state extends state
const (
	// Byte (0)
	LivingEntityHandstatesIndex = iota + 8
	// Float (3)
	LivingEntityHealthIndex
	// VarInt (1)
	LivingEntityPotionEffectColorIndex
	// Boolean (8)
	LivingEntityPotionEffectAmbientIndex
	// VarInt (1)
	LivingEntityArrowCountIndex
	// VarInt (1)
	LivingEntityBeeStingersCountIndex
	// Optional Position (11)
	LivingEntitySleepingBedPositionIndex
)

// player extends living state
const (
	// Float (3)
	PlayerAdditionalHeartsIndex = iota + 15
	// VarInt (1)
	PlayerScoreIndex
	// Byte (0)
	PlayerDisplayedSkinPartsIndex
	// Byte (0)
	PlayerMainHandIndex
	// NBT (16)
	LeftShoulderEntityData
	// NBT (16)
	RightShoulderEntityData
)


================================================
FILE: protocol/net/metadata/new.go
================================================
package metadata

// Player returns the default player metadata object
func Player(health float32) Metadata {
	return Metadata{
		// Entity
		BaseIndex:                      Byte(0),
		AirTicksIndex:                  VarInt(300),
		CustomNameIndex:                OptionalTextComponent(nil),
		IsCustomNameVisibleIndex:       Boolean(false),
		IsSilentIndex:                  Boolean(false),
		HasNoGravityIndex:              Boolean(false),
		PoseIndex:                      Standing,
		TicksFrozenInPowderedSnowIndex: VarInt(0),
		// Living Entity extends Entity
		LivingEntityHandstatesIndex: Byte(0),
		LivingEntityHealthIndex:     Float(health), // this one is actually stored in data (others are too but arent used yet)
		//LivingEntityPotionEffectColorIndex:   VarInt(0),
		LivingEntityPotionEffectAmbientIndex: Boolean(false),
		LivingEntityArrowCountIndex:          VarInt(0),
		LivingEntityBeeStingersCountIndex:    VarInt(0),
		LivingEntitySleepingBedPositionIndex: OptionalPosition(nil),
		// Player extends Living Entity
		PlayerAdditionalHeartsIndex:   Float(0),
		PlayerScoreIndex:              VarInt(0),
		PlayerDisplayedSkinPartsIndex: Byte(0),
		PlayerMainHandIndex:           Byte(1),
	}
}


================================================
FILE: protocol/net/packet/configuration/clientInfo.go
================================================
package configuration

import (
	"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding"
)

const (
	ChatModeEnabled = iota
	ChatModeCommandsOnly
	ChatModeHidden
)

const (
	CapeEnabled = 1 << iota
	JacketEnabled
	LeftSleeveEnabled
	RightSleeveEnabled
	LeftPantsLegEnabled
	RightPantsLegEnabled
	HatEnabled
)

const (
	MainHandLeft = iota
	MainHandRight
)

// serverbound
const PacketIdClientInformation = 0x00

type ClientInformation struct {
	Locale              string
	ViewDistance        int8
	ChatMode            int32
	ChatColors          bool
	DisplayedSkinParts  byte
	MainHand            int32
	EnableTextFiltering bool
	AllowServerListing  bool
}

func (ClientInformation) ID() int32 {
	return 0x00
}

func (c *ClientInformation) Encode(w encoding.Writer) error {
	if err := w.String(c.Locale); err != nil {
		return err
	}
	if err := w.Byte(c.ViewDistance); err != nil {
		return err
	}
	if err := w.VarInt(c.ChatMode); err != nil {
		return err
	}
	if err := w.Bool(c.ChatColors); err != nil {
		return err
	}
	if err := w.Ubyte(c.DisplayedSkinParts); err != nil {
		return err
	}
	if err := w.VarInt(c.MainHand); err != nil {
		return err
	}
	if err := w.Bool(c.EnableTextFiltering); err != nil {
		return err
	}
	return w.Bool(c.AllowServerListing)
}

func (c *ClientInformation) Decode(r encoding.Reader) error {
	if err := r.String(&c.Locale); err != nil {
		return err
	}
	if err := r.Byte(&c.ViewDistance); err != nil {
		return err
	}
	if _, err := r.VarInt(&c.ChatMode); err != nil {
		return err
	}
	if err := r.Bool(&c.ChatColors); err != nil {
		return err
	}
	if err := r.Ubyte(&c.DisplayedSkinParts); err != nil {
		return err
	}
	if _, err := r.VarInt(&c.MainHand); err != nil {
		return err
	}
	if err := r.Bool(&c.EnableTextFiltering); err != nil {
		return err
	}
	return r.Bool(&c.AllowServerListing)
}


================================================
FILE: protocol/net/packet/configuration/cookie.go
================================================
package configuration

import "github.com/zeppelinmc/zeppelin/protocol/net/packet/login"

//clientbound
const PacketIdCookieRequest = 0x00

type CookieRequest struct{ login.CookieRequest }

func (CookieRequest) ID() int32 {
	return 0x00
}

//serverbound
const PacketIdCookieResponse = 0x01

type CookieResponse struct{ login.CookieResponse }

func (CookieResponse) ID() int32 {
	return 0x01
}


================================================
FILE: protocol/net/packet/configuration/disconnect.go
================================================
package configuration

import (
	"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding"
	"github.com/zeppelinmc/zeppelin/protocol/text"
)

// clientbound
const PacketIdDisconnect = 0x02

type Disconnect struct {
	Reason text.TextComponent
}

func (Disconnect) ID() int32 {
	return 0x02
}

func (d *Disconnect) Encode(w encoding.Writer) error {
	return w.TextComponent(d.Reason)
}

func (d *Disconnect) Decode(r encoding.Reader) error {
	return r.TextComponent(&d.Reason)
}


================================================
FILE: protocol/net/packet/configuration/finish.go
================================================
package configuration

import (
	"github.com/zeppelinmc/zeppelin/protocol/net/packet"
)

co
Download .txt
gitextract_f2qo_zll/

├── .github/
│   └── workflows/
│       └── go.yml
├── LICENSE
├── commands/
│   ├── commands.go
│   ├── debug.go
│   ├── gc.go
│   ├── mem.go
│   ├── tick.go
│   └── time.go
├── go.mod
├── go.sum
├── main.go
├── properties/
│   ├── decode.go
│   ├── encode.go
│   └── properties.go
├── protocol/
│   ├── nbt/
│   │   ├── decoder.go
│   │   ├── encoder.go
│   │   ├── qnbt/
│   │   │   ├── abi.go
│   │   │   ├── buffer.go
│   │   │   ├── decode.go
│   │   │   ├── list.go
│   │   │   ├── malloc.go
│   │   │   ├── map.go
│   │   │   ├── primitive.go
│   │   │   ├── qnbt.go
│   │   │   └── struct.go
│   │   └── staticReader.go
│   ├── net/
│   │   ├── authentication.go
│   │   ├── cfb8/
│   │   │   └── cfb8.go
│   │   ├── config.go
│   │   ├── conn.go
│   │   ├── encryption.go
│   │   ├── io/
│   │   │   ├── buffers/
│   │   │   │   └── buffers.go
│   │   │   ├── compress/
│   │   │   │   ├── compress.go
│   │   │   │   ├── lz4.go
│   │   │   │   └── zlib.go
│   │   │   └── encoding/
│   │   │       ├── encoding.go
│   │   │       ├── reader.go
│   │   │       └── writer.go
│   │   ├── listener.go
│   │   ├── metadata/
│   │   │   ├── metadata.go
│   │   │   └── new.go
│   │   ├── packet/
│   │   │   ├── configuration/
│   │   │   │   ├── clientInfo.go
│   │   │   │   ├── cookie.go
│   │   │   │   ├── disconnect.go
│   │   │   │   ├── finish.go
│   │   │   │   ├── keepAlive.go
│   │   │   │   ├── ping.go
│   │   │   │   ├── plugin.go
│   │   │   │   ├── registryData.go
│   │   │   │   └── resetChat.go
│   │   │   ├── handshake/
│   │   │   │   └── handshake.go
│   │   │   ├── login/
│   │   │   │   ├── cookie.go
│   │   │   │   ├── disconnect.go
│   │   │   │   ├── encryption.go
│   │   │   │   ├── loginStart.go
│   │   │   │   ├── loginSuccess.go
│   │   │   │   ├── plugin.go
│   │   │   │   └── setCompression.go
│   │   │   ├── packet.go
│   │   │   ├── play/
│   │   │   │   ├── acknowledgeBlockChange.go
│   │   │   │   ├── blockAction.go
│   │   │   │   ├── blockEntityData.go
│   │   │   │   ├── blockUpdate.go
│   │   │   │   ├── bundleDelimiter.go
│   │   │   │   ├── changeDifficulty.go
│   │   │   │   ├── chatCommand.go
│   │   │   │   ├── chatMessage.go
│   │   │   │   ├── chunkBatch.go
│   │   │   │   ├── chunkData.go
│   │   │   │   ├── clickContainer.go
│   │   │   │   ├── clientInfo.go
│   │   │   │   ├── closeContainer.go
│   │   │   │   ├── commands.go
│   │   │   │   ├── confirmTeleport.go
│   │   │   │   ├── damageEvent.go
│   │   │   │   ├── deleteMessage.go
│   │   │   │   ├── disconnect.go
│   │   │   │   ├── disguisedChatMessage.go
│   │   │   │   ├── entityAnimation.go
│   │   │   │   ├── entityEvent.go
│   │   │   │   ├── entitySoundEffect.go
│   │   │   │   ├── gameEvent.go
│   │   │   │   ├── hurtAnimation.go
│   │   │   │   ├── interact.go
│   │   │   │   ├── keepAlive.go
│   │   │   │   ├── login.go
│   │   │   │   ├── openScreen.go
│   │   │   │   ├── playerAbilitiesCB.go
│   │   │   │   ├── playerAbilitiesSB.go
│   │   │   │   ├── playerChatMessage.go
│   │   │   │   ├── playerCommand.go
│   │   │   │   ├── playerInfoRemove.go
│   │   │   │   ├── playerInfoUpdate.go
│   │   │   │   ├── playerSession.go
│   │   │   │   ├── plugin.go
│   │   │   │   ├── removeEntities.go
│   │   │   │   ├── serverData.go
│   │   │   │   ├── serverLinks.go
│   │   │   │   ├── setCenterChunk.go
│   │   │   │   ├── setContainerContent.go
│   │   │   │   ├── setCreativeModeSlot.go
│   │   │   │   ├── setDefaultSpawnPosition.go
│   │   │   │   ├── setEntityMetadata.go
│   │   │   │   ├── setEntityVelocity.go
│   │   │   │   ├── setHeadRotation.go
│   │   │   │   ├── setHeldItemCB.go
│   │   │   │   ├── setHeldItemSB.go
│   │   │   │   ├── setPlayerOnGround.go
│   │   │   │   ├── setPlayerPosition.go
│   │   │   │   ├── setPlayerPositionAndRotation.go
│   │   │   │   ├── setPlayerRotation.go
│   │   │   │   ├── setTickingState.go
│   │   │   │   ├── signedChatCommand.go
│   │   │   │   ├── soundEffect.go
│   │   │   │   ├── spawnEntity.go
│   │   │   │   ├── stepTick.go
│   │   │   │   ├── swingArm.go
│   │   │   │   ├── synchronizePlayerPosition.go
│   │   │   │   ├── systemChatMessage.go
│   │   │   │   ├── updateEntityPosition.go
│   │   │   │   ├── updateEntityPositionAndRotation.go
│   │   │   │   ├── updateEntityRotation.go
│   │   │   │   ├── updateRecipeBook.go
│   │   │   │   ├── updateSectionBlocks.go
│   │   │   │   ├── updateTags.go
│   │   │   │   ├── updateTime.go
│   │   │   │   └── useItemOn.go
│   │   │   └── status/
│   │   │       ├── ping.go
│   │   │       └── status.go
│   │   ├── pool.go
│   │   ├── registry/
│   │   │   ├── embed.go
│   │   │   └── registry.go
│   │   ├── slot/
│   │   │   ├── comp_dec.go
│   │   │   └── slot.go
│   │   └── tags/
│   │       └── tags.go
│   └── text/
│       ├── builder.go
│       ├── color.go
│       └── text.go
├── readme.md
├── server/
│   ├── command/
│   │   ├── builder.go
│   │   ├── command.go
│   │   ├── graph.go
│   │   └── manager.go
│   ├── container/
│   │   └── container.go
│   ├── entity/
│   │   ├── entity.go
│   │   └── levelEntity.go
│   ├── player/
│   │   ├── chunks.go
│   │   ├── conn.go
│   │   ├── handler_chat_command.go
│   │   ├── player.go
│   │   ├── playerlist.go
│   │   └── state/
│   │       ├── list/
│   │       │   └── playerlist.go
│   │       ├── playerEntity.go
│   │       └── playerEntityManager.go
│   ├── plugin.go
│   ├── registry/
│   │   ├── activity.go
│   │   ├── armor_material.go
│   │   ├── attribute.go
│   │   ├── block.go
│   │   ├── block_entity_type.go
│   │   ├── block_predicate_type.go
│   │   ├── block_type.go
│   │   ├── cat_variant.go
│   │   ├── chunk_status.go
│   │   ├── command_argument_type.go
│   │   ├── creative_mode_tab.go
│   │   ├── custom_stat.go
│   │   ├── data_component_type.go
│   │   ├── decorated_pot_pattern.go
│   │   ├── enchantment_effect_component_type.go
│   │   ├── enchantment_entity_effect_type.go
│   │   ├── enchantment_level_based_value_type.go
│   │   ├── enchantment_location_based_effect_type.go
│   │   ├── enchantment_provider_type.go
│   │   ├── enchantment_value_effect_type.go
│   │   ├── entity_sub_predicate_type.go
│   │   ├── entity_type.go
│   │   ├── float_provider_type.go
│   │   ├── fluid.go
│   │   ├── frog_variant.go
│   │   ├── game_event.go
│   │   ├── height_provider_type.go
│   │   ├── instrument.go
│   │   ├── int_provider_type.go
│   │   ├── item.go
│   │   ├── item_sub_predicate_type.go
│   │   ├── loot_condition_type.go
│   │   ├── loot_function_type.go
│   │   ├── loot_nbt_provider_type.go
│   │   ├── loot_number_provider_type.go
│   │   ├── loot_pool_entry_type.go
│   │   ├── loot_score_provider_type.go
│   │   ├── map_decoration_type.go
│   │   ├── memory_module_type.go
│   │   ├── menu.go
│   │   ├── mob_effect.go
│   │   ├── number_format_type.go
│   │   ├── particle_type.go
│   │   ├── point_of_interest_type.go
│   │   ├── pos_rule_test.go
│   │   ├── position_source_type.go
│   │   ├── potion.go
│   │   ├── recipe_serializer.go
│   │   ├── recipe_type.go
│   │   ├── registry.go
│   │   ├── rule_block_entity_modifier.go
│   │   ├── rule_test.go
│   │   ├── schedule.go
│   │   ├── sensor_type.go
│   │   ├── sound_event.go
│   │   ├── stat_type.go
│   │   ├── trigger_type.go
│   │   ├── villager_profession.go
│   │   ├── villager_type.go
│   │   ├── worldgen_biome_source.go
│   │   ├── worldgen_block_state_provider_type.go
│   │   ├── worldgen_carver.go
│   │   ├── worldgen_chunk_generator.go
│   │   ├── worldgen_density_function_type.go
│   │   ├── worldgen_feature.go
│   │   ├── worldgen_feature_size_type.go
│   │   ├── worldgen_foliage_placer_type.go
│   │   ├── worldgen_material_condition.go
│   │   ├── worldgen_material_rule.go
│   │   ├── worldgen_placement_modifier_type.go
│   │   ├── worldgen_pool_alias_binding.go
│   │   ├── worldgen_root_placer_type.go
│   │   ├── worldgen_structure_piece.go
│   │   ├── worldgen_structure_placement.go
│   │   ├── worldgen_structure_pool_element.go
│   │   ├── worldgen_structure_processor.go
│   │   ├── worldgen_structure_type.go
│   │   ├── worldgen_tree_decorator_type.go
│   │   └── worldgen_trunk_placer_type.go
│   ├── server.go
│   ├── tick/
│   │   └── tick.go
│   └── world/
│       ├── block/
│       │   ├── 0block.go
│       │   ├── acaciaButton.go
│       │   ├── acaciaDoor.go
│       │   ├── acaciaFence.go
│       │   ├── acaciaFenceGate.go
│       │   ├── acaciaHangingSign.go
│       │   ├── acaciaLeaves.go
│       │   ├── acaciaLog.go
│       │   ├── acaciaPlanks.go
│       │   ├── acaciaPressurePlate.go
│       │   ├── acaciaSapling.go
│       │   ├── acaciaSign.go
│       │   ├── acaciaSlab.go
│       │   ├── acaciaStairs.go
│       │   ├── acaciaTrapdoor.go
│       │   ├── acaciaWallHangingSign.go
│       │   ├── acaciaWallSign.go
│       │   ├── acaciaWood.go
│       │   ├── activatorRail.go
│       │   ├── air.go
│       │   ├── allium.go
│       │   ├── amethystBlock.go
│       │   ├── amethystCluster.go
│       │   ├── ancientDebris.go
│       │   ├── andesite.go
│       │   ├── andesiteSlab.go
│       │   ├── andesiteStairs.go
│       │   ├── andesiteWall.go
│       │   ├── anvil.go
│       │   ├── attachedMelonStem.go
│       │   ├── attachedPumpkinStem.go
│       │   ├── azalea.go
│       │   ├── azaleaLeaves.go
│       │   ├── azureBluet.go
│       │   ├── bamboo.go
│       │   ├── bambooBlock.go
│       │   ├── bambooButton.go
│       │   ├── bambooDoor.go
│       │   ├── bambooFence.go
│       │   ├── bambooFenceGate.go
│       │   ├── bambooHangingSign.go
│       │   ├── bambooMosaic.go
│       │   ├── bambooMosaicSlab.go
│       │   ├── bambooMosaicStairs.go
│       │   ├── bambooPlanks.go
│       │   ├── bambooPressurePlate.go
│       │   ├── bambooSapling.go
│       │   ├── bambooSign.go
│       │   ├── bambooSlab.go
│       │   ├── bambooStairs.go
│       │   ├── bambooTrapdoor.go
│       │   ├── bambooWallHangingSign.go
│       │   ├── bambooWallSign.go
│       │   ├── barrel.go
│       │   ├── barrier.go
│       │   ├── basalt.go
│       │   ├── beacon.go
│       │   ├── bedrock.go
│       │   ├── beeNest.go
│       │   ├── beehive.go
│       │   ├── beetroots.go
│       │   ├── bell.go
│       │   ├── bigDripleaf.go
│       │   ├── bigDripleafStem.go
│       │   ├── birchButton.go
│       │   ├── birchDoor.go
│       │   ├── birchFence.go
│       │   ├── birchFenceGate.go
│       │   ├── birchHangingSign.go
│       │   ├── birchLeaves.go
│       │   ├── birchLog.go
│       │   ├── birchPlanks.go
│       │   ├── birchPressurePlate.go
│       │   ├── birchSapling.go
│       │   ├── birchSign.go
│       │   ├── birchSlab.go
│       │   ├── birchStairs.go
│       │   ├── birchTrapdoor.go
│       │   ├── birchWallHangingSign.go
│       │   ├── birchWallSign.go
│       │   ├── birchWood.go
│       │   ├── blackBanner.go
│       │   ├── blackBed.go
│       │   ├── blackCandle.go
│       │   ├── blackCandleCake.go
│       │   ├── blackCarpet.go
│       │   ├── blackConcrete.go
│       │   ├── blackConcretePowder.go
│       │   ├── blackGlazedTerracotta.go
│       │   ├── blackShulkerBox.go
│       │   ├── blackStainedGlass.go
│       │   ├── blackStainedGlassPane.go
│       │   ├── blackTerracotta.go
│       │   ├── blackWallBanner.go
│       │   ├── blackWool.go
│       │   ├── blackstone.go
│       │   ├── blackstoneSlab.go
│       │   ├── blackstoneStairs.go
│       │   ├── blackstoneWall.go
│       │   ├── blastFurnace.go
│       │   ├── blueBanner.go
│       │   ├── blueBed.go
│       │   ├── blueCandle.go
│       │   ├── blueCandleCake.go
│       │   ├── blueCarpet.go
│       │   ├── blueConcrete.go
│       │   ├── blueConcretePowder.go
│       │   ├── blueGlazedTerracotta.go
│       │   ├── blueIce.go
│       │   ├── blueOrchid.go
│       │   ├── blueShulkerBox.go
│       │   ├── blueStainedGlass.go
│       │   ├── blueStainedGlassPane.go
│       │   ├── blueTerracotta.go
│       │   ├── blueWallBanner.go
│       │   ├── blueWool.go
│       │   ├── boneBlock.go
│       │   ├── bookshelf.go
│       │   ├── brainCoral.go
│       │   ├── brainCoralBlock.go
│       │   ├── brainCoralFan.go
│       │   ├── brainCoralWallFan.go
│       │   ├── brewingStand.go
│       │   ├── brickSlab.go
│       │   ├── brickStairs.go
│       │   ├── brickWall.go
│       │   ├── bricks.go
│       │   ├── brownBanner.go
│       │   ├── brownBed.go
│       │   ├── brownCandle.go
│       │   ├── brownCandleCake.go
│       │   ├── brownCarpet.go
│       │   ├── brownConcrete.go
│       │   ├── brownConcretePowder.go
│       │   ├── brownGlazedTerracotta.go
│       │   ├── brownMushroom.go
│       │   ├── brownMushroomBlock.go
│       │   ├── brownShulkerBox.go
│       │   ├── brownStainedGlass.go
│       │   ├── brownStainedGlassPane.go
│       │   ├── brownTerracotta.go
│       │   ├── brownWallBanner.go
│       │   ├── brownWool.go
│       │   ├── bubbleColumn.go
│       │   ├── bubbleCoral.go
│       │   ├── bubbleCoralBlock.go
│       │   ├── bubbleCoralFan.go
│       │   ├── bubbleCoralWallFan.go
│       │   ├── buddingAmethyst.go
│       │   ├── cactus.go
│       │   ├── cake.go
│       │   ├── calcite.go
│       │   ├── calibratedSculkSensor.go
│       │   ├── campfire.go
│       │   ├── candle.go
│       │   ├── candleCake.go
│       │   ├── carrots.go
│       │   ├── cartographyTable.go
│       │   ├── carvedPumpkin.go
│       │   ├── cauldron.go
│       │   ├── caveAir.go
│       │   ├── caveVines.go
│       │   ├── caveVinesPlant.go
│       │   ├── chain.go
│       │   ├── chainCommandBlock.go
│       │   ├── cherryButton.go
│       │   ├── cherryDoor.go
│       │   ├── cherryFence.go
│       │   ├── cherryFenceGate.go
│       │   ├── cherryHangingSign.go
│       │   ├── cherryLeaves.go
│       │   ├── cherryLog.go
│       │   ├── cherryPlanks.go
│       │   ├── cherryPressurePlate.go
│       │   ├── cherrySapling.go
│       │   ├── cherrySign.go
│       │   ├── cherrySlab.go
│       │   ├── cherryStairs.go
│       │   ├── cherryTrapdoor.go
│       │   ├── cherryWallHangingSign.go
│       │   ├── cherryWallSign.go
│       │   ├── cherryWood.go
│       │   ├── chest.go
│       │   ├── chippedAnvil.go
│       │   ├── chiseledBookshelf.go
│       │   ├── chiseledCopper.go
│       │   ├── chiseledDeepslate.go
│       │   ├── chiseledNetherBricks.go
│       │   ├── chiseledPolishedBlackstone.go
│       │   ├── chiseledQuartzBlock.go
│       │   ├── chiseledRedSandstone.go
│       │   ├── chiseledSandstone.go
│       │   ├── chiseledStoneBricks.go
│       │   ├── chiseledTuff.go
│       │   ├── chiseledTuffBricks.go
│       │   ├── chorusFlower.go
│       │   ├── chorusPlant.go
│       │   ├── clay.go
│       │   ├── coalBlock.go
│       │   ├── coalOre.go
│       │   ├── coarseDirt.go
│       │   ├── cobbledDeepslate.go
│       │   ├── cobbledDeepslateSlab.go
│       │   ├── cobbledDeepslateStairs.go
│       │   ├── cobbledDeepslateWall.go
│       │   ├── cobblestone.go
│       │   ├── cobblestoneSlab.go
│       │   ├── cobblestoneStairs.go
│       │   ├── cobblestoneWall.go
│       │   ├── cobweb.go
│       │   ├── cocoa.go
│       │   ├── commandBlock.go
│       │   ├── comparator.go
│       │   ├── composter.go
│       │   ├── conduit.go
│       │   ├── copperBlock.go
│       │   ├── copperBulb.go
│       │   ├── copperDoor.go
│       │   ├── copperGrate.go
│       │   ├── copperOre.go
│       │   ├── copperTrapdoor.go
│       │   ├── cornflower.go
│       │   ├── crackedDeepslateBricks.go
│       │   ├── crackedDeepslateTiles.go
│       │   ├── crackedNetherBricks.go
│       │   ├── crackedPolishedBlackstoneBricks.go
│       │   ├── crackedStoneBricks.go
│       │   ├── crafter.go
│       │   ├── craftingTable.go
│       │   ├── creeperHead.go
│       │   ├── creeperWallHead.go
│       │   ├── crimsonButton.go
│       │   ├── crimsonDoor.go
│       │   ├── crimsonFence.go
│       │   ├── crimsonFenceGate.go
│       │   ├── crimsonFungus.go
│       │   ├── crimsonHangingSign.go
│       │   ├── crimsonHyphae.go
│       │   ├── crimsonNylium.go
│       │   ├── crimsonPlanks.go
│       │   ├── crimsonPressurePlate.go
│       │   ├── crimsonRoots.go
│       │   ├── crimsonSign.go
│       │   ├── crimsonSlab.go
│       │   ├── crimsonStairs.go
│       │   ├── crimsonStem.go
│       │   ├── crimsonTrapdoor.go
│       │   ├── crimsonWallHangingSign.go
│       │   ├── crimsonWallSign.go
│       │   ├── cryingObsidian.go
│       │   ├── cutCopper.go
│       │   ├── cutCopperSlab.go
│       │   ├── cutCopperStairs.go
│       │   ├── cutRedSandstone.go
│       │   ├── cutRedSandstoneSlab.go
│       │   ├── cutSandstone.go
│       │   ├── cutSandstoneSlab.go
│       │   ├── cyanBanner.go
│       │   ├── cyanBed.go
│       │   ├── cyanCandle.go
│       │   ├── cyanCandleCake.go
│       │   ├── cyanCarpet.go
│       │   ├── cyanConcrete.go
│       │   ├── cyanConcretePowder.go
│       │   ├── cyanGlazedTerracotta.go
│       │   ├── cyanShulkerBox.go
│       │   ├── cyanStainedGlass.go
│       │   ├── cyanStainedGlassPane.go
│       │   ├── cyanTerracotta.go
│       │   ├── cyanWallBanner.go
│       │   ├── cyanWool.go
│       │   ├── damagedAnvil.go
│       │   ├── dandelion.go
│       │   ├── darkOakButton.go
│       │   ├── darkOakDoor.go
│       │   ├── darkOakFence.go
│       │   ├── darkOakFenceGate.go
│       │   ├── darkOakHangingSign.go
│       │   ├── darkOakLeaves.go
│       │   ├── darkOakLog.go
│       │   ├── darkOakPlanks.go
│       │   ├── darkOakPressurePlate.go
│       │   ├── darkOakSapling.go
│       │   ├── darkOakSign.go
│       │   ├── darkOakSlab.go
│       │   ├── darkOakStairs.go
│       │   ├── darkOakTrapdoor.go
│       │   ├── darkOakWallHangingSign.go
│       │   ├── darkOakWallSign.go
│       │   ├── darkOakWood.go
│       │   ├── darkPrismarine.go
│       │   ├── darkPrismarineSlab.go
│       │   ├── darkPrismarineStairs.go
│       │   ├── daylightDetector.go
│       │   ├── deadBrainCoral.go
│       │   ├── deadBrainCoralBlock.go
│       │   ├── deadBrainCoralFan.go
│       │   ├── deadBrainCoralWallFan.go
│       │   ├── deadBubbleCoral.go
│       │   ├── deadBubbleCoralBlock.go
│       │   ├── deadBubbleCoralFan.go
│       │   ├── deadBubbleCoralWallFan.go
│       │   ├── deadBush.go
│       │   ├── deadFireCoral.go
│       │   ├── deadFireCoralBlock.go
│       │   ├── deadFireCoralFan.go
│       │   ├── deadFireCoralWallFan.go
│       │   ├── deadHornCoral.go
│       │   ├── deadHornCoralBlock.go
│       │   ├── deadHornCoralFan.go
│       │   ├── deadHornCoralWallFan.go
│       │   ├── deadTubeCoral.go
│       │   ├── deadTubeCoralBlock.go
│       │   ├── deadTubeCoralFan.go
│       │   ├── deadTubeCoralWallFan.go
│       │   ├── decoratedPot.go
│       │   ├── deepslate.go
│       │   ├── deepslateBrickSlab.go
│       │   ├── deepslateBrickStairs.go
│       │   ├── deepslateBrickWall.go
│       │   ├── deepslateBricks.go
│       │   ├── deepslateCoalOre.go
│       │   ├── deepslateCopperOre.go
│       │   ├── deepslateDiamondOre.go
│       │   ├── deepslateEmeraldOre.go
│       │   ├── deepslateGoldOre.go
│       │   ├── deepslateIronOre.go
│       │   ├── deepslateLapisOre.go
│       │   ├── deepslateRedstoneOre.go
│       │   ├── deepslateTileSlab.go
│       │   ├── deepslateTileStairs.go
│       │   ├── deepslateTileWall.go
│       │   ├── deepslateTiles.go
│       │   ├── detectorRail.go
│       │   ├── diamondBlock.go
│       │   ├── diamondOre.go
│       │   ├── diorite.go
│       │   ├── dioriteSlab.go
│       │   ├── dioriteStairs.go
│       │   ├── dioriteWall.go
│       │   ├── dirt.go
│       │   ├── dirtPath.go
│       │   ├── dispenser.go
│       │   ├── dragonEgg.go
│       │   ├── dragonHead.go
│       │   ├── dragonWallHead.go
│       │   ├── driedKelpBlock.go
│       │   ├── dripstoneBlock.go
│       │   ├── dropper.go
│       │   ├── emeraldBlock.go
│       │   ├── emeraldOre.go
│       │   ├── enchantingTable.go
│       │   ├── endGateway.go
│       │   ├── endPortal.go
│       │   ├── endPortalFrame.go
│       │   ├── endRod.go
│       │   ├── endStone.go
│       │   ├── endStoneBrickSlab.go
│       │   ├── endStoneBrickStairs.go
│       │   ├── endStoneBrickWall.go
│       │   ├── endStoneBricks.go
│       │   ├── enderChest.go
│       │   ├── exposedChiseledCopper.go
│       │   ├── exposedCopper.go
│       │   ├── exposedCopperBulb.go
│       │   ├── exposedCopperDoor.go
│       │   ├── exposedCopperGrate.go
│       │   ├── exposedCopperTrapdoor.go
│       │   ├── exposedCutCopper.go
│       │   ├── exposedCutCopperSlab.go
│       │   ├── exposedCutCopperStairs.go
│       │   ├── farmland.go
│       │   ├── fern.go
│       │   ├── fire.go
│       │   ├── fireCoral.go
│       │   ├── fireCoralBlock.go
│       │   ├── fireCoralFan.go
│       │   ├── fireCoralWallFan.go
│       │   ├── fletchingTable.go
│       │   ├── flowerPot.go
│       │   ├── floweringAzalea.go
│       │   ├── floweringAzaleaLeaves.go
│       │   ├── frogspawn.go
│       │   ├── frostedIce.go
│       │   ├── furnace.go
│       │   ├── gildedBlackstone.go
│       │   ├── glass.go
│       │   ├── glassPane.go
│       │   ├── glowLichen.go
│       │   ├── glowstone.go
│       │   ├── goldBlock.go
│       │   ├── goldOre.go
│       │   ├── granite.go
│       │   ├── graniteSlab.go
│       │   ├── graniteStairs.go
│       │   ├── graniteWall.go
│       │   ├── grassBlock.go
│       │   ├── gravel.go
│       │   ├── grayBanner.go
│       │   ├── grayBed.go
│       │   ├── grayCandle.go
│       │   ├── grayCandleCake.go
│       │   ├── grayCarpet.go
│       │   ├── grayConcrete.go
│       │   ├── grayConcretePowder.go
│       │   ├── grayGlazedTerracotta.go
│       │   ├── grayShulkerBox.go
│       │   ├── grayStainedGlass.go
│       │   ├── grayStainedGlassPane.go
│       │   ├── grayTerracotta.go
│       │   ├── grayWallBanner.go
│       │   ├── grayWool.go
│       │   ├── greenBanner.go
│       │   ├── greenBed.go
│       │   ├── greenCandle.go
│       │   ├── greenCandleCake.go
│       │   ├── greenCarpet.go
│       │   ├── greenConcrete.go
│       │   ├── greenConcretePowder.go
│       │   ├── greenGlazedTerracotta.go
│       │   ├── greenShulkerBox.go
│       │   ├── greenStainedGlass.go
│       │   ├── greenStainedGlassPane.go
│       │   ├── greenTerracotta.go
│       │   ├── greenWallBanner.go
│       │   ├── greenWool.go
│       │   ├── grindstone.go
│       │   ├── hangingRoots.go
│       │   ├── hayBlock.go
│       │   ├── heavyCore.go
│       │   ├── heavyWeightedPressurePlate.go
│       │   ├── honeyBlock.go
│       │   ├── honeycombBlock.go
│       │   ├── hopper.go
│       │   ├── hornCoral.go
│       │   ├── hornCoralBlock.go
│       │   ├── hornCoralFan.go
│       │   ├── hornCoralWallFan.go
│       │   ├── ice.go
│       │   ├── infestedChiseledStoneBricks.go
│       │   ├── infestedCobblestone.go
│       │   ├── infestedCrackedStoneBricks.go
│       │   ├── infestedDeepslate.go
│       │   ├── infestedMossyStoneBricks.go
│       │   ├── infestedStone.go
│       │   ├── infestedStoneBricks.go
│       │   ├── ironBars.go
│       │   ├── ironBlock.go
│       │   ├── ironDoor.go
│       │   ├── ironOre.go
│       │   ├── ironTrapdoor.go
│       │   ├── jackOLantern.go
│       │   ├── jigsaw.go
│       │   ├── jukebox.go
│       │   ├── jungleButton.go
│       │   ├── jungleDoor.go
│       │   ├── jungleFence.go
│       │   ├── jungleFenceGate.go
│       │   ├── jungleHangingSign.go
│       │   ├── jungleLeaves.go
│       │   ├── jungleLog.go
│       │   ├── junglePlanks.go
│       │   ├── junglePressurePlate.go
│       │   ├── jungleSapling.go
│       │   ├── jungleSign.go
│       │   ├── jungleSlab.go
│       │   ├── jungleStairs.go
│       │   ├── jungleTrapdoor.go
│       │   ├── jungleWallHangingSign.go
│       │   ├── jungleWallSign.go
│       │   ├── jungleWood.go
│       │   ├── kelp.go
│       │   ├── kelpPlant.go
│       │   ├── ladder.go
│       │   ├── lantern.go
│       │   ├── lapisBlock.go
│       │   ├── lapisOre.go
│       │   ├── largeAmethystBud.go
│       │   ├── largeFern.go
│       │   ├── lava.go
│       │   ├── lavaCauldron.go
│       │   ├── lectern.go
│       │   ├── lever.go
│       │   ├── light.go
│       │   ├── lightBlueBanner.go
│       │   ├── lightBlueBed.go
│       │   ├── lightBlueCandle.go
│       │   ├── lightBlueCandleCake.go
│       │   ├── lightBlueCarpet.go
│       │   ├── lightBlueConcrete.go
│       │   ├── lightBlueConcretePowder.go
│       │   ├── lightBlueGlazedTerracotta.go
│       │   ├── lightBlueShulkerBox.go
│       │   ├── lightBlueStainedGlass.go
│       │   ├── lightBlueStainedGlassPane.go
│       │   ├── lightBlueTerracotta.go
│       │   ├── lightBlueWallBanner.go
│       │   ├── lightBlueWool.go
│       │   ├── lightGrayBanner.go
│       │   ├── lightGrayBed.go
│       │   ├── lightGrayCandle.go
│       │   ├── lightGrayCandleCake.go
│       │   ├── lightGrayCarpet.go
│       │   ├── lightGrayConcrete.go
│       │   ├── lightGrayConcretePowder.go
│       │   ├── lightGrayGlazedTerracotta.go
│       │   ├── lightGrayShulkerBox.go
│       │   ├── lightGrayStainedGlass.go
│       │   ├── lightGrayStainedGlassPane.go
│       │   ├── lightGrayTerracotta.go
│       │   ├── lightGrayWallBanner.go
│       │   ├── lightGrayWool.go
│       │   ├── lightWeightedPressurePlate.go
│       │   ├── lightningRod.go
│       │   ├── lilac.go
│       │   ├── lilyOfTheValley.go
│       │   ├── lilyPad.go
│       │   ├── limeBanner.go
│       │   ├── limeBed.go
│       │   ├── limeCandle.go
│       │   ├── limeCandleCake.go
│       │   ├── limeCarpet.go
│       │   ├── limeConcrete.go
│       │   ├── limeConcretePowder.go
│       │   ├── limeGlazedTerracotta.go
│       │   ├── limeShulkerBox.go
│       │   ├── limeStainedGlass.go
│       │   ├── limeStainedGlassPane.go
│       │   ├── limeTerracotta.go
│       │   ├── limeWallBanner.go
│       │   ├── limeWool.go
│       │   ├── lodestone.go
│       │   ├── loom.go
│       │   ├── magentaBanner.go
│       │   ├── magentaBed.go
│       │   ├── magentaCandle.go
│       │   ├── magentaCandleCake.go
│       │   ├── magentaCarpet.go
│       │   ├── magentaConcrete.go
│       │   ├── magentaConcretePowder.go
│       │   ├── magentaGlazedTerracotta.go
│       │   ├── magentaShulkerBox.go
│       │   ├── magentaStainedGlass.go
│       │   ├── magentaStainedGlassPane.go
│       │   ├── magentaTerracotta.go
│       │   ├── magentaWallBanner.go
│       │   ├── magentaWool.go
│       │   ├── magmaBlock.go
│       │   ├── mangroveButton.go
│       │   ├── mangroveDoor.go
│       │   ├── mangroveFence.go
│       │   ├── mangroveFenceGate.go
│       │   ├── mangroveHangingSign.go
│       │   ├── mangroveLeaves.go
│       │   ├── mangroveLog.go
│       │   ├── mangrovePlanks.go
│       │   ├── mangrovePressurePlate.go
│       │   ├── mangrovePropagule.go
│       │   ├── mangroveRoots.go
│       │   ├── mangroveSign.go
│       │   ├── mangroveSlab.go
│       │   ├── mangroveStairs.go
│       │   ├── mangroveTrapdoor.go
│       │   ├── mangroveWallHangingSign.go
│       │   ├── mangroveWallSign.go
│       │   ├── mangroveWood.go
│       │   ├── mediumAmethystBud.go
│       │   ├── melon.go
│       │   ├── melonStem.go
│       │   ├── mossBlock.go
│       │   ├── mossCarpet.go
│       │   ├── mossyCobblestone.go
│       │   ├── mossyCobblestoneSlab.go
│       │   ├── mossyCobblestoneStairs.go
│       │   ├── mossyCobblestoneWall.go
│       │   ├── mossyStoneBrickSlab.go
│       │   ├── mossyStoneBrickStairs.go
│       │   ├── mossyStoneBrickWall.go
│       │   ├── mossyStoneBricks.go
│       │   ├── movingPiston.go
│       │   ├── mud.go
│       │   ├── mudBrickSlab.go
│       │   ├── mudBrickStairs.go
│       │   ├── mudBrickWall.go
│       │   ├── mudBricks.go
│       │   ├── muddyMangroveRoots.go
│       │   ├── mushroomStem.go
│       │   ├── mycelium.go
│       │   ├── netherBrickFence.go
│       │   ├── netherBrickSlab.go
│       │   ├── netherBrickStairs.go
│       │   ├── netherBrickWall.go
│       │   ├── netherBricks.go
│       │   ├── netherGoldOre.go
│       │   ├── netherPortal.go
│       │   ├── netherQuartzOre.go
│       │   ├── netherSprouts.go
│       │   ├── netherWart.go
│       │   ├── netherWartBlock.go
│       │   ├── netheriteBlock.go
│       │   ├── netherrack.go
│       │   ├── noteBlock.go
│       │   ├── oakButton.go
│       │   ├── oakDoor.go
│       │   ├── oakFence.go
│       │   ├── oakFenceGate.go
│       │   ├── oakHangingSign.go
│       │   ├── oakLeaves.go
│       │   ├── oakLog.go
│       │   ├── oakPlanks.go
│       │   ├── oakPressurePlate.go
│       │   ├── oakSapling.go
│       │   ├── oakSign.go
│       │   ├── oakSlab.go
│       │   ├── oakStairs.go
│       │   ├── oakTrapdoor.go
│       │   ├── oakWallHangingSign.go
│       │   ├── oakWallSign.go
│       │   ├── oakWood.go
│       │   ├── observer.go
│       │   ├── obsidian.go
│       │   ├── ochreFroglight.go
│       │   ├── orangeBanner.go
│       │   ├── orangeBed.go
│       │   ├── orangeCandle.go
│       │   ├── orangeCandleCake.go
│       │   ├── orangeCarpet.go
│       │   ├── orangeConcrete.go
│       │   ├── orangeConcretePowder.go
│       │   ├── orangeGlazedTerracotta.go
│       │   ├── orangeShulkerBox.go
│       │   ├── orangeStainedGlass.go
│       │   ├── orangeStainedGlassPane.go
│       │   ├── orangeTerracotta.go
│       │   ├── orangeTulip.go
│       │   ├── orangeWallBanner.go
│       │   ├── orangeWool.go
│       │   ├── oxeyeDaisy.go
│       │   ├── oxidizedChiseledCopper.go
│       │   ├── oxidizedCopper.go
│       │   ├── oxidizedCopperBulb.go
│       │   ├── oxidizedCopperDoor.go
│       │   ├── oxidizedCopperGrate.go
│       │   ├── oxidizedCopperTrapdoor.go
│       │   ├── oxidizedCutCopper.go
│       │   ├── oxidizedCutCopperSlab.go
│       │   ├── oxidizedCutCopperStairs.go
│       │   ├── packedIce.go
│       │   ├── packedMud.go
│       │   ├── pearlescentFroglight.go
│       │   ├── peony.go
│       │   ├── petrifiedOakSlab.go
│       │   ├── piglinHead.go
│       │   ├── piglinWallHead.go
│       │   ├── pinkBanner.go
│       │   ├── pinkBed.go
│       │   ├── pinkCandle.go
│       │   ├── pinkCandleCake.go
│       │   ├── pinkCarpet.go
│       │   ├── pinkConcrete.go
│       │   ├── pinkConcretePowder.go
│       │   ├── pinkGlazedTerracotta.go
│       │   ├── pinkPetals.go
│       │   ├── pinkShulkerBox.go
│       │   ├── pinkStainedGlass.go
│       │   ├── pinkStainedGlassPane.go
│       │   ├── pinkTerracotta.go
│       │   ├── pinkTulip.go
│       │   ├── pinkWallBanner.go
│       │   ├── pinkWool.go
│       │   ├── piston.go
│       │   ├── pistonHead.go
│       │   ├── pitcherCrop.go
│       │   ├── pitcherPlant.go
│       │   ├── playerHead.go
│       │   ├── playerWallHead.go
│       │   ├── podzol.go
│       │   ├── pointedDripstone.go
│       │   ├── polishedAndesite.go
│       │   ├── polishedAndesiteSlab.go
│       │   ├── polishedAndesiteStairs.go
│       │   ├── polishedBasalt.go
│       │   ├── polishedBlackstone.go
│       │   ├── polishedBlackstoneBrickSlab.go
│       │   ├── polishedBlackstoneBrickStairs.go
│       │   ├── polishedBlackstoneBrickWall.go
│       │   ├── polishedBlackstoneBricks.go
│       │   ├── polishedBlackstoneButton.go
│       │   ├── polishedBlackstonePressurePlate.go
│       │   ├── polishedBlackstoneSlab.go
│       │   ├── polishedBlackstoneStairs.go
│       │   ├── polishedBlackstoneWall.go
│       │   ├── polishedDeepslate.go
│       │   ├── polishedDeepslateSlab.go
│       │   ├── polishedDeepslateStairs.go
│       │   ├── polishedDeepslateWall.go
│       │   ├── polishedDiorite.go
│       │   ├── polishedDioriteSlab.go
│       │   ├── polishedDioriteStairs.go
│       │   ├── polishedGranite.go
│       │   ├── polishedGraniteSlab.go
│       │   ├── polishedGraniteStairs.go
│       │   ├── polishedTuff.go
│       │   ├── polishedTuffSlab.go
│       │   ├── polishedTuffStairs.go
│       │   ├── polishedTuffWall.go
│       │   ├── poppy.go
│       │   ├── pos/
│       │   │   └── pos.go
│       │   ├── potatoes.go
│       │   ├── pottedAcaciaSapling.go
│       │   ├── pottedAllium.go
│       │   ├── pottedAzaleaBush.go
│       │   ├── pottedAzureBluet.go
│       │   ├── pottedBamboo.go
│       │   ├── pottedBirchSapling.go
│       │   ├── pottedBlueOrchid.go
│       │   ├── pottedBrownMushroom.go
│       │   ├── pottedCactus.go
│       │   ├── pottedCherrySapling.go
│       │   ├── pottedCornflower.go
│       │   ├── pottedCrimsonFungus.go
│       │   ├── pottedCrimsonRoots.go
│       │   ├── pottedDandelion.go
│       │   ├── pottedDarkOakSapling.go
│       │   ├── pottedDeadBush.go
│       │   ├── pottedFern.go
│       │   ├── pottedFloweringAzaleaBush.go
│       │   ├── pottedJungleSapling.go
│       │   ├── pottedLilyOfTheValley.go
│       │   ├── pottedMangrovePropagule.go
│       │   ├── pottedOakSapling.go
│       │   ├── pottedOrangeTulip.go
│       │   ├── pottedOxeyeDaisy.go
│       │   ├── pottedPinkTulip.go
│       │   ├── pottedPoppy.go
│       │   ├── pottedRedMushroom.go
│       │   ├── pottedRedTulip.go
│       │   ├── pottedSpruceSapling.go
│       │   ├── pottedTorchflower.go
│       │   ├── pottedWarpedFungus.go
│       │   ├── pottedWarpedRoots.go
│       │   ├── pottedWhiteTulip.go
│       │   ├── pottedWitherRose.go
│       │   ├── powderSnow.go
│       │   ├── powderSnowCauldron.go
│       │   ├── poweredRail.go
│       │   ├── prismarine.go
│       │   ├── prismarineBrickSlab.go
│       │   ├── prismarineBrickStairs.go
│       │   ├── prismarineBricks.go
│       │   ├── prismarineSlab.go
│       │   ├── prismarineStairs.go
│       │   ├── prismarineWall.go
│       │   ├── pumpkin.go
│       │   ├── pumpkinStem.go
│       │   ├── purpleBanner.go
│       │   ├── purpleBed.go
│       │   ├── purpleCandle.go
│       │   ├── purpleCandleCake.go
│       │   ├── purpleCarpet.go
│       │   ├── purpleConcrete.go
│       │   ├── purpleConcretePowder.go
│       │   ├── purpleGlazedTerracotta.go
│       │   ├── purpleShulkerBox.go
│       │   ├── purpleStainedGlass.go
│       │   ├── purpleStainedGlassPane.go
│       │   ├── purpleTerracotta.go
│       │   ├── purpleWallBanner.go
│       │   ├── purpleWool.go
│       │   ├── purpurBlock.go
│       │   ├── purpurPillar.go
│       │   ├── purpurSlab.go
│       │   ├── purpurStairs.go
│       │   ├── quartzBlock.go
│       │   ├── quartzBricks.go
│       │   ├── quartzPillar.go
│       │   ├── quartzSlab.go
│       │   ├── quartzStairs.go
│       │   ├── rail.go
│       │   ├── rawCopperBlock.go
│       │   ├── rawGoldBlock.go
│       │   ├── rawIronBlock.go
│       │   ├── redBanner.go
│       │   ├── redBed.go
│       │   ├── redCandle.go
│       │   ├── redCandleCake.go
│       │   ├── redCarpet.go
│       │   ├── redConcrete.go
│       │   ├── redConcretePowder.go
│       │   ├── redGlazedTerracotta.go
│       │   ├── redMushroom.go
│       │   ├── redMushroomBlock.go
│       │   ├── redNetherBrickSlab.go
│       │   ├── redNetherBrickStairs.go
│       │   ├── redNetherBrickWall.go
│       │   ├── redNetherBricks.go
│       │   ├── redSand.go
│       │   ├── redSandstone.go
│       │   ├── redSandstoneSlab.go
│       │   ├── redSandstoneStairs.go
│       │   ├── redSandstoneWall.go
│       │   ├── redShulkerBox.go
│       │   ├── redStainedGlass.go
│       │   ├── redStainedGlassPane.go
│       │   ├── redTerracotta.go
│       │   ├── redTulip.go
│       │   ├── redWallBanner.go
│       │   ├── redWool.go
│       │   ├── redstoneBlock.go
│       │   ├── redstoneLamp.go
│       │   ├── redstoneOre.go
│       │   ├── redstoneTorch.go
│       │   ├── redstoneWallTorch.go
│       │   ├── redstoneWire.go
│       │   ├── reinforcedDeepslate.go
│       │   ├── repeater.go
│       │   ├── repeatingCommandBlock.go
│       │   ├── respawnAnchor.go
│       │   ├── rootedDirt.go
│       │   ├── roseBush.go
│       │   ├── sand.go
│       │   ├── sandstone.go
│       │   ├── sandstoneSlab.go
│       │   ├── sandstoneStairs.go
│       │   ├── sandstoneWall.go
│       │   ├── scaffolding.go
│       │   ├── sculk.go
│       │   ├── sculkCatalyst.go
│       │   ├── sculkSensor.go
│       │   ├── sculkShrieker.go
│       │   ├── sculkVein.go
│       │   ├── seaLantern.go
│       │   ├── seaPickle.go
│       │   ├── seagrass.go
│       │   ├── shortGrass.go
│       │   ├── shroomlight.go
│       │   ├── shulkerBox.go
│       │   ├── skeletonSkull.go
│       │   ├── skeletonWallSkull.go
│       │   ├── slimeBlock.go
│       │   ├── smallAmethystBud.go
│       │   ├── smallDripleaf.go
│       │   ├── smithingTable.go
│       │   ├── smoker.go
│       │   ├── smoothBasalt.go
│       │   ├── smoothQuartz.go
│       │   ├── smoothQuartzSlab.go
│       │   ├── smoothQuartzStairs.go
│       │   ├── smoothRedSandstone.go
│       │   ├── smoothRedSandstoneSlab.go
│       │   ├── smoothRedSandstoneStairs.go
│       │   ├── smoothSandstone.go
│       │   ├── smoothSandstoneSlab.go
│       │   ├── smoothSandstoneStairs.go
│       │   ├── smoothStone.go
│       │   ├── smoothStoneSlab.go
│       │   ├── snifferEgg.go
│       │   ├── snow.go
│       │   ├── snowBlock.go
│       │   ├── soulCampfire.go
│       │   ├── soulFire.go
│       │   ├── soulLantern.go
│       │   ├── soulSand.go
│       │   ├── soulSoil.go
│       │   ├── soulTorch.go
│       │   ├── soulWallTorch.go
│       │   ├── spawner.go
│       │   ├── sponge.go
│       │   ├── sporeBlossom.go
│       │   ├── spruceButton.go
│       │   ├── spruceDoor.go
│       │   ├── spruceFence.go
│       │   ├── spruceFenceGate.go
│       │   ├── spruceHangingSign.go
│       │   ├── spruceLeaves.go
│       │   ├── spruceLog.go
│       │   ├── sprucePlanks.go
│       │   ├── sprucePressurePlate.go
│       │   ├── spruceSapling.go
│       │   ├── spruceSign.go
│       │   ├── spruceSlab.go
│       │   ├── spruceStairs.go
│       │   ├── spruceTrapdoor.go
│       │   ├── spruceWallHangingSign.go
│       │   ├── spruceWallSign.go
│       │   ├── spruceWood.go
│       │   ├── stickyPiston.go
│       │   ├── stone.go
│       │   ├── stoneBrickSlab.go
│       │   ├── stoneBrickStairs.go
│       │   ├── stoneBrickWall.go
│       │   ├── stoneBricks.go
│       │   ├── stoneButton.go
│       │   ├── stonePressurePlate.go
│       │   ├── stoneSlab.go
│       │   ├── stoneStairs.go
│       │   ├── stonecutter.go
│       │   ├── strippedAcaciaLog.go
│       │   ├── strippedAcaciaWood.go
│       │   ├── strippedBambooBlock.go
│       │   ├── strippedBirchLog.go
│       │   ├── strippedBirchWood.go
│       │   ├── strippedCherryLog.go
│       │   ├── strippedCherryWood.go
│       │   ├── strippedCrimsonHyphae.go
│       │   ├── strippedCrimsonStem.go
│       │   ├── strippedDarkOakLog.go
│       │   ├── strippedDarkOakWood.go
│       │   ├── strippedJungleLog.go
│       │   ├── strippedJungleWood.go
│       │   ├── strippedMangroveLog.go
│       │   ├── strippedMangroveWood.go
│       │   ├── strippedOakLog.go
│       │   ├── strippedOakWood.go
│       │   ├── strippedSpruceLog.go
│       │   ├── strippedSpruceWood.go
│       │   ├── strippedWarpedHyphae.go
│       │   ├── strippedWarpedStem.go
│       │   ├── structureBlock.go
│       │   ├── structureVoid.go
│       │   ├── sugarCane.go
│       │   ├── sunflower.go
│       │   ├── suspiciousGravel.go
│       │   ├── suspiciousSand.go
│       │   ├── sweetBerryBush.go
│       │   ├── tallGrass.go
│       │   ├── tallSeagrass.go
│       │   ├── target.go
│       │   ├── terracotta.go
│       │   ├── tintedGlass.go
│       │   ├── tnt.go
│       │   ├── torch.go
│       │   ├── torchflower.go
│       │   ├── torchflowerCrop.go
│       │   ├── trappedChest.go
│       │   ├── trialSpawner.go
│       │   ├── tripwire.go
│       │   ├── tripwireHook.go
│       │   ├── tubeCoral.go
│       │   ├── tubeCoralBlock.go
│       │   ├── tubeCoralFan.go
│       │   ├── tubeCoralWallFan.go
│       │   ├── tuff.go
│       │   ├── tuffBrickSlab.go
│       │   ├── tuffBrickStairs.go
│       │   ├── tuffBrickWall.go
│       │   ├── tuffBricks.go
│       │   ├── tuffSlab.go
│       │   ├── tuffStairs.go
│       │   ├── tuffWall.go
│       │   ├── turtleEgg.go
│       │   ├── twistingVines.go
│       │   ├── twistingVinesPlant.go
│       │   ├── vault.go
│       │   ├── verdantFroglight.go
│       │   ├── vine.go
│       │   ├── voidAir.go
│       │   ├── wallTorch.go
│       │   ├── warpedButton.go
│       │   ├── warpedDoor.go
│       │   ├── warpedFence.go
│       │   ├── warpedFenceGate.go
│       │   ├── warpedFungus.go
│       │   ├── warpedHangingSign.go
│       │   ├── warpedHyphae.go
│       │   ├── warpedNylium.go
│       │   ├── warpedPlanks.go
│       │   ├── warpedPressurePlate.go
│       │   ├── warpedRoots.go
│       │   ├── warpedSign.go
│       │   ├── warpedSlab.go
│       │   ├── warpedStairs.go
│       │   ├── warpedStem.go
│       │   ├── warpedTrapdoor.go
│       │   ├── warpedWallHangingSign.go
│       │   ├── warpedWallSign.go
│       │   ├── warpedWartBlock.go
│       │   ├── water.go
│       │   ├── waterCauldron.go
│       │   ├── waxedChiseledCopper.go
│       │   ├── waxedCopperBlock.go
│       │   ├── waxedCopperBulb.go
│       │   ├── waxedCopperDoor.go
│       │   ├── waxedCopperGrate.go
│       │   ├── waxedCopperTrapdoor.go
│       │   ├── waxedCutCopper.go
│       │   ├── waxedCutCopperSlab.go
│       │   ├── waxedCutCopperStairs.go
│       │   ├── waxedExposedChiseledCopper.go
│       │   ├── waxedExposedCopper.go
│       │   ├── waxedExposedCopperBulb.go
│       │   ├── waxedExposedCopperDoor.go
│       │   ├── waxedExposedCopperGrate.go
│       │   ├── waxedExposedCopperTrapdoor.go
│       │   ├── waxedExposedCutCopper.go
│       │   ├── waxedExposedCutCopperSlab.go
│       │   ├── waxedExposedCutCopperStairs.go
│       │   ├── waxedOxidizedChiseledCopper.go
│       │   ├── waxedOxidizedCopper.go
│       │   ├── waxedOxidizedCopperBulb.go
│       │   ├── waxedOxidizedCopperDoor.go
│       │   ├── waxedOxidizedCopperGrate.go
│       │   ├── waxedOxidizedCopperTrapdoor.go
│       │   ├── waxedOxidizedCutCopper.go
│       │   ├── waxedOxidizedCutCopperSlab.go
│       │   ├── waxedOxidizedCutCopperStairs.go
│       │   ├── waxedWeatheredChiseledCopper.go
│       │   ├── waxedWeatheredCopper.go
│       │   ├── waxedWeatheredCopperBulb.go
│       │   ├── waxedWeatheredCopperDoor.go
│       │   ├── waxedWeatheredCopperGrate.go
│       │   ├── waxedWeatheredCopperTrapdoor.go
│       │   ├── waxedWeatheredCutCopper.go
│       │   ├── waxedWeatheredCutCopperSlab.go
│       │   ├── waxedWeatheredCutCopperStairs.go
│       │   ├── weatheredChiseledCopper.go
│       │   ├── weatheredCopper.go
│       │   ├── weatheredCopperBulb.go
│       │   ├── weatheredCopperDoor.go
│       │   ├── weatheredCopperGrate.go
│       │   ├── weatheredCopperTrapdoor.go
│       │   ├── weatheredCutCopper.go
│       │   ├── weatheredCutCopperSlab.go
│       │   ├── weatheredCutCopperStairs.go
│       │   ├── weepingVines.go
│       │   ├── weepingVinesPlant.go
│       │   ├── wetSponge.go
│       │   ├── wheat.go
│       │   ├── whiteBanner.go
│       │   ├── whiteBed.go
│       │   ├── whiteCandle.go
│       │   ├── whiteCandleCake.go
│       │   ├── whiteCarpet.go
│       │   ├── whiteConcrete.go
│       │   ├── whiteConcretePowder.go
│       │   ├── whiteGlazedTerracotta.go
│       │   ├── whiteShulkerBox.go
│       │   ├── whiteStainedGlass.go
│       │   ├── whiteStainedGlassPane.go
│       │   ├── whiteTerracotta.go
│       │   ├── whiteTulip.go
│       │   ├── whiteWallBanner.go
│       │   ├── whiteWool.go
│       │   ├── witherRose.go
│       │   ├── witherSkeletonSkull.go
│       │   ├── witherSkeletonWallSkull.go
│       │   ├── yellowBanner.go
│       │   ├── yellowBed.go
│       │   ├── yellowCandle.go
│       │   ├── yellowCandleCake.go
│       │   ├── yellowCarpet.go
│       │   ├── yellowConcrete.go
│       │   ├── yellowConcretePowder.go
│       │   ├── yellowGlazedTerracotta.go
│       │   ├── yellowShulkerBox.go
│       │   ├── yellowStainedGlass.go
│       │   ├── yellowStainedGlassPane.go
│       │   ├── yellowTerracotta.go
│       │   ├── yellowWallBanner.go
│       │   ├── yellowWool.go
│       │   ├── zombieHead.go
│       │   └── zombieWallHead.go
│       ├── chunk/
│       │   ├── anvil.go
│       │   ├── chunk.go
│       │   ├── encode.go
│       │   ├── heightmaps/
│       │   │   └── heightmaps.go
│       │   └── section/
│       │       ├── block.go
│       │       ├── blockRegister.go
│       │       ├── data/
│       │       │   └── blocks.nbt
│       │       └── section.go
│       ├── dimension/
│       │   ├── dimension.go
│       │   ├── manager.go
│       │   ├── tick.go
│       │   └── window/
│       │       └── window.go
│       ├── level/
│       │   ├── entity.go
│       │   ├── item/
│       │   │   ├── attribute_modifiers.go
│       │   │   ├── banner_patterns.go
│       │   │   ├── bees.go
│       │   │   ├── bucket_entity_data.go
│       │   │   ├── can_do.go
│       │   │   ├── container_loot.go
│       │   │   ├── creative_slot_lock.go
│       │   │   ├── enchantments.go
│       │   │   ├── entity_data.go
│       │   │   ├── fire_resistant.go
│       │   │   ├── firework_explosion.go
│       │   │   ├── fireworks.go
│       │   │   ├── food.go
│       │   │   ├── hide_additional_tooltip.go
│       │   │   ├── hide_tooltip.go
│       │   │   ├── intangible_projectile.go
│       │   │   ├── item.go
│       │   │   ├── items.go
│       │   │   ├── jukebox_playable.go
│       │   │   ├── lodestone_tracker.go
│       │   │   ├── map_post_processing.go
│       │   │   ├── stored_enchantments.go
│       │   │   ├── susipicious_stew_effects.go
│       │   │   ├── tool.go
│       │   │   ├── trim.go
│       │   │   ├── unbreakable.go
│       │   │   ├── writable_book_content.go
│       │   │   └── written_book_content.go
│       │   ├── level.go
│       │   ├── playerdata.go
│       │   ├── region/
│       │   │   ├── anvil.go
│       │   │   ├── region_dec.go
│       │   │   └── region_enc.go
│       │   ├── seed/
│       │   │   └── seed.go
│       │   └── uuid/
│       │       └── uuid.go
│       ├── terrain/
│       │   ├── superflat.go
│       │   └── terrain.go
│       └── world.go
└── util/
    ├── atomic/
    │   ├── atomic.go
    │   └── slice.go
    ├── console/
    │   └── console.go
    ├── log/
    │   └── log.go
    ├── mapequal.go
    ├── rot.go
    └── unit.go
Download .txt
Showing preview only (426K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4870 symbols across 1259 files)

FILE: main.go
  function main (line 27) | func main() {
  function loadConfig (line 97) | func loadConfig() properties.ServerProperties {

FILE: properties/decode.go
  function Unmarshal (line 12) | func Unmarshal(src string, dst any) error {
  function unmarshalStruct (line 30) | func unmarshalStruct(props []string, v map[string]reflect.Value) error {
  function structMap (line 97) | func structMap(val reflect.Value) map[string]reflect.Value {

FILE: properties/encode.go
  function Marshal (line 12) | func Marshal(dst io.Writer, p any) error {
  function encodePropsStruct (line 22) | func encodePropsStruct(dst io.Writer, v reflect.Value) error {
  function name (line 58) | func name(tf reflect.StructField) (n string, ok bool, omitempty bool) {
  function writeString (line 86) | func writeString(w io.Writer, str string) error {

FILE: properties/properties.go
  type formatter (line 5) | type formatter
    method Rune (line 7) | func (f formatter) Rune() rune {
  type ServerProperties (line 11) | type ServerProperties struct

FILE: protocol/nbt/decoder.go
  function generateMap (line 19) | func generateMap(v reflect.Value) map[string]reflect.Value {
  constant End (line 45) | End = iota
  constant Byte (line 46) | Byte
  constant Short (line 47) | Short
  constant Int (line 48) | Int
  constant Long (line 49) | Long
  constant Float (line 50) | Float
  constant Double (line 51) | Double
  constant ByteArray (line 52) | ByteArray
  constant String (line 53) | String
  constant List (line 54) | List
  constant Compound (line 55) | Compound
  constant IntArray (line 56) | IntArray
  constant LongArray (line 57) | LongArray
  type Decoder (line 60) | type Decoder struct
    method ReadRootName (line 70) | func (d *Decoder) ReadRootName(v bool) {
    method DisallowUnknownFields (line 74) | func (d *Decoder) DisallowUnknownFields(v bool) {
    method DecodeRootCompound (line 83) | func (d *Decoder) DecodeRootCompound(v any) (rootName string, err erro...
    method Decode (line 123) | func (d *Decoder) Decode(v any) (rootName string, err error) {
    method decodeCompoundMap (line 170) | func (d *Decoder) decodeCompoundMap(_map reflect.Value) error {
    method decodeCompoundStruct (line 436) | func (d *Decoder) decodeCompoundStruct(_struct map[string]reflect.Valu...
    method decodeList (line 739) | func (d *Decoder) decodeList(list reflect.Value) error {
    method decodeCompound (line 893) | func (d *Decoder) decodeCompound() error {
    method _decodeList (line 971) | func (d *Decoder) _decodeList() error {
    method readByte (line 1035) | func (d *Decoder) readByte() (int8, error) {
    method readTo (line 1041) | func (d *Decoder) readTo(t []byte) error {
    method readShort (line 1046) | func (d *Decoder) readShort() (int16, error) {
    method readInt (line 1053) | func (d *Decoder) readInt() (int32, error) {
    method readLong (line 1060) | func (d *Decoder) readLong() (int64, error) {
    method readFloat (line 1067) | func (d *Decoder) readFloat() (float32, error) {
    method readDouble (line 1072) | func (d *Decoder) readDouble() (float64, error) {
    method readString (line 1077) | func (d *Decoder) readString() (string, error) {
    method readByteArray (line 1093) | func (d *Decoder) readByteArray() ([]byte, error) {
    method readIntArray (line 1109) | func (d *Decoder) readIntArray() ([]int32, error) {
    method readLongArray (line 1131) | func (d *Decoder) readLongArray() ([]int64, error) {
  function NewDecoder (line 66) | func NewDecoder(rd io.Reader) *Decoder {
  function Unmarshal (line 79) | func Unmarshal(input []byte, v any) (rootName string, err error) {

FILE: protocol/nbt/encoder.go
  type Encoder (line 13) | type Encoder struct
    method Encode (line 22) | func (e *Encoder) Encode(name string, v any) error {
    method WriteRootName (line 42) | func (e *Encoder) WriteRootName(val bool) {
    method writeBytes (line 46) | func (e *Encoder) writeBytes(b ...byte) error {
    method writeByte (line 51) | func (e *Encoder) writeByte(b int8) error {
    method writeShort (line 55) | func (e *Encoder) writeShort(s int16) error {
    method writeInt (line 62) | func (e *Encoder) writeInt(i int32) error {
    method writeLong (line 71) | func (e *Encoder) writeLong(l int64) error {
    method writeFloat (line 84) | func (e *Encoder) writeFloat(f float32) error {
    method writeDouble (line 88) | func (e *Encoder) writeDouble(d float64) error {
    method writeIntArray (line 92) | func (e *Encoder) writeIntArray(il []int32) error {
    method writeLongArray (line 99) | func (e *Encoder) writeLongArray(ll []int64) error {
    method writeString (line 106) | func (e *Encoder) writeString(s string) error {
    method encodeCompoundStruct (line 113) | func (e *Encoder) encodeCompoundStruct(val reflect.Value) error {
    method encodeCompoundMap (line 356) | func (e *Encoder) encodeCompoundMap(val reflect.Value) error {
    method encodeList (line 549) | func (e *Encoder) encodeList(val reflect.Value) error {
    method tagFor (line 669) | func (e *Encoder) tagFor(typ reflect.Type) int8 {
  function NewEncoder (line 18) | func NewEncoder(w io.Writer) *Encoder {

FILE: protocol/nbt/qnbt/abi.go
  type name (line 9) | type name struct
    method exported (line 13) | func (n name) exported() bool {
    method hastag (line 17) | func (n name) hastag() bool {
    method embedded (line 21) | func (n name) embedded() bool {
    method rvi (line 25) | func (n name) rvi(off int) (int, int) {
    method data (line 36) | func (n name) data(off int) *byte {
    method name (line 40) | func (n name) name() string {
    method tag (line 45) | func (n name) tag() string {
  type structField (line 54) | type structField struct
  type structType (line 60) | type structType struct
  type ptrType (line 66) | type ptrType struct
  type arrayType (line 71) | type arrayType struct
  type mapType (line 78) | type mapType struct
  function ptrelem (line 86) | func ptrelem(t *unsafe2.Type, v uintptr) (*unsafe2.Type, unsafe.Pointer) {
  function kindOf (line 94) | func kindOf(t *unsafe2.Type) uint8 {
  constant kindm (line 99) | kindm = (1 << 5) - 1
  function kind_name (line 102) | func kind_name(k uint8) string {
  constant invalid_k (line 166) | invalid_k uint8 = iota
  constant bool_k (line 167) | bool_k
  constant int_k (line 168) | int_k
  constant int8_k (line 169) | int8_k
  constant int16_k (line 170) | int16_k
  constant int32_k (line 171) | int32_k
  constant int64_k (line 172) | int64_k
  constant uint_k (line 173) | uint_k
  constant uint8_k (line 174) | uint8_k
  constant uint16_k (line 175) | uint16_k
  constant uint32_k (line 176) | uint32_k
  constant uint64_k (line 177) | uint64_k
  constant uintptr_k (line 178) | uintptr_k
  constant float32_k (line 179) | float32_k
  constant float64_k (line 180) | float64_k
  constant complex64_k (line 181) | complex64_k
  constant complex128_k (line 182) | complex128_k
  constant array_k (line 183) | array_k
  constant chan_k (line 184) | chan_k
  constant func_k (line 185) | func_k
  constant interface_k (line 186) | interface_k
  constant map_k (line 187) | map_k
  constant pointer_k (line 188) | pointer_k
  constant slice_k (line 189) | slice_k
  constant string_k (line 190) | string_k
  constant struct_k (line 191) | struct_k
  constant unsafe_ptr_k (line 192) | unsafe_ptr_k
  function setSliceArray (line 195) | func setSliceArray(s, a unsafe.Pointer, l int) {

FILE: protocol/nbt/qnbt/buffer.go
  type bufferedReader (line 8) | type bufferedReader struct
    method available (line 15) | func (rd *bufferedReader) available() int {
    method readBytes (line 19) | func (rd *bufferedReader) readBytes(num int) ([]byte, error) {
    method readBytesString (line 29) | func (rd *bufferedReader) readBytesString(num int) (string, error) {
    method fill (line 38) | func (rd *bufferedReader) fill(min int) error {
    method skip (line 60) | func (rd *bufferedReader) skip(n int) error {

FILE: protocol/nbt/qnbt/decode.go
  type MismatchError (line 14) | type MismatchError struct
    method Error (line 25) | func (m MismatchError) Error() string {
  type Decoder (line 49) | type Decoder struct
    method Close (line 59) | func (d *Decoder) Close() {
    method DisallowUnknownKeys (line 87) | func (dc *Decoder) DisallowUnknownKeys(v bool) *Decoder {
    method NetworkNBT (line 92) | func (dc *Decoder) NetworkNBT(v bool) *Decoder {
    method DecodeAndClose (line 110) | func (d *Decoder) DecodeAndClose(dst any) (rootName string, err error) {
    method Decode (line 115) | func (d *Decoder) Decode(dst any) (rootName string, err error) {
    method discardCompound (line 171) | func (d *Decoder) discardCompound() error {
    method discard (line 206) | func (d *Decoder) discard(tag_b byte) (skipped bool, err error) {
  function NewDecoder (line 65) | func NewDecoder(rd io.Reader) *Decoder {
  function slicesize (line 79) | func slicesize(s []byte, l int) []byte {
  function Unmarshal (line 97) | func Unmarshal(data []byte, dst any) (rootName string, err error) {

FILE: protocol/nbt/qnbt/list.go
  method decodeListSlice (line 11) | func (d *Decoder) decodeListSlice(ptr unsafe.Pointer, t *ptrType) error {
  type array_t (line 42) | type array_t struct
    method index (line 48) | func (a *array_t) index(i int) unsafe.Pointer {
  method decodeListArray (line 52) | func (d *Decoder) decodeListArray(a *array_t) error {
  method readListArray (line 74) | func (d *Decoder) readListArray(tag byte, l int32, a *array_t) error {
  method discardList (line 208) | func (d *Decoder) discardList() error {
  function fixedSize (line 251) | func fixedSize(tag byte) int {

FILE: protocol/nbt/qnbt/malloc.go
  function mallocgc (line 10) | func mallocgc(size uintptr, typ *unsafe2.Type, needzero bool) unsafe.Poi...

FILE: protocol/nbt/qnbt/map.go
  method decodeMapString (line 5) | func (d *Decoder) decodeMapString(m map[string]string) error {

FILE: protocol/nbt/qnbt/primitive.go
  constant end_t (line 11) | end_t = iota
  constant byte_t (line 12) | byte_t
  constant short_t (line 13) | short_t
  constant int_t (line 14) | int_t
  constant long_t (line 15) | long_t
  constant float_t (line 16) | float_t
  constant double_t (line 17) | double_t
  constant byte_array_t (line 18) | byte_array_t
  constant string_t (line 19) | string_t
  constant list_t (line 20) | list_t
  constant compound_t (line 21) | compound_t
  constant int_array_t (line 22) | int_array_t
  constant long_array_t (line 23) | long_array_t
  function tagName (line 43) | func tagName(t string) string {
  method load (line 76) | func (d *Decoder) load(length int) []byte {
  method readByte (line 83) | func (d *Decoder) readByte(b *byte) error {
  method readByte2 (line 94) | func (d *Decoder) readByte2() (byte, error) {
  method readBytePtr (line 104) | func (d *Decoder) readBytePtr(ptr unsafe.Pointer) error {
  method readShort (line 108) | func (d *Decoder) readShort() (int16, error) {
  method readShortPtr (line 116) | func (d *Decoder) readShortPtr(ptr unsafe.Pointer) error {
  method readInt (line 131) | func (d *Decoder) readInt() (int32, error) {
  method readIntPtr (line 139) | func (d *Decoder) readIntPtr(ptr unsafe.Pointer) error {
  method readLongPtr (line 154) | func (d *Decoder) readLongPtr(ptr unsafe.Pointer) error {
  method skipString (line 169) | func (d *Decoder) skipString() error {
  method readString (line 177) | func (d *Decoder) readString(dst *string) error {
  method readStringNonCopy (line 192) | func (d *Decoder) readStringNonCopy(dst *string) error {
  method readStringPtr (line 210) | func (d *Decoder) readStringPtr(dst unsafe.Pointer) error {
  method readLongArray (line 214) | func (d *Decoder) readLongArray(ptr unsafe.Pointer) error {
  method decodeLongArray (line 223) | func (d *Decoder) decodeLongArray(len int, ptr unsafe.Pointer) error {
  method readIntArray (line 235) | func (d *Decoder) readIntArray(ptr unsafe.Pointer) error {
  method decodeIntArray (line 244) | func (d *Decoder) decodeIntArray(len int, ptr unsafe.Pointer) error {
  method readByteArray (line 256) | func (d *Decoder) readByteArray(ptr unsafe.Pointer) error {
  method decodeByteArray (line 276) | func (d *Decoder) decodeByteArray(l int, ptr unsafe.Pointer) error {

FILE: protocol/nbt/qnbt/struct.go
  function newStruct (line 19) | func newStruct(t *structType, ptr unsafe.Pointer) *struct_t {
  function findNBTTag (line 48) | func findNBTTag(tag string) (string, bool) {
  type struct_t (line 62) | type struct_t struct
    method field (line 69) | func (s *struct_t) field(n string) (f *structField, ptr unsafe.Pointer...
  method decodeStructCompound (line 81) | func (d *Decoder) decodeStructCompound(s *struct_t) error {
  function match (line 247) | func match(name, tag_b string, t *unsafe2.Type) error {

FILE: protocol/nbt/staticReader.go
  type StaticReader (line 14) | type StaticReader struct
    method readByte (line 23) | func (r StaticReader) readByte() (byte, error) {
    method readShort (line 31) | func (r StaticReader) readShort() (int16, error) {
    method readInt (line 39) | func (r StaticReader) readInt() (int32, error) {
    method readLong (line 47) | func (r StaticReader) readLong() (int64, error) {
    method readString (line 55) | func (r StaticReader) readString() (string, error) {
    method ReadRoot (line 72) | func (r StaticReader) ReadRoot(withName bool) (typeId byte, name strin...
    method Byte (line 84) | func (r StaticReader) Byte(dst *byte) (string, error) {
    method Short (line 102) | func (r StaticReader) Short(dst *int16) (string, error) {
    method Int (line 120) | func (r StaticReader) Int(dst *int32) (string, error) {
    method Long (line 138) | func (r StaticReader) Long(dst *int64) (string, error) {
    method String (line 156) | func (r StaticReader) String(dst *string) (string, error) {
    method Compound (line 174) | func (r StaticReader) Compound(dst *CompoundReader) (string, error, bo...
  function NewStaticReader (line 18) | func NewStaticReader(r io.Reader) StaticReader {
  type CompoundReader (line 195) | type CompoundReader struct
    method ReadStringMap (line 200) | func (cr CompoundReader) ReadStringMap(tgt map[string]string) error {
    method ReadAll (line 227) | func (cr CompoundReader) ReadAll(targets ...any) error {
  type ListReader (line 315) | type ListReader struct
    method Read (line 320) | func (lr ListReader) Read(tgt any) (err error) {

FILE: protocol/net/authentication.go
  function authurl (line 17) | func authurl(u, h string) string {
  method authenticate (line 21) | func (conn *Conn) authenticate() error {
  method sessionHash (line 62) | func (conn *Conn) sessionHash(publicKey []byte) string {
  function twosComplement (line 82) | func twosComplement(p []byte) []byte {

FILE: protocol/net/cfb8/cfb8.go
  type CFB8 (line 7) | type CFB8 struct
    method XORKeyStream (line 21) | func (x *CFB8) XORKeyStream(dst, src []byte) {
  function NewCFB8 (line 44) | func NewCFB8(b cipher.Block, iv []byte, decrypt bool) *CFB8 {

FILE: protocol/net/config.go
  type Config (line 12) | type Config struct
    method New (line 26) | func (c Config) New() (*Listener, error) {
  type StatusProvider (line 24) | type StatusProvider
  function Status (line 52) | func Status(s status.StatusResponseData) StatusProvider {

FILE: protocol/net/conn.go
  constant clientVeryOldMsg (line 33) | clientVeryOldMsg = "Your client is WAYYYYYY too old!!! this server suppo...
  constant clientTooOldMsg (line 34) | clientTooOldMsg  = "Your client is too old! this server supports MC 1.21"
  constant clientTooNewMsg (line 35) | clientTooNewMsg  = "Your client is too new! this server supports MC 1.21"
  type Conn (line 38) | type Conn struct
    method UsesForge (line 62) | func (conn *Conn) UsesForge() bool {
    method Username (line 66) | func (conn *Conn) Username() string {
    method UUID (line 70) | func (conn *Conn) UUID() uuid.UUID {
    method Properties (line 74) | func (conn *Conn) Properties() []login.Property {
    method SetState (line 78) | func (conn *Conn) SetState(state int32) {
    method State (line 81) | func (conn *Conn) State() int32 {
    method wpk (line 97) | func (conn *Conn) wpk(pk packet.Encodeable) error {
    method WritePacket (line 177) | func (conn *Conn) WritePacket(pk packet.Encodeable) error {
    method Read (line 188) | func (conn *Conn) Read(dst []byte) (i int, err error) {
    method Write (line 200) | func (conn *Conn) Write(data []byte) (i int, err error) {
    method ReadPacket (line 209) | func (conn *Conn) ReadPacket() (decoded packet.Decodeable, interceptio...
    method PushPacket (line 353) | func (conn *Conn) PushPacket(pk packet.Encodeable) {
    method packetWriteChanListen (line 357) | func (conn *Conn) packetWriteChanListen() {
    method writeLegacyStatus (line 373) | func (conn *Conn) writeLegacyStatus(status status.StatusResponseData) {
    method writeLegacyDisconnect (line 396) | func (conn *Conn) writeLegacyDisconnect(reason string) {
    method writeClassicDisconnect (line 407) | func (conn *Conn) writeClassicDisconnect(reason string) {
    method handleHandshake (line 421) | func (conn *Conn) handleHandshake() bool {
  function username2v3 (line 550) | func username2v3(username string) uuid.UUID {

FILE: protocol/net/encryption.go
  method encryptd (line 14) | func (conn *Conn) encryptd(plaintext, dst []byte) {
  method decryptd (line 18) | func (conn *Conn) decryptd(ciphertext, dst []byte) {
  method encrypt (line 22) | func (conn *Conn) encrypt() error {

FILE: protocol/net/io/buffers/buffers.go
  function Size (line 14) | func Size() int {

FILE: protocol/net/io/compress/lz4.go
  function DecompressLZ4 (line 12) | func DecompressLZ4(data []byte) ([]byte, error) {
  constant magic (line 62) | magic = "LZ4Block"
  constant methodUncompressed (line 64) | methodUncompressed = 1 << (iota + 4)
  constant methodLZ4 (line 65) | methodLZ4

FILE: protocol/net/io/compress/zlib.go
  function DecompressZlib (line 11) | func DecompressZlib(compressed []byte, decompressedLength *int) ([]byte,...
  function CompressZlib (line 35) | func CompressZlib(decompressedData []byte, compressedLength *int) (compr...

FILE: protocol/net/io/encoding/encoding.go
  function AppendByte (line 10) | func AppendByte(data []byte, b int8) []byte {
  function AppendUbyte (line 14) | func AppendUbyte(data []byte, b byte) []byte {
  function AppendShort (line 18) | func AppendShort(data []byte, s int16) []byte {
  function AppendUshort (line 22) | func AppendUshort(data []byte, s uint16) []byte {
  function AppendInt (line 26) | func AppendInt(data []byte, i int32) []byte {
  function AppendLong (line 30) | func AppendLong(data []byte, l int64) []byte {
  function AppendVarInt (line 34) | func AppendVarInt(data []byte, value int32) []byte {
  function PutVarInt (line 43) | func PutVarInt(data []byte, value int32) (n int) {
  function WriteVarInt (line 55) | func WriteVarInt(w io.Writer, value int32) error {
  function VarInt (line 69) | func VarInt(data []byte) (int32, []byte, error) {
  function ReadVarInt (line 100) | func ReadVarInt(r io.Reader) (int32, error) {
  function AppendVarLong (line 131) | func AppendVarLong(data []byte, value int64) []byte {
  function AppendString (line 147) | func AppendString(data []byte, str string) []byte {
  function String (line 153) | func String(data []byte) (string, error) {
  type BitSet (line 162) | type BitSet
    method Get (line 164) | func (set BitSet) Get(i int) bool {
    method Set (line 168) | func (set BitSet) Set(i int) {
    method Unset (line 172) | func (set BitSet) Unset(i int) {
  type FixedBitSet (line 176) | type FixedBitSet
    method Get (line 178) | func (set FixedBitSet) Get(i int) bool {
    method Set (line 182) | func (set FixedBitSet) Set(i int) {
    method Unset (line 186) | func (set FixedBitSet) Unset(i int) {

FILE: protocol/net/io/encoding/reader.go
  type Reader (line 16) | type Reader struct
    method SetLength (line 25) | func (r *Reader) SetLength(length int) {
    method readBytes (line 29) | func (r Reader) readBytes(l int) ([]byte, error) {
    method Read (line 38) | func (r Reader) Read(dst []byte) (i int, err error) {
    method Bool (line 42) | func (r Reader) Bool(b *bool) error {
    method ReadAll (line 49) | func (r Reader) ReadAll(data *[]byte) (err error) {
    method Byte (line 54) | func (r Reader) Byte(i *int8) error {
    method Ubyte (line 59) | func (r Reader) Ubyte(i *byte) error {
    method Short (line 65) | func (r Reader) Short(i *int16) error {
    method Ushort (line 70) | func (r Reader) Ushort(i *uint16) error {
    method Int (line 76) | func (r Reader) Int(i *int32) error {
    method Long (line 82) | func (r Reader) Long(i *int64) error {
    method Float (line 88) | func (r Reader) Float(f *float32) error {
    method Double (line 91) | func (r Reader) Double(f *float64) error {
    method String (line 95) | func (r Reader) String(s *string) error {
    method Identifier (line 106) | func (r Reader) Identifier(s *string) error {
    method VarInt (line 110) | func (r Reader) VarInt(value *int32) (i int, err error) {
    method VarLong (line 142) | func (r Reader) VarLong(value *int64) error {
    method Position (line 170) | func (r Reader) Position(x, y, z *int32) error {
    method UUID (line 181) | func (r Reader) UUID(u *uuid.UUID) error {
    method BitSet (line 188) | func (r Reader) BitSet(data *BitSet) error {
    method FixedBitSet (line 206) | func (r Reader) FixedBitSet(data *FixedBitSet, bits int32) error {
    method ByteArray (line 217) | func (r Reader) ByteArray(s *[]byte) error {
    method FixedByteArray (line 228) | func (r Reader) FixedByteArray(s []byte) error {
    method NBT (line 233) | func (r Reader) NBT(v any) error {
    method JSONTextComponent (line 242) | func (r Reader) JSONTextComponent(comp *text.TextComponent) error {
    method TextComponent (line 250) | func (r Reader) TextComponent(comp *text.TextComponent) error {
    method nbtString (line 265) | func (r Reader) nbtString(v *string) error {
  function NewReader (line 21) | func NewReader(r io.Reader, length int) Reader {

FILE: protocol/net/io/encoding/writer.go
  type Writer (line 16) | type Writer struct
    method Write (line 24) | func (w Writer) Write(data []byte) (i int, err error) {
    method Bool (line 28) | func (w Writer) Bool(b bool) error {
    method Byte (line 32) | func (w Writer) Byte(i int8) error {
    method Ubyte (line 35) | func (w Writer) Ubyte(i uint8) error {
    method Short (line 41) | func (w Writer) Short(i int16) error {
    method Ushort (line 44) | func (w Writer) Ushort(i uint16) error {
    method Int (line 54) | func (w Writer) Int(i int32) error {
    method Long (line 66) | func (w Writer) Long(i int64) error {
    method Float (line 82) | func (w Writer) Float(f float32) error {
    method Double (line 85) | func (w Writer) Double(f float64) error {
    method String (line 89) | func (w Writer) String(s string) error {
    method Identifier (line 97) | func (w Writer) Identifier(s string) error {
    method VarInt (line 108) | func (w Writer) VarInt(value int32) error {
    method VarLong (line 121) | func (w Writer) VarLong(value int64) error {
    method Position (line 139) | func (w Writer) Position(x, y, z int32) error {
    method UUID (line 143) | func (w Writer) UUID(u uuid.UUID) error {
    method BitSet (line 149) | func (w Writer) BitSet(data BitSet) error {
    method FixedBitSet (line 161) | func (w Writer) FixedBitSet(data FixedBitSet) error {
    method ByteArray (line 171) | func (w Writer) ByteArray(s []byte) error {
    method FixedByteArray (line 180) | func (w Writer) FixedByteArray(s []byte) error {
    method JSONTextComponent (line 186) | func (w Writer) JSONTextComponent(comp text.TextComponent) error {
    method TextComponent (line 192) | func (w Writer) TextComponent(comp text.TextComponent) error {
    method StringTextComponent (line 196) | func (w Writer) StringTextComponent(text string) error {
    method NBT (line 207) | func (w Writer) NBT(data any) error {
  function NewWriter (line 20) | func NewWriter(w *bytes.Buffer) Writer {

FILE: protocol/net/listener.go
  constant ProtocolVersion (line 14) | ProtocolVersion = 767
  constant HandshakingState (line 18) | HandshakingState = iota
  constant StatusState (line 19) | StatusState
  constant LoginState (line 20) | LoginState
  constant ConfigurationState (line 21) | ConfigurationState
  constant PlayState (line 22) | PlayState
  type Listener (line 25) | type Listener struct
    method SetStatusProvider (line 37) | func (l *Listener) SetStatusProvider(p StatusProvider) {
    method StatusProvider (line 41) | func (l *Listener) StatusProvider() StatusProvider {
    method listen (line 45) | func (l *Listener) listen() {
    method newConn (line 63) | func (l *Listener) newConn(c net.Conn) *Conn {
    method Close (line 74) | func (l *Listener) Close() error {
    method Accept (line 81) | func (l *Listener) Accept() (*Conn, error) {

FILE: protocol/net/metadata/metadata.go
  type Metadata (line 16) | type Metadata
  type Byte (line 19) | type Byte
  type VarInt (line 20) | type VarInt
  type VarLong (line 21) | type VarLong
  type Float (line 22) | type Float
  type String (line 23) | type String
  type TextComponent (line 25) | type TextComponent
  type OptionalTextComponent (line 26) | type OptionalTextComponent
  type Boolean (line 28) | type Boolean
  type Rotations (line 29) | type Rotations
  type Position (line 30) | type Position
  type OptionalPosition (line 31) | type OptionalPosition
  type Direction (line 32) | type Direction
  type OptionalUUID (line 33) | type OptionalUUID
  type BlockState (line 34) | type BlockState
  type OptionalBlockState (line 35) | type OptionalBlockState
  type NBT (line 36) | type NBT
  type VillagerData (line 38) | type VillagerData
  type OptionalVarInt (line 39) | type OptionalVarInt
  type Pose (line 40) | type Pose
  type CatVariant (line 41) | type CatVariant
  type FrogVariant (line 42) | type FrogVariant
  type GlobalPosition (line 44) | type GlobalPosition struct
  type OptionalGlobalPosition (line 48) | type OptionalGlobalPosition
  type PaintingVariant (line 50) | type PaintingVariant
  type SnifferState (line 51) | type SnifferState
  type Vector3 (line 52) | type Vector3
  type Quatermion (line 53) | type Quatermion
  constant Standing (line 57) | Standing Pose = iota
  constant FallFlying (line 58) | FallFlying
  constant Sleeping (line 59) | Sleeping
  constant Swimming (line 60) | Swimming
  constant SpinAttack (line 61) | SpinAttack
  constant Sneaking (line 62) | Sneaking
  constant LongJumping (line 63) | LongJumping
  constant Dying (line 64) | Dying
  constant Croaking (line 65) | Croaking
  constant UsingTongue (line 66) | UsingTongue
  constant Sitting (line 67) | Sitting
  constant Roaring (line 68) | Roaring
  constant Sniffing (line 69) | Sniffing
  constant Emerging (line 70) | Emerging
  constant Digging (line 71) | Digging
  constant SnifferIdling (line 75) | SnifferIdling SnifferState = iota
  constant SnifferFeelingHappy (line 76) | SnifferFeelingHappy
  constant SnifferScenting (line 77) | SnifferScenting
  constant SnifferSniffing (line 78) | SnifferSniffing
  constant SnifferSearching (line 79) | SnifferSearching
  constant SnifferDigging (line 80) | SnifferDigging
  constant SnifferRising (line 81) | SnifferRising
  constant VillagerTypeDesert (line 85) | VillagerTypeDesert = iota
  constant VillagerTypeJungle (line 86) | VillagerTypeJungle
  constant VillagerTypePlains (line 87) | VillagerTypePlains
  constant VillagerTypeSavanna (line 88) | VillagerTypeSavanna
  constant VillagerTypeSnow (line 89) | VillagerTypeSnow
  constant VillagerTypeSwamp (line 90) | VillagerTypeSwamp
  constant VillagerTypeTaiga (line 91) | VillagerTypeTaiga
  constant VillagerProfessionNone (line 95) | VillagerProfessionNone = iota
  constant VillagerProfessionArmorer (line 96) | VillagerProfessionArmorer
  constant VillagerProfessionButcher (line 97) | VillagerProfessionButcher
  constant VillagerProfessionCartographer (line 98) | VillagerProfessionCartographer
  constant VillagerProfessionCleric (line 99) | VillagerProfessionCleric
  constant VillagerProfessionFarmer (line 100) | VillagerProfessionFarmer
  constant VillagerProfessionFisherman (line 101) | VillagerProfessionFisherman
  constant VillagerProfessionFletcher (line 102) | VillagerProfessionFletcher
  constant VillagerProfessionLeatherworker (line 103) | VillagerProfessionLeatherworker
  constant VillagerProfessionLibrarian (line 104) | VillagerProfessionLibrarian
  constant VillagerProfessionMason (line 105) | VillagerProfessionMason
  constant VillagerProfessionNitwit (line 106) | VillagerProfessionNitwit
  constant VillagerProfessionShepherd (line 107) | VillagerProfessionShepherd
  constant VillagerProfessionToolsmith (line 108) | VillagerProfessionToolsmith
  constant VillagerProfessionWeaponsmith (line 109) | VillagerProfessionWeaponsmith
  constant IsOnFire (line 113) | IsOnFire = 1 << iota
  constant IsCrouching (line 114) | IsCrouching
  constant IsRiding_unused (line 115) | IsRiding_unused
  constant IsSprinting (line 116) | IsSprinting
  constant IsSwimming (line 117) | IsSwimming
  constant IsInvisible (line 118) | IsInvisible
  constant HasGlowingEffect (line 119) | HasGlowingEffect
  constant IsFlyingWithElytra (line 120) | IsFlyingWithElytra
  constant IsHandActive (line 124) | IsHandActive = 1 << iota
  constant IsOffhandActive (line 125) | IsOffhandActive
  constant IsInRiptideSpinAttack (line 126) | IsInRiptideSpinAttack
  constant BaseIndex (line 132) | BaseIndex = iota
  constant AirTicksIndex (line 134) | AirTicksIndex
  constant CustomNameIndex (line 136) | CustomNameIndex
  constant IsCustomNameVisibleIndex (line 138) | IsCustomNameVisibleIndex
  constant IsSilentIndex (line 140) | IsSilentIndex
  constant HasNoGravityIndex (line 142) | HasNoGravityIndex
  constant PoseIndex (line 144) | PoseIndex
  constant TicksFrozenInPowderedSnowIndex (line 146) | TicksFrozenInPowderedSnowIndex
  constant LivingEntityHandstatesIndex (line 152) | LivingEntityHandstatesIndex = iota + 8
  constant LivingEntityHealthIndex (line 154) | LivingEntityHealthIndex
  constant LivingEntityPotionEffectColorIndex (line 156) | LivingEntityPotionEffectColorIndex
  constant LivingEntityPotionEffectAmbientIndex (line 158) | LivingEntityPotionEffectAmbientIndex
  constant LivingEntityArrowCountIndex (line 160) | LivingEntityArrowCountIndex
  constant LivingEntityBeeStingersCountIndex (line 162) | LivingEntityBeeStingersCountIndex
  constant LivingEntitySleepingBedPositionIndex (line 164) | LivingEntitySleepingBedPositionIndex
  constant PlayerAdditionalHeartsIndex (line 170) | PlayerAdditionalHeartsIndex = iota + 15
  constant PlayerScoreIndex (line 172) | PlayerScoreIndex
  constant PlayerDisplayedSkinPartsIndex (line 174) | PlayerDisplayedSkinPartsIndex
  constant PlayerMainHandIndex (line 176) | PlayerMainHandIndex
  constant LeftShoulderEntityData (line 178) | LeftShoulderEntityData
  constant RightShoulderEntityData (line 180) | RightShoulderEntityData

FILE: protocol/net/metadata/new.go
  function Player (line 4) | func Player(health float32) Metadata {

FILE: protocol/net/packet/configuration/clientInfo.go
  constant ChatModeEnabled (line 8) | ChatModeEnabled = iota
  constant ChatModeCommandsOnly (line 9) | ChatModeCommandsOnly
  constant ChatModeHidden (line 10) | ChatModeHidden
  constant CapeEnabled (line 14) | CapeEnabled = 1 << iota
  constant JacketEnabled (line 15) | JacketEnabled
  constant LeftSleeveEnabled (line 16) | LeftSleeveEnabled
  constant RightSleeveEnabled (line 17) | RightSleeveEnabled
  constant LeftPantsLegEnabled (line 18) | LeftPantsLegEnabled
  constant RightPantsLegEnabled (line 19) | RightPantsLegEnabled
  constant HatEnabled (line 20) | HatEnabled
  constant MainHandLeft (line 24) | MainHandLeft = iota
  constant MainHandRight (line 25) | MainHandRight
  constant PacketIdClientInformation (line 29) | PacketIdClientInformation = 0x00
  type ClientInformation (line 31) | type ClientInformation struct
    method ID (line 42) | func (ClientInformation) ID() int32 {
    method Encode (line 46) | func (c *ClientInformation) Encode(w encoding.Writer) error {
    method Decode (line 71) | func (c *ClientInformation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/configuration/cookie.go
  constant PacketIdCookieRequest (line 6) | PacketIdCookieRequest = 0x00
  type CookieRequest (line 8) | type CookieRequest struct
    method ID (line 10) | func (CookieRequest) ID() int32 {
  constant PacketIdCookieResponse (line 15) | PacketIdCookieResponse = 0x01
  type CookieResponse (line 17) | type CookieResponse struct
    method ID (line 19) | func (CookieResponse) ID() int32 {

FILE: protocol/net/packet/configuration/disconnect.go
  constant PacketIdDisconnect (line 9) | PacketIdDisconnect = 0x02
  type Disconnect (line 11) | type Disconnect struct
    method ID (line 15) | func (Disconnect) ID() int32 {
    method Encode (line 19) | func (d *Disconnect) Encode(w encoding.Writer) error {
    method Decode (line 23) | func (d *Disconnect) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/configuration/finish.go
  constant PacketIdFinishConfiguration (line 9) | PacketIdFinishConfiguration = 0x03
  constant PacketIdAcknowledgeFinishConfiguration (line 11) | PacketIdAcknowledgeFinishConfiguration
  type FinishConfiguration (line 14) | type FinishConfiguration struct
    method ID (line 18) | func (FinishConfiguration) ID() int32 {

FILE: protocol/net/packet/configuration/keepAlive.go
  constant PacketIdKeepAlive (line 8) | PacketIdKeepAlive = 0x04
  type KeepAlive (line 10) | type KeepAlive struct
    method ID (line 14) | func (KeepAlive) ID() int32 {
    method Encode (line 18) | func (k *KeepAlive) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (k *KeepAlive) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/configuration/ping.go
  constant PacketIdPing (line 8) | PacketIdPing = 0x05
  type Ping (line 10) | type Ping struct
    method ID (line 14) | func (Ping) ID() int32 {
    method Encode (line 18) | func (p *Ping) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (p *Ping) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/configuration/plugin.go
  constant PacketIdPluginMessage (line 8) | PacketIdPluginMessage = 0x01
  type ClientboundPluginMessage (line 10) | type ClientboundPluginMessage struct
    method ID (line 15) | func (ClientboundPluginMessage) ID() int32 {
    method Encode (line 19) | func (c *ClientboundPluginMessage) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (c *ClientboundPluginMessage) Decode(r encoding.Reader) error {
  type ServerboundPluginMessage (line 33) | type ServerboundPluginMessage struct
    method ID (line 37) | func (ServerboundPluginMessage) ID() int32 {

FILE: protocol/net/packet/configuration/registryData.go
  function init (line 13) | func init() {
  constant PacketIdRegistryData (line 25) | PacketIdRegistryData = 0x07
  type RegistryData (line 27) | type RegistryData struct
    method ID (line 34) | func (RegistryData) ID() int32 {
    method Encode (line 38) | func (r *RegistryData) Encode(w encoding.Writer) error {
    method Decode (line 93) | func (d *RegistryData) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/configuration/resetChat.go
  constant PacketIdResetChat (line 6) | PacketIdResetChat = 0x06
  type ResetChat (line 8) | type ResetChat struct
    method ID (line 10) | func (ResetChat) ID() int32 {

FILE: protocol/net/packet/handshake/handshake.go
  constant Status (line 8) | Status = iota + 1
  constant Login (line 9) | Login
  constant Transfer (line 10) | Transfer
  constant PacketIdHandshaking (line 14) | PacketIdHandshaking = 0x00
  type Handshaking (line 16) | type Handshaking struct
    method ID (line 23) | func (Handshaking) ID() int32 {
    method Decode (line 27) | func (h *Handshaking) Decode(r encoding.Reader) error {
    method Encode (line 41) | func (h Handshaking) Encode(w encoding.Writer) error {

FILE: protocol/net/packet/login/cookie.go
  constant PacketIdCookieRequest (line 8) | PacketIdCookieRequest = 0x05
  type CookieRequest (line 10) | type CookieRequest struct
    method ID (line 14) | func (CookieRequest) ID() int32 {
    method Encode (line 18) | func (s *CookieRequest) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (s *CookieRequest) Decode(r encoding.Reader) error {
  type CookieResponse (line 26) | type CookieResponse struct
    method ID (line 32) | func (CookieResponse) ID() int32 {
    method Encode (line 36) | func (s *CookieResponse) Encode(w encoding.Writer) error {
    method Decode (line 49) | func (s *CookieResponse) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/login/disconnect.go
  constant PacketIdDisconnect (line 9) | PacketIdDisconnect = 0x00
  type Disconnect (line 11) | type Disconnect struct
    method ID (line 15) | func (Disconnect) ID() int32 {
    method Encode (line 19) | func (d *Disconnect) Encode(w encoding.Writer) error {
    method Decode (line 23) | func (d *Disconnect) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/login/encryption.go
  constant PacketIdEncryption (line 8) | PacketIdEncryption = 0x01
  type EncryptionRequest (line 10) | type EncryptionRequest struct
    method ID (line 16) | func (EncryptionRequest) ID() int32 {
    method Encode (line 20) | func (e *EncryptionRequest) Encode(w encoding.Writer) error {
    method Decode (line 33) | func (e *EncryptionRequest) Decode(r encoding.Reader) error {
  type EncryptionResponse (line 47) | type EncryptionResponse struct
    method ID (line 52) | func (EncryptionResponse) ID() int32 {
    method Encode (line 56) | func (e *EncryptionResponse) Encode(w encoding.Writer) error {
    method Decode (line 63) | func (e *EncryptionResponse) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/login/loginStart.go
  constant PacketIdLoginStart (line 9) | PacketIdLoginStart = 0x00
  type LoginStart (line 11) | type LoginStart struct
    method ID (line 16) | func (LoginStart) ID() int32 {
    method Encode (line 20) | func (l *LoginStart) Encode(w encoding.Writer) error {
    method Decode (line 27) | func (l *LoginStart) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/login/loginSuccess.go
  type Textures (line 8) | type Textures struct
  type Property (line 26) | type Property struct
  constant PacketIdLoginSuccess (line 33) | PacketIdLoginSuccess = 0x02
  type LoginSuccess (line 35) | type LoginSuccess struct
    method ID (line 41) | func (LoginSuccess) ID() int32 {
    method Encode (line 45) | func (l *LoginSuccess) Encode(w encoding.Writer) error {
  constant PacketIdLoginAcknowledged (line 77) | PacketIdLoginAcknowledged = 0x03
  type LoginAcknowledged (line 79) | type LoginAcknowledged struct
    method ID (line 81) | func (LoginAcknowledged) ID() int32 {
    method Decode (line 85) | func (*LoginAcknowledged) Decode(encoding.Reader) error {

FILE: protocol/net/packet/login/plugin.go
  constant PacketIdLoginPluginRequest (line 8) | PacketIdLoginPluginRequest = 0x04
  type LoginPluginRequest (line 10) | type LoginPluginRequest struct
    method ID (line 16) | func (LoginPluginRequest) ID() int32 {
    method Encode (line 20) | func (l *LoginPluginRequest) Encode(w encoding.Writer) error {
    method Decode (line 30) | func (l *LoginPluginRequest) Decode(r encoding.Reader) error {
  constant PacketIdLoginPluginResponse (line 41) | PacketIdLoginPluginResponse = 0x02
  type LoginPluginResponse (line 43) | type LoginPluginResponse struct
    method ID (line 49) | func (LoginPluginResponse) ID() int32 {
    method Encode (line 53) | func (l *LoginPluginResponse) Encode(w encoding.Writer) error {
    method Decode (line 68) | func (l *LoginPluginResponse) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/login/setCompression.go
  constant PacketIdSetCompression (line 8) | PacketIdSetCompression = 0x03
  type SetCompression (line 10) | type SetCompression struct
    method ID (line 14) | func (SetCompression) ID() int32 {
    method Encode (line 18) | func (s *SetCompression) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (s *SetCompression) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/packet.go
  type Encodeable (line 6) | type Encodeable interface
  type Decodeable (line 12) | type Decodeable interface
  type Error (line 18) | type Error struct
    method ID (line 22) | func (Error) ID() int32                    { return -1 }
    method Decode (line 23) | func (Error) Decode(encoding.Reader) error { return nil }
  type UnknownPacket (line 27) | type UnknownPacket struct
    method ID (line 33) | func (u UnknownPacket) ID() int32 {
    method Decode (line 37) | func (u UnknownPacket) Decode(encoding.Reader) error {
    method Encode (line 41) | func (u UnknownPacket) Encode(encoding.Writer) error {
  type EmptyPacket (line 45) | type EmptyPacket struct
    method Encode (line 48) | func (pk EmptyPacket) Encode(encoding.Writer) error {
    method Decode (line 52) | func (pk EmptyPacket) Decode(encoding.Reader) error {

FILE: protocol/net/packet/play/acknowledgeBlockChange.go
  constant PacketIdAcknowledgeBlockChange (line 8) | PacketIdAcknowledgeBlockChange = 0x05
  type AcknowledgeBlockChange (line 10) | type AcknowledgeBlockChange struct
    method ID (line 14) | func (AcknowledgeBlockChange) ID() int32 {
    method Encode (line 18) | func (b *AcknowledgeBlockChange) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (b *AcknowledgeBlockChange) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/blockAction.go
  constant PacketIdBlockAction (line 8) | PacketIdBlockAction = 0x08
  type BlockAction (line 10) | type BlockAction struct
    method ID (line 16) | func (BlockAction) ID() int32 {
    method Encode (line 20) | func (b *BlockAction) Encode(w encoding.Writer) error {
    method Decode (line 33) | func (b *BlockAction) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/blockEntityData.go
  constant PacketIdBlockEntityData (line 9) | PacketIdBlockEntityData = 0x07
  type BlockEntityData (line 11) | type BlockEntityData struct
    method ID (line 17) | func (BlockEntityData) ID() int32 {
    method Encode (line 21) | func (b *BlockEntityData) Encode(w encoding.Writer) error {
    method Decode (line 34) | func (b *BlockEntityData) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/blockUpdate.go
  constant PacketIdBlockUpdate (line 8) | PacketIdBlockUpdate = 0x09
  type BlockUpdate (line 10) | type BlockUpdate struct
    method ID (line 15) | func (BlockUpdate) ID() int32 {
    method Encode (line 19) | func (b *BlockUpdate) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (b *BlockUpdate) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/bundleDelimiter.go
  constant PacketIdBundleDelimiter (line 6) | PacketIdBundleDelimiter = 0x00
  type BundleDelimiter (line 8) | type BundleDelimiter struct
    method ID (line 10) | func (BundleDelimiter) ID() int32 {

FILE: protocol/net/packet/play/changeDifficulty.go
  constant PacketIdChangeDifficulty (line 8) | PacketIdChangeDifficulty = 0x0B
  type ChangeDifficulty (line 10) | type ChangeDifficulty struct
    method ID (line 15) | func (ChangeDifficulty) ID() int32 {
    method Encode (line 19) | func (c *ChangeDifficulty) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (c *ChangeDifficulty) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/chatCommand.go
  constant PacketIdChatCommand (line 8) | PacketIdChatCommand = 0x04
  type ChatCommand (line 10) | type ChatCommand struct
    method ID (line 14) | func (ChatCommand) ID() int32 {
    method Encode (line 18) | func (c *ChatCommand) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (c *ChatCommand) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/chatMessage.go
  constant PacketIdChatMessage (line 8) | PacketIdChatMessage = 0x06
  type ChatMessage (line 10) | type ChatMessage struct
    method ID (line 21) | func (ChatMessage) ID() int32 {
    method Encode (line 25) | func (c *ChatMessage) Encode(w encoding.Writer) error {
    method Decode (line 49) | func (c *ChatMessage) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/chunkBatch.go
  constant PacketIdChunkBatchFinished (line 9) | PacketIdChunkBatchFinished = 0x0C
  type ChunkBatchFinished (line 11) | type ChunkBatchFinished struct
    method ID (line 15) | func (ChunkBatchFinished) ID() int32 {
    method Encode (line 19) | func (c *ChunkBatchFinished) Encode(w encoding.Writer) error {
    method Decode (line 23) | func (c *ChunkBatchFinished) Decode(r encoding.Reader) error {
  constant PacketIdChunkBatchStart (line 29) | PacketIdChunkBatchStart = 0x0D
  type ChunkBatchStart (line 31) | type ChunkBatchStart struct
    method ID (line 33) | func (ChunkBatchStart) ID() int32 {
  constant PacketIdChunkBatchReceived (line 38) | PacketIdChunkBatchReceived = 0x08
  type ChunkBatchReceived (line 40) | type ChunkBatchReceived struct
    method ID (line 44) | func (ChunkBatchReceived) ID() int32 {
    method Encode (line 48) | func (c *ChunkBatchReceived) Encode(w encoding.Writer) error {
    method Decode (line 52) | func (c *ChunkBatchReceived) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/chunkData.go
  type BlockEntity (line 9) | type BlockEntity struct
  constant PacketIdChunkDataUpdateLight (line 16) | PacketIdChunkDataUpdateLight = 0x27
  type Heightmaps (line 18) | type Heightmaps struct
  type ChunkDataUpdateLight (line 22) | type ChunkDataUpdateLight struct
    method ID (line 32) | func (ChunkDataUpdateLight) ID() int32 {
    method Encode (line 36) | func (c *ChunkDataUpdateLight) Encode(w encoding.Writer) error {
    method Decode (line 103) | func (c *ChunkDataUpdateLight) Decode(encoding.Reader) error {

FILE: protocol/net/packet/play/clickContainer.go
  constant PacketIdClickContainer (line 9) | PacketIdClickContainer = 0x0E
  type ClickContainer (line 11) | type ClickContainer struct
    method ID (line 26) | func (ClickContainer) ID() int32 {
    method Decode (line 30) | func (c *ClickContainer) Decode(r encoding.Reader) error {
  type ChangedSlot (line 21) | type ChangedSlot struct

FILE: protocol/net/packet/play/clientInfo.go
  constant PacketIdClientInformation (line 6) | PacketIdClientInformation = 0x0A
  type ClientInformation (line 8) | type ClientInformation struct
    method ID (line 12) | func (ClientInformation) ID() int32 {

FILE: protocol/net/packet/play/closeContainer.go
  constant PacketIdCloseContainer (line 8) | PacketIdCloseContainer = 0x0F
  type CloseContainer (line 10) | type CloseContainer struct
    method ID (line 14) | func (CloseContainer) ID() int32 {
    method Encode (line 18) | func (c *CloseContainer) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (c *CloseContainer) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/commands.go
  type Node (line 9) | type Node struct
  constant NodeRoot (line 29) | NodeRoot = iota
  constant NodeLiteral (line 32) | NodeLiteral = 1 << iota
  constant NodeArgument (line 33) | NodeArgument
  constant NodeExecutable (line 35) | NodeExecutable
  constant NodeRedirect (line 36) | NodeRedirect
  constant NodeHasSuggestionsType (line 37) | NodeHasSuggestionsType
  constant NodeType (line 40) | NodeType = 0x03
  constant PacketIdCommands (line 43) | PacketIdCommands = 0x11
  type Commands (line 45) | type Commands struct
    method ID (line 50) | func (Commands) ID() int32 {
    method Encode (line 54) | func (c *Commands) Encode(w encoding.Writer) error {
    method encodeNode (line 66) | func (c *Commands) encodeNode(w encoding.Writer, node Node) error {

FILE: protocol/net/packet/play/confirmTeleport.go
  constant PacketIdConfirmTeleportation (line 8) | PacketIdConfirmTeleportation = 0x00
  type ConfirmTeleportation (line 10) | type ConfirmTeleportation struct
    method ID (line 14) | func (ConfirmTeleportation) ID() int32 {
    method Encode (line 18) | func (c *ConfirmTeleportation) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (c *ConfirmTeleportation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/damageEvent.go
  constant PacketIdDamageEvent (line 8) | PacketIdDamageEvent = 0x1A
  type DamageEvent (line 10) | type DamageEvent struct
    method ID (line 20) | func (DamageEvent) ID() int32 {
    method Encode (line 24) | func (d *DamageEvent) Encode(w encoding.Writer) error {
    method Decode (line 54) | func (d *DamageEvent) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/deleteMessage.go
  constant PacketIdDeleteMessage (line 8) | PacketIdDeleteMessage = 0x1C
  type DeleteMessage (line 10) | type DeleteMessage struct
    method ID (line 15) | func (DeleteMessage) ID() int32 {
    method Encode (line 19) | func (b *DeleteMessage) Encode(w encoding.Writer) error {
    method Decode (line 29) | func (b *DeleteMessage) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/disconnect.go
  constant PacketIdDisconnect (line 9) | PacketIdDisconnect = 0x1D
  type Disconnect (line 11) | type Disconnect struct
    method ID (line 15) | func (Disconnect) ID() int32 {
    method Encode (line 19) | func (d *Disconnect) Encode(w encoding.Writer) error {
    method Decode (line 23) | func (d *Disconnect) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/disguisedChatMessage.go
  constant PacketIdDisguisedChatMessage (line 9) | PacketIdDisguisedChatMessage = 0x1E
  type DisguisedChatMessage (line 11) | type DisguisedChatMessage struct
    method ID (line 20) | func (DisguisedChatMessage) ID() int32 {
    method Encode (line 24) | func (p *DisguisedChatMessage) Encode(w encoding.Writer) error {
    method Decode (line 48) | func (p *DisguisedChatMessage) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/entityAnimation.go
  constant PacketIdEntityAnimation (line 8) | PacketIdEntityAnimation = 0x03
  constant AnimationSwingMainArm (line 11) | AnimationSwingMainArm = iota
  constant _ (line 12) | _
  constant AnimationLeaveBed (line 13) | AnimationLeaveBed
  constant AnimationSwingOffhand (line 14) | AnimationSwingOffhand
  constant AnimationCriticalEffect (line 15) | AnimationCriticalEffect
  constant AnimationMagicCriticalEffect (line 16) | AnimationMagicCriticalEffect
  type EntityAnimation (line 19) | type EntityAnimation struct
    method ID (line 24) | func (EntityAnimation) ID() int32 {
    method Encode (line 28) | func (e *EntityAnimation) Encode(w encoding.Writer) error {
    method Decode (line 35) | func (e *EntityAnimation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/entityEvent.go
  constant PacketIdEntityEvent (line 8) | PacketIdEntityEvent = 0x1F
  type EntityEvent (line 10) | type EntityEvent struct
    method ID (line 15) | func (EntityEvent) ID() int32 {
    method Encode (line 19) | func (e *EntityEvent) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (e *EntityEvent) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/entitySoundEffect.go
  constant PacketIdEntitySoundEffect (line 8) | PacketIdEntitySoundEffect = 0x67
  type EntitySoundEffect (line 10) | type EntitySoundEffect struct
    method ID (line 22) | func (EntitySoundEffect) ID() int32 {
    method Encode (line 26) | func (s *EntitySoundEffect) Encode(w encoding.Writer) error {
    method Decode (line 58) | func (s *EntitySoundEffect) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/gameEvent.go
  constant GameEventNoRespawnBlockAvailable (line 8) | GameEventNoRespawnBlockAvailable = iota
  constant GameEventBeginRaining (line 9) | GameEventBeginRaining
  constant GameEventEndRaining (line 10) | GameEventEndRaining
  constant GameEventChangeGamemode (line 11) | GameEventChangeGamemode
  constant GameEventWinGame (line 12) | GameEventWinGame
  constant GameEventDemoEvent (line 13) | GameEventDemoEvent
  constant GameEventArrowHitPlayer (line 14) | GameEventArrowHitPlayer
  constant GameEventRainLevelChange (line 15) | GameEventRainLevelChange
  constant GameEventThunderLevelChange (line 16) | GameEventThunderLevelChange
  constant GameEventPlayPufferfishStingSound (line 17) | GameEventPlayPufferfishStingSound
  constant GameEventPlayElderGuardianMobAppearance (line 18) | GameEventPlayElderGuardianMobAppearance
  constant GameEventEnableRespawnScreen (line 19) | GameEventEnableRespawnScreen
  constant GameEventLimitedCrafting (line 20) | GameEventLimitedCrafting
  constant GameEventStartWaitingChunks (line 21) | GameEventStartWaitingChunks
  constant PacketIdGameEvent (line 25) | PacketIdGameEvent = 0x22
  type GameEvent (line 27) | type GameEvent struct
    method ID (line 32) | func (GameEvent) ID() int32 {
    method Encode (line 36) | func (g *GameEvent) Encode(w encoding.Writer) error {
    method Decode (line 43) | func (g *GameEvent) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/hurtAnimation.go
  constant PacketIdHurtAnimation (line 8) | PacketIdHurtAnimation = 0x24
  type HurtAnimation (line 10) | type HurtAnimation struct
    method ID (line 15) | func (HurtAnimation) ID() int32 {
    method Encode (line 19) | func (d *HurtAnimation) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (d *HurtAnimation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/interact.go
  constant PacketIdInteract (line 8) | PacketIdInteract = 0x16
  constant InteractTypeInteract (line 11) | InteractTypeInteract = iota
  constant InteractTypeAttack (line 12) | InteractTypeAttack
  constant InteractTypeInteractAt (line 13) | InteractTypeInteractAt
  type Interact (line 16) | type Interact struct
    method ID (line 24) | func (Interact) ID() int32 {
    method Encode (line 28) | func (i *Interact) Encode(w encoding.Writer) error {
    method Decode (line 55) | func (i *Interact) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/keepAlive.go
  constant PacketIdServerboundKeepAlive (line 8) | PacketIdServerboundKeepAlive = 0x18
  type ServerboundKeepAlive (line 10) | type ServerboundKeepAlive struct
    method ID (line 14) | func (ServerboundKeepAlive) ID() int32 {
    method Encode (line 18) | func (k *ServerboundKeepAlive) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (k *ServerboundKeepAlive) Decode(r encoding.Reader) error {
  constant PacketIdClientboundKeepAlive (line 27) | PacketIdClientboundKeepAlive = 0x26
  type ClientboundKeepAlive (line 29) | type ClientboundKeepAlive struct
    method ID (line 33) | func (ClientboundKeepAlive) ID() int32 {
    method Encode (line 37) | func (k *ClientboundKeepAlive) Encode(w encoding.Writer) error {
    method Decode (line 41) | func (k *ClientboundKeepAlive) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/login.go
  constant PacketIdLogin (line 10) | PacketIdLogin = 0x2B
  type Login (line 12) | type Login struct
    method ID (line 43) | func (Login) ID() int32 {
    method Encode (line 47) | func (l *Login) Encode(w encoding.Writer) error {
    method Decode (line 119) | func (l *Login) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/openScreen.go
  constant PacketIdOpenScreen (line 9) | PacketIdOpenScreen = 0x33
  type OpenScreen (line 11) | type OpenScreen struct
    method ID (line 17) | func (OpenScreen) ID() int32 {
    method Encode (line 21) | func (o *OpenScreen) Encode(w encoding.Writer) error {
    method Decode (line 31) | func (o *OpenScreen) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerAbilitiesCB.go
  constant PacketIdPlayerAbilitiesClientbound (line 8) | PacketIdPlayerAbilitiesClientbound = 0x38
  constant PlayerAbsInvulenrable (line 11) | PlayerAbsInvulenrable = 1 << iota
  constant PlayerAbsFlying (line 12) | PlayerAbsFlying
  constant PlayerAbsCreativeMode (line 13) | PlayerAbsCreativeMode
  type PlayerAbilitiesClientbound (line 16) | type PlayerAbilitiesClientbound struct
    method ID (line 22) | func (PlayerAbilitiesClientbound) ID() int32 {
    method Encode (line 26) | func (a *PlayerAbilitiesClientbound) Encode(w encoding.Writer) error {
    method Decode (line 36) | func (a *PlayerAbilitiesClientbound) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerAbilitiesSB.go
  constant PacketIdPlayerAbilitiesServerbound (line 8) | PacketIdPlayerAbilitiesServerbound = 0x23
  type PlayerAbilitiesServerbound (line 10) | type PlayerAbilitiesServerbound struct
    method ID (line 14) | func (PlayerAbilitiesServerbound) ID() int32 {
    method Encode (line 18) | func (a *PlayerAbilitiesServerbound) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (a *PlayerAbilitiesServerbound) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerChatMessage.go
  constant FilterTypePassThrough (line 10) | FilterTypePassThrough = iota
  constant FilterTypeFullyFiltered (line 11) | FilterTypeFullyFiltered
  constant FilterTypePartiallyFiltered (line 12) | FilterTypePartiallyFiltered
  type PreviousMessage (line 15) | type PreviousMessage struct
  constant PacketIdPlayerChatMessage (line 21) | PacketIdPlayerChatMessage = 0x39
  type PlayerChatMessage (line 23) | type PlayerChatMessage struct
    method ID (line 44) | func (PlayerChatMessage) ID() int32 {
    method Encode (line 48) | func (p *PlayerChatMessage) Encode(w encoding.Writer) error {
    method Decode (line 124) | func (p *PlayerChatMessage) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerCommand.go
  constant PacketIdPlayerCommand (line 8) | PacketIdPlayerCommand = 0x25
  constant ActionIdStartSneaking (line 11) | ActionIdStartSneaking = iota
  constant ActionIdStopSneaking (line 12) | ActionIdStopSneaking
  constant ActionIdLeaveBed (line 13) | ActionIdLeaveBed
  constant ActionIdStartSprinting (line 14) | ActionIdStartSprinting
  constant ActionIdStopSprinting (line 15) | ActionIdStopSprinting
  constant ActionIdStartJumpWithHorse (line 16) | ActionIdStartJumpWithHorse
  constant ActionIdStopJumpWithHorse (line 17) | ActionIdStopJumpWithHorse
  constant ActionIdOpenVehicleInventory (line 18) | ActionIdOpenVehicleInventory
  constant ActionIdStartFlyingWithElytra (line 19) | ActionIdStartFlyingWithElytra
  type PlayerCommand (line 22) | type PlayerCommand struct
    method ID (line 28) | func (PlayerCommand) ID() int32 {
    method Encode (line 32) | func (p *PlayerCommand) Encode(w encoding.Writer) error {
    method Decode (line 42) | func (p *PlayerCommand) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerInfoRemove.go
  constant PacketIdPlayerInfoRemove (line 10) | PacketIdPlayerInfoRemove = 0x3D
  type PlayerInfoRemove (line 12) | type PlayerInfoRemove struct
    method ID (line 16) | func (PlayerInfoRemove) ID() int32 {
    method Encode (line 20) | func (p *PlayerInfoRemove) Encode(w encoding.Writer) error {
    method Decode (line 32) | func (p *PlayerInfoRemove) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerInfoUpdate.go
  constant ActionAddPlayer (line 11) | ActionAddPlayer = 1 << iota
  constant ActionInitializeChat (line 12) | ActionInitializeChat
  constant ActionUpdateGameMode (line 13) | ActionUpdateGameMode
  constant ActionUpdateListed (line 14) | ActionUpdateListed
  constant ActionUpdateLatency (line 15) | ActionUpdateLatency
  constant ActionUpdateDisplayName (line 16) | ActionUpdateDisplayName
  type PlayerAction (line 19) | type PlayerAction struct
  constant PacketIdPlayerInfoUpdate (line 38) | PacketIdPlayerInfoUpdate = 0x3E
  type PlayerInfoUpdate (line 40) | type PlayerInfoUpdate struct
    method ID (line 45) | func (PlayerInfoUpdate) ID() int32 {
    method Encode (line 49) | func (p *PlayerInfoUpdate) Encode(w encoding.Writer) error {
    method Decode (line 128) | func (p *PlayerInfoUpdate) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/playerSession.go
  constant PacketIdPlayerSession (line 9) | PacketIdPlayerSession = 0x07
  type PlayerSession (line 11) | type PlayerSession struct
    method ID (line 18) | func (PlayerSession) ID() int32 {
    method Encode (line 22) | func (p *PlayerSession) Encode(w encoding.Writer) error {
    method Decode (line 35) | func (p *PlayerSession) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/plugin.go
  constant PacketIdClientboundPluginMessage (line 9) | PacketIdClientboundPluginMessage = 0x19
  type ClientboundPluginMessage (line 11) | type ClientboundPluginMessage
    method ID (line 13) | func (ClientboundPluginMessage) ID() int32 {
    method Encode (line 17) | func (c *ClientboundPluginMessage) Encode(w encoding.Writer) error {
    method Decode (line 24) | func (c *ClientboundPluginMessage) Decode(r encoding.Reader) error {
  constant PacketIdServerboundPluginMessage (line 32) | PacketIdServerboundPluginMessage = 0x12
  type ServerboundPluginMessage (line 34) | type ServerboundPluginMessage struct
    method ID (line 38) | func (ServerboundPluginMessage) ID() int32 {

FILE: protocol/net/packet/play/removeEntities.go
  constant PacketIdRemoveEntities (line 8) | PacketIdRemoveEntities = 0x42
  type RemoveEntities (line 10) | type RemoveEntities struct
    method ID (line 14) | func (RemoveEntities) ID() int32 {
    method Encode (line 18) | func (r *RemoveEntities) Encode(w encoding.Writer) error {
    method Decode (line 32) | func (e *RemoveEntities) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/serverData.go
  constant PacketIdServerData (line 9) | PacketIdServerData = 0x4B
  type ServerData (line 11) | type ServerData struct
    method ID (line 16) | func (ServerData) ID() int32 {
    method Encode (line 20) | func (d *ServerData) Encode(w encoding.Writer) error {
    method Decode (line 33) | func (d *ServerData) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/serverLinks.go
  constant PacketIdServerLinks (line 9) | PacketIdServerLinks = 0x7B
  constant LabelBugRepot (line 12) | LabelBugRepot = iota
  constant LabelCommunityGuidelines (line 13) | LabelCommunityGuidelines
  constant LabelSupport (line 14) | LabelSupport
  constant LabelStatus (line 15) | LabelStatus
  constant LabelFeedback (line 16) | LabelFeedback
  constant LabelCommunity (line 17) | LabelCommunity
  constant LabelWebsite (line 18) | LabelWebsite
  constant LabelForums (line 19) | LabelForums
  constant LabelNews (line 20) | LabelNews
  constant LabelAnnouncements (line 21) | LabelAnnouncements
  type Link (line 24) | type Link struct
  type ServerLinks (line 33) | type ServerLinks struct
    method ID (line 37) | func (ServerLinks) ID() int32 {
    method Encode (line 41) | func (s *ServerLinks) Encode(w encoding.Writer) error {
    method Decode (line 65) | func (s *ServerLinks) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setCenterChunk.go
  constant PacketIdSetCenterChunk (line 8) | PacketIdSetCenterChunk = 0x54
  type SetCenterChunk (line 10) | type SetCenterChunk struct
    method ID (line 14) | func (SetCenterChunk) ID() int32 {
    method Encode (line 18) | func (s *SetCenterChunk) Encode(w encoding.Writer) error {
    method Decode (line 25) | func (s *SetCenterChunk) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setContainerContent.go
  constant PacketIdSetContainerContent (line 9) | PacketIdSetContainerContent = 0x13
  type SetContainerContent (line 11) | type SetContainerContent struct
    method ID (line 18) | func (SetContainerContent) ID() int32 {
    method Encode (line 22) | func (s *SetContainerContent) Encode(w encoding.Writer) error {
    method Decode (line 41) | func (s *SetContainerContent) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setCreativeModeSlot.go
  constant PacketIdSetCreativeModeSlot (line 9) | PacketIdSetCreativeModeSlot = 0x32
  type SetCreativeModeSlot (line 11) | type SetCreativeModeSlot struct
    method ID (line 16) | func (SetCreativeModeSlot) ID() int32 {
    method Encode (line 20) | func (s *SetCreativeModeSlot) Encode(w encoding.Writer) error {
    method Decode (line 27) | func (s *SetCreativeModeSlot) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setDefaultSpawnPosition.go
  constant PacketIdSetDefaultSpawnPosition (line 8) | PacketIdSetDefaultSpawnPosition = 0x56
  type SetDefaultSpawnPosition (line 10) | type SetDefaultSpawnPosition struct
    method ID (line 15) | func (SetDefaultSpawnPosition) ID() int32 {
    method Encode (line 19) | func (s *SetDefaultSpawnPosition) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (s *SetDefaultSpawnPosition) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setEntityMetadata.go
  constant PacketIdSetEntityMetadata (line 10) | PacketIdSetEntityMetadata = 0x58
  type SetEntityMetadata (line 12) | type SetEntityMetadata struct
    method ID (line 17) | func (SetEntityMetadata) ID() int32 {
    method Encode (line 21) | func (s *SetEntityMetadata) Encode(w encoding.Writer) error {
    method Decode (line 276) | func (*SetEntityMetadata) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setEntityVelocity.go
  constant PacketIdSetEntityVelocity (line 8) | PacketIdSetEntityVelocity = 0x5A
  type SetEntityVelocity (line 10) | type SetEntityVelocity struct
    method ID (line 15) | func (SetEntityVelocity) ID() int32 {
    method Encode (line 19) | func (d *SetEntityVelocity) Encode(w encoding.Writer) error {
    method Decode (line 32) | func (d *SetEntityVelocity) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setHeadRotation.go
  constant PacketIdSetHeadRotation (line 8) | PacketIdSetHeadRotation = 0x48
  type SetHeadRotation (line 10) | type SetHeadRotation struct
    method ID (line 15) | func (SetHeadRotation) ID() int32 {
    method Encode (line 19) | func (s *SetHeadRotation) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (s *SetHeadRotation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setHeldItemCB.go
  constant PacketIdSetHeldItemClientbound (line 8) | PacketIdSetHeldItemClientbound = 0x53
  type SetHeldItemClientbound (line 10) | type SetHeldItemClientbound struct
    method ID (line 14) | func (SetHeldItemClientbound) ID() int32 {
    method Encode (line 18) | func (s *SetHeldItemClientbound) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (s *SetHeldItemClientbound) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setHeldItemSB.go
  constant PacketIdSetHeldItemServerbound (line 8) | PacketIdSetHeldItemServerbound = 0x2F
  type SetHeldItemServerbound (line 10) | type SetHeldItemServerbound struct
    method ID (line 14) | func (SetHeldItemServerbound) ID() int32 {
    method Encode (line 18) | func (s *SetHeldItemServerbound) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (s *SetHeldItemServerbound) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setPlayerOnGround.go
  constant PacketIdSetPlayerOnGround (line 8) | PacketIdSetPlayerOnGround = 0x1D
  type SetPlayerOnGround (line 10) | type SetPlayerOnGround struct
    method ID (line 14) | func (SetPlayerOnGround) ID() int32 {
    method Encode (line 18) | func (s *SetPlayerOnGround) Encode(w encoding.Writer) error {
    method Decode (line 22) | func (s *SetPlayerOnGround) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setPlayerPosition.go
  constant PacketIdSetPlayerPosition (line 8) | PacketIdSetPlayerPosition = 0x1A
  type SetPlayerPosition (line 10) | type SetPlayerPosition struct
    method ID (line 15) | func (SetPlayerPosition) ID() int32 {
    method Encode (line 19) | func (s *SetPlayerPosition) Encode(w encoding.Writer) error {
    method Decode (line 32) | func (s *SetPlayerPosition) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setPlayerPositionAndRotation.go
  constant PacketIdSetPlayerPositionAndRotation (line 8) | PacketIdSetPlayerPositionAndRotation = 0x1B
  type SetPlayerPositionAndRotation (line 10) | type SetPlayerPositionAndRotation struct
    method ID (line 16) | func (SetPlayerPositionAndRotation) ID() int32 {
    method Encode (line 20) | func (s *SetPlayerPositionAndRotation) Encode(w encoding.Writer) error {
    method Decode (line 39) | func (s *SetPlayerPositionAndRotation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setPlayerRotation.go
  constant PacketIdSetPlayerRotation (line 8) | PacketIdSetPlayerRotation = 0x1C
  type SetPlayerRotation (line 10) | type SetPlayerRotation struct
    method ID (line 15) | func (SetPlayerRotation) ID() int32 {
    method Encode (line 19) | func (s *SetPlayerRotation) Encode(w encoding.Writer) error {
    method Decode (line 29) | func (s *SetPlayerRotation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/setTickingState.go
  constant PacketIdSetTickingState (line 8) | PacketIdSetTickingState = 0x71
  type SetTickingState (line 10) | type SetTickingState struct
    method ID (line 15) | func (SetTickingState) ID() int32 {
    method Encode (line 19) | func (s *SetTickingState) Encode(w encoding.Writer) error {

FILE: protocol/net/packet/play/signedChatCommand.go
  constant PacketIdSignedChatCommand (line 8) | PacketIdSignedChatCommand = 0x05
  type SignedChatCommand (line 10) | type SignedChatCommand struct
    method ID (line 23) | func (SignedChatCommand) ID() int32 {
    method Encode (line 27) | func (c *SignedChatCommand) Encode(w encoding.Writer) error {
    method Decode (line 54) | func (c *SignedChatCommand) Decode(r encoding.Reader) error {
  type SignedArgument (line 18) | type SignedArgument struct

FILE: protocol/net/packet/play/soundEffect.go
  constant PacketIdSoundEffect (line 8) | PacketIdSoundEffect = 0x68
  constant SoundCategoryMaster (line 11) | SoundCategoryMaster = iota
  constant SoundCategoryMusic (line 12) | SoundCategoryMusic
  constant SoundCategoryRecord (line 13) | SoundCategoryRecord
  constant SoundCategoryWeather (line 14) | SoundCategoryWeather
  constant SoundCategoryBlock (line 15) | SoundCategoryBlock
  constant SoundCategoryHostile (line 16) | SoundCategoryHostile
  constant SoundCategoryNeutral (line 17) | SoundCategoryNeutral
  constant SoundCategoryPlayer (line 18) | SoundCategoryPlayer
  constant SoundCategoryAmbient (line 19) | SoundCategoryAmbient
  constant SoundCategoryVoice (line 20) | SoundCategoryVoice
  type SoundEffect (line 23) | type SoundEffect struct
    method ID (line 35) | func (SoundEffect) ID() int32 {
    method Encode (line 39) | func (s *SoundEffect) Encode(w encoding.Writer) error {
    method Decode (line 77) | func (s *SoundEffect) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/spawnEntity.go
  constant ObjectDataItemFrameDown (line 9) | ObjectDataItemFrameDown = iota
  constant ObjectDataItemFrameUp (line 10) | ObjectDataItemFrameUp
  constant ObjectDataNorth (line 11) | ObjectDataNorth
  constant ObjectDataSouth (line 12) | ObjectDataSouth
  constant ObjectDataWest (line 13) | ObjectDataWest
  constant ObjectDataEast (line 14) | ObjectDataEast
  constant PacketIdSpawnEntity (line 18) | PacketIdSpawnEntity = 0x01
  type SpawnEntity (line 20) | type SpawnEntity struct
    method ID (line 30) | func (SpawnEntity) ID() int32 {
    method Encode (line 34) | func (s *SpawnEntity) Encode(w encoding.Writer) error {
    method Decode (line 74) | func (s *SpawnEntity) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/stepTick.go
  constant PacketIdStepTick (line 8) | PacketIdStepTick = 0x72
  type StepTick (line 10) | type StepTick struct
    method ID (line 14) | func (StepTick) ID() int32 {
    method Encode (line 18) | func (s *StepTick) Encode(w encoding.Writer) error {

FILE: protocol/net/packet/play/swingArm.go
  constant PacketIdSwingArm (line 8) | PacketIdSwingArm = 0x36
  constant MainHand (line 11) | MainHand = iota
  constant Offhand (line 12) | Offhand
  type SwingArm (line 15) | type SwingArm struct
    method ID (line 19) | func (SwingArm) ID() int32 {
    method Encode (line 23) | func (e *SwingArm) Encode(w encoding.Writer) error {
    method Decode (line 27) | func (e *SwingArm) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/synchronizePlayerPosition.go
  constant PacketIdSynchronizePlayerPosition (line 8) | PacketIdSynchronizePlayerPosition = 0x40
  constant SyncPosRelX (line 11) | SyncPosRelX = 1 << iota
  constant SyncPosRelY (line 12) | SyncPosRelY
  constant SyncPosRelZ (line 13) | SyncPosRelZ
  constant SyncPosRelPitch (line 14) | SyncPosRelPitch
  constant SyncPosRelYaw (line 15) | SyncPosRelYaw
  type SynchronizePlayerPosition (line 18) | type SynchronizePlayerPosition struct
    method ID (line 25) | func (SynchronizePlayerPosition) ID() int32 {
    method Encode (line 29) | func (s *SynchronizePlayerPosition) Encode(w encoding.Writer) error {
    method Decode (line 51) | func (s *SynchronizePlayerPosition) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/systemChatMessage.go
  constant PacketIdSystemChatMessage (line 9) | PacketIdSystemChatMessage = 0x6C
  type SystemChatMessage (line 11) | type SystemChatMessage struct
    method ID (line 16) | func (SystemChatMessage) ID() int32 {
    method Encode (line 20) | func (s *SystemChatMessage) Encode(w encoding.Writer) error {
    method Decode (line 27) | func (s *SystemChatMessage) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/updateEntityPosition.go
  constant PacketIdUpdateEntityPosition (line 8) | PacketIdUpdateEntityPosition = 0x2E
  type UpdateEntityPosition (line 10) | type UpdateEntityPosition struct
    method ID (line 16) | func (UpdateEntityPosition) ID() int32 {
    method Encode (line 20) | func (s *UpdateEntityPosition) Encode(w encoding.Writer) error {
    method Decode (line 36) | func (s *UpdateEntityPosition) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/updateEntityPositionAndRotation.go
  constant PacketIdUpdateEntityPositionAndRotation (line 8) | PacketIdUpdateEntityPositionAndRotation = 0x2F
  type UpdateEntityPositionAndRotation (line 10) | type UpdateEntityPositionAndRotation struct
    method ID (line 17) | func (UpdateEntityPositionAndRotation) ID() int32 {
    method Encode (line 21) | func (s *UpdateEntityPositionAndRotation) Encode(w encoding.Writer) er...
    method Decode (line 43) | func (s *UpdateEntityPositionAndRotation) Decode(r encoding.Reader) er...

FILE: protocol/net/packet/play/updateEntityRotation.go
  constant PacketIdUpdateEntityRotation (line 8) | PacketIdUpdateEntityRotation = 0x30
  type UpdateEntityRotation (line 10) | type UpdateEntityRotation struct
    method ID (line 16) | func (UpdateEntityRotation) ID() int32 {
    method Encode (line 20) | func (s *UpdateEntityRotation) Encode(w encoding.Writer) error {
    method Decode (line 33) | func (s *UpdateEntityRotation) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/updateRecipeBook.go
  constant UpdateRecipeBookActionInit (line 8) | UpdateRecipeBookActionInit = iota
  constant UpdateRecipeBookActionAdd (line 9) | UpdateRecipeBookActionAdd
  constant UpdateRecipeBookActionRemove (line 10) | UpdateRecipeBookActionRemove
  constant PacketIdUpdateRecipeBook (line 14) | PacketIdUpdateRecipeBook = 0x41
  type UpdateRecipeBook (line 16) | type UpdateRecipeBook struct
    method ID (line 35) | func (UpdateRecipeBook) ID() int32 {
    method Encode (line 39) | func (u *UpdateRecipeBook) Encode(w encoding.Writer) error {
    method Decode (line 93) | func (*UpdateRecipeBook) Decode(encoding.Reader) error {

FILE: protocol/net/packet/play/updateSectionBlocks.go
  constant PacketIdUpdateSectionBlocks (line 8) | PacketIdUpdateSectionBlocks = 0x49
  type UpdateSectionBlocks (line 10) | type UpdateSectionBlocks struct
    method ID (line 17) | func (UpdateSectionBlocks) ID() int32 {
    method Encode (line 21) | func (b *UpdateSectionBlocks) Encode(w encoding.Writer) error {
    method Decode (line 37) | func (b *UpdateSectionBlocks) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/updateTags.go
  constant PacketIdUpdateTags (line 8) | PacketIdUpdateTags = 0x78
  type UpdateTags (line 10) | type UpdateTags struct
    method ID (line 14) | func (UpdateTags) ID() int32 {
    method Encode (line 18) | func (u *UpdateTags) Encode(w encoding.Writer) error {
    method Decode (line 47) | func (u *UpdateTags) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/updateTime.go
  constant PacketIdUpdateTime (line 8) | PacketIdUpdateTime = 0x64
  type UpdateTime (line 10) | type UpdateTime struct
    method ID (line 15) | func (UpdateTime) ID() int32 {
    method Encode (line 19) | func (u *UpdateTime) Encode(w encoding.Writer) error {
    method Decode (line 26) | func (u *UpdateTime) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/play/useItemOn.go
  constant PacketIdUseItemOn (line 8) | PacketIdUseItemOn = 0x38
  type UseItemOn (line 10) | type UseItemOn struct
    method ID (line 28) | func (UseItemOn) ID() int32 {
    method Encode (line 32) | func (u *UseItemOn) Encode(w encoding.Writer) error {
    method Decode (line 57) | func (u *UseItemOn) Decode(r encoding.Reader) error {
  constant FaceBottom (line 20) | FaceBottom = iota
  constant FaceTop (line 21) | FaceTop
  constant FaceNorth (line 22) | FaceNorth
  constant FaceSouth (line 23) | FaceSouth
  constant FaceWest (line 24) | FaceWest
  constant FaceEast (line 25) | FaceEast

FILE: protocol/net/packet/status/ping.go
  type Ping (line 7) | type Ping struct
    method ID (line 11) | func (Ping) ID() int32 {
    method Encode (line 15) | func (p Ping) Encode(w encoding.Writer) error {
    method Decode (line 19) | func (p *Ping) Decode(r encoding.Reader) error {

FILE: protocol/net/packet/status/status.go
  type StatusVersion (line 11) | type StatusVersion struct
  type StatusSample (line 15) | type StatusSample struct
  type StatusPlayers (line 19) | type StatusPlayers struct
  type Favicon (line 25) | type Favicon
    method MarshalJSON (line 27) | func (f Favicon) MarshalJSON() ([]byte, error) {
  constant dimgpnb64txt (line 39) | dimgpnb64txt = `"data:image/png;base64,`
  type StatusResponseData (line 41) | type StatusResponseData struct
  type StatusResponse (line 49) | type StatusResponse struct
    method ID (line 53) | func (StatusResponse) ID() int32 {
    method Encode (line 57) | func (s StatusResponse) Encode(w encoding.Writer) error {
    method Decode (line 65) | func (s *StatusResponse) Decode(r encoding.Reader) error {
  type StatusRequest (line 73) | type StatusRequest struct
    method ID (line 76) | func (StatusRequest) ID() int32 {
    method Encode (line 80) | func (StatusRequest) Encode(encoding.Writer) error {
    method Decode (line 84) | func (StatusRequest) Decode(r encoding.Reader) error {

FILE: protocol/net/registry/registry.go
  type ChatType (line 9) | type ChatType struct
  type Dimension1 (line 25) | type Dimension1 struct
  type Dimension (line 46) | type Dimension struct

FILE: protocol/net/slot/comp_dec.go
  function decode (line 8) | func decode(r encoding.Reader, comp *Component) error {

FILE: protocol/net/slot/slot.go
  type Slot (line 9) | type Slot struct
    method Is (line 16) | func (s Slot) Is(s1 Slot) bool {
    method Encode (line 27) | func (s *Slot) Encode(w encoding.Writer) error {
    method Decode (line 51) | func (s *Slot) Decode(r encoding.Reader) error {
  type Component (line 22) | type Component struct
  constant CustomData (line 92) | CustomData = iota
  constant MaxStackSize (line 93) | MaxStackSize
  constant MaxDamage (line 94) | MaxDamage
  constant Damage (line 95) | Damage
  constant Unbreakable (line 96) | Unbreakable
  constant CustomName (line 97) | CustomName
  constant ItemName (line 98) | ItemName
  constant Lore (line 99) | Lore
  constant Rarity (line 100) | Rarity
  constant Enchantments (line 101) | Enchantments
  constant CanPlaceOn (line 102) | CanPlaceOn
  constant CanBreak (line 103) | CanBreak
  constant AttributeModifiers (line 104) | AttributeModifiers
  constant CustomModelData (line 105) | CustomModelData
  constant HideAdditionalTooltip (line 106) | HideAdditionalTooltip
  constant HideTooltip (line 107) | HideTooltip
  constant RepairCost (line 108) | RepairCost
  constant CreativeSlotLock (line 109) | CreativeSlotLock
  constant EnchantmentGlintOverride (line 110) | EnchantmentGlintOverride
  constant IntangibleProjectile (line 111) | IntangibleProjectile
  constant Food (line 112) | Food
  constant FireResistant (line 113) | FireResistant
  constant Tool (line 114) | Tool
  constant StoredEnchantments (line 115) | StoredEnchantments
  constant DyedColor (line 116) | DyedColor
  constant MapColor (line 117) | MapColor
  constant MapId (line 118) | MapId
  constant MapDecorations (line 119) | MapDecorations
  constant MapPostProcessing (line 120) | MapPostProcessing
  constant CharjedProjectiles (line 121) | CharjedProjectiles
  constant BundleContents (line 122) | BundleContents
  constant PotionContents (line 123) | PotionContents
  constant SuspicousStewEffects (line 124) | SuspicousStewEffects
  constant WritableBookContent (line 125) | WritableBookContent
  constant WrittenBookContent (line 126) | WrittenBookContent
  constant Trim (line 127) | Trim
  constant DebugStickState (line 128) | DebugStickState
  constant EntityData (line 129) | EntityData
  constant BucketEntityData (line 130) | BucketEntityData
  constant BlockEntityData (line 131) | BlockEntityData
  constant Instrument (line 132) | Instrument
  constant OminousBottleAmplifier (line 133) | OminousBottleAmplifier
  constant JukeboxPlayable (line 134) | JukeboxPlayable
  constant Recipes (line 135) | Recipes
  constant LodestoneTracker (line 136) | LodestoneTracker
  constant FireworkExplosion (line 137) | FireworkExplosion
  constant Fireworks (line 138) | Fireworks
  constant Profile (line 139) | Profile
  constant NoteBlockSound (line 140) | NoteBlockSound
  constant BannerPatterns (line 141) | BannerPatterns
  constant BaseColor (line 142) | BaseColor
  constant PotDecorations (line 143) | PotDecorations
  constant Container (line 144) | Container
  constant BlockState (line 145) | BlockState
  constant Bees (line 146) | Bees
  constant Lock (line 147) | Lock
  constant ContainerLoot (line 148) | ContainerLoot
  constant Common (line 154) | Common = iota
  constant Uncommon (line 156) | Uncommon
  constant Rare (line 158) | Rare
  constant Epic (line 160) | Epic

FILE: protocol/text/builder.go
  function New (line 3) | func New() TextComponent {
  method WithColor (line 7) | func (t TextComponent) WithColor(c string) TextComponent {
  method WithText (line 12) | func (t TextComponent) WithText(c string) TextComponent {
  method WithItalic (line 17) | func (t TextComponent) WithItalic() TextComponent {
  method WithUnderline (line 22) | func (t TextComponent) WithUnderline() TextComponent {
  method WithStrikethrough (line 27) | func (t TextComponent) WithStrikethrough() TextComponent {
  method WithObfuscation (line 32) | func (t TextComponent) WithObfuscation() TextComponent {
  function Color (line 37) | func Color(c string) TextComponent {
  function Text (line 41) | func Text(c string) TextComponent {
  function Italic (line 45) | func Italic() TextComponent {
  function Underline (line 49) | func Underline() TextComponent {
  function Strikethrough (line 53) | func Strikethrough() TextComponent {
  function Obfuscation (line 57) | func Obfuscation() TextComponent {

FILE: protocol/text/color.go
  constant Black (line 10) | Black       = "black"
  constant DarkBlue (line 11) | DarkBlue    = "dark_blue"
  constant DarkGreen (line 12) | DarkGreen   = "dark_green"
  constant DarkCyan (line 13) | DarkCyan    = "dark_aqua"
  constant DarkRed (line 14) | DarkRed     = "dark_red"
  constant Purple (line 15) | Purple      = "dark_purple"
  constant Gold (line 16) | Gold        = "gold"
  constant Gray (line 17) | Gray        = "gray"
  constant DarkGray (line 18) | DarkGray    = "dark_gray"
  constant Blue (line 19) | Blue        = "blue"
  constant BrightGreen (line 20) | BrightGreen = "green"
  constant Cyan (line 21) | Cyan        = "aqua"
  constant Red (line 22) | Red         = "red"
  constant Pink (line 23) | Pink        = "light_purple"
  constant Yellow (line 24) | Yellow      = "yellow"
  constant White (line 25) | White       = "white"
  function RGB (line 28) | func RGB(r, g, b uint8) string {
  function CustomColor (line 32) | func CustomColor(c color.Color) string {

FILE: protocol/text/text.go
  constant TypeText (line 7) | TypeText         = "text"
  constant TypeTranslatable (line 8) | TypeTranslatable = "translatable"
  constant TypeKeybind (line 9) | TypeKeybind      = "keybind"
  constant TypeScore (line 10) | TypeScore        = "score"
  constant TypeSelector (line 11) | TypeSelector     = "selector"
  constant TypeNBT (line 12) | TypeNBT          = "nbt"
  constant FontDefault (line 16) | FontDefault    = "minecraft:default"
  constant FontUniform (line 17) | FontUniform    = "minecraft:uniform"
  constant FontAlt (line 18) | FontAlt        = "minecraft:alt"
  constant FontIllageralt (line 19) | FontIllageralt = "minecraft:illageralt"
  constant ClickEventOpenURL (line 23) | ClickEventOpenURL         = "open_url"
  constant ClickEventRunCommand (line 24) | ClickEventRunCommand      = "run_command"
  constant ClickEventSuggestCommand (line 25) | ClickEventSuggestCommand  = "suggest_command"
  constant ClickEventChangePage (line 26) | ClickEventChangePage      = "change_page"
  constant ClickEventCopyToClipboard (line 27) | ClickEventCopyToClipboard = "copy_to_clipboard"
  constant HoverEventShowText (line 31) | HoverEventShowText   = "show_text"
  constant HoverEventShowItem (line 32) | HoverEventShowItem   = "show_item"
  constant HoverEventShowEntity (line 33) | HoverEventShowEntity = "show_entity"
  type ClickEvent (line 36) | type ClickEvent struct
  type HoverEventContents (line 41) | type HoverEventContents struct
  type HoverEvent (line 49) | type HoverEvent struct
  type TextComponent (line 54) | type TextComponent struct
  function Sprint (line 72) | func Sprint(a ...any) TextComponent {
  function Sprintf (line 76) | func Sprintf(format string, a ...any) TextComponent {
  function Unmarshalf (line 81) | func Unmarshalf(codeChar rune, format string, v ...any) TextComponent {
  function Unmarshal (line 86) | func Unmarshal(text string, codeChar rune) TextComponent {
  function Marshal (line 111) | func Marshal(component TextComponent, codeChar rune) string {
  function charColor (line 123) | func charColor(char rune) string {
  function colorChar (line 160) | func colorChar(color string, char string) string {
  function applyStyle (line 197) | func applyStyle(char rune, component *TextComponent) {
  function componentStyles (line 215) | func componentStyles(component TextComponent, text *string, codeChar run...

FILE: server/command/builder.go
  constant Bool (line 8) | Bool = iota
  constant Float (line 9) | Float
  constant Double (line 10) | Double
  constant Integer (line 11) | Integer
  constant Long (line 12) | Long
  constant String (line 13) | String
  constant Entity (line 15) | Entity
  constant GameProfile (line 16) | GameProfile
  constant BlockPos (line 17) | BlockPos
  constant ColumnPos (line 18) | ColumnPos
  constant Vec3 (line 19) | Vec3
  constant Vec2 (line 20) | Vec2
  constant BlockState (line 21) | BlockState
  constant BlockPredicate (line 22) | BlockPredicate
  constant ItemStack (line 23) | ItemStack
  constant ItemPredicate (line 24) | ItemPredicate
  constant Color (line 25) | Color
  constant Component (line 26) | Component
  constant Style (line 27) | Style
  constant Message (line 28) | Message
  constant NBT (line 29) | NBT
  constant NBTTag (line 30) | NBTTag
  constant NBTPath (line 31) | NBTPath
  constant Objective (line 32) | Objective
  constant ObjectiveCriteria (line 33) | ObjectiveCriteria
  constant Operation (line 34) | Operation
  constant Particle (line 35) | Particle
  constant Angle (line 36) | Angle
  constant Rotation (line 37) | Rotation
  constant ScoreboardSlot (line 38) | ScoreboardSlot
  constant ScoreHolder (line 39) | ScoreHolder
  constant Swizzle (line 40) | Swizzle
  constant Team (line 41) | Team
  constant ItemSlot (line 42) | ItemSlot
  constant ResourceLocation (line 43) | ResourceLocation
  constant Function (line 44) | Function
  constant EntityAnchor (line 45) | EntityAnchor
  constant IntRange (line 46) | IntRange
  constant FloatRange (line 47) | FloatRange
  constant Dimension (line 48) | Dimension
  constant Gamemode (line 49) | Gamemode
  constant Time (line 50) | Time
  constant ResourceOrTag (line 51) | ResourceOrTag
  constant ResourceOrTagKey (line 52) | ResourceOrTagKey
  constant Resource (line 53) | Resource
  constant ResourceKey (line 54) | ResourceKey
  constant TemplateMirror (line 55) | TemplateMirror
  constant TemplateRotation (line 56) | TemplateRotation
  constant Heightmap (line 57) | Heightmap
  constant UUID (line 58) | UUID
  constant StringSingleWord (line 62) | StringSingleWord = iota
  constant StringQuotablePhrase (line 63) | StringQuotablePhrase
  constant StringGreedyPhrase (line 64) | StringGreedyPhrase
  type Node (line 67) | type Node struct
    method Add (line 72) | func (n *Node) Add(nodes ...Node) {
  function NewNode (line 76) | func NewNode(n play.Node, children ...Node) Node {
  function NewLiteral (line 80) | func NewLiteral(name string, nodes ...Node) Node {
  function NewBoolArgument (line 90) | func NewBoolArgument(name string, nodes ...Node) Node {
  function NewIntegerArgument (line 101) | func NewIntegerArgument(name string, min, max *int32, nodes ...Node) Node {
  function NewStringArgument (line 126) | func NewStringArgument(name string, typ int, nodes ...Node) Node {
  function NewTimeArgument (line 138) | func NewTimeArgument(name string, min int32, nodes ...Node) Node {

FILE: server/command/command.go
  type Command (line 8) | type Command struct
  type Arguments (line 17) | type Arguments
    method At (line 19) | func (a Arguments) At(i int) string {
    method Fallback (line 26) | func (a Arguments) Fallback(i int, fb string) string {
  type CommandCallContext (line 33) | type CommandCallContext struct
    method Reply (line 41) | func (c CommandCallContext) Reply(msg text.TextComponent) error {

FILE: server/command/graph.go
  method Encode (line 5) | func (mgr *Manager) Encode() *play.Commands {
  function appendNode (line 56) | func appendNode(parentIndex int32, n Node, tgt *[]play.Node) {

FILE: server/command/manager.go
  type Manager (line 11) | type Manager struct
    method Register (line 27) | func (mgr *Manager) Register(cmds ...Command) {
    method Call (line 34) | func (mgr *Manager) Call(command string, caller Caller) {
    method findCommand (line 69) | func (mgr *Manager) findCommand(name string) *Command {
  type Caller (line 19) | type Caller interface
  function NewManager (line 23) | func NewManager(srv any, cmds ...Command) *Manager {

FILE: server/container/container.go
  type Container (line 12) | type Container
    method EncodeResize (line 15) | func (c Container) EncodeResize(size int) []slot.Slot {
    method Encode (line 31) | func (c Container) Encode() []slot.Slot {
    method Set (line 48) | func (c *Container) Set(item item.Item) {
    method SetAt (line 59) | func (c *Container) SetAt(item item.Item, slot item.DataSlot) {
    method Slot (line 65) | func (c Container) Slot(slot item.DataSlot) (item.Item, bool) {
    method Merge (line 74) | func (c *Container) Merge(slot item.DataSlot, carriedItem *item.Item) {

FILE: server/entity/entity.go
  function NewEntityId (line 18) | func NewEntityId() int32 {
  function New (line 22) | func New(uuid uuid.UUID, typ int32, metadata metadata.Metadata, attribut...
  function NewLiving (line 31) | func NewLiving(e *Entity) LivingEntity {
  type Entity (line 36) | type Entity struct
    method Attribute (line 54) | func (p *Entity) Attribute(id string) *Attribute {
    method Attributes (line 75) | func (p *Entity) Attributes() []Attribute {
    method SetAttribute (line 81) | func (p *Entity) SetAttribute(id string, base float64) {
    method Metadata (line 92) | func (p *Entity) Metadata() metadata.Metadata {
    method SetMetadata (line 98) | func (p *Entity) SetMetadata(md metadata.Metadata) {
    method MetadataIndex (line 104) | func (p *Entity) MetadataIndex(i byte) any {
    method SetMetadataIndex (line 110) | func (p *Entity) SetMetadataIndex(i byte, v any) {
    method SetMetadataIndexes (line 116) | func (p *Entity) SetMetadataIndexes(md metadata.Metadata) {
    method DimensionName (line 124) | func (p *Entity) DimensionName() string {
    method SetDimensionName (line 128) | func (p *Entity) SetDimensionName(v string) {
    method SetMotion (line 132) | func (p *Entity) SetMotion(x, y, z float64) {
    method SetPosition (line 138) | func (p *Entity) SetPosition(x, y, z float64) {
    method SetRotation (line 144) | func (p *Entity) SetRotation(yaw, pitch float32) {
    method SetOnGround (line 149) | func (p *Entity) SetOnGround(v bool) {
    method Position (line 153) | func (p *Entity) Position() (x, y, z float64) {
    method Motion (line 157) | func (p *Entity) Motion() (vx, vy, vz float64) {
    method Rotation (line 161) | func (p *Entity) Rotation() (yaw, pitch float32) {
    method OnGround (line 165) | func (p *Entity) OnGround() bool {
    method UUID (line 169) | func (p *Entity) UUID() uuid.UUID {
    method Type (line 173) | func (p *Entity) Type() int32 {
  type LivingEntity (line 177) | type LivingEntity struct
    method SetHealth (line 184) | func (l *LivingEntity) SetHealth(h float32) {
    method SetFood (line 188) | func (l *LivingEntity) SetFood(food int32, saturation, exhaustion floa...
    method Health (line 194) | func (l *LivingEntity) Health() float32 {
    method Food (line 198) | func (l *LivingEntity) Food() (food int32, saturation, exhaustion floa...
  type Attribute (line 202) | type Attribute struct

FILE: server/entity/levelEntity.go
  type LevelEntity (line 5) | type LevelEntity struct

FILE: server/player/chunks.go
  method Dimension (line 11) | func (p *Player) Dimension() *dimension.Dimension {
  method sendSpawnChunks (line 15) | func (p *Player) sendSpawnChunks() error {

FILE: server/player/conn.go
  function RegisterHandler (line 15) | func RegisterHandler(state, id int32, handler func(*Player, packet.Decod...
  method awaitPacket (line 22) | func (p *Player) awaitPacket(id int32) (packet.Decodeable, error) {
  function interfaceAssert (line 35) | func interfaceAssert[T any](v any) T {
  method keepAlive (line 39) | func (p *Player) keepAlive() error {
  method isConnectionDead (line 46) | func (p *Player) isConnectionDead() bool {
  method listenPackets (line 51) | func (p *Player) listenPackets() {
  method killConnection (line 111) | func (p *Player) killConnection(serverError bool, reason string) {

FILE: server/player/player.go
  type Player (line 22) | type Player struct
    method ViewDistance (line 84) | func (p *Player) ViewDistance() int32 {
    method writeOrKill (line 94) | func (p *Player) writeOrKill(pk packet.Encodeable) {
    method finishConfiguration (line 101) | func (p *Player) finishConfiguration() error {
    method startGame (line 141) | func (p *Player) startGame() error {
    method SynchronizePosition (line 193) | func (p *Player) SynchronizePosition(x, y, z float64, yaw, pitch float...
    method Login (line 206) | func (p *Player) Login() error {
    method SystemMessage (line 214) | func (p *Player) SystemMessage(msg text.TextComponent) error {
    method sendCommandGraph (line 219) | func (p *Player) sendCommandGraph() error {
  function int32toAtomic (line 52) | func int32toAtomic(i int32) atomic.Int32 {
  method New (line 57) | func (list *PlayerList) New(conn *net.Conn, en *state.PlayerEntity, dime...

FILE: server/player/playerlist.go
  function NewPlayerList (line 10) | func NewPlayerList(cap uintptr) PlayerList {
  type PlayerList (line 16) | type PlayerList struct
    method NumPlayers (line 20) | func (list *PlayerList) NumPlayers() int {
    method Player (line 24) | func (list *PlayerList) Player(uuid uuid.UUID) *Player {
    method PlayerByUsername (line 35) | func (list *PlayerList) PlayerByUsername(name string) *Player {
    method playerAtIndex (line 46) | func (list *PlayerList) playerAtIndex(index uintptr) *Player {
    method AddPlayer (line 50) | func (list *PlayerList) AddPlayer(player *Player) {
    method addPlayerToSlice (line 74) | func (list *PlayerList) addPlayerToSlice(player *Player) {

FILE: server/player/state/list/playerlist.go
  type WhitelistPlayer (line 5) | type WhitelistPlayer struct
  type OperatorPlayer (line 10) | type OperatorPlayer struct

FILE: server/player/state/playerEntity.go
  type PlayerEntity (line 14) | type PlayerEntity struct
    method Abilities (line 63) | func (p *PlayerEntity) Abilities() level.PlayerAbilities {
    method SetAbilities (line 67) | func (p *PlayerEntity) SetAbilities(abs level.PlayerAbilities) {
    method GameMode (line 71) | func (p *PlayerEntity) GameMode() level.GameMode {
    method SetGameMode (line 75) | func (p *PlayerEntity) SetGameMode(mode level.GameMode) {
    method Inventory (line 87) | func (p *PlayerEntity) Inventory() *container.Container {
    method SelectedItemSlot (line 92) | func (p *PlayerEntity) SelectedItemSlot() int32 {
    method SetSelectedItemSlot (line 104) | func (p *PlayerEntity) SetSelectedItemSlot(slot int32) {
    method sync (line 114) | func (p *PlayerEntity) sync() {
  method New (line 30) | func (mgr *PlayerEntityManager) New(data level.Player) *PlayerEntity {

FILE: server/player/state/playerEntityManager.go
  type PlayerEntityManager (line 11) | type PlayerEntityManager struct
    method lookup (line 16) | func (mgr *PlayerEntityManager) lookup(id uuid.UUID) (*PlayerEntity, b...
    method add (line 24) | func (mgr *PlayerEntityManager) add(p *PlayerEntity) {
    method SaveAll (line 31) | func (mgr *PlayerEntityManager) SaveAll() {
  function NewPlayerEntityManager (line 41) | func NewPlayerEntityManager() *PlayerEntityManager {

FILE: server/plugin.go
  type Plugin (line 11) | type Plugin struct
    method FS (line 21) | func (p Plugin) FS() fs.FS {
    method Dir (line 26) | func (p Plugin) Dir() string {
    method Server (line 30) | func (p Plugin) Server() *Server {
  method loadPlugins (line 34) | func (srv *Server) loadPlugins() {
  method loadPlugin (line 45) | func (srv *Server) loadPlugin(name string) {

FILE: server/registry/registry.go
  type Registry (line 7) | type Registry struct
    method Get (line 13) | func (r Registry) Get(n string) int32 {
    method Lookup (line 20) | func (r Registry) Lookup(n string) (int32, bool) {
    method NameOf (line 31) | func (r Registry) NameOf(id int32) (string, bool) {

FILE: server/server.go
  function New (line 31) | func New(cfg properties.ServerProperties, world *world.World) (*Server, ...
  type Server (line 90) | type Server struct
    method setOnConnectionIntercept (line 112) | func (srv *Server) setOnConnectionIntercept(i func(conn *net.Conn, sto...
    method Listener (line 116) | func (srv *Server) Listener() *net.Listener {
    method provideStatus (line 120) | func (srv *Server) provideStatus(*net.Conn) status.StatusResponseData {
    method SetStatusProvider (line 143) | func (srv *Server) SetStatusProvider(sp net.StatusProvider) {
    method Properties (line 147) | func (srv *Server) Properties() properties.ServerProperties {
    method Start (line 151) | func (srv *Server) Start(ts time.Time) {
    method handleNewConnection (line 197) | func (srv *Server) handleNewConnection(conn *net.Conn) {
    method Stop (line 215) | func (srv *Server) Stop() {
    method formatTimestart (line 229) | func (srv *Server) formatTimestart() string {
    method createTicker (line 234) | func (srv *Server) createTicker() {

FILE: server/tick/tick.go
  function New (line 12) | func New(tps int /*b *session.Broadcast*/) *TickManager {
  type TickManager (line 21) | type TickManager struct
    method AddNew (line 30) | func (mgr *TickManager) AddNew(f func()) {
    method SetFrequency (line 39) | func (mgr *TickManager) SetFrequency(tps int) error {
    method Freeze (line 62) | func (mgr *TickManager) Freeze() {
    method Unfreeze (line 72) | func (mgr *TickManager) Unfreeze() {
    method Add (line 84) | func (mgr *TickManager) Add(ticker *time.Ticker) {
    method New (line 90) | func (mgr *TickManager) New() *time.Ticker {
    method Count (line 99) | func (mgr *TickManager) Count() int {
    method Remove (line 105) | func (mgr *TickManager) Remove(ticker *time.Ticker) (ok bool) {
    method Frequency (line 114) | func (mgr *TickManager) Frequency() time.Duration {

FILE: server/world/block/0block.go
  constant AxisX (line 24) | AxisX Axis = "x"
  constant AxisY (line 25) | AxisY Axis = "y"
  constant AxisZ (line 26) | AxisZ Axis = "z"
  constant DirectionNorth (line 32) | DirectionNorth Direction = "north"
  constant DirectionSouth (line 33) | DirectionSouth Direction = "south"
  constant DirectionWest (line 34) | DirectionWest  Direction = "west"
  constant DirectionEast (line 35) | DirectionEast  Direction = "east"
  function atoi (line 38) | func atoi(str string) int {
  type Usable (line 45) | type Usable interface
  type BlockEntityHaver (line 51) | type BlockEntityHaver interface
  type BlockCustomPlaceSoundHaver (line 57) | type BlockCustomPlaceSoundHaver interface
  type BreakInfo (line 62) | type BreakInfo struct
  function Is (line 75) | func Is(block Block, tagName string) bool {
  type Breakable (line 82) | type Breakable interface
  function init (line 86) | func init() {

FILE: server/world/block/acaciaButton.go
  type AcaciaButton (line 7) | type AcaciaButton struct
    method Encode (line 13) | func (b AcaciaButton) Encode() (string, BlockProperties) {
    method New (line 21) | func (b AcaciaButton) New(props BlockProperties) Block {

FILE: server/world/block/acaciaDoor.go
  type AcaciaDoor (line 7) | type AcaciaDoor struct
    method Encode (line 15) | func (b AcaciaDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b AcaciaDoor) New(props BlockProperties) Block {

FILE: server/world/block/acaciaFence.go
  type AcaciaFence (line 7) | type AcaciaFence struct
    method Encode (line 15) | func (b AcaciaFence) Encode() (string, BlockProperties) {
    method New (line 25) | func (b AcaciaFence) New(props BlockProperties) Block {

FILE: server/world/block/acaciaFenceGate.go
  type AcaciaFenceGate (line 7) | type AcaciaFenceGate struct
    method Encode (line 14) | func (b AcaciaFenceGate) Encode() (string, BlockProperties) {
    method New (line 23) | func (b AcaciaFenceGate) New(props BlockProperties) Block {

FILE: server/world/block/acaciaHangingSign.go
  type AcaciaHangingSign (line 7) | type AcaciaHangingSign struct
    method Encode (line 13) | func (b AcaciaHangingSign) Encode() (string, BlockProperties) {
    method New (line 21) | func (b AcaciaHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/acaciaLeaves.go
  type AcaciaLeaves (line 7) | type AcaciaLeaves struct
    method Encode (line 13) | func (b AcaciaLeaves) Encode() (string, BlockProperties) {
    method New (line 21) | func (b AcaciaLeaves) New(props BlockProperties) Block {

FILE: server/world/block/acaciaLog.go
  type AcaciaLog (line 3) | type AcaciaLog struct
    method Encode (line 7) | func (b AcaciaLog) Encode() (string, BlockProperties) {
    method New (line 13) | func (b AcaciaLog) New(props BlockProperties) Block {

FILE: server/world/block/acaciaPlanks.go
  type AcaciaPlanks (line 3) | type AcaciaPlanks struct
    method Encode (line 6) | func (b AcaciaPlanks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b AcaciaPlanks) New(props BlockProperties) Block {

FILE: server/world/block/acaciaPressurePlate.go
  type AcaciaPressurePlate (line 7) | type AcaciaPressurePlate struct
    method Encode (line 11) | func (b AcaciaPressurePlate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b AcaciaPressurePlate) New(props BlockProperties) Block {

FILE: server/world/block/acaciaSapling.go
  type AcaciaSapling (line 7) | type AcaciaSapling struct
    method Encode (line 11) | func (b AcaciaSapling) Encode() (string, BlockProperties) {
    method New (line 17) | func (b AcaciaSapling) New(props BlockProperties) Block {

FILE: server/world/block/acaciaSign.go
  type AcaciaSign (line 7) | type AcaciaSign struct
    method Encode (line 12) | func (b AcaciaSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b AcaciaSign) New(props BlockProperties) Block {

FILE: server/world/block/acaciaSlab.go
  type AcaciaSlab (line 7) | type AcaciaSlab struct
    method Encode (line 12) | func (b AcaciaSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b AcaciaSlab) New(props BlockProperties) Block {

FILE: server/world/block/acaciaStairs.go
  type AcaciaStairs (line 7) | type AcaciaStairs struct
    method Encode (line 14) | func (b AcaciaStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b AcaciaStairs) New(props BlockProperties) Block {

FILE: server/world/block/acaciaTrapdoor.go
  type AcaciaTrapdoor (line 7) | type AcaciaTrapdoor struct
    method Encode (line 15) | func (b AcaciaTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b AcaciaTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/acaciaWallHangingSign.go
  type AcaciaWallHangingSign (line 7) | type AcaciaWallHangingSign struct
    method Encode (line 12) | func (b AcaciaWallHangingSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b AcaciaWallHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/acaciaWallSign.go
  type AcaciaWallSign (line 7) | type AcaciaWallSign struct
    method Encode (line 12) | func (b AcaciaWallSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b AcaciaWallSign) New(props BlockProperties) Block {

FILE: server/world/block/acaciaWood.go
  type AcaciaWood (line 3) | type AcaciaWood struct
    method Encode (line 7) | func (b AcaciaWood) Encode() (string, BlockProperties) {
    method New (line 13) | func (b AcaciaWood) New(props BlockProperties) Block {

FILE: server/world/block/activatorRail.go
  type ActivatorRail (line 7) | type ActivatorRail struct
    method Encode (line 13) | func (b ActivatorRail) Encode() (string, BlockProperties) {
    method New (line 21) | func (b ActivatorRail) New(props BlockProperties) Block {

FILE: server/world/block/air.go
  type Air (line 3) | type Air struct
    method Encode (line 6) | func (b Air) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Air) New(props BlockProperties) Block {

FILE: server/world/block/allium.go
  type Allium (line 3) | type Allium struct
    method Encode (line 6) | func (b Allium) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Allium) New(props BlockProperties) Block {

FILE: server/world/block/amethystBlock.go
  type AmethystBlock (line 3) | type AmethystBlock struct
    method Encode (line 6) | func (b AmethystBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b AmethystBlock) New(props BlockProperties) Block {

FILE: server/world/block/amethystCluster.go
  type AmethystCluster (line 7) | type AmethystCluster struct
    method Encode (line 12) | func (b AmethystCluster) Encode() (string, BlockProperties) {
    method New (line 19) | func (b AmethystCluster) New(props BlockProperties) Block {

FILE: server/world/block/ancientDebris.go
  type AncientDebris (line 3) | type AncientDebris struct
    method Encode (line 6) | func (b AncientDebris) Encode() (string, BlockProperties) {
    method New (line 10) | func (b AncientDebris) New(props BlockProperties) Block {

FILE: server/world/block/andesite.go
  type Andesite (line 3) | type Andesite struct
    method Encode (line 6) | func (b Andesite) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Andesite) New(props BlockProperties) Block {

FILE: server/world/block/andesiteSlab.go
  type AndesiteSlab (line 7) | type AndesiteSlab struct
    method Encode (line 12) | func (b AndesiteSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b AndesiteSlab) New(props BlockProperties) Block {

FILE: server/world/block/andesiteStairs.go
  type AndesiteStairs (line 7) | type AndesiteStairs struct
    method Encode (line 14) | func (b AndesiteStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b AndesiteStairs) New(props BlockProperties) Block {

FILE: server/world/block/andesiteWall.go
  type AndesiteWall (line 7) | type AndesiteWall struct
    method Encode (line 16) | func (b AndesiteWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b AndesiteWall) New(props BlockProperties) Block {

FILE: server/world/block/anvil.go
  type Anvil (line 3) | type Anvil struct
    method Encode (line 7) | func (b Anvil) Encode() (string, BlockProperties) {
    method New (line 13) | func (b Anvil) New(props BlockProperties) Block {

FILE: server/world/block/attachedMelonStem.go
  type AttachedMelonStem (line 3) | type AttachedMelonStem struct
    method Encode (line 7) | func (b AttachedMelonStem) Encode() (string, BlockProperties) {
    method New (line 13) | func (b AttachedMelonStem) New(props BlockProperties) Block {

FILE: server/world/block/attachedPumpkinStem.go
  type AttachedPumpkinStem (line 3) | type AttachedPumpkinStem struct
    method Encode (line 7) | func (b AttachedPumpkinStem) Encode() (string, BlockProperties) {
    method New (line 13) | func (b AttachedPumpkinStem) New(props BlockProperties) Block {

FILE: server/world/block/azalea.go
  type Azalea (line 3) | type Azalea struct
    method Encode (line 6) | func (b Azalea) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Azalea) New(props BlockProperties) Block {

FILE: server/world/block/azaleaLeaves.go
  type AzaleaLeaves (line 7) | type AzaleaLeaves struct
    method Encode (line 13) | func (b AzaleaLeaves) Encode() (string, BlockProperties) {
    method New (line 21) | func (b AzaleaLeaves) New(props BlockProperties) Block {

FILE: server/world/block/azureBluet.go
  type AzureBluet (line 3) | type AzureBluet struct
    method Encode (line 6) | func (b AzureBluet) Encode() (string, BlockProperties) {
    method New (line 10) | func (b AzureBluet) New(props BlockProperties) Block {

FILE: server/world/block/bamboo.go
  type Bamboo (line 7) | type Bamboo struct
    method Encode (line 13) | func (b Bamboo) Encode() (string, BlockProperties) {
    method New (line 21) | func (b Bamboo) New(props BlockProperties) Block {

FILE: server/world/block/bambooBlock.go
  type BambooBlock (line 3) | type BambooBlock struct
    method Encode (line 7) | func (b BambooBlock) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BambooBlock) New(props BlockProperties) Block {

FILE: server/world/block/bambooButton.go
  type BambooButton (line 7) | type BambooButton struct
    method Encode (line 13) | func (b BambooButton) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BambooButton) New(props BlockProperties) Block {

FILE: server/world/block/bambooDoor.go
  type BambooDoor (line 7) | type BambooDoor struct
    method Encode (line 15) | func (b BambooDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BambooDoor) New(props BlockProperties) Block {

FILE: server/world/block/bambooFence.go
  type BambooFence (line 7) | type BambooFence struct
    method Encode (line 15) | func (b BambooFence) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BambooFence) New(props BlockProperties) Block {

FILE: server/world/block/bambooFenceGate.go
  type BambooFenceGate (line 7) | type BambooFenceGate struct
    method Encode (line 14) | func (b BambooFenceGate) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BambooFenceGate) New(props BlockProperties) Block {

FILE: server/world/block/bambooHangingSign.go
  type BambooHangingSign (line 7) | type BambooHangingSign struct
    method Encode (line 13) | func (b BambooHangingSign) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BambooHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/bambooMosaic.go
  type BambooMosaic (line 3) | type BambooMosaic struct
    method Encode (line 6) | func (b BambooMosaic) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BambooMosaic) New(props BlockProperties) Block {

FILE: server/world/block/bambooMosaicSlab.go
  type BambooMosaicSlab (line 7) | type BambooMosaicSlab struct
    method Encode (line 12) | func (b BambooMosaicSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BambooMosaicSlab) New(props BlockProperties) Block {

FILE: server/world/block/bambooMosaicStairs.go
  type BambooMosaicStairs (line 7) | type BambooMosaicStairs struct
    method Encode (line 14) | func (b BambooMosaicStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BambooMosaicStairs) New(props BlockProperties) Block {

FILE: server/world/block/bambooPlanks.go
  type BambooPlanks (line 3) | type BambooPlanks struct
    method Encode (line 6) | func (b BambooPlanks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BambooPlanks) New(props BlockProperties) Block {

FILE: server/world/block/bambooPressurePlate.go
  type BambooPressurePlate (line 7) | type BambooPressurePlate struct
    method Encode (line 11) | func (b BambooPressurePlate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BambooPressurePlate) New(props BlockProperties) Block {

FILE: server/world/block/bambooSapling.go
  type BambooSapling (line 3) | type BambooSapling struct
    method Encode (line 6) | func (b BambooSapling) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BambooSapling) New(props BlockProperties) Block {

FILE: server/world/block/bambooSign.go
  type BambooSign (line 7) | type BambooSign struct
    method Encode (line 12) | func (b BambooSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BambooSign) New(props BlockProperties) Block {

FILE: server/world/block/bambooSlab.go
  type BambooSlab (line 7) | type BambooSlab struct
    method Encode (line 12) | func (b BambooSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BambooSlab) New(props BlockProperties) Block {

FILE: server/world/block/bambooStairs.go
  type BambooStairs (line 7) | type BambooStairs struct
    method Encode (line 14) | func (b BambooStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BambooStairs) New(props BlockProperties) Block {

FILE: server/world/block/bambooTrapdoor.go
  type BambooTrapdoor (line 7) | type BambooTrapdoor struct
    method Encode (line 15) | func (b BambooTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BambooTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/bambooWallHangingSign.go
  type BambooWallHangingSign (line 7) | type BambooWallHangingSign struct
    method Encode (line 12) | func (b BambooWallHangingSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BambooWallHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/bambooWallSign.go
  type BambooWallSign (line 7) | type BambooWallSign struct
    method Encode (line 12) | func (b BambooWallSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BambooWallSign) New(props BlockProperties) Block {

FILE: server/world/block/barrel.go
  type Barrel (line 9) | type Barrel struct
    method Encode (line 14) | func (b Barrel) Encode() (string, BlockProperties) {
    method New (line 21) | func (b Barrel) New(props BlockProperties) Block {
    method BlockEntity (line 28) | func (b Barrel) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/barrier.go
  type Barrier (line 7) | type Barrier struct
    method Encode (line 11) | func (b Barrier) Encode() (string, BlockProperties) {
    method New (line 17) | func (b Barrier) New(props BlockProperties) Block {

FILE: server/world/block/basalt.go
  type Basalt (line 3) | type Basalt struct
    method Encode (line 7) | func (b Basalt) Encode() (string, BlockProperties) {
    method New (line 13) | func (b Basalt) New(props BlockProperties) Block {

FILE: server/world/block/beacon.go
  type Beacon (line 8) | type Beacon struct
    method Encode (line 11) | func (b Beacon) Encode() (string, BlockProperties) {
    method New (line 15) | func (b Beacon) New(props BlockProperties) Block {
    method BlockEntity (line 19) | func (b Beacon) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/bedrock.go
  type Bedrock (line 3) | type Bedrock struct
    method Encode (line 6) | func (b Bedrock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Bedrock) New(props BlockProperties) Block {

FILE: server/world/block/beeNest.go
  type BeeNest (line 7) | type BeeNest struct
    method Encode (line 12) | func (b BeeNest) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BeeNest) New(props BlockProperties) Block {

FILE: server/world/block/beehive.go
  type Beehive (line 9) | type Beehive struct
    method Encode (line 14) | func (b Beehive) Encode() (string, BlockProperties) {
    method New (line 21) | func (b Beehive) New(props BlockProperties) Block {
    method BlockEntity (line 28) | func (b Beehive) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/beetroots.go
  type Beetroots (line 7) | type Beetroots struct
    method Encode (line 11) | func (b Beetroots) Encode() (string, BlockProperties) {
    method New (line 17) | func (b Beetroots) New(props BlockProperties) Block {

FILE: server/world/block/bell.go
  type Bell (line 9) | type Bell struct
    method Encode (line 15) | func (b Bell) Encode() (string, BlockProperties) {
    method New (line 23) | func (b Bell) New(props BlockProperties) Block {
    method BlockEntity (line 31) | func (b Bell) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/bigDripleaf.go
  type BigDripleaf (line 7) | type BigDripleaf struct
    method Encode (line 13) | func (b BigDripleaf) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BigDripleaf) New(props BlockProperties) Block {

FILE: server/world/block/bigDripleafStem.go
  type BigDripleafStem (line 7) | type BigDripleafStem struct
    method Encode (line 12) | func (b BigDripleafStem) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BigDripleafStem) New(props BlockProperties) Block {

FILE: server/world/block/birchButton.go
  type BirchButton (line 7) | type BirchButton struct
    method Encode (line 13) | func (b BirchButton) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BirchButton) New(props BlockProperties) Block {

FILE: server/world/block/birchDoor.go
  type BirchDoor (line 7) | type BirchDoor struct
    method Encode (line 15) | func (b BirchDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BirchDoor) New(props BlockProperties) Block {

FILE: server/world/block/birchFence.go
  type BirchFence (line 7) | type BirchFence struct
    method Encode (line 15) | func (b BirchFence) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BirchFence) New(props BlockProperties) Block {

FILE: server/world/block/birchFenceGate.go
  type BirchFenceGate (line 7) | type BirchFenceGate struct
    method Encode (line 14) | func (b BirchFenceGate) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BirchFenceGate) New(props BlockProperties) Block {

FILE: server/world/block/birchHangingSign.go
  type BirchHangingSign (line 7) | type BirchHangingSign struct
    method Encode (line 13) | func (b BirchHangingSign) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BirchHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/birchLeaves.go
  type BirchLeaves (line 7) | type BirchLeaves struct
    method Encode (line 13) | func (b BirchLeaves) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BirchLeaves) New(props BlockProperties) Block {

FILE: server/world/block/birchLog.go
  type BirchLog (line 3) | type BirchLog struct
    method Encode (line 7) | func (b BirchLog) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BirchLog) New(props BlockProperties) Block {

FILE: server/world/block/birchPlanks.go
  type BirchPlanks (line 3) | type BirchPlanks struct
    method Encode (line 6) | func (b BirchPlanks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BirchPlanks) New(props BlockProperties) Block {

FILE: server/world/block/birchPressurePlate.go
  type BirchPressurePlate (line 7) | type BirchPressurePlate struct
    method Encode (line 11) | func (b BirchPressurePlate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BirchPressurePlate) New(props BlockProperties) Block {

FILE: server/world/block/birchSapling.go
  type BirchSapling (line 7) | type BirchSapling struct
    method Encode (line 11) | func (b BirchSapling) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BirchSapling) New(props BlockProperties) Block {

FILE: server/world/block/birchSign.go
  type BirchSign (line 7) | type BirchSign struct
    method Encode (line 12) | func (b BirchSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BirchSign) New(props BlockProperties) Block {

FILE: server/world/block/birchSlab.go
  type BirchSlab (line 7) | type BirchSlab struct
    method Encode (line 12) | func (b BirchSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BirchSlab) New(props BlockProperties) Block {

FILE: server/world/block/birchStairs.go
  type BirchStairs (line 7) | type BirchStairs struct
    method Encode (line 14) | func (b BirchStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BirchStairs) New(props BlockProperties) Block {

FILE: server/world/block/birchTrapdoor.go
  type BirchTrapdoor (line 7) | type BirchTrapdoor struct
    method Encode (line 15) | func (b BirchTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BirchTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/birchWallHangingSign.go
  type BirchWallHangingSign (line 7) | type BirchWallHangingSign struct
    method Encode (line 12) | func (b BirchWallHangingSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BirchWallHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/birchWallSign.go
  type BirchWallSign (line 7) | type BirchWallSign struct
    method Encode (line 12) | func (b BirchWallSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BirchWallSign) New(props BlockProperties) Block {

FILE: server/world/block/birchWood.go
  type BirchWood (line 3) | type BirchWood struct
    method Encode (line 7) | func (b BirchWood) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BirchWood) New(props BlockProperties) Block {

FILE: server/world/block/blackBanner.go
  type BlackBanner (line 7) | type BlackBanner struct
    method Encode (line 11) | func (b BlackBanner) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BlackBanner) New(props BlockProperties) Block {

FILE: server/world/block/blackBed.go
  type BlackBed (line 7) | type BlackBed struct
    method Encode (line 13) | func (b BlackBed) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BlackBed) New(props BlockProperties) Block {

FILE: server/world/block/blackCandle.go
  type BlackCandle (line 7) | type BlackCandle struct
    method Encode (line 13) | func (b BlackCandle) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BlackCandle) New(props BlockProperties) Block {

FILE: server/world/block/blackCandleCake.go
  type BlackCandleCake (line 7) | type BlackCandleCake struct
    method Encode (line 11) | func (b BlackCandleCake) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BlackCandleCake) New(props BlockProperties) Block {

FILE: server/world/block/blackCarpet.go
  type BlackCarpet (line 3) | type BlackCarpet struct
    method Encode (line 6) | func (b BlackCarpet) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlackCarpet) New(props BlockProperties) Block {

FILE: server/world/block/blackConcrete.go
  type BlackConcrete (line 3) | type BlackConcrete struct
    method Encode (line 6) | func (b BlackConcrete) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlackConcrete) New(props BlockProperties) Block {

FILE: server/world/block/blackConcretePowder.go
  type BlackConcretePowder (line 3) | type BlackConcretePowder struct
    method Encode (line 6) | func (b BlackConcretePowder) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlackConcretePowder) New(props BlockProperties) Block {

FILE: server/world/block/blackGlazedTerracotta.go
  type BlackGlazedTerracotta (line 3) | type BlackGlazedTerracotta struct
    method Encode (line 7) | func (b BlackGlazedTerracotta) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BlackGlazedTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/blackShulkerBox.go
  type BlackShulkerBox (line 3) | type BlackShulkerBox struct
    method Encode (line 7) | func (b BlackShulkerBox) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BlackShulkerBox) New(props BlockProperties) Block {

FILE: server/world/block/blackStainedGlass.go
  type BlackStainedGlass (line 3) | type BlackStainedGlass struct
    method Encode (line 6) | func (b BlackStainedGlass) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlackStainedGlass) New(props BlockProperties) Block {

FILE: server/world/block/blackStainedGlassPane.go
  type BlackStainedGlassPane (line 7) | type BlackStainedGlassPane struct
    method Encode (line 15) | func (b BlackStainedGlassPane) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BlackStainedGlassPane) New(props BlockProperties) Block {

FILE: server/world/block/blackTerracotta.go
  type BlackTerracotta (line 3) | type BlackTerracotta struct
    method Encode (line 6) | func (b BlackTerracotta) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlackTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/blackWallBanner.go
  type BlackWallBanner (line 3) | type BlackWallBanner struct
    method Encode (line 7) | func (b BlackWallBanner) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BlackWallBanner) New(props BlockProperties) Block {

FILE: server/world/block/blackWool.go
  type BlackWool (line 3) | type BlackWool struct
    method Encode (line 6) | func (b BlackWool) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlackWool) New(props BlockProperties) Block {

FILE: server/world/block/blackstone.go
  type Blackstone (line 3) | type Blackstone struct
    method Encode (line 6) | func (b Blackstone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Blackstone) New(props BlockProperties) Block {

FILE: server/world/block/blackstoneSlab.go
  type BlackstoneSlab (line 7) | type BlackstoneSlab struct
    method Encode (line 12) | func (b BlackstoneSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BlackstoneSlab) New(props BlockProperties) Block {

FILE: server/world/block/blackstoneStairs.go
  type BlackstoneStairs (line 7) | type BlackstoneStairs struct
    method Encode (line 14) | func (b BlackstoneStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BlackstoneStairs) New(props BlockProperties) Block {

FILE: server/world/block/blackstoneWall.go
  type BlackstoneWall (line 7) | type BlackstoneWall struct
    method Encode (line 16) | func (b BlackstoneWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b BlackstoneWall) New(props BlockProperties) Block {

FILE: server/world/block/blastFurnace.go
  type BlastFurnace (line 9) | type BlastFurnace struct
    method Encode (line 14) | func (b BlastFurnace) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BlastFurnace) New(props BlockProperties) Block {
    method BlockEntity (line 28) | func (b BlastFurnace) BlockEntity(pos pos.BlockPosition) chunk.BlockEn...

FILE: server/world/block/blueBanner.go
  type BlueBanner (line 7) | type BlueBanner struct
    method Encode (line 11) | func (b BlueBanner) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BlueBanner) New(props BlockProperties) Block {

FILE: server/world/block/blueBed.go
  type BlueBed (line 7) | type BlueBed struct
    method Encode (line 13) | func (b BlueBed) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BlueBed) New(props BlockProperties) Block {

FILE: server/world/block/blueCandle.go
  type BlueCandle (line 7) | type BlueCandle struct
    method Encode (line 13) | func (b BlueCandle) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BlueCandle) New(props BlockProperties) Block {

FILE: server/world/block/blueCandleCake.go
  type BlueCandleCake (line 7) | type BlueCandleCake struct
    method Encode (line 11) | func (b BlueCandleCake) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BlueCandleCake) New(props BlockProperties) Block {

FILE: server/world/block/blueCarpet.go
  type BlueCarpet (line 3) | type BlueCarpet struct
    method Encode (line 6) | func (b BlueCarpet) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueCarpet) New(props BlockProperties) Block {

FILE: server/world/block/blueConcrete.go
  type BlueConcrete (line 3) | type BlueConcrete struct
    method Encode (line 6) | func (b BlueConcrete) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueConcrete) New(props BlockProperties) Block {

FILE: server/world/block/blueConcretePowder.go
  type BlueConcretePowder (line 3) | type BlueConcretePowder struct
    method Encode (line 6) | func (b BlueConcretePowder) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueConcretePowder) New(props BlockProperties) Block {

FILE: server/world/block/blueGlazedTerracotta.go
  type BlueGlazedTerracotta (line 3) | type BlueGlazedTerracotta struct
    method Encode (line 7) | func (b BlueGlazedTerracotta) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BlueGlazedTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/blueIce.go
  type BlueIce (line 3) | type BlueIce struct
    method Encode (line 6) | func (b BlueIce) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueIce) New(props BlockProperties) Block {

FILE: server/world/block/blueOrchid.go
  type BlueOrchid (line 3) | type BlueOrchid struct
    method Encode (line 6) | func (b BlueOrchid) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueOrchid) New(props BlockProperties) Block {

FILE: server/world/block/blueShulkerBox.go
  type BlueShulkerBox (line 3) | type BlueShulkerBox struct
    method Encode (line 7) | func (b BlueShulkerBox) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BlueShulkerBox) New(props BlockProperties) Block {

FILE: server/world/block/blueStainedGlass.go
  type BlueStainedGlass (line 3) | type BlueStainedGlass struct
    method Encode (line 6) | func (b BlueStainedGlass) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueStainedGlass) New(props BlockProperties) Block {

FILE: server/world/block/blueStainedGlassPane.go
  type BlueStainedGlassPane (line 7) | type BlueStainedGlassPane struct
    method Encode (line 15) | func (b BlueStainedGlassPane) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BlueStainedGlassPane) New(props BlockProperties) Block {

FILE: server/world/block/blueTerracotta.go
  type BlueTerracotta (line 3) | type BlueTerracotta struct
    method Encode (line 6) | func (b BlueTerracotta) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/blueWallBanner.go
  type BlueWallBanner (line 3) | type BlueWallBanner struct
    method Encode (line 7) | func (b BlueWallBanner) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BlueWallBanner) New(props BlockProperties) Block {

FILE: server/world/block/blueWool.go
  type BlueWool (line 3) | type BlueWool struct
    method Encode (line 6) | func (b BlueWool) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BlueWool) New(props BlockProperties) Block {

FILE: server/world/block/boneBlock.go
  type BoneBlock (line 3) | type BoneBlock struct
    method Encode (line 7) | func (b BoneBlock) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BoneBlock) New(props BlockProperties) Block {

FILE: server/world/block/bookshelf.go
  type Bookshelf (line 3) | type Bookshelf struct
    method Encode (line 6) | func (b Bookshelf) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Bookshelf) New(props BlockProperties) Block {

FILE: server/world/block/brainCoral.go
  type BrainCoral (line 7) | type BrainCoral struct
    method Encode (line 11) | func (b BrainCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BrainCoral) New(props BlockProperties) Block {

FILE: server/world/block/brainCoralBlock.go
  type BrainCoralBlock (line 3) | type BrainCoralBlock struct
    method Encode (line 6) | func (b BrainCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrainCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/brainCoralFan.go
  type BrainCoralFan (line 7) | type BrainCoralFan struct
    method Encode (line 11) | func (b BrainCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BrainCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/brainCoralWallFan.go
  type BrainCoralWallFan (line 7) | type BrainCoralWallFan struct
    method Encode (line 12) | func (b BrainCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BrainCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/brewingStand.go
  type BrewingStand (line 9) | type BrewingStand struct
    method Encode (line 15) | func (b BrewingStand) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BrewingStand) New(props BlockProperties) Block {
    method BlockEntity (line 31) | func (b BrewingStand) BlockEntity(pos pos.BlockPosition) chunk.BlockEn...

FILE: server/world/block/brickSlab.go
  type BrickSlab (line 7) | type BrickSlab struct
    method Encode (line 12) | func (b BrickSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BrickSlab) New(props BlockProperties) Block {

FILE: server/world/block/brickStairs.go
  type BrickStairs (line 7) | type BrickStairs struct
    method Encode (line 14) | func (b BrickStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b BrickStairs) New(props BlockProperties) Block {

FILE: server/world/block/brickWall.go
  type BrickWall (line 7) | type BrickWall struct
    method Encode (line 16) | func (b BrickWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b BrickWall) New(props BlockProperties) Block {

FILE: server/world/block/bricks.go
  type Bricks (line 3) | type Bricks struct
    method Encode (line 6) | func (b Bricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Bricks) New(props BlockProperties) Block {

FILE: server/world/block/brownBanner.go
  type BrownBanner (line 7) | type BrownBanner struct
    method Encode (line 11) | func (b BrownBanner) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BrownBanner) New(props BlockProperties) Block {

FILE: server/world/block/brownBed.go
  type BrownBed (line 7) | type BrownBed struct
    method Encode (line 13) | func (b BrownBed) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BrownBed) New(props BlockProperties) Block {

FILE: server/world/block/brownCandle.go
  type BrownCandle (line 7) | type BrownCandle struct
    method Encode (line 13) | func (b BrownCandle) Encode() (string, BlockProperties) {
    method New (line 21) | func (b BrownCandle) New(props BlockProperties) Block {

FILE: server/world/block/brownCandleCake.go
  type BrownCandleCake (line 7) | type BrownCandleCake struct
    method Encode (line 11) | func (b BrownCandleCake) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BrownCandleCake) New(props BlockProperties) Block {

FILE: server/world/block/brownCarpet.go
  type BrownCarpet (line 3) | type BrownCarpet struct
    method Encode (line 6) | func (b BrownCarpet) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownCarpet) New(props BlockProperties) Block {

FILE: server/world/block/brownConcrete.go
  type BrownConcrete (line 3) | type BrownConcrete struct
    method Encode (line 6) | func (b BrownConcrete) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownConcrete) New(props BlockProperties) Block {

FILE: server/world/block/brownConcretePowder.go
  type BrownConcretePowder (line 3) | type BrownConcretePowder struct
    method Encode (line 6) | func (b BrownConcretePowder) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownConcretePowder) New(props BlockProperties) Block {

FILE: server/world/block/brownGlazedTerracotta.go
  type BrownGlazedTerracotta (line 3) | type BrownGlazedTerracotta struct
    method Encode (line 7) | func (b BrownGlazedTerracotta) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BrownGlazedTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/brownMushroom.go
  type BrownMushroom (line 3) | type BrownMushroom struct
    method Encode (line 6) | func (b BrownMushroom) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownMushroom) New(props BlockProperties) Block {

FILE: server/world/block/brownMushroomBlock.go
  type BrownMushroomBlock (line 7) | type BrownMushroomBlock struct
    method Encode (line 16) | func (b BrownMushroomBlock) Encode() (string, BlockProperties) {
    method New (line 27) | func (b BrownMushroomBlock) New(props BlockProperties) Block {

FILE: server/world/block/brownShulkerBox.go
  type BrownShulkerBox (line 3) | type BrownShulkerBox struct
    method Encode (line 7) | func (b BrownShulkerBox) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BrownShulkerBox) New(props BlockProperties) Block {

FILE: server/world/block/brownStainedGlass.go
  type BrownStainedGlass (line 3) | type BrownStainedGlass struct
    method Encode (line 6) | func (b BrownStainedGlass) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownStainedGlass) New(props BlockProperties) Block {

FILE: server/world/block/brownStainedGlassPane.go
  type BrownStainedGlassPane (line 7) | type BrownStainedGlassPane struct
    method Encode (line 15) | func (b BrownStainedGlassPane) Encode() (string, BlockProperties) {
    method New (line 25) | func (b BrownStainedGlassPane) New(props BlockProperties) Block {

FILE: server/world/block/brownTerracotta.go
  type BrownTerracotta (line 3) | type BrownTerracotta struct
    method Encode (line 6) | func (b BrownTerracotta) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/brownWallBanner.go
  type BrownWallBanner (line 3) | type BrownWallBanner struct
    method Encode (line 7) | func (b BrownWallBanner) Encode() (string, BlockProperties) {
    method New (line 13) | func (b BrownWallBanner) New(props BlockProperties) Block {

FILE: server/world/block/brownWool.go
  type BrownWool (line 3) | type BrownWool struct
    method Encode (line 6) | func (b BrownWool) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BrownWool) New(props BlockProperties) Block {

FILE: server/world/block/bubbleColumn.go
  type BubbleColumn (line 7) | type BubbleColumn struct
    method Encode (line 11) | func (b BubbleColumn) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BubbleColumn) New(props BlockProperties) Block {

FILE: server/world/block/bubbleCoral.go
  type BubbleCoral (line 7) | type BubbleCoral struct
    method Encode (line 11) | func (b BubbleCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BubbleCoral) New(props BlockProperties) Block {

FILE: server/world/block/bubbleCoralBlock.go
  type BubbleCoralBlock (line 3) | type BubbleCoralBlock struct
    method Encode (line 6) | func (b BubbleCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BubbleCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/bubbleCoralFan.go
  type BubbleCoralFan (line 7) | type BubbleCoralFan struct
    method Encode (line 11) | func (b BubbleCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b BubbleCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/bubbleCoralWallFan.go
  type BubbleCoralWallFan (line 7) | type BubbleCoralWallFan struct
    method Encode (line 12) | func (b BubbleCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b BubbleCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/buddingAmethyst.go
  type BuddingAmethyst (line 3) | type BuddingAmethyst struct
    method Encode (line 6) | func (b BuddingAmethyst) Encode() (string, BlockProperties) {
    method New (line 10) | func (b BuddingAmethyst) New(props BlockProperties) Block {

FILE: server/world/block/cactus.go
  type Cactus (line 7) | type Cactus struct
    method Encode (line 11) | func (b Cactus) Encode() (string, BlockProperties) {
    method New (line 17) | func (b Cactus) New(props BlockProperties) Block {

FILE: server/world/block/cake.go
  type Cake (line 7) | type Cake struct
    method Encode (line 11) | func (b Cake) Encode() (string, BlockProperties) {
    method New (line 17) | func (b Cake) New(props BlockProperties) Block {

FILE: server/world/block/calcite.go
  type Calcite (line 3) | type Calcite struct
    method Encode (line 6) | func (b Calcite) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Calcite) New(props BlockProperties) Block {

FILE: server/world/block/calibratedSculkSensor.go
  type CalibratedSculkSensor (line 9) | type CalibratedSculkSensor struct
    method Encode (line 16) | func (b CalibratedSculkSensor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CalibratedSculkSensor) New(props BlockProperties) Block {
    method BlockEntity (line 34) | func (b CalibratedSculkSensor) BlockEntity(pos pos.BlockPosition) chun...

FILE: server/world/block/campfire.go
  type Campfire (line 9) | type Campfire struct
    method Encode (line 16) | func (b Campfire) Encode() (string, BlockProperties) {
    method New (line 25) | func (b Campfire) New(props BlockProperties) Block {
    method BlockEntity (line 34) | func (b Campfire) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/candle.go
  type Candle (line 7) | type Candle struct
    method Encode (line 13) | func (b Candle) Encode() (string, BlockProperties) {
    method New (line 21) | func (b Candle) New(props BlockProperties) Block {

FILE: server/world/block/candleCake.go
  type CandleCake (line 7) | type CandleCake struct
    method Encode (line 11) | func (b CandleCake) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CandleCake) New(props BlockProperties) Block {

FILE: server/world/block/carrots.go
  type Carrots (line 7) | type Carrots struct
    method Encode (line 11) | func (b Carrots) Encode() (string, BlockProperties) {
    method New (line 17) | func (b Carrots) New(props BlockProperties) Block {

FILE: server/world/block/cartographyTable.go
  type CartographyTable (line 3) | type CartographyTable struct
    method Encode (line 6) | func (b CartographyTable) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CartographyTable) New(props BlockProperties) Block {

FILE: server/world/block/carvedPumpkin.go
  type CarvedPumpkin (line 3) | type CarvedPumpkin struct
    method Encode (line 7) | func (b CarvedPumpkin) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CarvedPumpkin) New(props BlockProperties) Block {

FILE: server/world/block/cauldron.go
  type Cauldron (line 3) | type Cauldron struct
    method Encode (line 6) | func (b Cauldron) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Cauldron) New(props BlockProperties) Block {

FILE: server/world/block/caveAir.go
  type CaveAir (line 3) | type CaveAir struct
    method Encode (line 6) | func (b CaveAir) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CaveAir) New(props BlockProperties) Block {

FILE: server/world/block/caveVines.go
  type CaveVines (line 7) | type CaveVines struct
    method Encode (line 12) | func (b CaveVines) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CaveVines) New(props BlockProperties) Block {

FILE: server/world/block/caveVinesPlant.go
  type CaveVinesPlant (line 7) | type CaveVinesPlant struct
    method Encode (line 11) | func (b CaveVinesPlant) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CaveVinesPlant) New(props BlockProperties) Block {

FILE: server/world/block/chain.go
  type Chain (line 7) | type Chain struct
    method Encode (line 12) | func (b Chain) Encode() (string, BlockProperties) {
    method New (line 19) | func (b Chain) New(props BlockProperties) Block {

FILE: server/world/block/chainCommandBlock.go
  type ChainCommandBlock (line 7) | type ChainCommandBlock struct
    method Encode (line 12) | func (b ChainCommandBlock) Encode() (string, BlockProperties) {
    method New (line 19) | func (b ChainCommandBlock) New(props BlockProperties) Block {

FILE: server/world/block/cherryButton.go
  type CherryButton (line 7) | type CherryButton struct
    method Encode (line 13) | func (b CherryButton) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CherryButton) New(props BlockProperties) Block {

FILE: server/world/block/cherryDoor.go
  type CherryDoor (line 7) | type CherryDoor struct
    method Encode (line 15) | func (b CherryDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CherryDoor) New(props BlockProperties) Block {

FILE: server/world/block/cherryFence.go
  type CherryFence (line 7) | type CherryFence struct
    method Encode (line 15) | func (b CherryFence) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CherryFence) New(props BlockProperties) Block {

FILE: server/world/block/cherryFenceGate.go
  type CherryFenceGate (line 7) | type CherryFenceGate struct
    method Encode (line 14) | func (b CherryFenceGate) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CherryFenceGate) New(props BlockProperties) Block {

FILE: server/world/block/cherryHangingSign.go
  type CherryHangingSign (line 7) | type CherryHangingSign struct
    method Encode (line 13) | func (b CherryHangingSign) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CherryHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/cherryLeaves.go
  type CherryLeaves (line 7) | type CherryLeaves struct
    method Encode (line 13) | func (b CherryLeaves) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CherryLeaves) New(props BlockProperties) Block {

FILE: server/world/block/cherryLog.go
  type CherryLog (line 3) | type CherryLog struct
    method Encode (line 7) | func (b CherryLog) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CherryLog) New(props BlockProperties) Block {

FILE: server/world/block/cherryPlanks.go
  type CherryPlanks (line 3) | type CherryPlanks struct
    method Encode (line 6) | func (b CherryPlanks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CherryPlanks) New(props BlockProperties) Block {

FILE: server/world/block/cherryPressurePlate.go
  type CherryPressurePlate (line 7) | type CherryPressurePlate struct
    method Encode (line 11) | func (b CherryPressurePlate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CherryPressurePlate) New(props BlockProperties) Block {

FILE: server/world/block/cherrySapling.go
  type CherrySapling (line 7) | type CherrySapling struct
    method Encode (line 11) | func (b CherrySapling) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CherrySapling) New(props BlockProperties) Block {

FILE: server/world/block/cherrySign.go
  type CherrySign (line 7) | type CherrySign struct
    method Encode (line 12) | func (b CherrySign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CherrySign) New(props BlockProperties) Block {

FILE: server/world/block/cherrySlab.go
  type CherrySlab (line 7) | type CherrySlab struct
    method Encode (line 12) | func (b CherrySlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CherrySlab) New(props BlockProperties) Block {

FILE: server/world/block/cherryStairs.go
  type CherryStairs (line 7) | type CherryStairs struct
    method Encode (line 14) | func (b CherryStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CherryStairs) New(props BlockProperties) Block {

FILE: server/world/block/cherryTrapdoor.go
  type CherryTrapdoor (line 7) | type CherryTrapdoor struct
    method Encode (line 15) | func (b CherryTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CherryTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/cherryWallHangingSign.go
  type CherryWallHangingSign (line 7) | type CherryWallHangingSign struct
    method Encode (line 12) | func (b CherryWallHangingSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CherryWallHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/cherryWallSign.go
  type CherryWallSign (line 7) | type CherryWallSign struct
    method Encode (line 12) | func (b CherryWallSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CherryWallSign) New(props BlockProperties) Block {

FILE: server/world/block/cherryWood.go
  type CherryWood (line 3) | type CherryWood struct
    method Encode (line 7) | func (b CherryWood) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CherryWood) New(props BlockProperties) Block {

FILE: server/world/block/chest.go
  type Chest (line 11) | type Chest struct
    method Encode (line 17) | func (g Chest) Encode() (string, BlockProperties) {
    method New (line 25) | func (g Chest) New(props BlockProperties) Block {
    method BlockEntity (line 36) | func (g Chest) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/chippedAnvil.go
  type ChippedAnvil (line 3) | type ChippedAnvil struct
    method Encode (line 7) | func (b ChippedAnvil) Encode() (string, BlockProperties) {
    method New (line 13) | func (b ChippedAnvil) New(props BlockProperties) Block {

FILE: server/world/block/chiseledBookshelf.go
  type ChiseledBookshelf (line 9) | type ChiseledBookshelf struct
    method Encode (line 19) | func (b ChiseledBookshelf) Encode() (string, BlockProperties) {
    method New (line 31) | func (b ChiseledBookshelf) New(props BlockProperties) Block {
    method BlockEntity (line 43) | func (b ChiseledBookshelf) BlockEntity(pos pos.BlockPosition) chunk.Bl...

FILE: server/world/block/chiseledCopper.go
  type ChiseledCopper (line 3) | type ChiseledCopper struct
    method Encode (line 6) | func (b ChiseledCopper) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledCopper) New(props BlockProperties) Block {

FILE: server/world/block/chiseledDeepslate.go
  type ChiseledDeepslate (line 3) | type ChiseledDeepslate struct
    method Encode (line 6) | func (b ChiseledDeepslate) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledDeepslate) New(props BlockProperties) Block {

FILE: server/world/block/chiseledNetherBricks.go
  type ChiseledNetherBricks (line 3) | type ChiseledNetherBricks struct
    method Encode (line 6) | func (b ChiseledNetherBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledNetherBricks) New(props BlockProperties) Block {

FILE: server/world/block/chiseledPolishedBlackstone.go
  type ChiseledPolishedBlackstone (line 3) | type ChiseledPolishedBlackstone struct
    method Encode (line 6) | func (b ChiseledPolishedBlackstone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledPolishedBlackstone) New(props BlockProperties) Block {

FILE: server/world/block/chiseledQuartzBlock.go
  type ChiseledQuartzBlock (line 3) | type ChiseledQuartzBlock struct
    method Encode (line 6) | func (b ChiseledQuartzBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledQuartzBlock) New(props BlockProperties) Block {

FILE: server/world/block/chiseledRedSandstone.go
  type ChiseledRedSandstone (line 3) | type ChiseledRedSandstone struct
    method Encode (line 6) | func (b ChiseledRedSandstone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledRedSandstone) New(props BlockProperties) Block {

FILE: server/world/block/chiseledSandstone.go
  type ChiseledSandstone (line 3) | type ChiseledSandstone struct
    method Encode (line 6) | func (b ChiseledSandstone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledSandstone) New(props BlockProperties) Block {

FILE: server/world/block/chiseledStoneBricks.go
  type ChiseledStoneBricks (line 3) | type ChiseledStoneBricks struct
    method Encode (line 6) | func (b ChiseledStoneBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledStoneBricks) New(props BlockProperties) Block {

FILE: server/world/block/chiseledTuff.go
  type ChiseledTuff (line 3) | type ChiseledTuff struct
    method Encode (line 6) | func (b ChiseledTuff) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledTuff) New(props BlockProperties) Block {

FILE: server/world/block/chiseledTuffBricks.go
  type ChiseledTuffBricks (line 3) | type ChiseledTuffBricks struct
    method Encode (line 6) | func (b ChiseledTuffBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b ChiseledTuffBricks) New(props BlockProperties) Block {

FILE: server/world/block/chorusFlower.go
  type ChorusFlower (line 7) | type ChorusFlower struct
    method Encode (line 11) | func (b ChorusFlower) Encode() (string, BlockProperties) {
    method New (line 17) | func (b ChorusFlower) New(props BlockProperties) Block {

FILE: server/world/block/chorusPlant.go
  type ChorusPlant (line 7) | type ChorusPlant struct
    method Encode (line 16) | func (b ChorusPlant) Encode() (string, BlockProperties) {
    method New (line 27) | func (b ChorusPlant) New(props BlockProperties) Block {

FILE: server/world/block/clay.go
  type Clay (line 3) | type Clay struct
    method Encode (line 6) | func (b Clay) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Clay) New(props BlockProperties) Block {

FILE: server/world/block/coalBlock.go
  type CoalBlock (line 3) | type CoalBlock struct
    method Encode (line 6) | func (b CoalBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CoalBlock) New(props BlockProperties) Block {

FILE: server/world/block/coalOre.go
  type CoalOre (line 3) | type CoalOre struct
    method Encode (line 6) | func (b CoalOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CoalOre) New(props BlockProperties) Block {

FILE: server/world/block/coarseDirt.go
  type CoarseDirt (line 3) | type CoarseDirt struct
    method Encode (line 6) | func (b CoarseDirt) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CoarseDirt) New(props BlockProperties) Block {

FILE: server/world/block/cobbledDeepslate.go
  type CobbledDeepslate (line 3) | type CobbledDeepslate struct
    method Encode (line 6) | func (b CobbledDeepslate) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CobbledDeepslate) New(props BlockProperties) Block {

FILE: server/world/block/cobbledDeepslateSlab.go
  type CobbledDeepslateSlab (line 7) | type CobbledDeepslateSlab struct
    method Encode (line 12) | func (b CobbledDeepslateSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CobbledDeepslateSlab) New(props BlockProperties) Block {

FILE: server/world/block/cobbledDeepslateStairs.go
  type CobbledDeepslateStairs (line 7) | type CobbledDeepslateStairs struct
    method Encode (line 14) | func (b CobbledDeepslateStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CobbledDeepslateStairs) New(props BlockProperties) Block {

FILE: server/world/block/cobbledDeepslateWall.go
  type CobbledDeepslateWall (line 7) | type CobbledDeepslateWall struct
    method Encode (line 16) | func (b CobbledDeepslateWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b CobbledDeepslateWall) New(props BlockProperties) Block {

FILE: server/world/block/cobblestone.go
  type Cobblestone (line 3) | type Cobblestone struct
    method Encode (line 6) | func (b Cobblestone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Cobblestone) New(props BlockProperties) Block {

FILE: server/world/block/cobblestoneSlab.go
  type CobblestoneSlab (line 7) | type CobblestoneSlab struct
    method Encode (line 12) | func (b CobblestoneSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CobblestoneSlab) New(props BlockProperties) Block {

FILE: server/world/block/cobblestoneStairs.go
  type CobblestoneStairs (line 7) | type CobblestoneStairs struct
    method Encode (line 14) | func (b CobblestoneStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CobblestoneStairs) New(props BlockProperties) Block {

FILE: server/world/block/cobblestoneWall.go
  type CobblestoneWall (line 7) | type CobblestoneWall struct
    method Encode (line 16) | func (b CobblestoneWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b CobblestoneWall) New(props BlockProperties) Block {

FILE: server/world/block/cobweb.go
  type Cobweb (line 3) | type Cobweb struct
    method Encode (line 6) | func (b Cobweb) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Cobweb) New(props BlockProperties) Block {

FILE: server/world/block/cocoa.go
  type Cocoa (line 7) | type Cocoa struct
    method Encode (line 12) | func (b Cocoa) Encode() (string, BlockProperties) {
    method New (line 19) | func (b Cocoa) New(props BlockProperties) Block {

FILE: server/world/block/commandBlock.go
  type CommandBlock (line 9) | type CommandBlock struct
    method Encode (line 14) | func (b CommandBlock) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CommandBlock) New(props BlockProperties) Block {
    method BlockEntity (line 28) | func (b CommandBlock) BlockEntity(pos pos.BlockPosition) chunk.BlockEn...

FILE: server/world/block/comparator.go
  type Comparator (line 9) | type Comparator struct
    method Encode (line 15) | func (b Comparator) Encode() (string, BlockProperties) {
    method New (line 23) | func (b Comparator) New(props BlockProperties) Block {
    method BlockEntity (line 31) | func (b Comparator) BlockEntity(pos pos.BlockPosition) chunk.BlockEnti...

FILE: server/world/block/composter.go
  type Composter (line 7) | type Composter struct
    method Encode (line 11) | func (b Composter) Encode() (string, BlockProperties) {
    method New (line 17) | func (b Composter) New(props BlockProperties) Block {

FILE: server/world/block/conduit.go
  type Conduit (line 9) | type Conduit struct
    method Encode (line 13) | func (b Conduit) Encode() (string, BlockProperties) {
    method New (line 19) | func (b Conduit) New(props BlockProperties) Block {
    method BlockEntity (line 25) | func (b Conduit) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/copperBlock.go
  type CopperBlock (line 3) | type CopperBlock struct
    method Encode (line 6) | func (b CopperBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CopperBlock) New(props BlockProperties) Block {

FILE: server/world/block/copperBulb.go
  type CopperBulb (line 7) | type CopperBulb struct
    method Encode (line 12) | func (b CopperBulb) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CopperBulb) New(props BlockProperties) Block {

FILE: server/world/block/copperDoor.go
  type CopperDoor (line 7) | type CopperDoor struct
    method Encode (line 15) | func (b CopperDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CopperDoor) New(props BlockProperties) Block {

FILE: server/world/block/copperGrate.go
  type CopperGrate (line 7) | type CopperGrate struct
    method Encode (line 11) | func (b CopperGrate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CopperGrate) New(props BlockProperties) Block {

FILE: server/world/block/copperOre.go
  type CopperOre (line 3) | type CopperOre struct
    method Encode (line 6) | func (b CopperOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CopperOre) New(props BlockProperties) Block {

FILE: server/world/block/copperTrapdoor.go
  type CopperTrapdoor (line 7) | type CopperTrapdoor struct
    method Encode (line 15) | func (b CopperTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CopperTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/cornflower.go
  type Cornflower (line 3) | type Cornflower struct
    method Encode (line 6) | func (b Cornflower) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Cornflower) New(props BlockProperties) Block {

FILE: server/world/block/crackedDeepslateBricks.go
  type CrackedDeepslateBricks (line 3) | type CrackedDeepslateBricks struct
    method Encode (line 6) | func (b CrackedDeepslateBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrackedDeepslateBricks) New(props BlockProperties) Block {

FILE: server/world/block/crackedDeepslateTiles.go
  type CrackedDeepslateTiles (line 3) | type CrackedDeepslateTiles struct
    method Encode (line 6) | func (b CrackedDeepslateTiles) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrackedDeepslateTiles) New(props BlockProperties) Block {

FILE: server/world/block/crackedNetherBricks.go
  type CrackedNetherBricks (line 3) | type CrackedNetherBricks struct
    method Encode (line 6) | func (b CrackedNetherBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrackedNetherBricks) New(props BlockProperties) Block {

FILE: server/world/block/crackedPolishedBlackstoneBricks.go
  type CrackedPolishedBlackstoneBricks (line 3) | type CrackedPolishedBlackstoneBricks struct
    method Encode (line 6) | func (b CrackedPolishedBlackstoneBricks) Encode() (string, BlockProper...
    method New (line 10) | func (b CrackedPolishedBlackstoneBricks) New(props BlockProperties) Bl...

FILE: server/world/block/crackedStoneBricks.go
  type CrackedStoneBricks (line 3) | type CrackedStoneBricks struct
    method Encode (line 6) | func (b CrackedStoneBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrackedStoneBricks) New(props BlockProperties) Block {

FILE: server/world/block/crafter.go
  type Crafter (line 9) | type Crafter struct
    method Encode (line 15) | func (b Crafter) Encode() (string, BlockProperties) {
    method New (line 23) | func (b Crafter) New(props BlockProperties) Block {
    method BlockEntity (line 31) | func (b Crafter) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/craftingTable.go
  type CraftingTable (line 3) | type CraftingTable struct
    method Encode (line 6) | func (b CraftingTable) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CraftingTable) New(props BlockProperties) Block {

FILE: server/world/block/creeperHead.go
  type CreeperHead (line 7) | type CreeperHead struct
    method Encode (line 12) | func (b CreeperHead) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CreeperHead) New(props BlockProperties) Block {

FILE: server/world/block/creeperWallHead.go
  type CreeperWallHead (line 7) | type CreeperWallHead struct
    method Encode (line 12) | func (b CreeperWallHead) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CreeperWallHead) New(props BlockProperties) Block {

FILE: server/world/block/crimsonButton.go
  type CrimsonButton (line 7) | type CrimsonButton struct
    method Encode (line 13) | func (b CrimsonButton) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CrimsonButton) New(props BlockProperties) Block {

FILE: server/world/block/crimsonDoor.go
  type CrimsonDoor (line 7) | type CrimsonDoor struct
    method Encode (line 15) | func (b CrimsonDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CrimsonDoor) New(props BlockProperties) Block {

FILE: server/world/block/crimsonFence.go
  type CrimsonFence (line 7) | type CrimsonFence struct
    method Encode (line 15) | func (b CrimsonFence) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CrimsonFence) New(props BlockProperties) Block {

FILE: server/world/block/crimsonFenceGate.go
  type CrimsonFenceGate (line 7) | type CrimsonFenceGate struct
    method Encode (line 14) | func (b CrimsonFenceGate) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CrimsonFenceGate) New(props BlockProperties) Block {

FILE: server/world/block/crimsonFungus.go
  type CrimsonFungus (line 3) | type CrimsonFungus struct
    method Encode (line 6) | func (b CrimsonFungus) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrimsonFungus) New(props BlockProperties) Block {

FILE: server/world/block/crimsonHangingSign.go
  type CrimsonHangingSign (line 7) | type CrimsonHangingSign struct
    method Encode (line 13) | func (b CrimsonHangingSign) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CrimsonHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/crimsonHyphae.go
  type CrimsonHyphae (line 3) | type CrimsonHyphae struct
    method Encode (line 7) | func (b CrimsonHyphae) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CrimsonHyphae) New(props BlockProperties) Block {

FILE: server/world/block/crimsonNylium.go
  type CrimsonNylium (line 3) | type CrimsonNylium struct
    method Encode (line 6) | func (b CrimsonNylium) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrimsonNylium) New(props BlockProperties) Block {

FILE: server/world/block/crimsonPlanks.go
  type CrimsonPlanks (line 3) | type CrimsonPlanks struct
    method Encode (line 6) | func (b CrimsonPlanks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrimsonPlanks) New(props BlockProperties) Block {

FILE: server/world/block/crimsonPressurePlate.go
  type CrimsonPressurePlate (line 7) | type CrimsonPressurePlate struct
    method Encode (line 11) | func (b CrimsonPressurePlate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CrimsonPressurePlate) New(props BlockProperties) Block {

FILE: server/world/block/crimsonRoots.go
  type CrimsonRoots (line 3) | type CrimsonRoots struct
    method Encode (line 6) | func (b CrimsonRoots) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CrimsonRoots) New(props BlockProperties) Block {

FILE: server/world/block/crimsonSign.go
  type CrimsonSign (line 7) | type CrimsonSign struct
    method Encode (line 12) | func (b CrimsonSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CrimsonSign) New(props BlockProperties) Block {

FILE: server/world/block/crimsonSlab.go
  type CrimsonSlab (line 7) | type CrimsonSlab struct
    method Encode (line 12) | func (b CrimsonSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CrimsonSlab) New(props BlockProperties) Block {

FILE: server/world/block/crimsonStairs.go
  type CrimsonStairs (line 7) | type CrimsonStairs struct
    method Encode (line 14) | func (b CrimsonStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CrimsonStairs) New(props BlockProperties) Block {

FILE: server/world/block/crimsonStem.go
  type CrimsonStem (line 3) | type CrimsonStem struct
    method Encode (line 7) | func (b CrimsonStem) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CrimsonStem) New(props BlockProperties) Block {

FILE: server/world/block/crimsonTrapdoor.go
  type CrimsonTrapdoor (line 7) | type CrimsonTrapdoor struct
    method Encode (line 15) | func (b CrimsonTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CrimsonTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/crimsonWallHangingSign.go
  type CrimsonWallHangingSign (line 7) | type CrimsonWallHangingSign struct
    method Encode (line 12) | func (b CrimsonWallHangingSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CrimsonWallHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/crimsonWallSign.go
  type CrimsonWallSign (line 7) | type CrimsonWallSign struct
    method Encode (line 12) | func (b CrimsonWallSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CrimsonWallSign) New(props BlockProperties) Block {

FILE: server/world/block/cryingObsidian.go
  type CryingObsidian (line 3) | type CryingObsidian struct
    method Encode (line 6) | func (b CryingObsidian) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CryingObsidian) New(props BlockProperties) Block {

FILE: server/world/block/cutCopper.go
  type CutCopper (line 3) | type CutCopper struct
    method Encode (line 6) | func (b CutCopper) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CutCopper) New(props BlockProperties) Block {

FILE: server/world/block/cutCopperSlab.go
  type CutCopperSlab (line 7) | type CutCopperSlab struct
    method Encode (line 12) | func (b CutCopperSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CutCopperSlab) New(props BlockProperties) Block {

FILE: server/world/block/cutCopperStairs.go
  type CutCopperStairs (line 7) | type CutCopperStairs struct
    method Encode (line 14) | func (b CutCopperStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b CutCopperStairs) New(props BlockProperties) Block {

FILE: server/world/block/cutRedSandstone.go
  type CutRedSandstone (line 3) | type CutRedSandstone struct
    method Encode (line 6) | func (b CutRedSandstone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CutRedSandstone) New(props BlockProperties) Block {

FILE: server/world/block/cutRedSandstoneSlab.go
  type CutRedSandstoneSlab (line 7) | type CutRedSandstoneSlab struct
    method Encode (line 12) | func (b CutRedSandstoneSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CutRedSandstoneSlab) New(props BlockProperties) Block {

FILE: server/world/block/cutSandstone.go
  type CutSandstone (line 3) | type CutSandstone struct
    method Encode (line 6) | func (b CutSandstone) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CutSandstone) New(props BlockProperties) Block {

FILE: server/world/block/cutSandstoneSlab.go
  type CutSandstoneSlab (line 7) | type CutSandstoneSlab struct
    method Encode (line 12) | func (b CutSandstoneSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b CutSandstoneSlab) New(props BlockProperties) Block {

FILE: server/world/block/cyanBanner.go
  type CyanBanner (line 7) | type CyanBanner struct
    method Encode (line 11) | func (b CyanBanner) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CyanBanner) New(props BlockProperties) Block {

FILE: server/world/block/cyanBed.go
  type CyanBed (line 7) | type CyanBed struct
    method Encode (line 13) | func (b CyanBed) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CyanBed) New(props BlockProperties) Block {

FILE: server/world/block/cyanCandle.go
  type CyanCandle (line 7) | type CyanCandle struct
    method Encode (line 13) | func (b CyanCandle) Encode() (string, BlockProperties) {
    method New (line 21) | func (b CyanCandle) New(props BlockProperties) Block {

FILE: server/world/block/cyanCandleCake.go
  type CyanCandleCake (line 7) | type CyanCandleCake struct
    method Encode (line 11) | func (b CyanCandleCake) Encode() (string, BlockProperties) {
    method New (line 17) | func (b CyanCandleCake) New(props BlockProperties) Block {

FILE: server/world/block/cyanCarpet.go
  type CyanCarpet (line 3) | type CyanCarpet struct
    method Encode (line 6) | func (b CyanCarpet) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CyanCarpet) New(props BlockProperties) Block {

FILE: server/world/block/cyanConcrete.go
  type CyanConcrete (line 3) | type CyanConcrete struct
    method Encode (line 6) | func (b CyanConcrete) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CyanConcrete) New(props BlockProperties) Block {

FILE: server/world/block/cyanConcretePowder.go
  type CyanConcretePowder (line 3) | type CyanConcretePowder struct
    method Encode (line 6) | func (b CyanConcretePowder) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CyanConcretePowder) New(props BlockProperties) Block {

FILE: server/world/block/cyanGlazedTerracotta.go
  type CyanGlazedTerracotta (line 3) | type CyanGlazedTerracotta struct
    method Encode (line 7) | func (b CyanGlazedTerracotta) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CyanGlazedTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/cyanShulkerBox.go
  type CyanShulkerBox (line 3) | type CyanShulkerBox struct
    method Encode (line 7) | func (b CyanShulkerBox) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CyanShulkerBox) New(props BlockProperties) Block {

FILE: server/world/block/cyanStainedGlass.go
  type CyanStainedGlass (line 3) | type CyanStainedGlass struct
    method Encode (line 6) | func (b CyanStainedGlass) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CyanStainedGlass) New(props BlockProperties) Block {

FILE: server/world/block/cyanStainedGlassPane.go
  type CyanStainedGlassPane (line 7) | type CyanStainedGlassPane struct
    method Encode (line 15) | func (b CyanStainedGlassPane) Encode() (string, BlockProperties) {
    method New (line 25) | func (b CyanStainedGlassPane) New(props BlockProperties) Block {

FILE: server/world/block/cyanTerracotta.go
  type CyanTerracotta (line 3) | type CyanTerracotta struct
    method Encode (line 6) | func (b CyanTerracotta) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CyanTerracotta) New(props BlockProperties) Block {

FILE: server/world/block/cyanWallBanner.go
  type CyanWallBanner (line 3) | type CyanWallBanner struct
    method Encode (line 7) | func (b CyanWallBanner) Encode() (string, BlockProperties) {
    method New (line 13) | func (b CyanWallBanner) New(props BlockProperties) Block {

FILE: server/world/block/cyanWool.go
  type CyanWool (line 3) | type CyanWool struct
    method Encode (line 6) | func (b CyanWool) Encode() (string, BlockProperties) {
    method New (line 10) | func (b CyanWool) New(props BlockProperties) Block {

FILE: server/world/block/damagedAnvil.go
  type DamagedAnvil (line 3) | type DamagedAnvil struct
    method Encode (line 7) | func (b DamagedAnvil) Encode() (string, BlockProperties) {
    method New (line 13) | func (b DamagedAnvil) New(props BlockProperties) Block {

FILE: server/world/block/dandelion.go
  type Dandelion (line 3) | type Dandelion struct
    method Encode (line 6) | func (b Dandelion) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Dandelion) New(props BlockProperties) Block {

FILE: server/world/block/darkOakButton.go
  type DarkOakButton (line 7) | type DarkOakButton struct
    method Encode (line 13) | func (b DarkOakButton) Encode() (string, BlockProperties) {
    method New (line 21) | func (b DarkOakButton) New(props BlockProperties) Block {

FILE: server/world/block/darkOakDoor.go
  type DarkOakDoor (line 7) | type DarkOakDoor struct
    method Encode (line 15) | func (b DarkOakDoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b DarkOakDoor) New(props BlockProperties) Block {

FILE: server/world/block/darkOakFence.go
  type DarkOakFence (line 7) | type DarkOakFence struct
    method Encode (line 15) | func (b DarkOakFence) Encode() (string, BlockProperties) {
    method New (line 25) | func (b DarkOakFence) New(props BlockProperties) Block {

FILE: server/world/block/darkOakFenceGate.go
  type DarkOakFenceGate (line 7) | type DarkOakFenceGate struct
    method Encode (line 14) | func (b DarkOakFenceGate) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DarkOakFenceGate) New(props BlockProperties) Block {

FILE: server/world/block/darkOakHangingSign.go
  type DarkOakHangingSign (line 7) | type DarkOakHangingSign struct
    method Encode (line 13) | func (b DarkOakHangingSign) Encode() (string, BlockProperties) {
    method New (line 21) | func (b DarkOakHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/darkOakLeaves.go
  type DarkOakLeaves (line 7) | type DarkOakLeaves struct
    method Encode (line 13) | func (b DarkOakLeaves) Encode() (string, BlockProperties) {
    method New (line 21) | func (b DarkOakLeaves) New(props BlockProperties) Block {

FILE: server/world/block/darkOakLog.go
  type DarkOakLog (line 3) | type DarkOakLog struct
    method Encode (line 7) | func (b DarkOakLog) Encode() (string, BlockProperties) {
    method New (line 13) | func (b DarkOakLog) New(props BlockProperties) Block {

FILE: server/world/block/darkOakPlanks.go
  type DarkOakPlanks (line 3) | type DarkOakPlanks struct
    method Encode (line 6) | func (b DarkOakPlanks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DarkOakPlanks) New(props BlockProperties) Block {

FILE: server/world/block/darkOakPressurePlate.go
  type DarkOakPressurePlate (line 7) | type DarkOakPressurePlate struct
    method Encode (line 11) | func (b DarkOakPressurePlate) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DarkOakPressurePlate) New(props BlockProperties) Block {

FILE: server/world/block/darkOakSapling.go
  type DarkOakSapling (line 7) | type DarkOakSapling struct
    method Encode (line 11) | func (b DarkOakSapling) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DarkOakSapling) New(props BlockProperties) Block {

FILE: server/world/block/darkOakSign.go
  type DarkOakSign (line 7) | type DarkOakSign struct
    method Encode (line 12) | func (b DarkOakSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DarkOakSign) New(props BlockProperties) Block {

FILE: server/world/block/darkOakSlab.go
  type DarkOakSlab (line 7) | type DarkOakSlab struct
    method Encode (line 12) | func (b DarkOakSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DarkOakSlab) New(props BlockProperties) Block {

FILE: server/world/block/darkOakStairs.go
  type DarkOakStairs (line 7) | type DarkOakStairs struct
    method Encode (line 14) | func (b DarkOakStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DarkOakStairs) New(props BlockProperties) Block {

FILE: server/world/block/darkOakTrapdoor.go
  type DarkOakTrapdoor (line 7) | type DarkOakTrapdoor struct
    method Encode (line 15) | func (b DarkOakTrapdoor) Encode() (string, BlockProperties) {
    method New (line 25) | func (b DarkOakTrapdoor) New(props BlockProperties) Block {

FILE: server/world/block/darkOakWallHangingSign.go
  type DarkOakWallHangingSign (line 7) | type DarkOakWallHangingSign struct
    method Encode (line 12) | func (b DarkOakWallHangingSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DarkOakWallHangingSign) New(props BlockProperties) Block {

FILE: server/world/block/darkOakWallSign.go
  type DarkOakWallSign (line 7) | type DarkOakWallSign struct
    method Encode (line 12) | func (b DarkOakWallSign) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DarkOakWallSign) New(props BlockProperties) Block {

FILE: server/world/block/darkOakWood.go
  type DarkOakWood (line 3) | type DarkOakWood struct
    method Encode (line 7) | func (b DarkOakWood) Encode() (string, BlockProperties) {
    method New (line 13) | func (b DarkOakWood) New(props BlockProperties) Block {

FILE: server/world/block/darkPrismarine.go
  type DarkPrismarine (line 3) | type DarkPrismarine struct
    method Encode (line 6) | func (b DarkPrismarine) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DarkPrismarine) New(props BlockProperties) Block {

FILE: server/world/block/darkPrismarineSlab.go
  type DarkPrismarineSlab (line 7) | type DarkPrismarineSlab struct
    method Encode (line 12) | func (b DarkPrismarineSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DarkPrismarineSlab) New(props BlockProperties) Block {

FILE: server/world/block/darkPrismarineStairs.go
  type DarkPrismarineStairs (line 7) | type DarkPrismarineStairs struct
    method Encode (line 14) | func (b DarkPrismarineStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DarkPrismarineStairs) New(props BlockProperties) Block {

FILE: server/world/block/daylightDetector.go
  type DaylightDetector (line 9) | type DaylightDetector struct
    method Encode (line 14) | func (b DaylightDetector) Encode() (string, BlockProperties) {
    method New (line 21) | func (b DaylightDetector) New(props BlockProperties) Block {
    method BlockEntity (line 28) | func (b DaylightDetector) BlockEntity(pos pos.BlockPosition) chunk.Blo...

FILE: server/world/block/deadBrainCoral.go
  type DeadBrainCoral (line 7) | type DeadBrainCoral struct
    method Encode (line 11) | func (b DeadBrainCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadBrainCoral) New(props BlockProperties) Block {

FILE: server/world/block/deadBrainCoralBlock.go
  type DeadBrainCoralBlock (line 3) | type DeadBrainCoralBlock struct
    method Encode (line 6) | func (b DeadBrainCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeadBrainCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/deadBrainCoralFan.go
  type DeadBrainCoralFan (line 7) | type DeadBrainCoralFan struct
    method Encode (line 11) | func (b DeadBrainCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadBrainCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/deadBrainCoralWallFan.go
  type DeadBrainCoralWallFan (line 7) | type DeadBrainCoralWallFan struct
    method Encode (line 12) | func (b DeadBrainCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeadBrainCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/deadBubbleCoral.go
  type DeadBubbleCoral (line 7) | type DeadBubbleCoral struct
    method Encode (line 11) | func (b DeadBubbleCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadBubbleCoral) New(props BlockProperties) Block {

FILE: server/world/block/deadBubbleCoralBlock.go
  type DeadBubbleCoralBlock (line 3) | type DeadBubbleCoralBlock struct
    method Encode (line 6) | func (b DeadBubbleCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeadBubbleCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/deadBubbleCoralFan.go
  type DeadBubbleCoralFan (line 7) | type DeadBubbleCoralFan struct
    method Encode (line 11) | func (b DeadBubbleCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadBubbleCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/deadBubbleCoralWallFan.go
  type DeadBubbleCoralWallFan (line 7) | type DeadBubbleCoralWallFan struct
    method Encode (line 12) | func (b DeadBubbleCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeadBubbleCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/deadBush.go
  type DeadBush (line 3) | type DeadBush struct
    method Encode (line 6) | func (b DeadBush) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeadBush) New(props BlockProperties) Block {

FILE: server/world/block/deadFireCoral.go
  type DeadFireCoral (line 7) | type DeadFireCoral struct
    method Encode (line 11) | func (b DeadFireCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadFireCoral) New(props BlockProperties) Block {

FILE: server/world/block/deadFireCoralBlock.go
  type DeadFireCoralBlock (line 3) | type DeadFireCoralBlock struct
    method Encode (line 6) | func (b DeadFireCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeadFireCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/deadFireCoralFan.go
  type DeadFireCoralFan (line 7) | type DeadFireCoralFan struct
    method Encode (line 11) | func (b DeadFireCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadFireCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/deadFireCoralWallFan.go
  type DeadFireCoralWallFan (line 7) | type DeadFireCoralWallFan struct
    method Encode (line 12) | func (b DeadFireCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeadFireCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/deadHornCoral.go
  type DeadHornCoral (line 7) | type DeadHornCoral struct
    method Encode (line 11) | func (b DeadHornCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadHornCoral) New(props BlockProperties) Block {

FILE: server/world/block/deadHornCoralBlock.go
  type DeadHornCoralBlock (line 3) | type DeadHornCoralBlock struct
    method Encode (line 6) | func (b DeadHornCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeadHornCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/deadHornCoralFan.go
  type DeadHornCoralFan (line 7) | type DeadHornCoralFan struct
    method Encode (line 11) | func (b DeadHornCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadHornCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/deadHornCoralWallFan.go
  type DeadHornCoralWallFan (line 7) | type DeadHornCoralWallFan struct
    method Encode (line 12) | func (b DeadHornCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeadHornCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/deadTubeCoral.go
  type DeadTubeCoral (line 7) | type DeadTubeCoral struct
    method Encode (line 11) | func (b DeadTubeCoral) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadTubeCoral) New(props BlockProperties) Block {

FILE: server/world/block/deadTubeCoralBlock.go
  type DeadTubeCoralBlock (line 3) | type DeadTubeCoralBlock struct
    method Encode (line 6) | func (b DeadTubeCoralBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeadTubeCoralBlock) New(props BlockProperties) Block {

FILE: server/world/block/deadTubeCoralFan.go
  type DeadTubeCoralFan (line 7) | type DeadTubeCoralFan struct
    method Encode (line 11) | func (b DeadTubeCoralFan) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeadTubeCoralFan) New(props BlockProperties) Block {

FILE: server/world/block/deadTubeCoralWallFan.go
  type DeadTubeCoralWallFan (line 7) | type DeadTubeCoralWallFan struct
    method Encode (line 12) | func (b DeadTubeCoralWallFan) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeadTubeCoralWallFan) New(props BlockProperties) Block {

FILE: server/world/block/decoratedPot.go
  type DecoratedPot (line 9) | type DecoratedPot struct
    method Encode (line 15) | func (b DecoratedPot) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DecoratedPot) New(props BlockProperties) Block {
    method BlockEntity (line 31) | func (b DecoratedPot) BlockEntity(pos pos.BlockPosition) chunk.BlockEn...

FILE: server/world/block/deepslate.go
  type Deepslate (line 3) | type Deepslate struct
    method Encode (line 7) | func (b Deepslate) Encode() (string, BlockProperties) {
    method New (line 13) | func (b Deepslate) New(props BlockProperties) Block {

FILE: server/world/block/deepslateBrickSlab.go
  type DeepslateBrickSlab (line 7) | type DeepslateBrickSlab struct
    method Encode (line 12) | func (b DeepslateBrickSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeepslateBrickSlab) New(props BlockProperties) Block {

FILE: server/world/block/deepslateBrickStairs.go
  type DeepslateBrickStairs (line 7) | type DeepslateBrickStairs struct
    method Encode (line 14) | func (b DeepslateBrickStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DeepslateBrickStairs) New(props BlockProperties) Block {

FILE: server/world/block/deepslateBrickWall.go
  type DeepslateBrickWall (line 7) | type DeepslateBrickWall struct
    method Encode (line 16) | func (b DeepslateBrickWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b DeepslateBrickWall) New(props BlockProperties) Block {

FILE: server/world/block/deepslateBricks.go
  type DeepslateBricks (line 3) | type DeepslateBricks struct
    method Encode (line 6) | func (b DeepslateBricks) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateBricks) New(props BlockProperties) Block {

FILE: server/world/block/deepslateCoalOre.go
  type DeepslateCoalOre (line 3) | type DeepslateCoalOre struct
    method Encode (line 6) | func (b DeepslateCoalOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateCoalOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateCopperOre.go
  type DeepslateCopperOre (line 3) | type DeepslateCopperOre struct
    method Encode (line 6) | func (b DeepslateCopperOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateCopperOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateDiamondOre.go
  type DeepslateDiamondOre (line 3) | type DeepslateDiamondOre struct
    method Encode (line 6) | func (b DeepslateDiamondOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateDiamondOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateEmeraldOre.go
  type DeepslateEmeraldOre (line 3) | type DeepslateEmeraldOre struct
    method Encode (line 6) | func (b DeepslateEmeraldOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateEmeraldOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateGoldOre.go
  type DeepslateGoldOre (line 3) | type DeepslateGoldOre struct
    method Encode (line 6) | func (b DeepslateGoldOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateGoldOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateIronOre.go
  type DeepslateIronOre (line 3) | type DeepslateIronOre struct
    method Encode (line 6) | func (b DeepslateIronOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateIronOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateLapisOre.go
  type DeepslateLapisOre (line 3) | type DeepslateLapisOre struct
    method Encode (line 6) | func (b DeepslateLapisOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateLapisOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateRedstoneOre.go
  type DeepslateRedstoneOre (line 7) | type DeepslateRedstoneOre struct
    method Encode (line 11) | func (b DeepslateRedstoneOre) Encode() (string, BlockProperties) {
    method New (line 17) | func (b DeepslateRedstoneOre) New(props BlockProperties) Block {

FILE: server/world/block/deepslateTileSlab.go
  type DeepslateTileSlab (line 7) | type DeepslateTileSlab struct
    method Encode (line 12) | func (b DeepslateTileSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DeepslateTileSlab) New(props BlockProperties) Block {

FILE: server/world/block/deepslateTileStairs.go
  type DeepslateTileStairs (line 7) | type DeepslateTileStairs struct
    method Encode (line 14) | func (b DeepslateTileStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DeepslateTileStairs) New(props BlockProperties) Block {

FILE: server/world/block/deepslateTileWall.go
  type DeepslateTileWall (line 7) | type DeepslateTileWall struct
    method Encode (line 16) | func (b DeepslateTileWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b DeepslateTileWall) New(props BlockProperties) Block {

FILE: server/world/block/deepslateTiles.go
  type DeepslateTiles (line 3) | type DeepslateTiles struct
    method Encode (line 6) | func (b DeepslateTiles) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DeepslateTiles) New(props BlockProperties) Block {

FILE: server/world/block/detectorRail.go
  type DetectorRail (line 7) | type DetectorRail struct
    method Encode (line 13) | func (b DetectorRail) Encode() (string, BlockProperties) {
    method New (line 21) | func (b DetectorRail) New(props BlockProperties) Block {

FILE: server/world/block/diamondBlock.go
  type DiamondBlock (line 3) | type DiamondBlock struct
    method Encode (line 6) | func (b DiamondBlock) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DiamondBlock) New(props BlockProperties) Block {

FILE: server/world/block/diamondOre.go
  type DiamondOre (line 3) | type DiamondOre struct
    method Encode (line 6) | func (b DiamondOre) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DiamondOre) New(props BlockProperties) Block {

FILE: server/world/block/diorite.go
  type Diorite (line 3) | type Diorite struct
    method Encode (line 6) | func (b Diorite) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Diorite) New(props BlockProperties) Block {

FILE: server/world/block/dioriteSlab.go
  type DioriteSlab (line 7) | type DioriteSlab struct
    method Encode (line 12) | func (b DioriteSlab) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DioriteSlab) New(props BlockProperties) Block {

FILE: server/world/block/dioriteStairs.go
  type DioriteStairs (line 7) | type DioriteStairs struct
    method Encode (line 14) | func (b DioriteStairs) Encode() (string, BlockProperties) {
    method New (line 23) | func (b DioriteStairs) New(props BlockProperties) Block {

FILE: server/world/block/dioriteWall.go
  type DioriteWall (line 7) | type DioriteWall struct
    method Encode (line 16) | func (b DioriteWall) Encode() (string, BlockProperties) {
    method New (line 27) | func (b DioriteWall) New(props BlockProperties) Block {

FILE: server/world/block/dirt.go
  type Dirt (line 3) | type Dirt struct
    method Encode (line 6) | func (b Dirt) Encode() (string, BlockProperties) {
    method New (line 10) | func (b Dirt) New(props BlockProperties) Block {

FILE: server/world/block/dirtPath.go
  type DirtPath (line 3) | type DirtPath struct
    method Encode (line 6) | func (b DirtPath) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DirtPath) New(props BlockProperties) Block {

FILE: server/world/block/dispenser.go
  type Dispenser (line 9) | type Dispenser struct
    method Encode (line 14) | func (b Dispenser) Encode() (string, BlockProperties) {
    method New (line 21) | func (b Dispenser) New(props BlockProperties) Block {
    method BlockEntity (line 28) | func (b Dispenser) BlockEntity(pos pos.BlockPosition) chunk.BlockEntity {

FILE: server/world/block/dragonEgg.go
  type DragonEgg (line 3) | type DragonEgg struct
    method Encode (line 6) | func (b DragonEgg) Encode() (string, BlockProperties) {
    method New (line 10) | func (b DragonEgg) New(props BlockProperties) Block {

FILE: server/world/block/dragonHead.go
  type DragonHead (line 7) | type DragonHead struct
    method Encode (line 12) | func (b DragonHead) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DragonHead) New(props BlockProperties) Block {

FILE: server/world/block/dragonWallHead.go
  type DragonWallHead (line 7) | type DragonWallHead struct
    method Encode (line 12) | func (b DragonWallHead) Encode() (string, BlockProperties) {
    method New (line 19) | func (b DragonWallHead) New(props BlockProperties) Block {

FILE: server/world/block/driedKelpBlock.go
  type DriedKelpBlock (line 3) | type DriedKelpBlock struct
    method Encode (line 6
Condensed preview — 1356 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,686K chars).
[
  {
    "path": ".github/workflows/go.yml",
    "chars": 1766,
    "preview": "name: Build Zeppelin\r\n\r\non:\r\n  push:\r\n  pull_request:\r\n  workflow_dispatch:\r\n  release:\r\n    types: [published]\r\n\r\njobs:"
  },
  {
    "path": "LICENSE",
    "chars": 11558,
    "preview": "                                 Apache License\r\n                           Version 2.0, January 2004\r\n                 "
  },
  {
    "path": "commands/commands.go",
    "chars": 149,
    "preview": "package commands\r\n\r\nimport \"github.com/zeppelinmc/zeppelin/server/command\"\r\n\r\nvar Commands = []command.Command{\r\n\tmem, d"
  },
  {
    "path": "commands/debug.go",
    "chars": 1760,
    "preview": "package commands\n\nimport (\n\t\"github.com/zeppelinmc/zeppelin/server/player\"\n\t\"math\"\n\n\t\"github.com/zeppelinmc/zeppelin/pro"
  },
  {
    "path": "commands/gc.go",
    "chars": 394,
    "preview": "package commands\r\n\r\nimport (\r\n\t\"runtime\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/text\"\r\n\t\"github.com/zeppelinmc/zep"
  },
  {
    "path": "commands/mem.go",
    "chars": 884,
    "preview": "package commands\r\n\r\nimport (\r\n\t\"fmt\"\r\n\t\"runtime\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/buffers\"\r\n\t\"github."
  },
  {
    "path": "commands/tick.go",
    "chars": 1000,
    "preview": "package commands\n\nimport (\n\t\"time\"\n\n\t\"github.com/zeppelinmc/zeppelin/protocol/text\"\n\t\"github.com/zeppelinmc/zeppelin/ser"
  },
  {
    "path": "commands/time.go",
    "chars": 659,
    "preview": "package commands\n\nimport (\n\t\"github.com/zeppelinmc/zeppelin/server/command\"\n)\n\nvar timecmd = command.Command{\n\tNode: com"
  },
  {
    "path": "go.mod",
    "chars": 728,
    "preview": "module github.com/zeppelinmc/zeppelin\n\ngo 1.23\n\nrequire (\n\tgithub.com/fatih/color v1.17.0\n\tgithub.com/google/uuid v1.6.0"
  },
  {
    "path": "go.sum",
    "chars": 33743,
    "preview": "cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1"
  },
  {
    "path": "main.go",
    "chars": 2657,
    "preview": "package main\n\nimport (\n\t_ \"embed\"\n\t\"github.com/zeppelinmc/zeppelin/properties\"\n\t\"math/rand\"\n\t\"os\"\n\t\"runtime\"\n\t\"runtime/d"
  },
  {
    "path": "properties/decode.go",
    "chars": 2766,
    "preview": "// Package properties provides parsing of .properties files\npackage properties\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\""
  },
  {
    "path": "properties/encode.go",
    "chars": 1787,
    "preview": "package properties\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Marshal encodes the properties file\nfunc"
  },
  {
    "path": "properties/properties.go",
    "chars": 4879,
    "preview": "// Package properties provides encoding and decoding of .properties files\n\npackage properties\n\ntype formatter string\n\nfu"
  },
  {
    "path": "protocol/nbt/decoder.go",
    "chars": 28089,
    "preview": "package nbt\r\n\r\nimport (\r\n\t\"bytes\"\r\n\t\"fmt\"\r\n\t\"io\"\r\n\t\"math\"\r\n\t\"reflect\"\r\n\t\"strings\"\r\n\t\"sync\"\r\n\t\"unsafe\"\r\n)\r\n\r\nvar valueMap"
  },
  {
    "path": "protocol/nbt/encoder.go",
    "chars": 16228,
    "preview": "package nbt\r\n\r\nimport (\r\n\t\"encoding/binary\"\r\n\t\"fmt\"\r\n\t\"io\"\r\n\t\"math\"\r\n\t\"reflect\"\r\n\t\"strings\"\r\n\t\"unsafe\"\r\n)\r\n\r\ntype Encode"
  },
  {
    "path": "protocol/nbt/qnbt/abi.go",
    "chars": 3196,
    "preview": "package qnbt\r\n\r\nimport (\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/oq-x/unsafe2\"\r\n)\r\n\r\ntype name struct {\r\n\tBytes *byte\r\n}\r\n\r\nfunc (n n"
  },
  {
    "path": "protocol/nbt/qnbt/buffer.go",
    "chars": 1466,
    "preview": "package qnbt\r\n\r\nimport (\r\n\t\"io\"\r\n\t\"unsafe\"\r\n)\r\n\r\ntype bufferedReader struct {\r\n\tsrc io.Reader\r\n\tbuf []byte\r\n\r\n\tr, w int\r"
  },
  {
    "path": "protocol/nbt/qnbt/decode.go",
    "chars": 5128,
    "preview": "// deprecated: :(\r\npackage qnbt\r\n\r\nimport (\r\n\t\"errors\"\r\n\t\"fmt\"\r\n\t\"io\"\r\n\t\"sync\"\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/oq-x/unsafe2\"\r"
  },
  {
    "path": "protocol/nbt/qnbt/list.go",
    "chars": 5248,
    "preview": "package qnbt\r\n\r\nimport (\r\n\t\"fmt\"\r\n\t\"strconv\"\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/oq-x/unsafe2\"\r\n)\r\n\r\nfunc (d *Decoder) decodeList"
  },
  {
    "path": "protocol/nbt/qnbt/malloc.go",
    "chars": 191,
    "preview": "package qnbt\r\n\r\nimport (\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/oq-x/unsafe2\"\r\n)\r\n\r\n//go:linkname mallocgc runtime.mallocgc\r\nfunc ma"
  },
  {
    "path": "protocol/nbt/qnbt/map.go",
    "chars": 523,
    "preview": "package qnbt\r\n\r\nimport \"fmt\"\r\n\r\nfunc (d *Decoder) decodeMapString(m map[string]string) error {\r\n\tvar name string\r\n\tfor {"
  },
  {
    "path": "protocol/nbt/qnbt/primitive.go",
    "chars": 5441,
    "preview": "package qnbt\r\n\r\nimport (\r\n\t\"encoding/binary\"\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/nbt/qnbt/native\"\r\n)"
  },
  {
    "path": "protocol/nbt/qnbt/qnbt.go",
    "chars": 235,
    "preview": "// qNBT is a very efficient NBT decoder!\r\n// Caveats: does not work with []any, map[string]any or maps in general (excep"
  },
  {
    "path": "protocol/nbt/qnbt/struct.go",
    "chars": 8834,
    "preview": "package qnbt\r\n\r\nimport (\r\n\t\"fmt\"\r\n\t\"strings\"\r\n\t\"sync\"\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/oq-x/unsafe2\"\r\n)\r\n\r\nvar structs = sync."
  },
  {
    "path": "protocol/nbt/staticReader.go",
    "chars": 8196,
    "preview": "package nbt\r\n\r\nimport (\r\n\t\"fmt\"\r\n\t\"io\"\r\n\t\"unsafe\"\r\n)\r\n\r\n/*\r\nReader is an NBT decoder that uses no reflection. it should "
  },
  {
    "path": "protocol/net/authentication.go",
    "chars": 1803,
    "preview": "package net\n\nimport (\n\t\"crypto/sha1\"\n\t\"crypto/x509\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\t\"uns"
  },
  {
    "path": "protocol/net/cfb8/cfb8.go",
    "chars": 1508,
    "preview": "package cfb8\r\n\r\nimport \"crypto/cipher\"\r\n\r\n// CFB stream with 8 bit segment size\r\n// See http://csrc.nist.gov/publication"
  },
  {
    "path": "protocol/net/config.go",
    "chars": 1090,
    "preview": "package net\n\nimport (\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"net\"\n\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet/status\"\n"
  },
  {
    "path": "protocol/net/conn.go",
    "chars": 13768,
    "preview": "package net\n\nimport (\n\t\"bytes\"\n\t\"crypto/md5\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"unicode/utf"
  },
  {
    "path": "protocol/net/encryption.go",
    "chars": 1542,
    "preview": "package net\n\nimport (\n\t\"crypto/aes\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\n\t\"github.com/zeppelinmc/zeppelin"
  },
  {
    "path": "protocol/net/io/buffers/buffers.go",
    "chars": 244,
    "preview": "package buffers\r\n\r\nimport (\r\n\t\"bytes\"\r\n\t\"sync\"\r\n)\r\n\r\nvar Buffers = sync.Pool{\r\n\tNew: func() any {\r\n\t\treturn new(bytes.Bu"
  },
  {
    "path": "protocol/net/io/compress/compress.go",
    "chars": 1091,
    "preview": "package compress\r\n\r\nimport (\r\n\t\"bytes\"\r\n\t\"compress/gzip\"\r\n\t\"sync\"\r\n\r\n\t\"github.com/4kills/go-libdeflate/v2\"\r\n\t\"github.com"
  },
  {
    "path": "protocol/net/io/compress/lz4.go",
    "chars": 1685,
    "preview": "package compress\r\n\r\nimport (\r\n\t\"bytes\"\r\n\t\"encoding/binary\"\r\n\t\"fmt\"\r\n\r\n\t\"github.com/pierrec/lz4/v4\"\r\n)\r\n\r\n// Decompress a"
  },
  {
    "path": "protocol/net/io/compress/zlib.go",
    "chars": 1882,
    "preview": "package compress\r\n\r\nimport (\r\n\t\"bytes\"\r\n\r\n\t\"github.com/4kills/go-libdeflate/v2\"\r\n)\r\n\r\n// Decompress zlib. If decompresse"
  },
  {
    "path": "protocol/net/io/encoding/encoding.go",
    "chars": 3354,
    "preview": "// Package encoding provides encoding and decoding of minecraft data types\npackage encoding\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"uns"
  },
  {
    "path": "protocol/net/io/encoding/reader.go",
    "chars": 5298,
    "preview": "package encoding\r\n\r\nimport (\r\n\t\"encoding/json\"\r\n\t\"fmt\"\r\n\t\"io\"\r\n\t\"math\"\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/pr"
  },
  {
    "path": "protocol/net/io/encoding/writer.go",
    "chars": 4065,
    "preview": "package encoding\r\n\r\nimport (\r\n\t\"bytes\"\r\n\t\"encoding/json\"\r\n\t\"fmt\"\r\n\t\"math\"\r\n\t\"unsafe\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin"
  },
  {
    "path": "protocol/net/listener.go",
    "chars": 1463,
    "preview": "// Package net provides tools for creating minecraft servers, such as packet sending, registry data, encryption, authent"
  },
  {
    "path": "protocol/net/metadata/metadata.go",
    "chars": 3590,
    "preview": "package metadata\n\nimport (\n\t\"github.com/google/uuid\"\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/slot\"\n\t\"github.com/ze"
  },
  {
    "path": "protocol/net/metadata/new.go",
    "chars": 1210,
    "preview": "package metadata\n\n// Player returns the default player metadata object\nfunc Player(health float32) Metadata {\n\treturn Me"
  },
  {
    "path": "protocol/net/packet/configuration/clientInfo.go",
    "chars": 1930,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\nconst (\r\n\tChatModeEn"
  },
  {
    "path": "protocol/net/packet/configuration/cookie.go",
    "chars": 414,
    "preview": "package configuration\r\n\r\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/packet/login\"\r\n\r\n//clientbound\r\nconst Packe"
  },
  {
    "path": "protocol/net/packet/configuration/disconnect.go",
    "chars": 501,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/z"
  },
  {
    "path": "protocol/net/packet/configuration/finish.go",
    "chars": 399,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet\"\r\n)\r\n\r\nconst (\r\n\t//clientbound\r\n"
  },
  {
    "path": "protocol/net/packet/configuration/keepAlive.go",
    "chars": 429,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// two-sided\r\nconst "
  },
  {
    "path": "protocol/net/packet/configuration/ping.go",
    "chars": 398,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// two-sided\r\nconst "
  },
  {
    "path": "protocol/net/packet/configuration/plugin.go",
    "chars": 780,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// two-sided\r\nconst "
  },
  {
    "path": "protocol/net/packet/configuration/registryData.go",
    "chars": 1986,
    "preview": "package configuration\r\n\r\nimport (\r\n\t\"reflect\"\r\n\t\"sync\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\""
  },
  {
    "path": "protocol/net/packet/configuration/resetChat.go",
    "chars": 232,
    "preview": "package configuration\r\n\r\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/packet\"\r\n\r\n//clientbound\r\nconst PacketIdRes"
  },
  {
    "path": "protocol/net/packet/handshake/handshake.go",
    "chars": 1007,
    "preview": "package handshake\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\nconst (\r\n\tStatus = iota "
  },
  {
    "path": "protocol/net/packet/login/cookie.go",
    "chars": 1066,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst Packet"
  },
  {
    "path": "protocol/net/packet/login/disconnect.go",
    "chars": 501,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/"
  },
  {
    "path": "protocol/net/packet/login/encryption.go",
    "chars": 1439,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// two-sided\r\nconst PacketId"
  },
  {
    "path": "protocol/net/packet/login/loginStart.go",
    "chars": 599,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n/"
  },
  {
    "path": "protocol/net/packet/login/loginSuccess.go",
    "chars": 1853,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\nt"
  },
  {
    "path": "protocol/net/packet/login/plugin.go",
    "chars": 1605,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst Packet"
  },
  {
    "path": "protocol/net/packet/login/setCompression.go",
    "chars": 462,
    "preview": "package login\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst Packet"
  },
  {
    "path": "protocol/net/packet/packet.go",
    "chars": 998,
    "preview": "package packet\n\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\n\n// Encodeable is a clientbound packet\n"
  },
  {
    "path": "protocol/net/packet/play/acknowledgeBlockChange.go",
    "chars": 530,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/blockAction.go",
    "chars": 959,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/blockEntityData.go",
    "chars": 707,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/nbt\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/"
  },
  {
    "path": "protocol/net/packet/play/blockUpdate.go",
    "chars": 614,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/bundleDelimiter.go",
    "chars": 261,
    "preview": "package play\r\n\r\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/packet\"\r\n\r\n// clientbound\r\nconst PacketIdBundleDelim"
  },
  {
    "path": "protocol/net/packet/play/changeDifficulty.go",
    "chars": 616,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/chatCommand.go",
    "chars": 440,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/chatMessage.go",
    "chars": 1453,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/chunkBatch.go",
    "chars": 1152,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/chunkData.go",
    "chars": 2546,
    "preview": "package play\n\nimport (\n\t\"bytes\"\n\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\n)\n\ntype BlockEntity struct {"
  },
  {
    "path": "protocol/net/packet/play/clickContainer.go",
    "chars": 1255,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/clientInfo.go",
    "chars": 278,
    "preview": "package play\r\n\r\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/packet/configuration\"\r\n\r\n//serverbound\r\nconst Packet"
  },
  {
    "path": "protocol/net/packet/play/closeContainer.go",
    "chars": 457,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/commands.go",
    "chars": 2613,
    "preview": "package play\r\n\r\nimport (\r\n\t\"fmt\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\ntype Node struct {\r"
  },
  {
    "path": "protocol/net/packet/play/confirmTeleport.go",
    "chars": 518,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/damageEvent.go",
    "chars": 1175,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/deleteMessage.go",
    "chars": 726,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/disconnect.go",
    "chars": 492,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/disguisedChatMessage.go",
    "chars": 1402,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/entityAnimation.go",
    "chars": 768,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/entityEvent.go",
    "chars": 595,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/entitySoundEffect.go",
    "chars": 1359,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/gameEvent.go",
    "chars": 961,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\nconst (\r\n\tGameEventNoRespawnB"
  },
  {
    "path": "protocol/net/packet/play/hurtAnimation.go",
    "chars": 595,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/interact.go",
    "chars": 1703,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/keepAlive.go",
    "chars": 865,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/login.go",
    "chars": 4064,
    "preview": "package play\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\n)\n\n// clientbound\nconst Packet"
  },
  {
    "path": "protocol/net/packet/play/openScreen.go",
    "chars": 833,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/playerAbilitiesCB.go",
    "chars": 930,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/playerAbilitiesSB.go",
    "chars": 518,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/playerChatMessage.go",
    "chars": 2632,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"githu"
  },
  {
    "path": "protocol/net/packet/play/playerCommand.go",
    "chars": 1033,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/playerInfoRemove.go",
    "chars": 931,
    "preview": "package play\r\n\r\nimport (\r\n\t\"fmt\"\r\n\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding"
  },
  {
    "path": "protocol/net/packet/play/playerInfoUpdate.go",
    "chars": 3061,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"githu"
  },
  {
    "path": "protocol/net/packet/play/playerSession.go",
    "chars": 948,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n//"
  },
  {
    "path": "protocol/net/packet/play/plugin.go",
    "chars": 925,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/removeEntities.go",
    "chars": 864,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/serverData.go",
    "chars": 861,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/serverLinks.go",
    "chars": 1270,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/setCenterChunk.go",
    "chars": 590,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setContainerContent.go",
    "chars": 910,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/setCreativeModeSlot.go",
    "chars": 696,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/setDefaultSpawnPosition.go",
    "chars": 666,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setEntityMetadata.go",
    "chars": 6487,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/setEntityVelocity.go",
    "chars": 843,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setHeadRotation.go",
    "chars": 612,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setHeldItemCB.go",
    "chars": 491,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setHeldItemSB.go",
    "chars": 494,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setPlayerOnGround.go",
    "chars": 473,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setPlayerPosition.go",
    "chars": 822,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setPlayerPositionAndRotation.go",
    "chars": 1144,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setPlayerRotation.go",
    "chars": 717,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/setTickingState.go",
    "chars": 449,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/signedChatCommand.go",
    "chars": 1807,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/soundEffect.go",
    "chars": 1753,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/spawnEntity.go",
    "chars": 2248,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/google/uuid\"\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\nco"
  },
  {
    "path": "protocol/net/packet/play/stepTick.go",
    "chars": 336,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/swingArm.go",
    "chars": 470,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/synchronizePlayerPosition.go",
    "chars": 1424,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/systemChatMessage.go",
    "chars": 691,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/packet/play/updateEntityPosition.go",
    "chars": 1076,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/updateEntityPositionAndRotation.go",
    "chars": 1414,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/updateEntityRotation.go",
    "chars": 906,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/updateRecipeBook.go",
    "chars": 2113,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\nconst (\r\n\tUpdateRecipeBookAct"
  },
  {
    "path": "protocol/net/packet/play/updateSectionBlocks.go",
    "chars": 1659,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/updateTags.go",
    "chars": 1797,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/updateTime.go",
    "chars": 580,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// clientbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/play/useItemOn.go",
    "chars": 1735,
    "preview": "package play\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\n// serverbound\r\nconst PacketI"
  },
  {
    "path": "protocol/net/packet/status/ping.go",
    "chars": 341,
    "preview": "package status\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\ntype Ping struct {\r\n\tPayloa"
  },
  {
    "path": "protocol/net/packet/status/status.go",
    "chars": 1977,
    "preview": "package status\r\n\r\nimport (\r\n\t\"encoding/base64\"\r\n\t\"encoding/json\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/enc"
  },
  {
    "path": "protocol/net/pool.go",
    "chars": 3208,
    "preview": "package net\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet\"\r\n\t\"github.com/zeppelinmc/zeppelin/protoco"
  },
  {
    "path": "protocol/net/registry/embed.go",
    "chars": 149324,
    "preview": "package registry\n\nvar Registries = map[string]interface{}{\"minecraft:banner_pattern\": map[string]struct {\n\tAssetId      "
  },
  {
    "path": "protocol/net/registry/registry.go",
    "chars": 14711,
    "preview": "package registry\n\nimport (\n\t_ \"embed\"\n)\n\n// This packet contains registries that are sent to the client. Because  Go map"
  },
  {
    "path": "protocol/net/slot/comp_dec.go",
    "chars": 1059,
    "preview": "package slot\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n\t\"github.com/zeppelinmc/zeppelin/p"
  },
  {
    "path": "protocol/net/slot/slot.go",
    "chars": 2862,
    "preview": "package slot\r\n\r\nimport (\r\n\t\"slices\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/encoding\"\r\n)\r\n\r\ntype Slot struct"
  },
  {
    "path": "protocol/net/tags/tags.go",
    "chars": 50554,
    "preview": "package tags\n\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/packet/play\"\n\nvar Tags = &play.UpdateTags{Tags: map[st"
  },
  {
    "path": "protocol/text/builder.go",
    "chars": 1135,
    "preview": "package text\r\n\r\nfunc New() TextComponent {\r\n\treturn TextComponent{}\r\n}\r\n\r\nfunc (t TextComponent) WithColor(c string) Tex"
  },
  {
    "path": "protocol/text/color.go",
    "chars": 702,
    "preview": "package text\r\n\r\nimport (\r\n\t\"fmt\"\r\n\t\"image/color\"\r\n)\r\n\r\n// colors\r\nconst (\r\n\tBlack       = \"black\"\r\n\tDarkBlue    = \"dark_"
  },
  {
    "path": "protocol/text/text.go",
    "chars": 5867,
    "preview": "// Package text provides encoding and decoding of text components\npackage text\n\nimport \"fmt\"\n\nconst (\n\tTypeText         "
  },
  {
    "path": "readme.md",
    "chars": 1579,
    "preview": "![zeppelinbanner (1)](https://github.com/user-attachments/assets/21605ec4-1253-460e-84c3-d984df14f212)\r\n# Zeppelin\r\n\r\nHi"
  },
  {
    "path": "server/command/builder.go",
    "chars": 2328,
    "preview": "package command\r\n\r\nimport (\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet/play\"\r\n)\r\n\r\nconst (\r\n\tBool = iota\r\n\tFl"
  },
  {
    "path": "server/command/command.go",
    "chars": 752,
    "preview": "// Package command provides utilities for handling and registering commands\npackage command\n\nimport (\n\t\"github.com/zeppe"
  },
  {
    "path": "server/command/graph.go",
    "chars": 1874,
    "preview": "package command\r\n\r\nimport \"github.com/zeppelinmc/zeppelin/protocol/net/packet/play\"\r\n\r\nfunc (mgr *Manager) Encode() *pla"
  },
  {
    "path": "server/command/manager.go",
    "chars": 1665,
    "preview": "package command\n\nimport (\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet/play\"\n\t\"github.com/ze"
  },
  {
    "path": "server/container/container.go",
    "chars": 2563,
    "preview": "package container\r\n\r\nimport (\r\n\t\"fmt\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/slot\"\r\n\t\"github.com/zeppelinmc/ze"
  },
  {
    "path": "server/entity/entity.go",
    "chars": 5907,
    "preview": "package entity\n\nimport (\n\t\"maps\"\n\t\"math\"\n\t\"slices\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\ta \"github.com/zeppelinmc/zeppelin/util/atomi"
  },
  {
    "path": "server/entity/levelEntity.go",
    "chars": 623,
    "preview": "package entity\n\nimport \"github.com/zeppelinmc/zeppelin/server/world/level/uuid\"\n\ntype LevelEntity struct {\n\tAir int16\n\n\t"
  },
  {
    "path": "server/player/chunks.go",
    "chars": 1386,
    "preview": "package player\n\nimport (\n\t\"bytes\"\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/io/buffers\"\n\t\"github.com/zeppelinmc/zepp"
  },
  {
    "path": "server/player/conn.go",
    "chars": 3225,
    "preview": "package player\n\nimport (\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet\"\n\t\"github.com/zeppelinmc/zeppelin/protocol"
  },
  {
    "path": "server/player/handler_chat_command.go",
    "chars": 590,
    "preview": "package player\n\nimport (\n\t\"github.com/zeppelinmc/zeppelin/protocol/net\"\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/pa"
  },
  {
    "path": "server/player/player.go",
    "chars": 6482,
    "preview": "package player\n\nimport (\n\t\"github.com/zeppelinmc/zeppelin/properties\"\n\t\"github.com/zeppelinmc/zeppelin/protocol/net\"\n\t\"g"
  },
  {
    "path": "server/player/playerlist.go",
    "chars": 1796,
    "preview": "package player\n\nimport (\n\t\"github.com/google/uuid\"\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/packet/play\"\n\t\"github.c"
  },
  {
    "path": "server/player/state/list/playerlist.go",
    "chars": 401,
    "preview": "// Package list provides parsing of playerlist files (whitelist.json, ops.json etc)\n\npackage list\n\ntype WhitelistPlayer "
  },
  {
    "path": "server/player/state/playerEntity.go",
    "chars": 3320,
    "preview": "package state\n\nimport (\n\ta \"sync/atomic\"\n\n\t\"github.com/zeppelinmc/zeppelin/protocol/net/metadata\"\n\t\"github.com/zeppelinm"
  },
  {
    "path": "server/player/state/playerEntityManager.go",
    "chars": 845,
    "preview": "package state\n\nimport (\n\t\"sync\"\n\n\t\"github.com/google/uuid\"\n)\n\n// the player cache is used when saving the world playerda"
  },
  {
    "path": "server/plugin.go",
    "chars": 1289,
    "preview": "package server\r\n\r\nimport (\r\n\t\"io/fs\"\r\n\t\"os\"\r\n\t\"plugin\"\r\n\r\n\t\"github.com/zeppelinmc/zeppelin/util/log\"\r\n)\r\n\r\ntype Plugin s"
  },
  {
    "path": "server/registry/activity.go",
    "chars": 812,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Activity = Registry{\n\tDefault: \"\","
  },
  {
    "path": "server/registry/armor_material.go",
    "chars": 366,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar ArmorMaterial = Registry{\n\tDefault"
  },
  {
    "path": "server/registry/attribute.go",
    "chars": 1484,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Attribute = Registry{\n\tDefault: \"\""
  },
  {
    "path": "server/registry/block.go",
    "chars": 38728,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Block = Registry{\n\tDefault: \"minec"
  },
  {
    "path": "server/registry/block_entity_type.go",
    "chars": 1463,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar BlockEntityType = Registry{\n\tDefau"
  },
  {
    "path": "server/registry/block_predicate_type.go",
    "chars": 556,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar BlockPredicateType = Registry{\n\tDe"
  },
  {
    "path": "server/registry/block_type.go",
    "chars": 7676,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar BlockType = Registry{\n\tDefault: \"\""
  },
  {
    "path": "server/registry/cat_variant.go",
    "chars": 443,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar CatVariant = Registry{\n\tDefault: \""
  },
  {
    "path": "server/registry/chunk_status.go",
    "chars": 506,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar ChunkStatus = Registry{\n\tDefault: "
  },
  {
    "path": "server/registry/command_argument_type.go",
    "chars": 2262,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar CommandArgumentType = Registry{\n\tD"
  },
  {
    "path": "server/registry/creative_mode_tab.go",
    "chars": 597,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar CreativeModeTab = Registry{\n\tDefau"
  },
  {
    "path": "server/registry/custom_stat.go",
    "chars": 2777,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar CustomStat = Registry{\n\tDefault: \""
  },
  {
    "path": "server/registry/data_component_type.go",
    "chars": 2041,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar DataComponentType = Registry{\n\tDef"
  },
  {
    "path": "server/registry/decorated_pot_pattern.go",
    "chars": 774,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar DecoratedPotPattern = Registry{\n\tD"
  },
  {
    "path": "server/registry/enchantment_effect_component_type.go",
    "chars": 1253,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EnchantmentEffectComponentType = R"
  },
  {
    "path": "server/registry/enchantment_entity_effect_type.go",
    "chars": 577,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EnchantmentEntityEffectType = Regi"
  },
  {
    "path": "server/registry/enchantment_level_based_value_type.go",
    "chars": 312,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EnchantmentLevelBasedValueType = R"
  },
  {
    "path": "server/registry/enchantment_location_based_effect_type.go",
    "chars": 613,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EnchantmentLocationBasedEffectType"
  },
  {
    "path": "server/registry/enchantment_provider_type.go",
    "chars": 262,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EnchantmentProviderType = Registry"
  },
  {
    "path": "server/registry/enchantment_value_effect_type.go",
    "chars": 302,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EnchantmentValueEffectType = Regis"
  },
  {
    "path": "server/registry/entity_sub_predicate_type.go",
    "chars": 661,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EntitySubPredicateType = Registry{"
  },
  {
    "path": "server/registry/entity_type.go",
    "chars": 3943,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar EntityType = Registry{\n\tDefault: \""
  },
  {
    "path": "server/registry/float_provider_type.go",
    "chars": 277,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar FloatProviderType = Registry{\n\tDef"
  },
  {
    "path": "server/registry/fluid.go",
    "chars": 300,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Fluid = Registry{\n\tDefault: \"minec"
  },
  {
    "path": "server/registry/frog_variant.go",
    "chars": 231,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar FrogVariant = Registry{\n\tDefault: "
  },
  {
    "path": "server/registry/game_event.go",
    "chars": 2039,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar GameEvent = Registry{\n\tDefault: \"m"
  },
  {
    "path": "server/registry/height_provider_type.go",
    "chars": 352,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar HeightProviderType = Registry{\n\tDe"
  },
  {
    "path": "server/registry/instrument.go",
    "chars": 426,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Instrument = Registry{\n\tDefault: \""
  },
  {
    "path": "server/registry/int_provider_type.go",
    "chars": 340,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar IntProviderType = Registry{\n\tDefau"
  },
  {
    "path": "server/registry/item.go",
    "chars": 48344,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Item = Registry{\n\tDefault: \"minecr"
  },
  {
    "path": "server/registry/item_sub_predicate_type.go",
    "chars": 630,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar ItemSubPredicateType = Registry{\n\t"
  },
  {
    "path": "server/registry/loot_condition_type.go",
    "chars": 810,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar LootConditionType = Registry{\n\tDef"
  },
  {
    "path": "server/registry/loot_function_type.go",
    "chars": 1525,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar LootFunctionType = Registry{\n\tDefa"
  },
  {
    "path": "server/registry/loot_nbt_provider_type.go",
    "chars": 217,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar LootNbtProviderType = Registry{\n\tD"
  },
  {
    "path": "server/registry/loot_number_provider_type.go",
    "chars": 334,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar LootNumberProviderType = Registry{"
  },
  {
    "path": "server/registry/loot_pool_entry_type.go",
    "chars": 369,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar LootPoolEntryType = Registry{\n\tDef"
  },
  {
    "path": "server/registry/loot_score_provider_type.go",
    "chars": 217,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar LootScoreProviderType = Registry{\n"
  },
  {
    "path": "server/registry/map_decoration_type.go",
    "chars": 1261,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar MapDecorationType = Registry{\n\tDef"
  },
  {
    "path": "server/registry/memory_module_type.go",
    "chars": 4166,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar MemoryModuleType = Registry{\n\tDefa"
  },
  {
    "path": "server/registry/menu.go",
    "chars": 879,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar Menu = Registry{\n\tDefault: \"\",\n\tEn"
  },
  {
    "path": "server/registry/mob_effect.go",
    "chars": 1305,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar MobEffect = Registry{\n\tDefault: \"\""
  },
  {
    "path": "server/registry/number_format_type.go",
    "chars": 235,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar NumberFormatType = Registry{\n\tDefa"
  },
  {
    "path": "server/registry/particle_type.go",
    "chars": 3580,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar ParticleType = Registry{\n\tDefault:"
  },
  {
    "path": "server/registry/point_of_interest_type.go",
    "chars": 726,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar PointOfInterestType = Registry{\n\tD"
  },
  {
    "path": "server/registry/pos_rule_test.go",
    "chars": 258,
    "preview": "package registry\n\n// Generated by https://github.com/ZeppelinMC/RegistryExtractor\nvar PosRuleTest = Registry{\n\tDefault: "
  }
]

// ... and 1156 more files (download for full content)

About this extraction

This page contains the full source code of the ZeppelinMC/Zeppelin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1356 files (1.4 MB), approximately 457.9k tokens, and a symbol index with 4870 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!