aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/DiodeTile.h
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
committerLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
commit42aec6dac53dffa6afe072560a7e1d4986112538 (patch)
tree0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/DiodeTile.h
parentc9d58eeac7c72f0b3038e084667b4d89a6249fce (diff)
parentef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff)
Merge branch 'main' into pr/win64-world-saves
# Conflicts: # Minecraft.Client/MinecraftServer.cpp # README.md
Diffstat (limited to 'Minecraft.World/DiodeTile.h')
-rw-r--r--Minecraft.World/DiodeTile.h90
1 files changed, 59 insertions, 31 deletions
diff --git a/Minecraft.World/DiodeTile.h b/Minecraft.World/DiodeTile.h
index 003b011f..16f3347b 100644
--- a/Minecraft.World/DiodeTile.h
+++ b/Minecraft.World/DiodeTile.h
@@ -8,43 +8,71 @@ class Level;
class DiodeTile : public DirectionalTile
{
friend class Tile;
+protected:
+ bool on;
+
+protected:
+ DiodeTile(int id, bool on);
+public:
+ virtual void updateDefaultShape(); // 4J Added override
+ virtual bool isCubeShaped();
+ virtual bool mayPlace(Level *level, int x, int y, int z);
+ virtual bool canSurvive(Level *level, int x, int y, int z);
+ virtual void tick(Level *level, int x, int y, int z, Random *random);
+ virtual Icon *getTexture(int face, int data);
+ virtual bool shouldRenderFace(LevelSource *level, int x, int y, int z, int face);
+ virtual int getRenderShape();
+
+protected:
+ virtual bool isOn(int data);
+
public:
- static const int DELAY_MASK = DIRECTION_INV_MASK;
- static const int DELAY_SHIFT = 2;
+ virtual int getDirectSignal(LevelSource *level, int x, int y, int z, int dir);
+ virtual int getSignal(LevelSource *level, int x, int y, int z, int facing);
+ virtual void neighborChanged(Level *level, int x, int y, int z, int type);
- static const double DELAY_RENDER_OFFSETS[4];
- static const int DELAYS[4];
+protected:
+ virtual void checkTickOnNeighbor(Level *level, int x, int y, int z, int type);
-private:
- bool on;
+public:
+ virtual bool isLocked(LevelSource *level, int x, int y, int z, int data);
protected:
- DiodeTile(int id, bool on);
+ virtual bool shouldTurnOn(Level *level, int x, int y, int z, int data);
+ virtual int getInputSignal(Level *level, int x, int y, int z, int data);
+ virtual int getAlternateSignal(LevelSource *level, int x, int y, int z, int data);
+ virtual int getAlternateSignalAt(LevelSource *level, int x, int y, int z, int facing);
+
public:
- virtual void updateDefaultShape(); // 4J Added override
- virtual bool isCubeShaped();
- virtual bool mayPlace(Level *level, int x, int y, int z);
- virtual bool canSurvive(Level *level, int x, int y, int z);
- virtual void tick(Level *level, int x, int y, int z, Random *random);
- virtual Icon *getTexture(int face, int data);
- //@Override
- void registerIcons(IconRegister *iconRegister);
- virtual bool shouldRenderFace(LevelSource *level, int x, int y, int z, int face);
- virtual int getRenderShape();
- virtual bool getDirectSignal(Level *level, int x, int y, int z, int dir);
- virtual bool getSignal(LevelSource *level, int x, int y, int z, int facing);
- virtual void neighborChanged(Level *level, int x, int y, int z, int type);
-private:
- virtual bool getSourceSignal(Level *level, int x, int y, int z, int data);
+ virtual bool isSignalSource();
+ virtual void setPlacedBy(Level *level, int x, int y, int z, shared_ptr<LivingEntity> by, shared_ptr<ItemInstance> itemInstance);
+ virtual void onPlace(Level *level, int x, int y, int z);
+
+protected:
+ virtual void updateNeighborsInFront(Level *level, int x, int y, int z);
+
public:
- virtual bool TestUse();
- virtual bool use(Level *level, int x, int y, int z, shared_ptr<Player> player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly = false); // 4J added soundOnly param
- virtual bool isSignalSource();
- virtual void setPlacedBy(Level *level, int x, int y, int z, shared_ptr<Mob> by);
- virtual void onPlace(Level *level, int x, int y, int z);
virtual void destroy(Level *level, int x, int y, int z, int data);
- virtual bool isSolidRender(bool isServerLevel = false);
- virtual int getResource(int data, Random *random, int playerBonusLevel);
- virtual void animateTick(Level *level, int xt, int yt, int zt, Random *random);
- virtual int cloneTileId(Level *level, int x, int y, int z);
+ virtual bool isSolidRender(bool isServerLevel = false);
+ virtual int getResource(int data, Random *random, int playerBonusLevel) = 0;
+ virtual int cloneTileId(Level *level, int x, int y, int z) = 0;
+
+protected:
+ virtual bool isAlternateInput(int tile);
+ virtual int getOutputSignal(LevelSource *level, int x, int y, int z, int data);
+
+public:
+ static bool isDiode(int id);
+ virtual bool isSameDiode(int id);
+ virtual bool shouldPrioritize(Level *level, int x, int y, int z, int data);
+
+protected:
+ virtual int getTurnOffDelay(int data);
+
+ virtual int getTurnOnDelay(int data) = 0;
+ virtual DiodeTile *getOnTile() = 0;
+ virtual DiodeTile *getOffTile() = 0;
+
+public:
+ virtual bool isMatching(int id);
};