Skip to content

These docs were made completely by AI, so they might be right, or wrong, you'll need to test them yourself. This was made for a easier understanding of everything. So use at your own risk. If anything is wrong, please don't hurt to make a PR on the page you have a problem with. ON GITHUB

New Blocks & Items

MinecraftConsoles adds several blocks and items that aren’t in the LCEMP base. This page documents each addition based on the actual source code.

File: Minecraft.World/StainedGlassBlock.h, .cpp

Extends HalfTransparentTile. Provides 16 color variants using dye-based texture names.

PropertyValue
Base classHalfTransparentTile
MaterialPassed via constructor (glass)
Render layer1 (translucent)
Cube shapedfalse
Silk touchabletrue (via protected isSilkTouchable())
Resource count0 (drops nothing without silk touch)
Icon variantsICONS_LENGTH = 16 (one per dye color)

Texture registration iterates all 16 variants and registers icons using DyePowderItem::COLOR_TEXTURES mapped through getItemAuxValueForBlockData(), which inverts the data bits (~data & 0xf). getSpawnResourcesAuxValue() maps the block data to the item aux value.

File: Minecraft.World/StainedGlassPaneBlock.h, .cpp

Extends ThinFenceTile. The pane variant of stained glass with both face icons and edge icons.

PropertyValue
Base classThinFenceTile
Render layer1 (translucent)
Icon arraysICONS[16] (face) and EDGE_ICONS[16] (edge/top)
VariantsICONS_COUNT = 16

Registers both face textures (glass_<color>) and edge textures (glass_pane_top_<color>) for all 16 variants. Three texture methods handle different faces:

  • getIconTexture(int face, int data) for the main pane face
  • getEdgeTexture(int data) for the pane edges and top
  • getTexture(int face, int data) general texture lookup

getItemAuxValueForBlockData() and getSpawnResourcesAuxValue() handle the data-to-aux mapping.

File: Minecraft.World/HayBlockTile.h, .cpp

Extends RotatedPillarTile. A directional block with top and side textures, just like logs.

PropertyValue
Base classRotatedPillarTile
Materialgrass
Render shapeSHAPE_TREE (pillar rendering) via getRenderShape()
Textureshay_block_top, hay_block_side

The getTypeTexture(int type) method (protected) returns the texture for the pillar end or side. registerIcons() sets up the two textures.

File: Minecraft.World/NoteBlockTile.h, .cpp

Extends BaseEntityTile. A tile entity that plays musical notes and responds to redstone.

PropertyValue
Base classBaseEntityTile
Materialwood
Tile entityMusicTileEntity

Behavior:

  • Redstone signal (neighborChanged): When a neighbor signal changes, plays the note if the signal transitions to on.
  • Right-click (use): Increments the note pitch via mte->tune() and plays the note. Has a soundOnly parameter (4J addition).
  • Left-click (attack): Plays the current note without changing pitch.
  • Note rendering (triggerEvent): Calculates pitch as pow(2, (note - 12) / 12.0) and picks an instrument sound based on the block below:
    • Stone: bass drum
    • Sand/gravel: snare
    • Glass: hat (click)
    • Wood: bass guitar
    • Everything else: harp/piano
  • Spawns a note particle colored by pitch.

TestUse() returns whether the note block can be right-clicked (used for tooltip display). newTileEntity() creates the MusicTileEntity.

File: Minecraft.World/JukeboxTile.h, .cpp

Extends BaseEntityTile. Plays and ejects music discs.

PropertyValue
Base classBaseEntityTile
Materialwood
Tile entityJukeboxTile::Entity (nested class)
Analog outputYes (comparator signal based on disc ID)
Texturesjukebox_side, jukebox_top

JukeboxTile::Entity is a nested class extending TileEntity with type eTYPE_RECORDPLAYERTILE. It stores a shared_ptr<ItemInstance> record and handles save/load using both the RecordItem compound tag and the legacy Record integer tag. Has a static create() factory and 4J-added clone() method.

