1
0
Fork 0

Added some blocks and items (#3503)

This commit is contained in:
mathiascode 2017-02-14 12:13:55 +02:00 committed by Mattes D
parent d67b573536
commit 4311f4a658
27 changed files with 682 additions and 37 deletions

View File

@ -14801,6 +14801,10 @@ end
{
Notes = "The blocktype for birch wood stairs"
},
E_BLOCK_BLACK_SHULKER_BOX =
{
Notes = "The blocktype for black shulker box"
},
E_BLOCK_BLOCK_OF_COAL =
{
Notes = "The blocktype for block of coal"
@ -14809,6 +14813,10 @@ end
{
Notes = "The blocktype for block of redstone"
},
E_BLOCK_BLUE_SHULKER_BOX =
{
Notes = "The blocktype for blue shulker box"
},
E_BLOCK_BONE_BLOCK =
{
Notes = "The blocktype for bone block"
@ -14833,6 +14841,10 @@ end
{
Notes = "The blocktype for brown mushroom"
},
E_BLOCK_BROWN_SHULKER_BOX =
{
Notes = "The blocktype for brown shulker box"
},
E_BLOCK_BURNING_FURNACE =
{
Notes = "The blocktype for burning furnace"
@ -14941,6 +14953,10 @@ end
{
Notes = "The blocktype for crops"
},
E_BLOCK_CYAN_SHULKER_BOX =
{
Notes = "The blocktype for cyan shulker box"
},
E_BLOCK_DANDELION =
{
Notes = "The blocktype for dandelion"
@ -15113,6 +15129,14 @@ end
{
Notes = "The blocktype for gravel"
},
E_BLOCK_GRAY_SHULKER_BOX =
{
Notes = "The blocktype for gray shulker box"
},
E_BLOCK_GREEN_SHULKER_BOX =
{
Notes = "The blocktype for green shulker box"
},
E_BLOCK_HARDENED_CLAY =
{
Notes = "The blocktype for hardened clay"
@ -15221,6 +15245,14 @@ end
{
Notes = "The blocktype for lever"
},
E_BLOCK_LIGHT_BLUE_SHULKER_BOX =
{
Notes = "The blocktype for light blue shulker box"
},
E_BLOCK_LIGHT_GRAY_SHULKER_BOX =
{
Notes = "The blocktype for light gray shulker box"
},
E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE =
{
Notes = "The blocktype for light weighted pressure plate"
@ -15229,6 +15261,10 @@ end
{
Notes = "The blocktype for lily pad"
},
E_BLOCK_LIME_SHULKER_BOX =
{
Notes = "The blocktype for lime shulker box"
},
E_BLOCK_LIT_FURNACE =
{
Notes = "The blocktype for lit furnace"
@ -15237,6 +15273,10 @@ end
{
Notes = "The blocktype for log"
},
E_BLOCK_MAGENTA_SHULKER_BOX =
{
Notes = "The blocktype for magenta shulker box"
},
E_BLOCK_MAGMA =
{
Notes = "The blocktype for magma"
@ -15329,14 +15369,26 @@ end
{
Notes = "The blocktype for oak wood stairs"
},
E_BLOCK_OBSERVER =
{
Notes = "The blocktype for observer"
},
E_BLOCK_OBSIDIAN =
{
Notes = "The blocktype for obsidian"
},
E_BLOCK_ORANGE_SHULKER_BOX =
{
Notes = "The blocktype for orange shulker box"
},
E_BLOCK_PACKED_ICE =
{
Notes = "The blocktype for packed ice"
},
E_BLOCK_PINK_SHULKER_BOX =
{
Notes = "The blocktype for pink shulker box"
},
E_BLOCK_PISTON =
{
Notes = "The blocktype for piston"
@ -15373,6 +15425,10 @@ end
{
Notes = "The blocktype for pumpkin stem"
},
E_BLOCK_PURPLE_SHULKER_BOX =
{
Notes = "The blocktype for purple shulker box"
},
E_BLOCK_PURPUR_BLOCK =
{
Notes = "The blocktype for purpur block"
@ -15465,6 +15521,10 @@ end
{
Notes = "The blocktype for red sandstone stairs"
},
E_BLOCK_RED_SHULKER_BOX =
{
Notes = "The blocktype for red shulker box"
},
E_BLOCK_REEDS =
{
Notes = "The blocktype for reeds"
@ -15665,6 +15725,10 @@ end
{
Notes = "The blocktype for water"
},
E_BLOCK_WHITE_SHULKER_BOX =
{
Notes = "The blocktype for white shulker box"
},
E_BLOCK_WOODEN_BUTTON =
{
Notes = "The blocktype for wooden button"
@ -15697,6 +15761,10 @@ end
{
Notes = "The blocktype for yellow flower"
},
E_BLOCK_YELLOW_SHULKER_BOX =
{
Notes = "The blocktype for yellow shulker box"
},
E_ITEM_11_DISC =
{
Notes = "The itemtype for 11 disc"
@ -15705,6 +15773,10 @@ end
{
Notes = "The itemtype for 13 disc"
},
E_ITEM_ACACIA_BOAT =
{
Notes = "The itemtype for acacia boat"
},
E_ITEM_ACACIA_DOOR =
{
Notes = "The itemtype for acacia door"
@ -15729,6 +15801,22 @@ end
{
Notes = "The itemtype for bed"
},
E_ITEM_BEETROOT =
{
Notes = "The itemtype for beetroot"
},
E_ITEM_BEETROOT_SEEDS =
{
Notes = "The itemtype for beetroot seeds"
},
E_ITEM_BEETROOT_SOUP =
{
Notes = "The itemtype for betroot soup"
},
E_ITEM_BIRCH_BOAT =
{
Notes = "The itemtype for birch boat"
},
E_ITEM_BIRCH_DOOR =
{
Notes = "The itemtype for birch door"
@ -15829,6 +15917,10 @@ end
{
Notes = "The itemtype for chirp disc"
},
E_ITEM_CHORUS_FRUIT =
{
Notes = "The itemtype for chorus fruit"
},
E_ITEM_CLAY =
{
Notes = "The itemtype for clay"
@ -15877,6 +15969,10 @@ end
{
Notes = "The itemtype for cookie"
},
E_ITEM_DARK_OAK_BOAT =
{
Notes = "The itemtype for dark oak boat"
},
E_ITEM_DARK_OAK_DOOR =
{
Notes = "The itemtype for dark oak door"
@ -15925,6 +16021,10 @@ end
{
Notes = "The itemtype for diamond sword"
},
E_ITEM_DRAGON_BREATH =
{
Notes = "The itemtype for dragon breath"
},
E_ITEM_DYE =
{
Notes = "The itemtype for dye"
@ -15933,6 +16033,10 @@ end
{
Notes = "The itemtype for egg"
},
E_ITEM_ELYTRA =
{
Notes = "The itemtype for elytra"
},
E_ITEM_EMERALD =
{
Notes = "The itemtype for emerald"
@ -15949,6 +16053,10 @@ end
{
Notes = "The itemtype for enchanted book"
},
E_ITEM_END_CRYSTAL =
{
Notes = "The itemtype for end crystal"
},
E_ITEM_ENDER_PEARL =
{
Notes = "The itemtype for ender pearl"
@ -16125,6 +16233,10 @@ end
{
Notes = "The itemtype for iron leggings"
},
E_ITEM_IRON_NUGGET =
{
Notes = "The itemtype for iron nugget"
},
E_ITEM_IRON_PICKAXE =
{
Notes = "The itemtype for iron pickaxe"
@ -16141,6 +16253,10 @@ end
{
Notes = "The itemtype for item frame"
},
E_ITEM_JUNGLE_BOAT =
{
Notes = "The itemtype for jungle boat"
},
E_ITEM_JUNGLE_DOOR =
{
Notes = "The itemtype for jungle door"
@ -16185,6 +16301,10 @@ end
{
Notes = "The itemtype for leather tunic"
},
E_ITEM_LINGERING_POTION =
{
Notes = "The itemtype for lingering potion"
},
E_ITEM_MAGMA_CREAM =
{
Notes = "The itemtype for magma cream"
@ -16273,6 +16393,10 @@ end
{
Notes = "The itemtype for poisonous potato"
},
E_ITEM_POPPED_CHORUS_FRUIT =
{
Notes = "The itemtype for popped chorus fruit"
},
E_ITEM_POTATO =
{
Notes = "The itemtype for potato"
@ -16283,7 +16407,7 @@ end
},
E_ITEM_POTIONS =
{
Notes = "The itemtype for potions"
Notes = "The itemtype for potion (obsolete, use E_ITEM_POTION instead)"
},
E_ITEM_PRISMARINE_CRYSTALS =
{
@ -16365,6 +16489,14 @@ end
{
Notes = "The itemtype for shears"
},
E_ITEM_SHIELD =
{
Notes = "The itemtype for shield"
},
E_ITEM_SHULKER_SHELL =
{
Notes = "The itemtype for shulker shell"
},
E_ITEM_SIGN =
{
Notes = "The itemtype for sign"
@ -16381,10 +16513,22 @@ end
{
Notes = "The itemtype for spawn egg"
},
E_ITEM_SPECTRAL_ARROW =
{
Notes = "The itemtype for spectral arrow"
},
E_ITEM_SPIDER_EYE =
{
Notes = "The itemtype for spider eye"
},
E_ITEM_SPLASH_POTION =
{
Notes = "The itemtype for splash potion"
},
E_ITEM_SPRUCE_BOAT =
{
Notes = "The itemtype for spruce boat"
},
E_ITEM_SPRUCE_DOOR =
{
Notes = "The itemtype for spruce door"
@ -16441,6 +16585,14 @@ end
{
Notes = "The itemtype for sugar cane"
},
E_ITEM_TIPPED_ARROW =
{
Notes = "The itemtype for tipped arrow"
},
E_ITEM_TOTEM_OF_UNDYING =
{
Notes = "The itemtype for totem of undying"
},
E_ITEM_WAIT_DISC =
{
Notes = "The itemtype for wait disc"
@ -16605,6 +16757,30 @@ end
{
Notes = "A flag in the metadata of droppers and dispensers that indicates that the dropper or dispenser is looking in the positive Z direction.",
},
E_META_HEAD_CREEPER =
{
Notes = "A flag in the metadata of heads that indicates that the head is a creeper head.",
},
E_META_HEAD_DRAGON =
{
Notes = "A flag in the metadata of heads that indicates that the head is a dragon head.",
},
E_META_HEAD_PLAYER =
{
Notes = "A flag in the metadata of heads that indicates that the head is a player head.",
},
E_META_HEAD_SKELETON =
{
Notes = "A flag in the metadata of heads that indicates that the head is a skeleton head.",
},
E_META_HEAD_WITHER =
{
Notes = "A flag in the metadata of heads that indicates that the head is a wither head.",
},
E_META_HEAD_ZOMBIE =
{
Notes = "A flag in the metadata of heads that indicates that the head is a zombie head.",
},
esBed =
{
Notes = "A bed explosion. The SourceData param is the {{Vector3i|position}} of the bed.",
@ -16717,6 +16893,30 @@ end
{
Notes = "The right hand is the main hand",
},
SKULL_TYPE_CREEPER =
{
Notes = "A creeper skull",
},
SKULL_TYPE_DRAGON =
{
Notes = "A dragon skull",
},
SKULL_TYPE_PLAYER =
{
Notes = "A player skull",
},
SKULL_TYPE_SKELETON =
{
Notes = "A skeleton skull",
},
SKULL_TYPE_WITHER =
{
Notes = "A wither skull",
},
SKULL_TYPE_ZOMBIE =
{
Notes = "A zombie skull",
},
spCape =
{
Notes = "The cape skin part",

View File

@ -65,7 +65,7 @@ GoldChestplate = GoldNugget
GoldHorseArmor = GoldNugget
GoldHelmet = GoldNugget
GoldHoe = GoldNugget
GoldenLeggings = GoldNugget
GoldPants = GoldNugget
GoldPickaxe = GoldNugget
GoldShovel = GoldNugget
GoldSword = GoldNugget

View File

@ -174,6 +174,7 @@ bool cHeightMap::IsGround(BLOCKTYPE a_BlockType)
{
case E_BLOCK_AIR:
case E_BLOCK_BED:
case E_BLOCK_BEETROOTS:
case E_BLOCK_BREWING_STAND:
case E_BLOCK_BROWN_MUSHROOM:
case E_BLOCK_CACTUS:
@ -181,6 +182,8 @@ bool cHeightMap::IsGround(BLOCKTYPE a_BlockType)
case E_BLOCK_CARROTS:
case E_BLOCK_CAULDRON:
case E_BLOCK_CHEST:
case E_BLOCK_CHORUS_FLOWER:
case E_BLOCK_CHORUS_PLANT:
case E_BLOCK_COBBLESTONE_WALL:
case E_BLOCK_COBWEB:
case E_BLOCK_COCOA_POD:
@ -189,7 +192,9 @@ bool cHeightMap::IsGround(BLOCKTYPE a_BlockType)
case E_BLOCK_DETECTOR_RAIL:
case E_BLOCK_DIRT:
case E_BLOCK_DRAGON_EGG:
case E_BLOCK_END_GATEWAY:
case E_BLOCK_END_PORTAL:
case E_BLOCK_END_ROD:
case E_BLOCK_ENDER_CHEST:
case E_BLOCK_FENCE:
case E_BLOCK_FENCE_GATE:
@ -226,6 +231,7 @@ bool cHeightMap::IsGround(BLOCKTYPE a_BlockType)
case E_BLOCK_STATIONARY_WATER:
case E_BLOCK_STONE_BUTTON:
case E_BLOCK_STONE_PRESSURE_PLATE:
case E_BLOCK_STRUCTURE_VOID:
case E_BLOCK_TALL_GRASS:
case E_BLOCK_TORCH:
case E_BLOCK_TRIPWIRE:

View File

@ -38,11 +38,52 @@ void cNoteEntity::MakeSound(void)
switch (m_World->GetBlock(m_PosX, m_PosY - 1, m_PosZ))
{
case E_BLOCK_PLANKS:
case E_BLOCK_ACACIA_DOOR:
case E_BLOCK_ACACIA_FENCE:
case E_BLOCK_ACACIA_FENCE_GATE:
case E_BLOCK_ACACIA_WOOD_STAIRS:
case E_BLOCK_BIRCH_DOOR:
case E_BLOCK_BIRCH_FENCE:
case E_BLOCK_BIRCH_FENCE_GATE:
case E_BLOCK_BIRCH_WOOD_STAIRS:
case E_BLOCK_BOOKCASE:
case E_BLOCK_CHEST:
case E_BLOCK_CRAFTING_TABLE:
case E_BLOCK_DARK_OAK_DOOR:
case E_BLOCK_DARK_OAK_FENCE:
case E_BLOCK_DARK_OAK_FENCE_GATE:
case E_BLOCK_DARK_OAK_WOOD_STAIRS:
case E_BLOCK_DAYLIGHT_SENSOR:
case E_BLOCK_DOUBLE_WOODEN_SLAB:
case E_BLOCK_FENCE:
case E_BLOCK_HUGE_BROWN_MUSHROOM:
case E_BLOCK_HUGE_RED_MUSHROOM:
case E_BLOCK_INVERTED_DAYLIGHT_SENSOR:
case E_BLOCK_JUKEBOX:
case E_BLOCK_JUNGLE_DOOR:
case E_BLOCK_JUNGLE_FENCE:
case E_BLOCK_JUNGLE_FENCE_GATE:
case E_BLOCK_JUNGLE_WOOD_STAIRS:
case E_BLOCK_LOG:
case E_BLOCK_NEW_LOG:
case E_BLOCK_NOTE_BLOCK:
case E_BLOCK_OAK_DOOR:
case E_BLOCK_OAK_FENCE_GATE:
case E_BLOCK_OAK_WOOD_STAIRS:
case E_BLOCK_PLANKS:
case E_BLOCK_SIGN_POST:
case E_BLOCK_SPRUCE_DOOR:
case E_BLOCK_SPRUCE_FENCE:
case E_BLOCK_SPRUCE_FENCE_GATE:
case E_BLOCK_SPRUCE_WOOD_STAIRS:
case E_BLOCK_STANDING_BANNER:
case E_BLOCK_TRAPDOOR:
case E_BLOCK_TRAPPED_CHEST:
case E_BLOCK_WALL_BANNER:
case E_BLOCK_WALLSIGN:
case E_BLOCK_WOODEN_PRESSURE_PLATE:
case E_BLOCK_WOODEN_SLAB:
{
// TODO: add other wood-based blocks if needed
instrument = E_INST_DOUBLE_BASS;
sampleName = "note.bassattack";
break;
@ -57,24 +98,93 @@ void cNoteEntity::MakeSound(void)
break;
}
case E_BLOCK_BEACON:
case E_BLOCK_GLASS:
case E_BLOCK_GLASS_PANE:
case E_BLOCK_GLOWSTONE:
case E_BLOCK_SEA_LANTERN:
case E_BLOCK_STAINED_GLASS:
case E_BLOCK_STAINED_GLASS_PANE:
{
instrument = E_INST_CLICKS;
sampleName = "note.hat";
break;
}
case E_BLOCK_STONE:
case E_BLOCK_STONE_BRICKS:
case E_BLOCK_COBBLESTONE:
case E_BLOCK_OBSIDIAN:
case E_BLOCK_NETHERRACK:
case E_BLOCK_BEDROCK:
case E_BLOCK_BLACK_SHULKER_BOX:
case E_BLOCK_BLOCK_OF_COAL:
case E_BLOCK_BLUE_SHULKER_BOX:
case E_BLOCK_BONE_BLOCK:
case E_BLOCK_BRICK:
case E_BLOCK_BRICK_STAIRS:
case E_BLOCK_BROWN_SHULKER_BOX:
case E_BLOCK_CLAY:
case E_BLOCK_COAL_ORE:
case E_BLOCK_COBBLESTONE:
case E_BLOCK_COBBLESTONE_STAIRS:
case E_BLOCK_COBBLESTONE_WALL:
case E_BLOCK_CYAN_SHULKER_BOX:
case E_BLOCK_DIAMOND_ORE:
case E_BLOCK_DISPENSER:
case E_BLOCK_DOUBLE_RED_SANDSTONE_SLAB:
case E_BLOCK_DOUBLE_STONE_SLAB:
case E_BLOCK_DROPPER:
case E_BLOCK_EMERALD_ORE:
case E_BLOCK_ENCHANTMENT_TABLE:
case E_BLOCK_END_BRICKS:
case E_BLOCK_END_PORTAL_FRAME:
case E_BLOCK_END_STONE:
case E_BLOCK_ENDER_CHEST:
case E_BLOCK_FURNACE:
case E_BLOCK_GOLD_ORE:
case E_BLOCK_GRAY_SHULKER_BOX:
case E_BLOCK_GREEN_SHULKER_BOX:
case E_BLOCK_IRON_ORE:
case E_BLOCK_LAPIS_ORE:
case E_BLOCK_LIGHT_BLUE_SHULKER_BOX:
case E_BLOCK_LIGHT_GRAY_SHULKER_BOX:
case E_BLOCK_LIME_SHULKER_BOX:
case E_BLOCK_LIT_FURNACE:
case E_BLOCK_MAGENTA_SHULKER_BOX:
case E_BLOCK_MAGMA:
case E_BLOCK_MOB_SPAWNER:
case E_BLOCK_MOSSY_COBBLESTONE:
case E_BLOCK_NETHER_BRICK:
case E_BLOCK_NETHER_BRICK_FENCE:
case E_BLOCK_NETHER_BRICK_STAIRS:
case E_BLOCK_NETHER_QUARTZ_ORE:
case E_BLOCK_NETHERRACK:
case E_BLOCK_OBSERVER:
case E_BLOCK_OBSIDIAN:
case E_BLOCK_ORANGE_SHULKER_BOX:
case E_BLOCK_PINK_SHULKER_BOX:
case E_BLOCK_PRISMARINE_BLOCK:
case E_BLOCK_PURPLE_SHULKER_BOX:
case E_BLOCK_PURPUR_BLOCK:
case E_BLOCK_PURPUR_DOUBLE_SLAB:
case E_BLOCK_PURPUR_PILLAR:
case E_BLOCK_PURPUR_SLAB:
case E_BLOCK_PURPUR_STAIRS:
case E_BLOCK_QUARTZ_BLOCK:
case E_BLOCK_QUARTZ_STAIRS:
case E_BLOCK_RED_NETHER_BRICK:
case E_BLOCK_RED_SANDSTONE:
case E_BLOCK_RED_SANDSTONE_SLAB:
case E_BLOCK_RED_SANDSTONE_STAIRS:
case E_BLOCK_RED_SHULKER_BOX:
case E_BLOCK_REDSTONE_ORE:
case E_BLOCK_REDSTONE_ORE_GLOWING:
case E_BLOCK_SANDSTONE:
case E_BLOCK_SANDSTONE_STAIRS:
case E_BLOCK_STONE:
case E_BLOCK_STONE_BRICK_STAIRS:
case E_BLOCK_STONE_BRICKS:
case E_BLOCK_STONE_PRESSURE_PLATE:
case E_BLOCK_STONE_SLAB:
case E_BLOCK_WHITE_SHULKER_BOX:
case E_BLOCK_YELLOW_SHULKER_BOX:
{
// TODO: add other stone-based blocks if needed
instrument = E_INST_BASS_DRUM;
sampleName = "note.bd";
break;

View File

@ -235,12 +235,29 @@ enum BLOCKTYPE
E_BLOCK_RED_NETHER_BRICK = 215,
E_BLOCK_BONE_BLOCK = 216,
E_BLOCK_STRUCTURE_VOID = 217,
E_BLOCK_OBSERVER = 218,
E_BLOCK_WHITE_SHULKER_BOX = 219,
E_BLOCK_ORANGE_SHULKER_BOX = 220,
E_BLOCK_MAGENTA_SHULKER_BOX = 221,
E_BLOCK_LIGHT_BLUE_SHULKER_BOX = 222,
E_BLOCK_YELLOW_SHULKER_BOX = 223,
E_BLOCK_LIME_SHULKER_BOX = 224,
E_BLOCK_PINK_SHULKER_BOX = 225,
E_BLOCK_GRAY_SHULKER_BOX = 226,
E_BLOCK_LIGHT_GRAY_SHULKER_BOX = 227,
E_BLOCK_CYAN_SHULKER_BOX = 228,
E_BLOCK_PURPLE_SHULKER_BOX = 229,
E_BLOCK_BLUE_SHULKER_BOX = 230,
E_BLOCK_BROWN_SHULKER_BOX = 231,
E_BLOCK_GREEN_SHULKER_BOX = 232,
E_BLOCK_RED_SHULKER_BOX = 233,
E_BLOCK_BLACK_SHULKER_BOX = 234,
// ...
E_BLOCK_STRUCTURE_BLOCK = 255,
// Keep these two as the last values. Update the last block value to the last block with an id less than 255 when adding another block
// IsValidBlock() depends on this (255 gets checked additionally because there is a gap. See http://minecraft.gamepedia.com/Data_values#Block_IDs
E_BLOCK_NUMBER_OF_TYPES = E_BLOCK_STRUCTURE_VOID + 1, ///< Number of individual (different) blocktypes
E_BLOCK_NUMBER_OF_TYPES = E_BLOCK_BLACK_SHULKER_BOX + 1, ///< Number of individual (different) blocktypes
E_BLOCK_MAX_TYPE_ID = E_BLOCK_NUMBER_OF_TYPES - 1, ///< Maximum BlockType number used
// Synonym or ID compatibility
@ -439,11 +456,32 @@ enum ENUM_ITEM_ID
E_ITEM_RAW_MUTTON = 423,
E_ITEM_COOKED_MUTTON = 424,
E_ITEM_BANNER = 425,
E_ITEM_END_CRYSTAL = 426,
E_ITEM_SPRUCE_DOOR = 427,
E_ITEM_BIRCH_DOOR = 428,
E_ITEM_JUNGLE_DOOR = 429,
E_ITEM_ACACIA_DOOR = 430,
E_ITEM_DARK_OAK_DOOR = 431,
E_ITEM_CHORUS_FRUIT = 432,
E_ITEM_POPPED_CHORUS_FRUIT = 433,
E_ITEM_BEETROOT = 434,
E_ITEM_BEETROOT_SEEDS = 435,
E_ITEM_BEETROOT_SOUP = 436,
E_ITEM_DRAGON_BREATH = 437,
E_ITEM_SPLASH_POTION = 438,
E_ITEM_SPECTRAL_ARROW = 439,
E_ITEM_TIPPED_ARROW = 440,
E_ITEM_LINGERING_POTION = 441,
E_ITEM_SHIELD = 442,
E_ITEM_ELYTRA = 443,
E_ITEM_SPRUCE_BOAT = 444,
E_ITEM_BIRCH_BOAT = 445,
E_ITEM_JUNGLE_BOAT = 446,
E_ITEM_ACACIA_BOAT = 447,
E_ITEM_DARK_OAK_BOAT = 448,
E_ITEM_TOTEM_OF_UNDYING = 449,
E_ITEM_SHULKER_SHELL = 450,
E_ITEM_IRON_NUGGET = 452,
// Keep these two as the last values of the consecutive list, without a number - they will get their correct number assigned automagically by C++
// IsValidItem() depends on this!
@ -928,6 +966,7 @@ enum
E_META_HEAD_ZOMBIE = 2,
E_META_HEAD_PLAYER = 3,
E_META_HEAD_CREEPER = 4,
E_META_HEAD_DRAGON = 5,
// E_ITEM_RAW_FISH metas:
E_META_RAW_FISH_FISH = 0,

View File

@ -32,11 +32,13 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_DRAGON_EGG ].m_LightValue = 1;
a_Info[E_BLOCK_END_PORTAL ].m_LightValue = 15;
a_Info[E_BLOCK_END_PORTAL_FRAME ].m_LightValue = 1;
a_Info[E_BLOCK_END_ROD ].m_LightValue = 14;
a_Info[E_BLOCK_ENDER_CHEST ].m_LightValue = 7;
a_Info[E_BLOCK_FIRE ].m_LightValue = 15;
a_Info[E_BLOCK_GLOWSTONE ].m_LightValue = 15;
a_Info[E_BLOCK_JACK_O_LANTERN ].m_LightValue = 15;
a_Info[E_BLOCK_LAVA ].m_LightValue = 15;
a_Info[E_BLOCK_MAGMA ].m_LightValue = 3;
a_Info[E_BLOCK_NETHER_PORTAL ].m_LightValue = 11;
a_Info[E_BLOCK_REDSTONE_LAMP_ON ].m_LightValue = 15;
a_Info[E_BLOCK_REDSTONE_ORE_GLOWING].m_LightValue = 9;
@ -58,6 +60,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_BARRIER ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_BEACON ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_BED ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_BEETROOTS ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_BIG_FLOWER ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_BIRCH_DOOR ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_BIRCH_FENCE ].m_SpreadLightFalloff = 1;
@ -69,6 +72,8 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_CARPET ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_CARROTS ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_CAULDRON ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_CHORUS_FLOWER ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_CHORUS_PLANT ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_CHEST ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_COBBLESTONE_WALL ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_COCOA_POD ].m_SpreadLightFalloff = 1;
@ -86,6 +91,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_ENDER_CHEST ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_END_PORTAL ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_END_PORTAL_FRAME ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_END_ROD ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_FARMLAND ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_FENCE ].m_SpreadLightFalloff = 1;
a_Info[E_BLOCK_OAK_FENCE_GATE ].m_SpreadLightFalloff = 1;
@ -180,7 +186,11 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_BIRCH_DOOR ].m_Transparent = true;
a_Info[E_BLOCK_BIRCH_FENCE ].m_Transparent = true;
a_Info[E_BLOCK_BIRCH_FENCE_GATE ].m_Transparent = true;
a_Info[E_BLOCK_BLACK_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_BLOCK_OF_REDSTONE ].m_Transparent = true;
a_Info[E_BLOCK_BLUE_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_BROWN_MUSHROOM ].m_Transparent = true;
a_Info[E_BLOCK_BROWN_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_BREWING_STAND ].m_Transparent = true;
a_Info[E_BLOCK_CACTUS ].m_Transparent = true;
a_Info[E_BLOCK_CAKE ].m_Transparent = true;
@ -192,6 +202,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_COCOA_POD ].m_Transparent = true;
a_Info[E_BLOCK_COBWEB ].m_Transparent = true;
a_Info[E_BLOCK_CROPS ].m_Transparent = true;
a_Info[E_BLOCK_CYAN_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_DANDELION ].m_Transparent = true;
a_Info[E_BLOCK_DARK_OAK_DOOR ].m_Transparent = true;
a_Info[E_BLOCK_DARK_OAK_FENCE ].m_Transparent = true;
@ -204,6 +215,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_ENDER_CHEST ].m_Transparent = true;
a_Info[E_BLOCK_END_PORTAL ].m_Transparent = true;
a_Info[E_BLOCK_END_PORTAL_FRAME ].m_Transparent = true;
a_Info[E_BLOCK_FARMLAND ].m_Transparent = true;
a_Info[E_BLOCK_FENCE ].m_Transparent = true;
a_Info[E_BLOCK_OAK_FENCE_GATE ].m_Transparent = true;
a_Info[E_BLOCK_FIRE ].m_Transparent = true;
@ -211,6 +223,8 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_FLOWER_POT ].m_Transparent = true;
a_Info[E_BLOCK_GLASS ].m_Transparent = true;
a_Info[E_BLOCK_GLASS_PANE ].m_Transparent = true;
a_Info[E_BLOCK_GLOWSTONE ].m_Transparent = true;
a_Info[E_BLOCK_GRAY_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_HEAD ].m_Transparent = true;
a_Info[E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE].m_Transparent = true;
a_Info[E_BLOCK_HOPPER ].m_Transparent = true;
@ -219,6 +233,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_IRON_BARS ].m_Transparent = true;
a_Info[E_BLOCK_IRON_DOOR ].m_Transparent = true;
a_Info[E_BLOCK_IRON_TRAPDOOR ].m_Transparent = true;
a_Info[E_BLOCK_JACK_O_LANTERN ].m_Transparent = true;
a_Info[E_BLOCK_JUNGLE_DOOR ].m_Transparent = true;
a_Info[E_BLOCK_JUNGLE_FENCE ].m_Transparent = true;
a_Info[E_BLOCK_JUNGLE_FENCE_GATE ].m_Transparent = true;
@ -227,22 +242,33 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_LEAVES ].m_Transparent = true;
a_Info[E_BLOCK_LEVER ].m_Transparent = true;
a_Info[E_BLOCK_LILY_PAD ].m_Transparent = true;
a_Info[E_BLOCK_LIGHT_BLUE_SHULKER_BOX].m_Transparent = true;
a_Info[E_BLOCK_LIGHT_GRAY_SHULKER_BOX].m_Transparent = true;
a_Info[E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE].m_Transparent = true;
a_Info[E_BLOCK_LIME_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_LIT_FURNACE ].m_Transparent = true;
a_Info[E_BLOCK_MAGENTA_SHULKER_BOX].m_Transparent = true;
a_Info[E_BLOCK_MELON_STEM ].m_Transparent = true;
a_Info[E_BLOCK_MOB_SPAWNER ].m_Transparent = true;
a_Info[E_BLOCK_NETHER_BRICK_FENCE ].m_Transparent = true;
a_Info[E_BLOCK_NETHER_PORTAL ].m_Transparent = true;
a_Info[E_BLOCK_NETHER_WART ].m_Transparent = true;
a_Info[E_BLOCK_NEW_LEAVES ].m_Transparent = true;
a_Info[E_BLOCK_RED_SANDSTONE_SLAB ].m_Transparent = true;
a_Info[E_BLOCK_ORANGE_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_PINK_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_PISTON ].m_Transparent = true;
a_Info[E_BLOCK_PISTON_EXTENSION ].m_Transparent = true;
a_Info[E_BLOCK_PISTON_MOVED_BLOCK ].m_Transparent = true;
a_Info[E_BLOCK_POTATOES ].m_Transparent = true;
a_Info[E_BLOCK_POWERED_RAIL ].m_Transparent = true;
a_Info[E_BLOCK_PUMPKIN_STEM ].m_Transparent = true;
a_Info[E_BLOCK_PURPLE_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_PURPUR_SLAB ].m_Transparent = true;
a_Info[E_BLOCK_RAIL ].m_Transparent = true;
a_Info[E_BLOCK_RED_MUSHROOM ].m_Transparent = true;
a_Info[E_BLOCK_RED_SANDSTONE_SLAB ].m_Transparent = true;
a_Info[E_BLOCK_RED_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_REDSTONE_ORE_GLOWING].m_Transparent = true;
a_Info[E_BLOCK_REDSTONE_REPEATER_OFF].m_Transparent = true;
a_Info[E_BLOCK_REDSTONE_REPEATER_ON].m_Transparent = true;
a_Info[E_BLOCK_REDSTONE_TORCH_OFF ].m_Transparent = true;
@ -273,20 +299,24 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_WALL_BANNER ].m_Transparent = true;
a_Info[E_BLOCK_WALLSIGN ].m_Transparent = true;
a_Info[E_BLOCK_WATER ].m_Transparent = true;
a_Info[E_BLOCK_WHITE_SHULKER_BOX ].m_Transparent = true;
a_Info[E_BLOCK_WOODEN_BUTTON ].m_Transparent = true;
a_Info[E_BLOCK_OAK_DOOR ].m_Transparent = true;
a_Info[E_BLOCK_WOODEN_PRESSURE_PLATE].m_Transparent = true;
a_Info[E_BLOCK_WOODEN_SLAB ].m_Transparent = true;
a_Info[E_BLOCK_YELLOW_SHULKER_BOX ].m_Transparent = true;
// One hit break blocks:
a_Info[E_BLOCK_ACTIVE_COMPARATOR ].m_OneHitDig = true;
a_Info[E_BLOCK_BEETROOTS ].m_OneHitDig = true;
a_Info[E_BLOCK_BIG_FLOWER ].m_OneHitDig = true;
a_Info[E_BLOCK_BROWN_MUSHROOM ].m_OneHitDig = true;
a_Info[E_BLOCK_CARROTS ].m_OneHitDig = true;
a_Info[E_BLOCK_CROPS ].m_OneHitDig = true;
a_Info[E_BLOCK_DANDELION ].m_OneHitDig = true;
a_Info[E_BLOCK_DEAD_BUSH ].m_OneHitDig = true;
a_Info[E_BLOCK_END_ROD ].m_OneHitDig = true;
a_Info[E_BLOCK_FIRE ].m_OneHitDig = true;
a_Info[E_BLOCK_FLOWER ].m_OneHitDig = true;
a_Info[E_BLOCK_FLOWER_POT ].m_OneHitDig = true;
@ -316,42 +346,58 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_AIR ].m_PistonBreakable = true;
a_Info[E_BLOCK_BED ].m_PistonBreakable = true;
a_Info[E_BLOCK_BIG_FLOWER ].m_PistonBreakable = true;
a_Info[E_BLOCK_BLACK_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_BLUE_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_BROWN_MUSHROOM ].m_PistonBreakable = true;
a_Info[E_BLOCK_BROWN_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_CACTUS ].m_PistonBreakable = true;
a_Info[E_BLOCK_CAKE ].m_PistonBreakable = true;
a_Info[E_BLOCK_CARROTS ].m_PistonBreakable = true;
a_Info[E_BLOCK_CHORUS_FLOWER ].m_PistonBreakable = true;
a_Info[E_BLOCK_CHORUS_PLANT ].m_PistonBreakable = true;
a_Info[E_BLOCK_COCOA_POD ].m_PistonBreakable = true;
a_Info[E_BLOCK_COBWEB ].m_PistonBreakable = true;
a_Info[E_BLOCK_CROPS ].m_PistonBreakable = true;
a_Info[E_BLOCK_CYAN_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_DANDELION ].m_PistonBreakable = true;
a_Info[E_BLOCK_DEAD_BUSH ].m_PistonBreakable = true;
a_Info[E_BLOCK_DRAGON_EGG ].m_PistonBreakable = true;
a_Info[E_BLOCK_FIRE ].m_PistonBreakable = true;
a_Info[E_BLOCK_FLOWER ].m_PistonBreakable = true;
a_Info[E_BLOCK_FLOWER_POT ].m_PistonBreakable = true;
a_Info[E_BLOCK_GRAY_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_GREEN_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_HEAD ].m_PistonBreakable = true;
a_Info[E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE].m_PistonBreakable = true;
a_Info[E_BLOCK_INACTIVE_COMPARATOR ].m_PistonBreakable = true;
a_Info[E_BLOCK_IRON_DOOR ].m_PistonBreakable = true;
a_Info[E_BLOCK_IRON_TRAPDOOR ].m_PistonBreakable = true;
a_Info[E_BLOCK_JACK_O_LANTERN ].m_PistonBreakable = true;
a_Info[E_BLOCK_LIGHT_BLUE_SHULKER_BOX].m_PistonBreakable = true;
a_Info[E_BLOCK_LIGHT_GRAY_SHULKER_BOX].m_PistonBreakable = true;
a_Info[E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE].m_PistonBreakable = true;
a_Info[E_BLOCK_LILY_PAD ].m_PistonBreakable = true;
a_Info[E_BLOCK_LIME_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_LADDER ].m_PistonBreakable = true;
a_Info[E_BLOCK_LAVA ].m_PistonBreakable = true;
a_Info[E_BLOCK_LEVER ].m_PistonBreakable = true;
a_Info[E_BLOCK_MAGENTA_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_MELON ].m_PistonBreakable = true;
a_Info[E_BLOCK_MELON_STEM ].m_PistonBreakable = true;
a_Info[E_BLOCK_NETHER_WART ].m_PistonBreakable = true;
a_Info[E_BLOCK_ORANGE_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_PINK_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_POTATOES ].m_PistonBreakable = true;
a_Info[E_BLOCK_PUMPKIN ].m_PistonBreakable = true;
a_Info[E_BLOCK_PUMPKIN_STEM ].m_PistonBreakable = true;
a_Info[E_BLOCK_PURPLE_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_REDSTONE_REPEATER_OFF].m_PistonBreakable = true;
a_Info[E_BLOCK_REDSTONE_REPEATER_ON].m_PistonBreakable = true;
a_Info[E_BLOCK_REDSTONE_TORCH_OFF ].m_PistonBreakable = true;
a_Info[E_BLOCK_REDSTONE_TORCH_ON ].m_PistonBreakable = true;
a_Info[E_BLOCK_REDSTONE_WIRE ].m_PistonBreakable = true;
a_Info[E_BLOCK_RED_MUSHROOM ].m_PistonBreakable = true;
a_Info[E_BLOCK_RED_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_REEDS ].m_PistonBreakable = true;
a_Info[E_BLOCK_SAPLING ].m_PistonBreakable = true;
a_Info[E_BLOCK_SIGN_POST ].m_PistonBreakable = true;
@ -368,17 +414,21 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_VINES ].m_PistonBreakable = true;
a_Info[E_BLOCK_WALLSIGN ].m_PistonBreakable = true;
a_Info[E_BLOCK_WATER ].m_PistonBreakable = true;
a_Info[E_BLOCK_WHITE_SHULKER_BOX ].m_PistonBreakable = true;
a_Info[E_BLOCK_WOODEN_BUTTON ].m_PistonBreakable = true;
a_Info[E_BLOCK_OAK_DOOR ].m_PistonBreakable = true;
a_Info[E_BLOCK_WOODEN_PRESSURE_PLATE].m_PistonBreakable = true;
a_Info[E_BLOCK_YELLOW_SHULKER_BOX ].m_PistonBreakable = true;
// Blocks that can be snowed over:
a_Info[E_BLOCK_BEDROCK ].m_IsSnowable = true;
a_Info[E_BLOCK_BLOCK_OF_COAL ].m_IsSnowable = true;
a_Info[E_BLOCK_BLOCK_OF_REDSTONE ].m_IsSnowable = true;
a_Info[E_BLOCK_BONE_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_BOOKCASE ].m_IsSnowable = true;
a_Info[E_BLOCK_BRICK ].m_IsSnowable = true;
a_Info[E_BLOCK_CHAIN_COMMAND_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_CLAY ].m_IsSnowable = true;
a_Info[E_BLOCK_CRAFTING_TABLE ].m_IsSnowable = true;
a_Info[E_BLOCK_COAL_ORE ].m_IsSnowable = true;
@ -394,6 +444,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_DROPPER ].m_IsSnowable = true;
a_Info[E_BLOCK_EMERALD_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_EMERALD_ORE ].m_IsSnowable = true;
a_Info[E_BLOCK_END_BRICKS ].m_IsSnowable = true;
a_Info[E_BLOCK_END_STONE ].m_IsSnowable = true;
a_Info[E_BLOCK_FURNACE ].m_IsSnowable = true;
a_Info[E_BLOCK_GLOWSTONE ].m_IsSnowable = true;
@ -419,20 +470,27 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_MYCELIUM ].m_IsSnowable = true;
a_Info[E_BLOCK_NETHER_BRICK ].m_IsSnowable = true;
a_Info[E_BLOCK_NETHER_QUARTZ_ORE ].m_IsSnowable = true;
a_Info[E_BLOCK_NETHER_WART_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_NETHERRACK ].m_IsSnowable = true;
a_Info[E_BLOCK_NEW_LEAVES ].m_IsSnowable = true;
a_Info[E_BLOCK_NEW_LOG ].m_IsSnowable = true;
a_Info[E_BLOCK_NOTE_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_OBSERVER ].m_IsSnowable = true;
a_Info[E_BLOCK_OBSIDIAN ].m_IsSnowable = true;
a_Info[E_BLOCK_PLANKS ].m_IsSnowable = true;
a_Info[E_BLOCK_PRISMARINE_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_PUMPKIN ].m_IsSnowable = true;
a_Info[E_BLOCK_PURPUR_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_PURPUR_DOUBLE_SLAB ].m_IsSnowable = true;
a_Info[E_BLOCK_PURPUR_PILLAR ].m_IsSnowable = true;
a_Info[E_BLOCK_QUARTZ_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_RED_NETHER_BRICK ].m_IsSnowable = true;
a_Info[E_BLOCK_RED_SANDSTONE ].m_IsSnowable = true;
a_Info[E_BLOCK_REDSTONE_LAMP_OFF ].m_IsSnowable = true;
a_Info[E_BLOCK_REDSTONE_LAMP_ON ].m_IsSnowable = true;
a_Info[E_BLOCK_REDSTONE_ORE ].m_IsSnowable = true;
a_Info[E_BLOCK_REDSTONE_ORE_GLOWING].m_IsSnowable = true;
a_Info[E_BLOCK_REPEATING_COMMAND_BLOCK].m_IsSnowable = true;
a_Info[E_BLOCK_SAND ].m_IsSnowable = true;
a_Info[E_BLOCK_SANDSTONE ].m_IsSnowable = true;
a_Info[E_BLOCK_SEA_LANTERN ].m_IsSnowable = true;
@ -443,6 +501,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_STAINED_CLAY ].m_IsSnowable = true;
a_Info[E_BLOCK_STONE ].m_IsSnowable = true;
a_Info[E_BLOCK_STONE_BRICKS ].m_IsSnowable = true;
a_Info[E_BLOCK_STRUCTURE_BLOCK ].m_IsSnowable = true;
a_Info[E_BLOCK_TNT ].m_IsSnowable = true;
a_Info[E_BLOCK_WOOL ].m_IsSnowable = true;
@ -452,11 +511,15 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_BIG_FLOWER ].m_IsSolid = false;
a_Info[E_BLOCK_BROWN_MUSHROOM ].m_IsSolid = false;
a_Info[E_BLOCK_CARROTS ].m_IsSolid = false;
a_Info[E_BLOCK_CHORUS_PLANT ].m_IsSolid = false;
a_Info[E_BLOCK_CHORUS_FLOWER ].m_IsSolid = false;
a_Info[E_BLOCK_COBWEB ].m_IsSolid = false;
a_Info[E_BLOCK_CROPS ].m_IsSolid = false;
a_Info[E_BLOCK_DANDELION ].m_IsSolid = false;
a_Info[E_BLOCK_DETECTOR_RAIL ].m_IsSolid = false;
a_Info[E_BLOCK_END_GATEWAY ].m_IsSolid = false;
a_Info[E_BLOCK_END_PORTAL ].m_IsSolid = false;
a_Info[E_BLOCK_END_ROD ].m_IsSolid = false;
a_Info[E_BLOCK_FIRE ].m_IsSolid = false;
a_Info[E_BLOCK_FLOWER ].m_IsSolid = false;
a_Info[E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE].m_IsSolid = false;
@ -506,8 +569,10 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_BEDROCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_BLOCK_OF_COAL ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_BLOCK_OF_REDSTONE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_BONE_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_BOOKCASE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_BRICK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_CHAIN_COMMAND_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_CLAY ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_COAL_ORE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_COBBLESTONE ].m_FullyOccupiesVoxel = true;
@ -517,12 +582,15 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_DIAMOND_ORE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_DIRT ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_DISPENSER ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_DOUBLE_RED_SANDSTONE_SLAB].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_DOUBLE_STONE_SLAB ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_DOUBLE_WOODEN_SLAB ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_DROPPER ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_EMERALD_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_EMERALD_ORE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_END_BRICKS ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_END_STONE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_FROSTED_ICE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_FURNACE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_GLOWSTONE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_GOLD_BLOCK ].m_FullyOccupiesVoxel = true;
@ -541,6 +609,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_LAPIS_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_LAPIS_ORE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_LOG ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_MAGMA ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_MELON ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_MOB_SPAWNER ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_MOSSY_COBBLESTONE ].m_FullyOccupiesVoxel = true;
@ -548,19 +617,26 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_NETHERRACK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_NETHER_BRICK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_NETHER_QUARTZ_ORE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_NETHER_WART_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_NEW_LOG ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_NOTE_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_OBSERVER ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_OBSIDIAN ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PACKED_ICE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PLANKS ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PRISMARINE_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PUMPKIN ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PURPUR_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PURPUR_PILLAR ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_PURPUR_DOUBLE_SLAB ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_QUARTZ_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_RED_NETHER_BRICK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_RED_SANDSTONE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_REDSTONE_LAMP_OFF ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_REDSTONE_LAMP_ON ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_REDSTONE_ORE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_REDSTONE_ORE_GLOWING].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_REPEATING_COMMAND_BLOCK].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_SANDSTONE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_SAND ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_SILVERFISH_EGG ].m_FullyOccupiesVoxel = true;
@ -568,6 +644,7 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_STAINED_CLAY ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_STONE ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_STONE_BRICKS ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_STRUCTURE_BLOCK ].m_FullyOccupiesVoxel = true;
a_Info[E_BLOCK_WOOL ].m_FullyOccupiesVoxel = true;
@ -596,6 +673,8 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_BED ].m_BlockHeight = 0.5625; // 9 pixels
a_Info[E_BLOCK_CAKE ].m_BlockHeight = 0.5; // 8 pixels
a_Info[E_BLOCK_ENCHANTMENT_TABLE ].m_BlockHeight = 0.75; // 12 pixels
a_Info[E_BLOCK_PURPUR_SLAB ].m_BlockHeight = 0.5;
a_Info[E_BLOCK_RED_SANDSTONE_SLAB ].m_BlockHeight = 0.5;
a_Info[E_BLOCK_STONE_SLAB ].m_BlockHeight = 0.5;
a_Info[E_BLOCK_WOODEN_SLAB ].m_BlockHeight = 0.5;
a_Info[E_BLOCK_SNOW ].m_BlockHeight = 0.125; // one layer is 1 / 8 (2 pixels) tall
@ -803,6 +882,8 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_ACACIA_DOOR ].m_PlaceSound = "dig.wood";
a_Info[E_BLOCK_DARK_OAK_DOOR ].m_PlaceSound = "dig.wood";
// Block hardness:
a_Info[E_BLOCK_AIR ].m_Hardness = 0.0f;
a_Info[E_BLOCK_STONE ].m_Hardness = 1.5f;
a_Info[E_BLOCK_GRASS ].m_Hardness = 0.6f;
@ -1001,6 +1082,45 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_JUNGLE_DOOR ].m_Hardness = 3.0f;
a_Info[E_BLOCK_ACACIA_DOOR ].m_Hardness = 3.0f;
a_Info[E_BLOCK_DARK_OAK_DOOR ].m_Hardness = 3.0f;
a_Info[E_BLOCK_END_ROD ].m_Hardness = 0.0f;
a_Info[E_BLOCK_CHORUS_PLANT ].m_Hardness = 0.4f;
a_Info[E_BLOCK_CHORUS_FLOWER ].m_Hardness = 0.4f;
a_Info[E_BLOCK_PURPUR_BLOCK ].m_Hardness = 1.5f;
a_Info[E_BLOCK_PURPUR_DOUBLE_SLAB ].m_Hardness = 2.0f;
a_Info[E_BLOCK_PURPUR_PILLAR ].m_Hardness = 1.5f;
a_Info[E_BLOCK_PURPUR_SLAB ].m_Hardness = 2.0f;
a_Info[E_BLOCK_PURPUR_STAIRS ].m_Hardness = 1.5f;
a_Info[E_BLOCK_END_BRICKS ].m_Hardness = 0.8f;
a_Info[E_BLOCK_BEETROOTS ].m_Hardness = 0.0f;
a_Info[E_BLOCK_GRASS_PATH ].m_Hardness = 0.6f;
a_Info[E_BLOCK_END_GATEWAY ].m_Hardness = -1.0f;
a_Info[E_BLOCK_REPEATING_COMMAND_BLOCK].m_Hardness = -1.0f;
a_Info[E_BLOCK_CHAIN_COMMAND_BLOCK ].m_Hardness = -1.0f;
a_Info[E_BLOCK_FROSTED_ICE ].m_Hardness = 0.5f;
a_Info[E_BLOCK_MAGMA ].m_Hardness = 0.5f;
a_Info[E_BLOCK_NETHER_WART_BLOCK ].m_Hardness = 1.0f;
a_Info[E_BLOCK_RED_NETHER_BRICK ].m_Hardness = 2.0f;
a_Info[E_BLOCK_BONE_BLOCK ].m_Hardness = 2.0f;
a_Info[E_BLOCK_END_BRICKS ].m_Hardness = 0.8f;
a_Info[E_BLOCK_STRUCTURE_VOID ].m_Hardness = 0.0f;
a_Info[E_BLOCK_OBSERVER ].m_Hardness = 3.5f;
a_Info[E_BLOCK_WHITE_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_ORANGE_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_MAGENTA_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_LIGHT_BLUE_SHULKER_BOX].m_Hardness = 0.2f;
a_Info[E_BLOCK_YELLOW_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_LIME_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_PINK_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_GRAY_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_LIGHT_GRAY_SHULKER_BOX].m_Hardness = 0.2f;
a_Info[E_BLOCK_CYAN_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_PURPLE_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_BLUE_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_BROWN_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_GREEN_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_RED_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_BLACK_SHULKER_BOX ].m_Hardness = 0.2f;
a_Info[E_BLOCK_STRUCTURE_BLOCK ].m_Hardness = -1.0f;
}

View File

@ -8,7 +8,8 @@
/** Common class that takes care of carrots, potatoes and wheat */
/** Common class that takes care of beetroots, carrots, potatoes and wheat */
template <NIBBLETYPE RipeMeta>
class cBlockCropsHandler :
public cBlockPlant
{
@ -23,11 +24,20 @@ public:
{
cFastRandom rand;
if (a_Meta == 0x7)
// Beetroots have three stages before fully grown
if (a_Meta >= RipeMeta)
{
// Is fully grown, drop the entire produce:
switch (m_BlockType)
{
case E_BLOCK_BEETROOTS:
{
char SeedCount = static_cast<char>(1 + (rand.NextInt(3) + rand.NextInt(3)) / 2);
a_Pickups.push_back(cItem(E_ITEM_BEETROOT_SEEDS, SeedCount, 0));
char BeetrootCount = static_cast<char>(1 + (rand.NextInt(3) + rand.NextInt(3)) / 2);
a_Pickups.push_back(cItem(E_ITEM_BEETROOT, BeetrootCount, 0)); // [1 .. 3] with high preference of 2
break;
}
case E_BLOCK_CROPS:
{
a_Pickups.push_back(cItem(E_ITEM_WHEAT, 1, 0));
@ -61,9 +71,10 @@ public:
// Drop 1 item of whatever is growing
switch (m_BlockType)
{
case E_BLOCK_CROPS: a_Pickups.push_back(cItem(E_ITEM_SEEDS, 1, 0)); break;
case E_BLOCK_CARROTS: a_Pickups.push_back(cItem(E_ITEM_CARROT, 1, 0)); break;
case E_BLOCK_POTATOES: a_Pickups.push_back(cItem(E_ITEM_POTATO, 1, 0)); break;
case E_BLOCK_BEETROOTS: a_Pickups.push_back(cItem(E_ITEM_BEETROOT_SEEDS, 1, 0)); break;
case E_BLOCK_CROPS: a_Pickups.push_back(cItem(E_ITEM_SEEDS, 1, 0)); break;
case E_BLOCK_CARROTS: a_Pickups.push_back(cItem(E_ITEM_CARROT, 1, 0)); break;
case E_BLOCK_POTATOES: a_Pickups.push_back(cItem(E_ITEM_POTATO, 1, 0)); break;
default:
{
ASSERT(!"Unhandled block type");
@ -82,7 +93,7 @@ public:
// If there is still room to grow and the plant can grow, then grow.
// Otherwise if the plant needs to die, then dig it up
if ((Meta < 7) && (Action == paGrowth))
if ((Meta < RipeMeta) && (Action == paGrowth))
{
a_Chunk.FastSetBlock(a_RelX, a_RelY, a_RelZ, m_BlockType, ++Meta);
}

View File

@ -48,6 +48,7 @@ public:
BLOCKTYPE UpperBlock = (a_RelY >= cChunkDef::Height - 1) ? static_cast<BLOCKTYPE>(E_BLOCK_AIR) : a_Chunk.GetBlock(a_RelX, a_RelY + 1, a_RelZ);
switch (UpperBlock)
{
case E_BLOCK_BEETROOTS:
case E_BLOCK_CROPS:
case E_BLOCK_POTATOES:
case E_BLOCK_CARROTS:
@ -131,6 +132,7 @@ public:
virtual bool CanSustainPlant(BLOCKTYPE a_Plant) override
{
return (
(a_Plant == E_BLOCK_BEETROOTS) ||
(a_Plant == E_BLOCK_CROPS) ||
(a_Plant == E_BLOCK_CARROTS) ||
(a_Plant == E_BLOCK_POTATOES) ||

View File

@ -61,6 +61,7 @@ public:
virtual bool CanSustainPlant(BLOCKTYPE a_Plant) override
{
return (
(a_Plant == E_BLOCK_BEETROOTS) ||
(a_Plant == E_BLOCK_CROPS) ||
(a_Plant == E_BLOCK_CARROTS) ||
(a_Plant == E_BLOCK_POTATOES) ||

View File

@ -187,6 +187,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_ANVIL: return new cBlockAnvilHandler (a_BlockType);
case E_BLOCK_BEACON: return new cBlockEntityHandler (a_BlockType);
case E_BLOCK_BED: return new cBlockBedHandler (a_BlockType);
case E_BLOCK_BEETROOTS: return new cBlockCropsHandler<4> (a_BlockType); // 4 stages of growth
case E_BLOCK_BIG_FLOWER: return new cBlockBigFlowerHandler (a_BlockType);
case E_BLOCK_BIRCH_DOOR: return new cBlockDoorHandler (a_BlockType);
case E_BLOCK_BIRCH_FENCE_GATE: return new cBlockFenceGateHandler (a_BlockType);
@ -196,9 +197,10 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_BROWN_MUSHROOM: return new cBlockMushroomHandler (a_BlockType);
case E_BLOCK_CACTUS: return new cBlockCactusHandler (a_BlockType);
case E_BLOCK_CAKE: return new cBlockCakeHandler (a_BlockType);
case E_BLOCK_CARROTS: return new cBlockCropsHandler (a_BlockType);
case E_BLOCK_CARROTS: return new cBlockCropsHandler<8> (a_BlockType); // 8 stages of growth
case E_BLOCK_CARPET: return new cBlockCarpetHandler (a_BlockType);
case E_BLOCK_CAULDRON: return new cBlockCauldronHandler (a_BlockType);
case E_BLOCK_CHAIN_COMMAND_BLOCK: return new cBlockCommandBlockHandler (a_BlockType);
case E_BLOCK_CHEST: return new cBlockChestHandler (a_BlockType);
case E_BLOCK_CLAY: return new cBlockOreHandler (a_BlockType);
case E_BLOCK_COAL_ORE: return new cBlockOreHandler (a_BlockType);
@ -208,7 +210,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_COBBLESTONE: return new cBlockStoneHandler (a_BlockType);
case E_BLOCK_COBBLESTONE_STAIRS: return new cBlockStairsHandler (a_BlockType);
case E_BLOCK_COBWEB: return new cBlockCobWebHandler (a_BlockType);
case E_BLOCK_CROPS: return new cBlockCropsHandler (a_BlockType);
case E_BLOCK_CROPS: return new cBlockCropsHandler<8> (a_BlockType); // 8 stages of growth
case E_BLOCK_DARK_OAK_DOOR: return new cBlockDoorHandler (a_BlockType);
case E_BLOCK_DARK_OAK_FENCE_GATE: return new cBlockFenceGateHandler (a_BlockType);
case E_BLOCK_DARK_OAK_WOOD_STAIRS: return new cBlockStairsHandler (a_BlockType);
@ -225,7 +227,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_ENCHANTMENT_TABLE: return new cBlockEnchantmentTableHandler(a_BlockType);
case E_BLOCK_ENDER_CHEST: return new cBlockEnderchestHandler (a_BlockType);
case E_BLOCK_FARMLAND: return new cBlockFarmlandHandler (a_BlockType);
case E_BLOCK_OAK_FENCE_GATE: return new cBlockFenceGateHandler (a_BlockType);
case E_BLOCK_FROSTED_ICE: return new cBlockIceHandler (a_BlockType);
case E_BLOCK_FIRE: return new cBlockFireHandler (a_BlockType);
case E_BLOCK_FLOWER_POT: return new cBlockFlowerPotHandler (a_BlockType);
case E_BLOCK_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
@ -271,13 +273,18 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_NEW_LOG: return new cBlockSidewaysHandler (a_BlockType);
case E_BLOCK_RED_SANDSTONE_SLAB: return new cBlockSlabHandler (a_BlockType);
case E_BLOCK_NOTE_BLOCK: return new cBlockEntityHandler (a_BlockType);
case E_BLOCK_OAK_FENCE_GATE: return new cBlockFenceGateHandler (a_BlockType);
case E_BLOCK_PACKED_ICE: return new cBlockIceHandler (a_BlockType);
case E_BLOCK_PISTON: return new cBlockPistonHandler (a_BlockType);
case E_BLOCK_PISTON_EXTENSION: return new cBlockPistonHeadHandler;
case E_BLOCK_PLANKS: return new cBlockPlanksHandler (a_BlockType);
case E_BLOCK_POTATOES: return new cBlockCropsHandler (a_BlockType);
case E_BLOCK_POTATOES: return new cBlockCropsHandler<8> (a_BlockType); // 8 stages of growth
case E_BLOCK_POWERED_RAIL: return new cBlockRailHandler (a_BlockType);
case E_BLOCK_PUMPKIN: return new cBlockPumpkinHandler (a_BlockType);
case E_BLOCK_PUMPKIN_STEM: return new cBlockStemsHandler (a_BlockType);
case E_BLOCK_PURPUR_DOUBLE_SLAB: return new cBlockDoubleSlabHandler (a_BlockType);
case E_BLOCK_PURPUR_SLAB: return new cBlockSlabHandler (a_BlockType);
case E_BLOCK_PURPUR_STAIRS: return new cBlockStairsHandler (a_BlockType);
case E_BLOCK_QUARTZ_BLOCK: return new cBlockQuartzHandler (a_BlockType);
case E_BLOCK_QUARTZ_STAIRS: return new cBlockStairsHandler (a_BlockType);
case E_BLOCK_RAIL: return new cBlockRailHandler (a_BlockType);
@ -292,6 +299,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_REDSTONE_WIRE: return new cBlockRedstoneHandler (a_BlockType);
case E_BLOCK_RED_MUSHROOM: return new cBlockMushroomHandler (a_BlockType);
case E_BLOCK_RED_ROSE: return new cBlockFlowerHandler (a_BlockType);
case E_BLOCK_REPEATING_COMMAND_BLOCK: return new cBlockCommandBlockHandler (a_BlockType);
case E_BLOCK_SAND: return new cBlockSandHandler (a_BlockType);
case E_BLOCK_SANDSTONE_STAIRS: return new cBlockStairsHandler (a_BlockType);
case E_BLOCK_SAPLING: return new cBlockSaplingHandler (a_BlockType);
@ -456,6 +464,7 @@ void cBlockHandler::DropBlock(cChunkInterface & a_ChunkInterface, cWorldInterfac
case E_BLOCK_ACACIA_DOOR:
case E_BLOCK_ACTIVE_COMPARATOR:
case E_BLOCK_BED: