TU19: merge Minecraft.World/Blocks

This commit is contained in:
Tropical
2026-03-21 15:52:50 -05:00
parent f25cd66f4d
commit 9b6046cb83
242 changed files with 8083 additions and 4657 deletions
+149 -65
View File
@@ -28,10 +28,13 @@ class RedStoneDustTile;
class RepeaterTile;
class CauldronTile;
class TripWireSourceTile;
class BeaconTile;
class ComparatorTile;
class DaylightDetectorTile;
class Random;
class HitResult;
class Level;
class HopperTile;
class Player;
class LevelSource;
class Mob;
@@ -76,6 +79,19 @@ public:
static const int TILE_NUM_MASK = 0xfff; // 4096 - 1
static const int TILE_NUM_SHIFT = 12; // 4096 is 12 bits
// tile update flags
// neighbors: notify neighbors the block changed
static const int UPDATE_NEIGHBORS = (1 << 0);
// clients: send tile update over network connections
static const int UPDATE_CLIENTS = (1 << 1);
// invisible: this update is invisible, so don't rebuild graphics
static const int UPDATE_INVISIBLE = (1 << 2);
// clients: send tile update over network connections
static const int UPDATE_INVISIBLE_NO_LIGHT = (1 << 3) | UPDATE_INVISIBLE;
static const int UPDATE_NONE = UPDATE_INVISIBLE;
static const int UPDATE_ALL = UPDATE_NEIGHBORS | UPDATE_CLIENTS;
private:
// 4J Stu - Was const but had to change it so that we can initialise it in
// TileStaticInit
@@ -84,6 +100,8 @@ private:
protected:
static const float INDESTRUCTIBLE_DESTROY_TIME;
std::wstring iconName;
public:
class SoundType {
public:
@@ -136,7 +154,7 @@ public:
static const int SHAPE_LEVER = 12;
static const int SHAPE_CACTUS = 13;
static const int SHAPE_BED = 14;
static const int SHAPE_DIODE = 15;
static const int SHAPE_REPEATER = 15;
static const int SHAPE_PISTON_BASE = 16;
static const int SHAPE_PISTON_EXTENSION = 17;
static const int SHAPE_IRON_FENCE = 18;
@@ -157,7 +175,13 @@ public:
static const int SHAPE_FLOWER_POT = 33;
static const int SHAPE_BEACON = 34;
static const int SHAPE_ANVIL = 35;
static const int SHAPE_DIODE = 36;
static const int SHAPE_COMPARATOR = 37;
static const int SHAPE_HOPPER = 38;
static const int SHAPE_QUARTZ = 39;
static const int SHAPE_THIN_PANE = 40;
static const int SHAPE_COUNT = 41;
static Tile** tiles;
@@ -175,16 +199,17 @@ public:
// 4J - this array of simple constants made so the compiler can optimise
// references to Ids that were previous of the form Tile::<whatever>->id,
// and are now simply Tile::whatever_Id
static const int rock_Id = 1;
static const int stone_Id = 1;
static const int grass_Id = 2;
static const int dirt_Id = 3;
static const int stoneBrick_Id = 4;
static const int cobblestone_Id = 4;
static const int wood_Id = 5;
static const int sapling_Id = 6;
static const int unbreakable_Id = 7;
static const int water_Id = 8;
static const int calmWater_Id = 9;
static const int lava_Id = 10;
static const int calmLava_Id = 11;
static const int sand_Id = 12;
static const int gravel_Id = 13;
@@ -195,26 +220,29 @@ public:
static const int leaves_Id = 18;
static const int sponge_Id = 19;
static const int glass_Id = 20;
static const int lapisOre_Id = 21;
static const int lapisBlock_Id = 22;
static const int dispenser_Id = 23;
static const int sandStone_Id = 24;
static const int musicBlock_Id = 25;
static const int noteblock_Id = 25;
static const int bed_Id = 26;
static const int goldenRail_Id = 27;
static const int detectorRail_Id = 28;
static const int pistonStickyBase_Id = 29;
static const int web_Id = 30;
static const int tallgrass_Id = 31;
static const int deadBush_Id = 32;
static const int pistonBase_Id = 33;
static const int pistonExtensionPiece_Id = 34;
static const int cloth_Id = 35;
static const int wool_Id = 35;
static const int pistonMovingPiece_Id = 36;
static const int flower_Id = 37;
static const int rose_Id = 38;
static const int mushroom1_Id = 39;
static const int mushroom2_Id = 40;
static const int mushroom_brown_Id = 39;
static const int mushroom_red_Id = 40;
static const int goldBlock_Id = 41;
static const int ironBlock_Id = 42;
static const int stoneSlab_Id = 43;
@@ -222,9 +250,10 @@ public:
static const int redBrick_Id = 45;
static const int tnt_Id = 46;
static const int bookshelf_Id = 47;
static const int mossStone_Id = 48;
static const int mossyCobblestone_Id = 48;
static const int obsidian_Id = 49;
static const int torch_Id = 50;
static const int fire_Id = 51;
static const int mobSpawner_Id = 52;
static const int stairs_wood_Id = 53;
@@ -233,8 +262,9 @@ public:
static const int diamondOre_Id = 56;
static const int diamondBlock_Id = 57;
static const int workBench_Id = 58;
static const int crops_Id = 59;
static const int wheat_Id = 59;
static const int farmland_Id = 60;
static const int furnace_Id = 61;
static const int furnace_lit_Id = 62;
static const int sign_Id = 63;
@@ -245,37 +275,40 @@ public:
static const int wallSign_Id = 68;
static const int lever_Id = 69;
static const int pressurePlate_stone_Id = 70;
static const int door_iron_Id = 71;
static const int pressurePlate_wood_Id = 72;
static const int redStoneOre_Id = 73;
static const int redStoneOre_lit_Id = 74;
static const int notGate_off_Id = 75;
static const int notGate_on_Id = 76;
static const int redstoneTorch_off_Id = 75;
static const int redstoneTorch_on_Id = 76;
static const int button_stone_Id = 77;
static const int topSnow_Id = 78;
static const int ice_Id = 79;
static const int snow_Id = 80;
static const int cactus_Id = 81;
static const int clay_Id = 82;
static const int reeds_Id = 83;
static const int recordPlayer_Id = 84;
static const int jukebox_Id = 84;
static const int fence_Id = 85;
static const int pumpkin_Id = 86;
static const int hellRock_Id = 87;
static const int hellSand_Id = 88;
static const int lightGem_Id = 89;
static const int netherRack_Id = 87;
static const int soulsand_Id = 88;
static const int glowstone_Id = 89;
static const int portalTile_Id = 90;
static const int litPumpkin_Id = 91;
static const int cake_Id = 92;
static const int diode_off_Id = 93;
static const int diode_on_Id = 94;
static const int aprilFoolsJoke_Id = 95;
static const int stained_glass_Id = 95;
static const int trapdoor_Id = 96;
static const int monsterStoneEgg_Id = 97;
static const int stoneBrickSmooth_Id = 98;
static const int hugeMushroom1_Id = 99;
static const int hugeMushroom2_Id = 100;
static const int stoneBrick_Id = 98;
static const int hugeMushroom_brown_Id = 99;
static const int hugeMushroom_red_Id = 100;
static const int ironFence_Id = 101;
static const int thinGlass_Id = 102;
static const int melon_Id = 103;
@@ -284,9 +317,9 @@ public:
static const int vine_Id = 106;
static const int fenceGate_Id = 107;
static const int stairs_bricks_Id = 108;
static const int stairs_stoneBrickSmooth_Id = 109;
static const int stairs_stoneBrick_Id = 109;
static const int mycel_Id = 110;
static const int waterLily_Id = 111;
static const int netherBrick_Id = 112;
static const int netherFence_Id = 113;
@@ -297,41 +330,60 @@ public:
static const int cauldron_Id = 118;
static const int endPortalTile_Id = 119;
static const int endPortalFrameTile_Id = 120;
static const int whiteStone_Id = 121;
static const int endStone_Id = 121;
static const int dragonEgg_Id = 122;
static const int redstoneLight_Id = 123;
static const int redstoneLight_lit_Id = 124;
static const int woodSlab_Id = 125;
static const int woodSlabHalf_Id = 126;
static const int cocoa_Id = 127;
static const int stairs_sandstone_Id = 128;
static const int stairs_sprucewood_Id = 134;
static const int stairs_birchwood_Id = 135;
static const int stairs_junglewood_Id = 136;
static const int emeraldOre_Id = 129;
static const int enderChest_Id = 130;
static const int tripWireSource_Id = 131;
static const int tripWire_Id = 132;
static const int emeraldBlock_Id = 133;
static const int stairs_sprucewood_Id = 134;
static const int stairs_birchwood_Id = 135;
static const int stairs_junglewood_Id = 136;
static const int commandBlock_Id = 137;
static const int beacon_Id = 138;
static const int cobbleWall_Id = 139;
static const int flowerPot_Id = 140;
static const int carrots_Id = 141;
static const int potatoes_Id = 142;
static const int anvil_Id = 145;
static const int button_wood_Id = 143;
static const int skull_Id = 144;
static const int anvil_Id = 145;
static const int chest_trap_Id = 146;
static const int weightedPlate_light_Id = 147;
static const int weightedPlate_heavy_Id = 148;
static const int comparator_off_Id = 149;
static const int comparator_on_Id = 150;
static const int daylightDetector_Id = 151;
static const int redstoneBlock_Id = 152;
static const int netherQuartz_Id = 153;
static const int hopper_Id = 154;
static const int quartzBlock_Id = 155;
static const int stairs_quartz_Id = 156;
static const int activatorRail_Id = 157;
static const int dropper_Id = 158;
static const int clayHardened_colored_Id = 159;
static const int stained_glass_pane_Id = 160;
static const int hayBlock_Id = 170;
static const int woolCarpet_Id = 171;
static const int clayHardened_Id = 172;
static const int coalBlock_Id = 173;
static Tile* rock;
static Tile* stone;
static GrassTile* grass;
static Tile* dirt;
static Tile* stoneBrick;
static Tile* cobblestone;
static Tile* wood;
static Tile* sapling;
static Tile* unbreakable;
@@ -352,7 +404,7 @@ public:
static Tile* lapisBlock;
static Tile* dispenser;
static Tile* sandStone;
static Tile* musicBlock;
static Tile* noteblock;
static Tile* bed;
static Tile* goldenRail;
static Tile* detectorRail;
@@ -362,12 +414,12 @@ public:
static DeadBushTile* deadBush;
static PistonBaseTile* pistonBase;
static PistonExtensionTile* pistonExtension;
static Tile* cloth;
static Tile* wool;
static PistonMovingPiece* pistonMovingPiece;
static Bush* flower;
static Bush* rose;
static Bush* mushroom1;
static Bush* mushroom2;
static Bush* mushroom_brown;
static Bush* mushroom_red;
static Tile* goldBlock;
static Tile* ironBlock;
// static Tile *stoneSlab;
@@ -375,7 +427,7 @@ public:
static Tile* redBrick;
static Tile* tnt;
static Tile* bookshelf;
static Tile* mossStone;
static Tile* mossyCobblestone;
static Tile* obsidian;
static Tile* torch;
static FireTile* fire;
@@ -386,7 +438,7 @@ public:
static Tile* diamondOre;
static Tile* diamondBlock;
static Tile* workBench;
static Tile* crops;
static Tile* wheat;
static Tile* farmland;
static Tile* furnace;
static Tile* furnace_lit;
@@ -402,8 +454,8 @@ public:
static Tile* pressurePlate_wood;
static Tile* redStoneOre;
static Tile* redStoneOre_lit;
static Tile* notGate_off;
static Tile* notGate_on;
static Tile* redstoneTorch_off;
static Tile* redstoneTorch_on;
static Tile* button;
static Tile* topSnow;
static Tile* ice;
@@ -411,24 +463,24 @@ public:
static Tile* cactus;
static Tile* clay;
static Tile* reeds;
static Tile* recordPlayer;
static Tile* jukebox;
static Tile* fence;
static Tile* pumpkin;
static Tile* hellRock;
static Tile* hellSand;
static Tile* lightGem;
static Tile* netherRack;
static Tile* soulsand;
static Tile* glowstone;
static PortalTile* portalTile;
static Tile* litPumpkin;
static Tile* cake;
static RepeaterTile* diode_off;
static RepeaterTile* diode_on;
static Tile* aprilFoolsJoke;
static Tile* stained_glass;
static Tile* trapdoor;
static Tile* monsterStoneEgg;
static Tile* stoneBrickSmooth;
static Tile* hugeMushroom1;
static Tile* hugeMushroom2;
static Tile* stoneBrick;
static Tile* hugeMushroom_brown;
static Tile* hugeMushroom_red;
static Tile* ironFence;
static Tile* thinGlass;
static Tile* melon;
@@ -450,7 +502,7 @@ public:
static CauldronTile* cauldron;
static Tile* endPortalTile;
static Tile* endPortalFrameTile;
static Tile* whiteStone;
static Tile* endStone;
static Tile* dragonEgg;
static Tile* redstoneLight;
static Tile* redstoneLight_lit;
@@ -459,6 +511,8 @@ public:
static Tile* woodStairsDark;
static Tile* woodStairsBirch;
static Tile* woodStairsJungle;
static Tile* commandBlock;
static BeaconTile* beacon;
static Tile* button_wood;
static HalfSlabTile* woodSlab;
static HalfSlabTile* woodSlabHalf;
@@ -478,11 +532,28 @@ public:
static Tile* carrots;
static Tile* potatoes;
static Tile* anvil;
static Tile* chest_trap;
static Tile* weightedPlate_light;
static Tile* weightedPlate_heavy;
static ComparatorTile* comparator_off;
static ComparatorTile* comparator_on;
static DaylightDetectorTile* daylightDetector;
static Tile* redstoneBlock;
static Tile* netherQuartz;
static HopperTile* hopper;
static Tile* quartzBlock;
static Tile* stairs_quartz;
static Tile* activatorRail;
static Tile* dropper;
static Tile* clayHardened_colored;
static Tile* stained_glass_pane;
static Tile* hayBlock;
static Tile* woolCarpet;
static Tile* clayHardened;
static Tile* coalBlock;
static void staticCtor();
@@ -512,8 +583,6 @@ private:
unsigned int descriptionId;
unsigned int useDescriptionId; // 4J Added
std::wstring m_textureName;
protected:
Icon* icon;
@@ -583,14 +652,13 @@ public:
virtual void destroy(Level* level, int x, int y, int z, int data);
virtual void neighborChanged(Level* level, int x, int y, int z, int type);
virtual void addLights(Level* level, int x, int y, int z);
virtual int getTickDelay();
virtual int getTickDelay(Level* level);
virtual void onPlace(Level* level, int x, int y, int z);
virtual void onRemove(Level* level, int x, int y, int z, int id, int data);
virtual int getResourceCount(Random* random);
virtual int getResource(int data, Random* random, int playerBonusLevel);
virtual float getDestroyProgress(std::shared_ptr<Player> player,
Level* level = nullptr, int x = 0,
int y = 0, int z = 0);
Level* level, int x, int y, int z);
virtual void spawnResources(Level* level, int x, int y, int z, int data,
int playerBonusLevel);
virtual void spawnResources(Level* level, int x, int y, int z, int data,
@@ -613,17 +681,19 @@ private:
virtual bool containsZ(Vec3* v);
public:
virtual void wasExploded(Level* level, int x, int y, int z);
virtual void wasExploded(Level* level, int x, int y, int z,
Explosion* explosion);
virtual int getRenderLayer();
virtual bool mayPlace(Level* level, int x, int y, int z, int face,
std::shared_ptr<ItemInstance> item);
virtual bool mayPlace(Level* level, int x, int y, int z, int face);
virtual bool mayPlace(Level* level, int x, int y, int z);
virtual bool TestUse();
virtual bool TestUse(Level* level, int x, int y, int z,
std::shared_ptr<Player> player);
virtual bool use(Level* level, int x, int y, int z,
std::shared_ptr<Player> player, int clickedFace = 0,
float clickX = 0.0f, float clickY = 0.0f,
float clickZ = 0.0f,
std::shared_ptr<Player> player, int clickedFace,
float clickX, float clickY, float clickZ,
bool soundOnly = false); // 4J added soundOnly param
virtual void stepOn(Level* level, int x, int y, int z,
std::shared_ptr<Entity> entity);
@@ -650,12 +720,12 @@ public:
virtual int getColor(LevelSource* level, int x, int y, int z);
virtual int getColor(LevelSource* level, int x, int y, int z,
int data); // 4J added
virtual bool getSignal(LevelSource* level, int x, int y, int z);
virtual bool getSignal(LevelSource* level, int x, int y, int z, int dir);
virtual int getSignal(LevelSource* level, int x, int y, int z, int dir);
virtual bool isSignalSource();
virtual void entityInside(Level* level, int x, int y, int z,
std::shared_ptr<Entity> entity);
virtual bool getDirectSignal(Level* level, int x, int y, int z, int dir);
virtual int getDirectSignal(LevelSource* level, int x, int y, int z,
int dir);
virtual void updateDefaultShape();
virtual void playerDestroy(Level* level, std::shared_ptr<Player> player,
int x, int y, int z, int data);
@@ -668,14 +738,15 @@ protected:
public:
virtual int getResourceCountForLootBonus(int bonusLevel, Random* random);
virtual void setPlacedBy(Level* level, int x, int y, int z,
std::shared_ptr<Mob> by);
std::shared_ptr<LivingEntity> by,
std::shared_ptr<ItemInstance> itemInstance);
virtual void finalizePlacement(Level* level, int x, int y, int z, int data);
virtual Tile* setDescriptionId(unsigned int id);
virtual std::wstring getName();
virtual unsigned int getDescriptionId(int iData = -1);
virtual Tile* setUseDescriptionId(unsigned int id); // 4J Added
virtual unsigned int getUseDescriptionId(); // 4J Added
virtual void triggerEvent(Level* level, int x, int y, int z, int b0,
virtual bool triggerEvent(Level* level, int x, int y, int z, int b0,
int b1);
virtual bool isCollectStatistics();
@@ -702,10 +773,23 @@ public:
virtual void onRemoving(Level* level, int x, int y, int z, int data);
virtual void handleRain(Level* level, int x, int y, int z);
virtual void levelTimeChanged(Level* level, __int64 delta, __int64 newTime);
virtual bool useOwnCloneData();
virtual bool canInstantlyTick();
virtual bool dropFromExplosion(Explosion* explosion);
virtual bool isMatching(int id);
static bool isMatching(int tileIdA, int tileIdB);
virtual bool hasAnalogOutputSignal();
virtual int getAnalogOutputSignal(Level* level, int x, int y, int z,
int dir);
protected:
virtual Tile* setIconName(const std::wstring& iconName);
virtual std::wstring getIconName();
public:
virtual void registerIcons(IconRegister* iconRegister);
virtual std::wstring getTileItemIconName();
// 4J Using per-item textures now
Tile* setTextureName(const std::wstring& name);
// AP - added this function so we can generate the faceFlags for a block in
// a single fast function
int getFaceFlags(LevelSource* level, int x, int y, int z);