mirror of
https://github.com/cuberite/cuberite.git
synced 2025-01-09 04:19:26 +08:00
Prepare for 1.15+ (#4856)
+ Add type-safe container for states * Split registry Blocks into BlockTypes, BlockStates so the block types enumeration can be #included without too much penalty * Ensure Registry uses type-safe container
This commit is contained in:
parent
5b6bed6b00
commit
9518a27357
27
src/BlockState.h
Normal file
27
src/BlockState.h
Normal file
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "Registries/BlockTypes.h"
|
||||
|
||||
struct BlockState
|
||||
{
|
||||
constexpr BlockState(uint_least16_t StateID) :
|
||||
ID(StateID)
|
||||
{
|
||||
}
|
||||
|
||||
/** Gets the block type of this block state. */
|
||||
BlockType Type() const;
|
||||
|
||||
bool operator == (BlockState Block) const
|
||||
{
|
||||
return ID == Block.ID;
|
||||
}
|
||||
|
||||
bool operator != (BlockState Block) const
|
||||
{
|
||||
return ID != Block.ID;
|
||||
}
|
||||
|
||||
/** The state ID of the block state. */
|
||||
uint_least16_t ID;
|
||||
};
|
@ -72,6 +72,7 @@ target_sources(
|
||||
BlockArea.h
|
||||
BlockInServerPluginInterface.h
|
||||
BlockInfo.h
|
||||
BlockState.h
|
||||
BlockTracer.h
|
||||
BlockType.h
|
||||
BrewingRecipes.h
|
||||
|
@ -41,10 +41,11 @@ local g_ShouldProcessExt =
|
||||
--- The list of files not to be processed:
|
||||
local g_IgnoredFiles =
|
||||
{
|
||||
"Bindings/Bindings.h",
|
||||
"Bindings/Bindings.cpp",
|
||||
"Bindings/Bindings.h",
|
||||
"Bindings/LuaState_Implementation.cpp",
|
||||
"Registries/Blocks.h"
|
||||
"Registries/BlockStates.cpp",
|
||||
"Registries/BlockStates.h"
|
||||
}
|
||||
|
||||
--- The list of files not to be processed, as a dictionary (filename => true), built from g_IgnoredFiles
|
||||
|
@ -42,17 +42,17 @@ namespace
|
||||
|
||||
auto Palette393(const BLOCKTYPE a_BlockType, const NIBBLETYPE a_Meta)
|
||||
{
|
||||
return Palette_1_13::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
return Palette_1_13::From(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
}
|
||||
|
||||
auto Palette401(const BLOCKTYPE a_BlockType, const NIBBLETYPE a_Meta)
|
||||
{
|
||||
return Palette_1_13_1::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
return Palette_1_13_1::From(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
}
|
||||
|
||||
auto Palette477(const BLOCKTYPE a_BlockType, const NIBBLETYPE a_Meta)
|
||||
{
|
||||
return Palette_1_14::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
return Palette_1_14::From(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
}
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../Registries/Items.h"
|
||||
#include "../../Registries/Statistics.h"
|
||||
#include "BlockState.h"
|
||||
#include "Registries/Items.h"
|
||||
#include "Registries/Statistics.h"
|
||||
|
||||
namespace Palette_1_13
|
||||
{
|
||||
UInt32 FromBlock(short ID);
|
||||
UInt32 FromItem(Item ID);
|
||||
UInt32 From(BlockState Block);
|
||||
UInt32 From(Item ID);
|
||||
UInt32 From(Statistic ID);
|
||||
Item ToItem(UInt32 ID);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../Registries/Items.h"
|
||||
#include "../../Registries/Statistics.h"
|
||||
#include "BlockState.h"
|
||||
#include "Registries/Items.h"
|
||||
#include "Registries/Statistics.h"
|
||||
|
||||
namespace Palette_1_13_1
|
||||
{
|
||||
UInt32 FromBlock(short ID);
|
||||
UInt32 FromItem(Item ID);
|
||||
UInt32 From(BlockState Block);
|
||||
UInt32 From(Item ID);
|
||||
UInt32 From(Statistic ID);
|
||||
Item ToItem(UInt32 ID);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../Registries/Items.h"
|
||||
#include "../../Registries/Statistics.h"
|
||||
#include "BlockState.h"
|
||||
#include "Registries/Items.h"
|
||||
#include "Registries/Statistics.h"
|
||||
|
||||
namespace Palette_1_14
|
||||
{
|
||||
UInt32 FromBlock(short ID);
|
||||
UInt32 FromItem(Item ID);
|
||||
UInt32 From(BlockState Block);
|
||||
UInt32 From(Item ID);
|
||||
UInt32 From(Statistic ID);
|
||||
Item ToItem(UInt32 ID);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../Registries/Items.h"
|
||||
#include "../../Registries/Statistics.h"
|
||||
#include "BlockState.h"
|
||||
#include "Registries/Items.h"
|
||||
#include "Registries/Statistics.h"
|
||||
|
||||
namespace Palette_1_15
|
||||
{
|
||||
UInt32 FromBlock(short ID);
|
||||
UInt32 FromItem(Item ID);
|
||||
UInt32 From(BlockState Block);
|
||||
UInt32 From(Item ID);
|
||||
UInt32 From(Statistic ID);
|
||||
Item ToItem(UInt32 ID);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../Registries/Items.h"
|
||||
#include "../../Registries/Statistics.h"
|
||||
#include "BlockState.h"
|
||||
#include "Registries/Items.h"
|
||||
#include "Registries/Statistics.h"
|
||||
|
||||
namespace Palette_1_16
|
||||
{
|
||||
UInt32 FromBlock(short ID);
|
||||
UInt32 FromItem(Item ID);
|
||||
UInt32 From(BlockState Block);
|
||||
UInt32 From(Item ID);
|
||||
UInt32 From(Statistic ID);
|
||||
Item ToItem(UInt32 ID);
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
#include "Globals.h"
|
||||
|
||||
#include "Upgrade.h"
|
||||
#include "../../Registries/Blocks.h"
|
||||
#include "Registries/BlockStates.h"
|
||||
|
||||
namespace PaletteUpgrade
|
||||
{
|
||||
short FromBlock(BLOCKTYPE Block, NIBBLETYPE Meta)
|
||||
BlockState FromBlock(const BLOCKTYPE Block, const NIBBLETYPE Meta)
|
||||
{
|
||||
using namespace Block;
|
||||
|
||||
@ -1705,7 +1705,7 @@ namespace PaletteUpgrade
|
||||
}
|
||||
}
|
||||
|
||||
Item FromItem(short Item, short Damage)
|
||||
Item FromItem(const short Item, const short Damage)
|
||||
{
|
||||
switch ((Item << 16) | Damage)
|
||||
{
|
||||
@ -2516,7 +2516,7 @@ namespace PaletteUpgrade
|
||||
}
|
||||
}
|
||||
|
||||
std::pair<short, short> ToItem(Item ID)
|
||||
std::pair<short, short> ToItem(const Item ID)
|
||||
{
|
||||
switch (ID)
|
||||
{
|
||||
|
@ -1,11 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../BlockType.h"
|
||||
#include "../../Registries/Items.h"
|
||||
#include "ChunkDef.h"
|
||||
#include "BlockState.h"
|
||||
#include "Registries/Items.h"
|
||||
|
||||
namespace PaletteUpgrade
|
||||
{
|
||||
short FromBlock(BLOCKTYPE Block, NIBBLETYPE Meta);
|
||||
BlockState FromBlock(BLOCKTYPE Block, NIBBLETYPE Meta);
|
||||
Item FromItem(short Item, short Damage);
|
||||
std::pair<short, short> ToItem(Item ID);
|
||||
}
|
||||
|
@ -648,7 +648,7 @@ std::pair<short, short> cProtocol_1_13::GetItemFromProtocolID(UInt32 a_ProtocolI
|
||||
|
||||
UInt32 cProtocol_1_13::GetProtocolBlockType(BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta)
|
||||
{
|
||||
return Palette_1_13::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
return Palette_1_13::From(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
}
|
||||
|
||||
|
||||
@ -657,7 +657,7 @@ UInt32 cProtocol_1_13::GetProtocolBlockType(BLOCKTYPE a_BlockType, NIBBLETYPE a_
|
||||
|
||||
UInt32 cProtocol_1_13::GetProtocolItemType(short a_ItemID, short a_ItemDamage)
|
||||
{
|
||||
return Palette_1_13::FromItem(PaletteUpgrade::FromItem(a_ItemID, a_ItemDamage));
|
||||
return Palette_1_13::From(PaletteUpgrade::FromItem(a_ItemID, a_ItemDamage));
|
||||
}
|
||||
|
||||
|
||||
@ -1364,7 +1364,7 @@ std::pair<short, short> cProtocol_1_13_1::GetItemFromProtocolID(UInt32 a_Protoco
|
||||
|
||||
UInt32 cProtocol_1_13_1::GetProtocolBlockType(BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta)
|
||||
{
|
||||
return Palette_1_13_1::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
return Palette_1_13_1::From(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
}
|
||||
|
||||
|
||||
@ -1373,7 +1373,7 @@ UInt32 cProtocol_1_13_1::GetProtocolBlockType(BLOCKTYPE a_BlockType, NIBBLETYPE
|
||||
|
||||
UInt32 cProtocol_1_13_1::GetProtocolItemType(short a_ItemID, short a_ItemDamage)
|
||||
{
|
||||
return Palette_1_13_1::FromItem(PaletteUpgrade::FromItem(a_ItemID, a_ItemDamage));
|
||||
return Palette_1_13_1::From(PaletteUpgrade::FromItem(a_ItemID, a_ItemDamage));
|
||||
}
|
||||
|
||||
|
||||
|
@ -196,7 +196,7 @@ std::pair<short, short> cProtocol_1_14::GetItemFromProtocolID(UInt32 a_ProtocolI
|
||||
|
||||
UInt32 cProtocol_1_14::GetProtocolBlockType(BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta)
|
||||
{
|
||||
return Palette_1_14::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
return Palette_1_14::From(PaletteUpgrade::FromBlock(a_BlockType, a_Meta));
|
||||
}
|
||||
|
||||
|
||||
@ -205,7 +205,7 @@ UInt32 cProtocol_1_14::GetProtocolBlockType(BLOCKTYPE a_BlockType, NIBBLETYPE a_
|
||||
|
||||
UInt32 cProtocol_1_14::GetProtocolItemType(short a_ItemID, short a_ItemDamage)
|
||||
{
|
||||
return Palette_1_14::FromItem(PaletteUpgrade::FromItem(a_ItemID, a_ItemDamage));
|
||||
return Palette_1_14::From(PaletteUpgrade::FromItem(a_ItemID, a_ItemDamage));
|
||||
}
|
||||
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
25485
src/Registries/BlockStates.h
Normal file
25485
src/Registries/BlockStates.h
Normal file
File diff suppressed because it is too large
Load Diff
768
src/Registries/BlockTypes.h
Normal file
768
src/Registries/BlockTypes.h
Normal file
@ -0,0 +1,768 @@
|
||||
#pragma once
|
||||
|
||||
enum class BlockType
|
||||
{
|
||||
AcaciaButton,
|
||||
AcaciaDoor,
|
||||
AcaciaFence,
|
||||
AcaciaFenceGate,
|
||||
AcaciaLeaves,
|
||||
AcaciaLog,
|
||||
AcaciaPlanks,
|
||||
AcaciaPressurePlate,
|
||||
AcaciaSapling,
|
||||
AcaciaSign,
|
||||
AcaciaSlab,
|
||||
AcaciaStairs,
|
||||
AcaciaTrapdoor,
|
||||
AcaciaWallSign,
|
||||
AcaciaWood,
|
||||
ActivatorRail,
|
||||
Air,
|
||||
Allium,
|
||||
AncientDebris,
|
||||
Andesite,
|
||||
AndesiteSlab,
|
||||
AndesiteStairs,
|
||||
AndesiteWall,
|
||||
Anvil,
|
||||
AttachedMelonStem,
|
||||
AttachedPumpkinStem,
|
||||
AzureBluet,
|
||||
Bamboo,
|
||||
BambooSapling,
|
||||
Barrel,
|
||||
Barrier,
|
||||
Basalt,
|
||||
Beacon,
|
||||
Bedrock,
|
||||
BeeNest,
|
||||
Beehive,
|
||||
Beetroots,
|
||||
Bell,
|
||||
BirchButton,
|
||||
BirchDoor,
|
||||
BirchFence,
|
||||
BirchFenceGate,
|
||||
BirchLeaves,
|
||||
BirchLog,
|
||||
BirchPlanks,
|
||||
BirchPressurePlate,
|
||||
BirchSapling,
|
||||
BirchSign,
|
||||
BirchSlab,
|
||||
BirchStairs,
|
||||
BirchTrapdoor,
|
||||
BirchWallSign,
|
||||
BirchWood,
|
||||
BlackBanner,
|
||||
BlackBed,
|
||||
BlackCarpet,
|
||||
BlackConcrete,
|
||||
BlackConcretePowder,
|
||||
BlackGlazedTerracotta,
|
||||
BlackShulkerBox,
|
||||
BlackStainedGlass,
|
||||
BlackStainedGlassPane,
|
||||
BlackTerracotta,
|
||||
BlackWallBanner,
|
||||
BlackWool,
|
||||
Blackstone,
|
||||
BlackstoneSlab,
|
||||
BlackstoneStairs,
|
||||
BlackstoneWall,
|
||||
BlastFurnace,
|
||||
BlueBanner,
|
||||
BlueBed,
|
||||
BlueCarpet,
|
||||
BlueConcrete,
|
||||
BlueConcretePowder,
|
||||
BlueGlazedTerracotta,
|
||||
BlueIce,
|
||||
BlueOrchid,
|
||||
BlueShulkerBox,
|
||||
BlueStainedGlass,
|
||||
BlueStainedGlassPane,
|
||||
BlueTerracotta,
|
||||
BlueWallBanner,
|
||||
BlueWool,
|
||||
BoneBlock,
|
||||
Bookshelf,
|
||||
BrainCoral,
|
||||
BrainCoralBlock,
|
||||
BrainCoralFan,
|
||||
BrainCoralWallFan,
|
||||
BrewingStand,
|
||||
BrickSlab,
|
||||
BrickStairs,
|
||||
BrickWall,
|
||||
Bricks,
|
||||
BrownBanner,
|
||||
BrownBed,
|
||||
BrownCarpet,
|
||||
BrownConcrete,
|
||||
BrownConcretePowder,
|
||||
BrownGlazedTerracotta,
|
||||
BrownMushroom,
|
||||
BrownMushroomBlock,
|
||||
BrownShulkerBox,
|
||||
BrownStainedGlass,
|
||||
BrownStainedGlassPane,
|
||||
BrownTerracotta,
|
||||
BrownWallBanner,
|
||||
BrownWool,
|
||||
BubbleColumn,
|
||||
BubbleCoral,
|
||||
BubbleCoralBlock,
|
||||
BubbleCoralFan,
|
||||
BubbleCoralWallFan,
|
||||
Cactus,
|
||||
Cake,
|
||||
Campfire,
|
||||
Carrots,
|
||||
CartographyTable,
|
||||
CarvedPumpkin,
|
||||
Cauldron,
|
||||
CaveAir,
|
||||
Chain,
|
||||
ChainCommandBlock,
|
||||
Chest,
|
||||
ChippedAnvil,
|
||||
ChiseledNetherBricks,
|
||||
ChiseledPolishedBlackstone,
|
||||
ChiseledQuartzBlock,
|
||||
ChiseledRedSandstone,
|
||||
ChiseledSandstone,
|
||||
ChiseledStoneBricks,
|
||||
ChorusFlower,
|
||||
ChorusPlant,
|
||||
Clay,
|
||||
CoalBlock,
|
||||
CoalOre,
|
||||
CoarseDirt,
|
||||
Cobblestone,
|
||||
CobblestoneSlab,
|
||||
CobblestoneStairs,
|
||||
CobblestoneWall,
|
||||
Cobweb,
|
||||
Cocoa,
|
||||
CommandBlock,
|
||||
Comparator,
|
||||
Composter,
|
||||
Conduit,
|
||||
Cornflower,
|
||||
CrackedNetherBricks,
|
||||
CrackedPolishedBlackstoneBricks,
|
||||
CrackedStoneBricks,
|
||||
CraftingTable,
|
||||
CreeperHead,
|
||||
CreeperWallHead,
|
||||
CrimsonButton,
|
||||
CrimsonDoor,
|
||||
CrimsonFence,
|
||||
CrimsonFenceGate,
|
||||
CrimsonFungus,
|
||||
CrimsonHyphae,
|
||||
CrimsonNylium,
|
||||
CrimsonPlanks,
|
||||
CrimsonPressurePlate,
|
||||
CrimsonRoots,
|
||||
CrimsonSign,
|
||||
CrimsonSlab,
|
||||
CrimsonStairs,
|
||||
CrimsonStem,
|
||||
CrimsonTrapdoor,
|
||||
CrimsonWallSign,
|
||||
CryingObsidian,
|
||||
CutRedSandstone,
|
||||
CutRedSandstoneSlab,
|
||||
CutSandstone,
|
||||
CutSandstoneSlab,
|
||||
CyanBanner,
|
||||
CyanBed,
|
||||
CyanCarpet,
|
||||
CyanConcrete,
|
||||
CyanConcretePowder,
|
||||
CyanGlazedTerracotta,
|
||||
CyanShulkerBox,
|
||||
CyanStainedGlass,
|
||||
CyanStainedGlassPane,
|
||||
CyanTerracotta,
|
||||
CyanWallBanner,
|
||||
CyanWool,
|
||||
DamagedAnvil,
|
||||
Dandelion,
|
||||
DarkOakButton,
|
||||
DarkOakDoor,
|
||||
DarkOakFence,
|
||||
DarkOakFenceGate,
|
||||
DarkOakLeaves,
|
||||
DarkOakLog,
|
||||
DarkOakPlanks,
|
||||
DarkOakPressurePlate,
|
||||
DarkOakSapling,
|
||||
DarkOakSign,
|
||||
DarkOakSlab,
|
||||
DarkOakStairs,
|
||||
DarkOakTrapdoor,
|
||||
DarkOakWallSign,
|
||||
DarkOakWood,
|
||||
DarkPrismarine,
|
||||
DarkPrismarineSlab,
|
||||
DarkPrismarineStairs,
|
||||
DaylightDetector,
|
||||
DeadBrainCoral,
|
||||
DeadBrainCoralBlock,
|
||||
DeadBrainCoralFan,
|
||||
DeadBrainCoralWallFan,
|
||||
DeadBubbleCoral,
|
||||
DeadBubbleCoralBlock,
|
||||
DeadBubbleCoralFan,
|
||||
DeadBubbleCoralWallFan,
|
||||
DeadBush,
|
||||
DeadFireCoral,
|
||||
DeadFireCoralBlock,
|
||||
DeadFireCoralFan,
|
||||
DeadFireCoralWallFan,
|
||||
DeadHornCoral,
|
||||
DeadHornCoralBlock,
|
||||
DeadHornCoralFan,
|
||||
DeadHornCoralWallFan,
|
||||
DeadTubeCoral,
|
||||
DeadTubeCoralBlock,
|
||||
DeadTubeCoralFan,
|
||||
DeadTubeCoralWallFan,
|
||||
DetectorRail,
|
||||
DiamondBlock,
|
||||
DiamondOre,
|
||||
Diorite,
|
||||
DioriteSlab,
|
||||
DioriteStairs,
|
||||
DioriteWall,
|
||||
Dirt,
|
||||
Dispenser,
|
||||
DragonEgg,
|
||||
DragonHead,
|
||||
DragonWallHead,
|
||||
DriedKelpBlock,
|
||||
Dropper,
|
||||
EmeraldBlock,
|
||||
EmeraldOre,
|
||||
EnchantingTable,
|
||||
EndGateway,
|
||||
EndPortal,
|
||||
EndPortalFrame,
|
||||
EndRod,
|
||||
EndStone,
|
||||
EndStoneBrickSlab,
|
||||
EndStoneBrickStairs,
|
||||
EndStoneBrickWall,
|
||||
EndStoneBricks,
|
||||
EnderChest,
|
||||
Farmland,
|
||||
Fern,
|
||||
Fire,
|
||||
FireCoral,
|
||||
FireCoralBlock,
|
||||
FireCoralFan,
|
||||
FireCoralWallFan,
|
||||
FletchingTable,
|
||||
FlowerPot,
|
||||
FrostedIce,
|
||||
Furnace,
|
||||
GildedBlackstone,
|
||||
Glass,
|
||||
GlassPane,
|
||||
Glowstone,
|
||||
GoldBlock,
|
||||
GoldOre,
|
||||
Granite,
|
||||
GraniteSlab,
|
||||
GraniteStairs,
|
||||
GraniteWall,
|
||||
Grass,
|
||||
GrassBlock,
|
||||
GrassPath,
|
||||
Gravel,
|
||||
GrayBanner,
|
||||
GrayBed,
|
||||
GrayCarpet,
|
||||
GrayConcrete,
|
||||
GrayConcretePowder,
|
||||
GrayGlazedTerracotta,
|
||||
GrayShulkerBox,
|
||||
GrayStainedGlass,
|
||||
GrayStainedGlassPane,
|
||||
GrayTerracotta,
|
||||
GrayWallBanner,
|
||||
GrayWool,
|
||||
GreenBanner,
|
||||
GreenBed,
|
||||
GreenCarpet,
|
||||
GreenConcrete,
|
||||
GreenConcretePowder,
|
||||
GreenGlazedTerracotta,
|
||||
GreenShulkerBox,
|
||||
GreenStainedGlass,
|
||||
GreenStainedGlassPane,
|
||||
GreenTerracotta,
|
||||
GreenWallBanner,
|
||||
GreenWool,
|
||||
Grindstone,
|
||||
HayBale,
|
||||
HeavyWeightedPressurePlate,
|
||||
HoneyBlock,
|
||||
HoneycombBlock,
|
||||
Hopper,
|
||||
HornCoral,
|
||||
HornCoralBlock,
|
||||
HornCoralFan,
|
||||
HornCoralWallFan,
|
||||
Ice,
|
||||
InfestedChiseledStoneBricks,
|
||||
InfestedCobblestone,
|
||||
InfestedCrackedStoneBricks,
|
||||
InfestedMossyStoneBricks,
|
||||
InfestedStone,
|
||||
InfestedStoneBricks,
|
||||
IronBars,
|
||||
IronBlock,
|
||||
IronDoor,
|
||||
IronOre,
|
||||
IronTrapdoor,
|
||||
JackOLantern,
|
||||
Jigsaw,
|
||||
Jukebox,
|
||||
JungleButton,
|
||||
JungleDoor,
|
||||
JungleFence,
|
||||
JungleFenceGate,
|
||||
JungleLeaves,
|
||||
JungleLog,
|
||||
JunglePlanks,
|
||||
JunglePressurePlate,
|
||||
JungleSapling,
|
||||
JungleSign,
|
||||
JungleSlab,
|
||||
JungleStairs,
|
||||
JungleTrapdoor,
|
||||
JungleWallSign,
|
||||
JungleWood,
|
||||
Kelp,
|
||||
KelpPlant,
|
||||
Ladder,
|
||||
Lantern,
|
||||
LapisBlock,
|
||||
LapisOre,
|
||||
LargeFern,
|
||||
Lava,
|
||||
Lectern,
|
||||
Lever,
|
||||
LightBlueBanner,
|
||||
LightBlueBed,
|
||||
LightBlueCarpet,
|
||||
LightBlueConcrete,
|
||||
LightBlueConcretePowder,
|
||||
LightBlueGlazedTerracotta,
|
||||
LightBlueShulkerBox,
|
||||
LightBlueStainedGlass,
|
||||
LightBlueStainedGlassPane,
|
||||
LightBlueTerracotta,
|
||||
LightBlueWallBanner,
|
||||
LightBlueWool,
|
||||
LightGrayBanner,
|
||||
LightGrayBed,
|
||||
LightGrayCarpet,
|
||||
LightGrayConcrete,
|
||||
LightGrayConcretePowder,
|
||||
LightGrayGlazedTerracotta,
|
||||
LightGrayShulkerBox,
|
||||
LightGrayStainedGlass,
|
||||
LightGrayStainedGlassPane,
|
||||
LightGrayTerracotta,
|
||||
LightGrayWallBanner,
|
||||
LightGrayWool,
|
||||
LightWeightedPressurePlate,
|
||||
Lilac,
|
||||
LilyOfTheValley,
|
||||
LilyPad,
|
||||
LimeBanner,
|
||||
LimeBed,
|
||||
LimeCarpet,
|
||||
LimeConcrete,
|
||||
LimeConcretePowder,
|
||||
LimeGlazedTerracotta,
|
||||
LimeShulkerBox,
|
||||
LimeStainedGlass,
|
||||
LimeStainedGlassPane,
|
||||
LimeTerracotta,
|
||||
LimeWallBanner,
|
||||
LimeWool,
|
||||
Lodestone,
|
||||
Loom,
|
||||
MagentaBanner,
|
||||
MagentaBed,
|
||||
MagentaCarpet,
|
||||
MagentaConcrete,
|
||||
MagentaConcretePowder,
|
||||
MagentaGlazedTerracotta,
|
||||
MagentaShulkerBox,
|
||||
MagentaStainedGlass,
|
||||
MagentaStainedGlassPane,
|
||||
MagentaTerracotta,
|
||||
MagentaWallBanner,
|
||||
MagentaWool,
|
||||
MagmaBlock,
|
||||
Melon,
|
||||
MelonStem,
|
||||
MossyCobblestone,
|
||||
MossyCobblestoneSlab,
|
||||
MossyCobblestoneStairs,
|
||||
MossyCobblestoneWall,
|
||||
MossyStoneBrickSlab,
|
||||
MossyStoneBrickStairs,
|
||||
MossyStoneBrickWall,
|
||||
MossyStoneBricks,
|
||||
MovingPiston,
|
||||
MushroomStem,
|
||||
Mycelium,
|
||||
NetherBrickFence,
|
||||
NetherBrickSlab,
|
||||
NetherBrickStairs,
|
||||
NetherBrickWall,
|
||||
NetherBricks,
|
||||
NetherGoldOre,
|
||||
NetherPortal,
|
||||
NetherQuartzOre,
|
||||
NetherSprouts,
|
||||
NetherWart,
|
||||
NetherWartBlock,
|
||||
NetheriteBlock,
|
||||
Netherrack,
|
||||
NoteBlock,
|
||||
OakButton,
|
||||
OakDoor,
|
||||
OakFence,
|
||||
OakFenceGate,
|
||||
OakLeaves,
|
||||
OakLog,
|
||||
OakPlanks,
|
||||
OakPressurePlate,
|
||||
OakSapling,
|
||||
OakSign,
|
||||
OakSlab,
|
||||
OakStairs,
|
||||
OakTrapdoor,
|
||||
OakWallSign,
|
||||
OakWood,
|
||||
Observer,
|
||||
Obsidian,
|
||||
OrangeBanner,
|
||||
OrangeBed,
|
||||
OrangeCarpet,
|
||||
OrangeConcrete,
|
||||
OrangeConcretePowder,
|
||||
OrangeGlazedTerracotta,
|
||||
OrangeShulkerBox,
|
||||
OrangeStainedGlass,
|
||||
OrangeStainedGlassPane,
|
||||
OrangeTerracotta,
|
||||
OrangeTulip,
|
||||
OrangeWallBanner,
|
||||
OrangeWool,
|
||||
OxeyeDaisy,
|
||||
PackedIce,
|
||||
Peony,
|
||||
PetrifiedOakSlab,
|
||||
PinkBanner,
|
||||
PinkBed,
|
||||
PinkCarpet,
|
||||
PinkConcrete,
|
||||
PinkConcretePowder,
|
||||
PinkGlazedTerracotta,
|
||||
PinkShulkerBox,
|
||||
PinkStainedGlass,
|
||||
PinkStainedGlassPane,
|
||||
PinkTerracotta,
|
||||
PinkTulip,
|
||||
PinkWallBanner,
|
||||
PinkWool,
|
||||
Piston,
|
||||
PistonHead,
|
||||
PlayerHead,
|
||||
PlayerWallHead,
|
||||
Podzol,
|
||||
PolishedAndesite,
|
||||
PolishedAndesiteSlab,
|
||||
PolishedAndesiteStairs,
|
||||
PolishedBasalt,
|
||||
PolishedBlackstone,
|
||||
PolishedBlackstoneBrickSlab,
|
||||
PolishedBlackstoneBrickStairs,
|
||||
PolishedBlackstoneBrickWall,
|
||||
PolishedBlackstoneBricks,
|
||||
PolishedBlackstoneButton,
|
||||
PolishedBlackstonePressurePlate,
|
||||
PolishedBlackstoneSlab,
|
||||
PolishedBlackstoneStairs,
|
||||
PolishedBlackstoneWall,
|
||||
PolishedDiorite,
|
||||
PolishedDioriteSlab,
|
||||
PolishedDioriteStairs,
|
||||
PolishedGranite,
|
||||
PolishedGraniteSlab,
|
||||
PolishedGraniteStairs,
|
||||
Poppy,
|
||||
Potatoes,
|
||||
PottedAcaciaSapling,
|
||||
PottedAllium,
|
||||
PottedAzureBluet,
|
||||
PottedBamboo,
|
||||
PottedBirchSapling,
|
||||
PottedBlueOrchid,
|
||||
PottedBrownMushroom,
|
||||
PottedCactus,
|
||||
PottedCornflower,
|
||||
PottedCrimsonFungus,
|
||||
PottedCrimsonRoots,
|
||||
PottedDandelion,
|
||||
PottedDarkOakSapling,
|
||||
PottedDeadBush,
|
||||
PottedFern,
|
||||
PottedJungleSapling,
|
||||
PottedLilyOfTheValley,
|
||||
PottedOakSapling,
|
||||
PottedOrangeTulip,
|
||||
PottedOxeyeDaisy,
|
||||
PottedPinkTulip,
|
||||
PottedPoppy,
|
||||
PottedRedMushroom,
|
||||
PottedRedTulip,
|
||||
PottedSpruceSapling,
|
||||
PottedWarpedFungus,
|
||||
PottedWarpedRoots,
|
||||
PottedWhiteTulip,
|
||||
PottedWitherRose,
|
||||
PoweredRail,
|
||||
Prismarine,
|
||||
PrismarineBrickSlab,
|
||||
PrismarineBrickStairs,
|
||||
PrismarineBricks,
|
||||
PrismarineSlab,
|
||||
PrismarineStairs,
|
||||
PrismarineWall,
|
||||
Pumpkin,
|
||||
PumpkinStem,
|
||||
PurpleBanner,
|
||||
PurpleBed,
|
||||
PurpleCarpet,
|
||||
PurpleConcrete,
|
||||
PurpleConcretePowder,
|
||||
PurpleGlazedTerracotta,
|
||||
PurpleShulkerBox,
|
||||
PurpleStainedGlass,
|
||||
PurpleStainedGlassPane,
|
||||
PurpleTerracotta,
|
||||
PurpleWallBanner,
|
||||
PurpleWool,
|
||||
PurpurBlock,
|
||||
PurpurPillar,
|
||||
PurpurSlab,
|
||||
PurpurStairs,
|
||||
QuartzBlock,
|
||||
QuartzBricks,
|
||||
QuartzPillar,
|
||||
QuartzSlab,
|
||||
QuartzStairs,
|
||||
Rail,
|
||||
RedBanner,
|
||||
RedBed,
|
||||
RedCarpet,
|
||||
RedConcrete,
|
||||
RedConcretePowder,
|
||||
RedGlazedTerracotta,
|
||||
RedMushroom,
|
||||
RedMushroomBlock,
|
||||
RedNetherBrickSlab,
|
||||
RedNetherBrickStairs,
|
||||
RedNetherBrickWall,
|
||||
RedNetherBricks,
|
||||
RedSand,
|
||||
RedSandstone,
|
||||
RedSandstoneSlab,
|
||||
RedSandstoneStairs,
|
||||
RedSandstoneWall,
|
||||
RedShulkerBox,
|
||||
RedStainedGlass,
|
||||
RedStainedGlassPane,
|
||||
RedTerracotta,
|
||||
RedTulip,
|
||||
RedWallBanner,
|
||||
RedWool,
|
||||
RedstoneBlock,
|
||||
RedstoneLamp,
|
||||
RedstoneOre,
|
||||
RedstoneTorch,
|
||||
RedstoneWallTorch,
|
||||
RedstoneWire,
|
||||
Repeater,
|
||||
RepeatingCommandBlock,
|
||||
RespawnAnchor,
|
||||
RoseBush,
|
||||
Sand,
|
||||
Sandstone,
|
||||
SandstoneSlab,
|
||||
SandstoneStairs,
|
||||
SandstoneWall,
|
||||
Scaffolding,
|
||||
SeaLantern,
|
||||
SeaPickle,
|
||||
Seagrass,
|
||||
Shroomlight,
|
||||
ShulkerBox,
|
||||
SkeletonSkull,
|
||||
SkeletonWallSkull,
|
||||
SlimeBlock,
|
||||
SmithingTable,
|
||||
Smoker,
|
||||
SmoothQuartz,
|
||||
SmoothQuartzSlab,
|
||||
SmoothQuartzStairs,
|
||||
SmoothRedSandstone,
|
||||
SmoothRedSandstoneSlab,
|
||||
SmoothRedSandstoneStairs,
|
||||
SmoothSandstone,
|
||||
SmoothSandstoneSlab,
|
||||
SmoothSandstoneStairs,
|
||||
SmoothStone,
|
||||
SmoothStoneSlab,
|
||||
Snow,
|
||||
SnowBlock,
|
||||
SoulCampfire,
|
||||
SoulFire,
|
||||
SoulLantern,
|
||||
SoulSand,
|
||||
SoulSoil,
|
||||
SoulTorch,
|
||||
SoulWallTorch,
|
||||
Spawner,
|
||||
Sponge,
|
||||
SpruceButton,
|
||||
SpruceDoor,
|
||||
SpruceFence,
|
||||
SpruceFenceGate,
|
||||
SpruceLeaves,
|
||||
SpruceLog,
|
||||
SprucePlanks,
|
||||
SprucePressurePlate,
|
||||
SpruceSapling,
|
||||
SpruceSign,
|
||||
SpruceSlab,
|
||||
SpruceStairs,
|
||||
SpruceTrapdoor,
|
||||
SpruceWallSign,
|
||||
SpruceWood,
|
||||
StickyPiston,
|
||||
Stone,
|
||||
StoneBrickSlab,
|
||||
StoneBrickStairs,
|
||||
StoneBrickWall,
|
||||
StoneBricks,
|
||||
StoneButton,
|
||||
StonePressurePlate,
|
||||
StoneSlab,
|
||||
StoneStairs,
|
||||
Stonecutter,
|
||||
StrippedAcaciaLog,
|
||||
StrippedAcaciaWood,
|
||||
StrippedBirchLog,
|
||||
StrippedBirchWood,
|
||||
StrippedCrimsonHyphae,
|
||||
StrippedCrimsonStem,
|
||||
StrippedDarkOakLog,
|
||||
StrippedDarkOakWood,
|
||||
StrippedJungleLog,
|
||||
StrippedJungleWood,
|
||||
StrippedOakLog,
|
||||
StrippedOakWood,
|
||||
StrippedSpruceLog,
|
||||
StrippedSpruceWood,
|
||||
StrippedWarpedHyphae,
|
||||
StrippedWarpedStem,
|
||||
StructureBlock,
|
||||
StructureVoid,
|
||||
SugarCane,
|
||||
Sunflower,
|
||||
SweetBerryBush,
|
||||
TNT,
|
||||
TallGrass,
|
||||
TallSeagrass,
|
||||
Target,
|
||||
Terracotta,
|
||||
Torch,
|
||||
TrappedChest,
|
||||
Tripwire,
|
||||
TripwireHook,
|
||||
TubeCoral,
|
||||
TubeCoralBlock,
|
||||
TubeCoralFan,
|
||||
TubeCoralWallFan,
|
||||
TurtleEgg,
|
||||
TwistingVines,
|
||||
TwistingVinesPlant,
|
||||
Vine,
|
||||
VoidAir,
|
||||
WallTorch,
|
||||
WarpedButton,
|
||||
WarpedDoor,
|
||||
WarpedFence,
|
||||
WarpedFenceGate,
|
||||
WarpedFungus,
|
||||
WarpedHyphae,
|
||||
WarpedNylium,
|
||||
WarpedPlanks,
|
||||
WarpedPressurePlate,
|
||||
WarpedRoots,
|
||||
WarpedSign,
|
||||
WarpedSlab,
|
||||
WarpedStairs,
|
||||
WarpedStem,
|
||||
WarpedTrapdoor,
|
||||
WarpedWallSign,
|
||||
WarpedWartBlock,
|
||||
Water,
|
||||
WeepingVines,
|
||||
WeepingVinesPlant,
|
||||
WetSponge,
|
||||
Wheat,
|
||||
WhiteBanner,
|
||||
WhiteBed,
|
||||
WhiteCarpet,
|
||||
WhiteConcrete,
|
||||
WhiteConcretePowder,
|
||||
WhiteGlazedTerracotta,
|
||||
WhiteShulkerBox,
|
||||
WhiteStainedGlass,
|
||||
WhiteStainedGlassPane,
|
||||
WhiteTerracotta,
|
||||
WhiteTulip,
|
||||
WhiteWallBanner,
|
||||
WhiteWool,
|
||||
WitherRose,
|
||||
WitherSkeletonSkull,
|
||||
WitherSkeletonWallSkull,
|
||||
YellowBanner,
|
||||
YellowBed,
|
||||
YellowCarpet,
|
||||
YellowConcrete,
|
||||
YellowConcretePowder,
|
||||
YellowGlazedTerracotta,
|
||||
YellowShulkerBox,
|
||||
YellowStainedGlass,
|
||||
YellowStainedGlassPane,
|
||||
YellowTerracotta,
|
||||
YellowWallBanner,
|
||||
YellowWool,
|
||||
ZombieHead,
|
||||
ZombieWallHead
|
||||
};
|
20284
src/Registries/Blocks.h
20284
src/Registries/Blocks.h
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,10 @@
|
||||
target_sources(
|
||||
${CMAKE_PROJECT_NAME} PRIVATE
|
||||
|
||||
Blocks.cpp
|
||||
BlockStates.cpp
|
||||
|
||||
Blocks.h
|
||||
BlockStates.h
|
||||
BlockTypes.h
|
||||
Items.h
|
||||
Statistics.h
|
||||
)
|
@ -1,4 +1,3 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
enum class Statistic
|
||||
|
@ -3,8 +3,9 @@
|
||||
|
||||
#include <stack>
|
||||
|
||||
#include "../RedstoneSimulator.h"
|
||||
#include "../../Chunk.h"
|
||||
#include "Chunk.h"
|
||||
#include "BlockState.h"
|
||||
#include "Simulator/RedstoneSimulator.h"
|
||||
|
||||
|
||||
|
||||
@ -82,7 +83,7 @@ public:
|
||||
}
|
||||
|
||||
/** Temporary, should be chunk data: wire block store, to avoid recomputing states every time. */
|
||||
std::unordered_map<Vector3i, short, VectorHasher<int>> WireStates;
|
||||
std::unordered_map<Vector3i, BlockState, VectorHasher<int>> WireStates;
|
||||
|
||||
std::unordered_set<Vector3i, VectorHasher<int>> AlwaysTickedPositions;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "RedstoneHandler.h"
|
||||
#include "../../Registries/Blocks.h"
|
||||
#include "Registries/BlockStates.h"
|
||||
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ namespace RedstoneWireHandler
|
||||
/** Invokes Callback with the wire's left, front, and right direction state corresponding to Offset.
|
||||
Returns a new block constructed from the directions that the callback may have modified. */
|
||||
template <class OffsetCallback>
|
||||
inline short DoWithDirectionState(const Vector3i Offset, short Block, OffsetCallback Callback)
|
||||
inline BlockState DoWithDirectionState(const Vector3i Offset, BlockState Block, OffsetCallback Callback)
|
||||
{
|
||||
auto North = Block::RedstoneWire::North(Block);
|
||||
auto South = Block::RedstoneWire::South(Block);
|
||||
@ -49,7 +49,7 @@ namespace RedstoneWireHandler
|
||||
}
|
||||
|
||||
/** Adjusts a given wire block so that the direction represented by Offset has state Direction. */
|
||||
inline void SetDirectionState(const Vector3i Offset, short & Block, TemporaryDirection Direction)
|
||||
inline void SetDirectionState(const Vector3i Offset, BlockState & Block, TemporaryDirection Direction)
|
||||
{
|
||||
Block = DoWithDirectionState(Offset, Block, [Direction](auto, auto & Front, auto)
|
||||
{
|
||||
@ -189,7 +189,7 @@ namespace RedstoneWireHandler
|
||||
return;
|
||||
}
|
||||
|
||||
DataForChunk(Chunk).WireStates[Position] = Block;
|
||||
DataForChunk(Chunk).WireStates.emplace(Position, Block);
|
||||
}
|
||||
|
||||
inline PowerLevel GetPowerDeliveredToPosition(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, Vector3i a_QueryPosition, BLOCKTYPE a_QueryBlockType, bool IsLinked)
|
||||
|
Loading…
Reference in New Issue
Block a user