Behavior:

  • Right-click (use): Ejects the current disc if one is present (data value 1 means occupied). TestUse() checks if ejection is possible.
  • Disc ejection (dropRecording): Fires SOUND_PLAY_RECORDING level event, clears the record, and spawns the disc as an ItemEntity.
  • Disc insertion (setRecord): Sets the record in the tile entity and updates the data value.
  • Block removal (onRemove): Ejects the disc before the block is destroyed.
  • Resource spawning (spawnResources): Handles dropping the jukebox and its disc.
  • Comparator output (getAnalogOutputSignal): Returns record->id + 1 - Item::record_01_Id when a disc is present, hasAnalogOutputSignal() returns true.

File: Minecraft.World/BeaconTile.h, .cpp

Extends BaseEntityTile. The beacon block that provides status effects in a radius.

PropertyValue
Base classBaseEntityTile
Tile entityBeaconTileEntity
Solid renderfalse
Cube shapedfalse
Blocks lightfalse

use() opens the beacon menu for the player. TestUse() returns whether interaction is possible. setPlacedBy() handles custom naming from the item.

File: Minecraft.World/BeaconTileEntity.h, .cpp

Extends both TileEntity and Container. Entity type: eTYPE_BEACONTILEENTITY.

PropertyValue
Scale timerTICKS_PER_SECOND * 2 (40 ticks)
Effect tiersBEACON_EFFECTS_TIERS = 4
Effects per tierBEACON_EFFECTS_EFFECTS = 3

Key state:

  • isActive tracks whether the beacon has a clear sky view
  • levels stores the pyramid tier (0 to 4)
  • primaryPower / secondaryPower store the selected effect IDs
  • paymentItem stores the payment item (iron ingot, gold ingot, diamond, or emerald)
  • clientSideRenderTick / clientSideRenderScale handle the beam animation

Effects are stored in a static BEACON_EFFECTS[4][3] array initialized via staticCtor().

The beacon tick() method periodically:

  1. Checks for a clear line of sight to the sky
  2. Counts the pyramid layers below
  3. Applies status effects to nearby players via applyEffects()

Container methods implement the payment slot (1 slot, accepts specific items via canPlaceItem()). Full NBT save/load for all beacon properties.

File: Minecraft.World/AnvilTile.h, .cpp

Extends HeavyTile. A gravity-affected block for item repair and renaming.

PropertyValue
Base classHeavyTile
Part typesPART_BASE (0), PART_JOINT (1), PART_COLUMN (2), PART_TOP (3)
Damage levelsANVIL_NAMES_LENGTH = 3
Cube shapedfalse
Solid renderfalse

Has a part field and ANVIL_NAMES[3] for the three damage levels (intact, slightly damaged, very damaged). Static TEXTURE_DAMAGE_NAMES[3] for damage-level textures. use() opens the anvil menu. falling() handles the falling entity behavior. onLand() handles landing and potential damage level increase.

File: Minecraft.World/AnvilMenu.h, .cpp

The anvil crafting menu with repair and rename logic.

SlotConstantPurpose
0INPUT_SLOTItem to repair
1ADDITIONAL_SLOTMaterial or second item
2RESULT_SLOTRepair output
3-29INV_SLOT_START to INV_SLOT_ENDPlayer inventory
30-38USE_ROW_SLOT_START to USE_ROW_SLOT_ENDPlayer hotbar

Key fields: cost (XP cost), repairItemCountCost, itemName. createResult() computes the repair output. setItemName() handles renaming.

File: Minecraft.World/CommandBlock.h, .cpp

Extends BaseEntityTile. Executes commands when powered by redstone.

PropertyValue
Base classBaseEntityTile
Trigger bitTRIGGER_BIT = 1
Tile entityCommandBlockEntity
Analog outputYes

neighborChanged() handles redstone activation. tick() handles delayed execution. use() opens the command block UI. hasAnalogOutputSignal() returns true, getAnalogOutputSignal() returns the success count.

File: Minecraft.World/CommandBlockEntity.h, .cpp

Extends both TileEntity and CommandSender. Entity type: eTYPE_COMMANDBLOCKTILEENTITY.

Stores command (wstring), name (wstring), and successCount (int). performCommand() executes the stored command. Implements CommandSender for permission checking and message sending. Full NBT save/load. Has getUpdatePacket() for network sync and getCommandSenderWorldPosition() / getCommandSenderWorld() for context.

File: Minecraft.World/FlowerPotTile.h, .cpp

Extends Tile. A decorative block that holds plants.

Type constantValueContents
TYPE_FLOWER_RED1Red flower
TYPE_FLOWER_YELLOW2Yellow flower
TYPE_SAPLING_DEFAULT3Oak sapling
TYPE_SAPLING_EVERGREEN4Spruce sapling
TYPE_SAPLING_BIRCH5Birch sapling
TYPE_SAPLING_JUNGLE6Jungle sapling
TYPE_MUSHROOM_RED7Red mushroom
TYPE_MUSHROOM_BROWN8Brown mushroom
TYPE_CACTUS9Cactus
TYPE_DEAD_BUSH10Dead bush
TYPE_FERN11Fern

use() handles placing plants. Static helpers getItemFromType() and getTypeFromItem() convert between block data and item stacks. spawnResources() drops both the pot and its contents.

File: Minecraft.World/SkullTile.h, .cpp

Extends BaseEntityTile. Player and mob heads.

PropertyValue
Max skullsMAX_SKULL_TILES = 40
Placement maskPLACEMENT_MASK = 0x7
No-drop bitNO_DROP_BIT = 0x8

checkMobSpawn() checks if three wither skulls are placed in a T-shape to spawn the Wither boss. playerWillDestroy() handles creative-mode no-drop behavior.

File: Minecraft.World/SkullTileEntity.h, .cpp

Entity type: eTYPE_SKULLTILEENTITY. Stores skull type, rotation, and extra data.

Skull typeValue
TYPE_SKELETON0
TYPE_WITHER1
TYPE_ZOMBIE2
TYPE_CHAR3
TYPE_CREEPER4

Methods: setSkullType(), getSkullType(), getRotation(), setRotation(), getExtraType(). Full NBT save/load and getUpdatePacket() for network sync.

File: Minecraft.World/WeightedPressurePlateTile.h, .cpp

Extends BasePressurePlateTile. Entity-counting pressure plates (light and heavy variants).

PropertyValue
Base classBasePressurePlateTile
Max weightPassed via constructor

getSignalStrength() counts entities above the plate and maps to a signal strength. getSignalForData() / getDataForSignal() handle data conversion. getTickDelay() returns the update interval.

BlockFileBase classNotes
GlowstoneTileGlowstoneTile.h/cppTileLight-emitting block with fortune-based drops
NetherrackTileNetherrackTile.hTileSimple block, no special behavior
SoulSandTileSoulSandTile.h/cppTileSlows entities via entityInside(), reduced AABB height
NetherWartTileNetherWartTile.h/cppBush4-stage crop (MAX_AGE = 3), only grows on soul sand
WoodButtonTileWoodButtonTile.hButtonTileWood variant of button
StoneButtonTileStoneButtonTile.hButtonTileStone variant of button
PoweredMetalTilePoweredMetalTile.h/cppIron and gold pressure plate variants
RotatedPillarTileRotatedPillarTile.h/cppPillar block base (used by hay, logs)
BasePressurePlateTileBasePressurePlateTile.h/cppBase for all pressure plates
BaseRailTileBaseRailTile.h/cppTileBase for all rail types
BaseEntityTileBaseEntityTile.h/cppTileBase for tiles with tile entities
ColoredTileColoredTile.h/cppBase for color-variant tiles

File: Minecraft.World/LeashItem.h, .cpp

Lets players tie leashed mobs to fence posts.

PropertyValue
Base classItem
Key methoduseOn() binds leashed mobs to a fence

When used on a fence tile, it searches a 7-block radius for mobs leashed to the player, creates or finds a LeashFenceKnotEntity at that position, and attaches them. Has two static methods:

  • bindPlayerMobs() does the actual binding with side effects
  • bindPlayerMobsTest() is for tooltip prediction without side effects

The useOn() method has a bTestUseOnOnly parameter for tooltip support.

File: Minecraft.World/NameTagItem.h, .cpp

Lets you name mobs.

PropertyValue
Base classItem
Key methodinteractEnemy()

When the item has a custom hover name and is used on a Mob, it sets the mob’s custom name and calls setPersistenceRequired() to prevent despawning. Decrements the stack.

File: Minecraft.World/EmptyMapItem.h, .cpp

Creates a new map when used.

PropertyValue
Base classComplexItem
Key methoduse()

Creates a new ItemInstance of Item::map with aux value -1, calls Item::map->onCraftedBy() to initialize it, then decrements the empty map stack. If the player’s stack isn’t empty afterward, the new map is added to inventory or dropped.

File: Minecraft.World/SpawnEggItem.h, .cpp

Spawns mobs when used on a block or dispensed.

PropertyValue
Base classItem
Multi-spriteYes (base + overlay for two-tone coloring)
Spawn countSPAWN_COUNT = 1
Key methodsuseOn(), use(), spawnMobAt()

Has a detailed _eSpawnResult enum with console-specific failure reasons:

ResultMeaning
eSpawnResult_OKSpawn successful
FailTooManyPigsCowsSheepCatsPassive mob cap reached
FailTooManyChickensChicken cap reached
FailTooManySquidSquid cap reached
FailTooManyBatsBat cap reached
FailTooManyWolvesWolf cap reached
FailTooManyMooshroomsMooshroom cap reached
FailTooManyAnimalsGeneral animal cap reached
FailTooManyMonstersMonster cap reached
FailTooManyVillagersVillager cap reached
FailCantSpawnInPeacefulPeaceful mode blocks hostile spawns

spawnMobAt() includes a 4J-added piResult parameter for reporting spawn failures back to the dispenser system. canSpawn() is a static helper for dispenser use. DisplaySpawnError() shows the failure message to the player.

Multi-sprite methods: hasMultipleSpriteLayers() returns true, getLayerIcon() returns per-layer icons, getColor() returns per-layer tint colors. getHoverName() returns the localized mob name.

File: Minecraft.World/SimpleFoiledItem.h, .cpp

A simple item that always renders with the enchantment glint (“foil”).

PropertyValue
Base classItem
BehaviorisFoil() always returns true

Used for items like the Nether Star that should always look enchanted.

File: Minecraft.World/FireworksItem.h, .cpp

The firework rocket item. See the Fireworks page for full details.

File: Minecraft.World/FireworksChargeItem.h, .cpp

The firework star item. See the Fireworks page for full details.

File: Minecraft.World/ArmorDyeRecipe.h, .cpp

A special crafting recipe that lets you dye leather armor. Takes leather armor plus one or more dyes and produces a dyed copy.

Files: Minecraft.World/MapCloningRecipe.h, MapExtendingRecipe.h

Special recipes for duplicating and extending maps.

These blocks and items are registered in the global Tile and Item static initialization (in Tile.cpp and Item.cpp respectively). The stained glass and hay block tiles follow the standard Tile::tiles[] array pattern, while items use Item::items[] with their numeric IDs.

For more details on fireworks, see the Fireworks page. For horse-related items (armor, saddles), see the Horses page. For dispenser item behaviors, see the Behavior System page.