From e86f886a791028650d7d1faf2a2fe8fe6dc564b7 Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Tue, 16 Dec 2025 23:57:59 +0800 Subject: [PATCH 01/11] ABUD first implementation (not working) --- .../utilitiesinexcess/ModBlocks.java | 2 + .../utilitiesinexcess/UtilitiesInExcess.java | 3 + .../blocks/BlockAdvancedUpdateDetector.java | 42 ++++++++++++++ ...TileEntityAdvancedBlockUpdateDetector.java | 54 ++++++++++++++++++ .../assets/utilitiesinexcess/lang/en_US.lang | 3 + .../blocks/advanced_block_update_detector.png | Bin 0 -> 315 bytes 6 files changed, 104 insertions(+) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java create mode 100644 src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector.png diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java index ebd0274a..c92e1053 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java @@ -6,6 +6,7 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockAdvancedUpdateDetector; import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockBedrockium; import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockBlackoutCurtains; import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockColored; @@ -138,6 +139,7 @@ public enum ModBlocks { NETHER_STAR_GENERATOR_PLUS(GeneratorConfig.enableNetherStarGenerator, new BlockNetherStarGenerator("nether_star_generator_plus", 8), "nether_star_generator_plus"), NETHER_STAR_GENERATOR_PLUSPLUS(GeneratorConfig.enableNetherStarGenerator, new BlockNetherStarGenerator("nether_star_generator_plusplus", 64), "nether_star_generator_plusplus"), BLOCK_UPDATE_DETECTOR(BlockConfig.enableBlockUpdateDetector, new BlockUpdateDetector(), "block_update_detector"), + ADVANCED_BLOCK_UPDATE_DETECTOR(BlockConfig.enableBlockUpdateDetector, new BlockAdvancedUpdateDetector(), "advanced_block_update_detector"), ENDER_LOTUS(EnderLotusConfig.enableEnderLotus, new BlockEnderLotus(), null, "ender_lotus"), BLACKOUT_CURTAINS(BlockConfig.enableBlackoutCurtains, new BlockBlackoutCurtains(), "blackout_curtains"), CONVEYOR(BlockConfig.enableConveyor, new BlockConveyor(), BlockConveyor.ItemBlockConveyor.class, "conveyor"), diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java index 764354f9..22278938 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java @@ -15,6 +15,7 @@ import com.fouristhenumber.utilitiesinexcess.common.renderers.BlackoutCurtainsRenderer; import com.fouristhenumber.utilitiesinexcess.common.renderers.LapisAetheriusRenderer; import com.fouristhenumber.utilitiesinexcess.common.renderers.SpikeRenderer; +import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityAdvancedBlockUpdateDetector; import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityBlockUpdateDetector; import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityConveyor; import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum; @@ -117,6 +118,8 @@ public void init(FMLInitializationEvent event) { GameRegistry.registerTileEntity(TileEntitySoundMuffler.class, "TileEntitySoundMufflerUIE"); GameRegistry.registerTileEntity(TileEntityRainMuffler.class, "TileEntityRainMufflerUIE"); GameRegistry.registerTileEntity(TileEntityBlockUpdateDetector.class, "TileEntityBlockUpdateDetector"); + GameRegistry + .registerTileEntity(TileEntityAdvancedBlockUpdateDetector.class, "TileEntityAdvancedBlockUpdateDetector"); GameRegistry.registerTileEntity(TileEntityConveyor.class, "TileEntityConveyor"); GameRegistry.registerTileEntity(TileEntityPortalUnderWorld.class, "TileEntityPortalUnderWorld"); GameRegistry.registerTileEntity(TileEntityBlockUpdateDetector.class, "TileEntityBlockUpdateDetectorUIE"); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java new file mode 100644 index 00000000..470117df --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java @@ -0,0 +1,42 @@ +package com.fouristhenumber.utilitiesinexcess.common.blocks; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityAdvancedBlockUpdateDetector; + +public class BlockAdvancedUpdateDetector extends BlockContainer { + + public BlockAdvancedUpdateDetector() { + super(Material.rock); + setBlockName("advanced_block_update_detector"); + setBlockTextureName("utilitiesinexcess:advanced_block_update_detector"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityAdvancedBlockUpdateDetector(); + } + + @Override + public boolean canProvidePower() { + return true; + } + + @Override + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity instanceof TileEntityAdvancedBlockUpdateDetector tileBUD) { + return tileBUD.getOutputPower(); + } + return 0; + } + + @Override + public boolean isNormalCube(IBlockAccess world, int x, int y, int z) { + return true; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java new file mode 100644 index 00000000..a7d4b997 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -0,0 +1,54 @@ +package com.fouristhenumber.utilitiesinexcess.common.tileentities; + +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockAdvancedUpdateDetector; + +public class TileEntityAdvancedBlockUpdateDetector extends TileEntity { + + private boolean isProvidingPower = false; + private int pulseTimer = 0; + private boolean[] scanningOnFace = { true, true, true, true, true, true }; + private Block[] blockOnPreviousTick = new Block[6]; + + @Override + public void updateEntity() { + if (worldObj.isRemote) { + return; + } + + if (isProvidingPower && pulseTimer > 0) { + pulseTimer--; + if (pulseTimer <= 0) { + isProvidingPower = false; + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); + } + } + + for (int i = 0; i < 6; i++) { + if (!scanningOnFace[i]) { + continue; + } + Block blockOnCurrentTick = worldObj.getBlock( + xCoord + ForgeDirection.getOrientation(i).offsetX, + yCoord + ForgeDirection.getOrientation(i).offsetY, + zCoord + ForgeDirection.getOrientation(i).offsetZ); + if (blockOnCurrentTick != blockOnPreviousTick[i] + && !(blockOnCurrentTick instanceof BlockAdvancedUpdateDetector)) { + if (!isProvidingPower) { + isProvidingPower = true; + pulseTimer++; + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); + worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord, getBlockType(), 1); + } + } + blockOnPreviousTick[i] = blockOnCurrentTick; + } + } + + public int getOutputPower() { + return isProvidingPower ? 15 : 0; + } +} diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index 08e3f86b..e959cab7 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -349,6 +349,9 @@ utilitiesinexcess.config.item.watering_can_flowering=Watering Can Flowering tile.block_update_detector.name=Block Update Detector nei.infopage.uie.block_update_detector.1=This mechanism keeps tabs on neighboring blocks and will emit a redstone pulse if any of them receive a block update. +tile.advanced_block_update_detector.name=Advanced Block Update Detector +nei.infopage.uie.advanced_block_update_detector.1=The Advanced Block Update Detector, similarly to it's regular version will check for block updates, however it also reacts at changes within internal data, such as storage. + tile.drum.name=Drum tile.drum.desc=Holds %s buckets of fluid tile.drum.desc.fluid=Currently holding %s %sL diff --git a/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector.png b/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f924641a8969a843e74bb7574b04de83a09eac GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?e4MP5XPf$K0QEt)1ps@6cz0qfp zfULLqp|;Wytf#rGcApSh!BcuA#r)Z)3ri-Zq^;00vuHkZCbn~7&N_!9EbB}QdJQK2 x&1K);XRs^(rjK}=PJ3??r>BcAyaIFzgQu&X%Q~loCIF^&V*>yH literal 0 HcmV?d00001 From d5da5d739f0cd905a403140cb5ef74afe0a82119 Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Wed, 17 Dec 2025 09:29:55 +0800 Subject: [PATCH 02/11] Metadata check --- ...TileEntityAdvancedBlockUpdateDetector.java | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index a7d4b997..20c993be 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -12,6 +12,7 @@ public class TileEntityAdvancedBlockUpdateDetector extends TileEntity { private int pulseTimer = 0; private boolean[] scanningOnFace = { true, true, true, true, true, true }; private Block[] blockOnPreviousTick = new Block[6]; + private int[] blockMetadataOnPreviousTick = new int[6]; @Override public void updateEntity() { @@ -37,17 +38,35 @@ public void updateEntity() { zCoord + ForgeDirection.getOrientation(i).offsetZ); if (blockOnCurrentTick != blockOnPreviousTick[i] && !(blockOnCurrentTick instanceof BlockAdvancedUpdateDetector)) { - if (!isProvidingPower) { - isProvidingPower = true; - pulseTimer++; - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); - worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord, getBlockType(), 1); + sendRedstonePulse(); + blockOnPreviousTick[i] = blockOnCurrentTick; + break; + } else { + int blockMetadataOnCurrentTick = worldObj.getBlockMetadata( + xCoord + ForgeDirection.getOrientation(i).offsetX, + yCoord + ForgeDirection.getOrientation(i).offsetY, + zCoord + ForgeDirection.getOrientation(i).offsetZ); + if (blockMetadataOnCurrentTick != blockMetadataOnPreviousTick[i]) { + sendRedstonePulse(); + blockOnPreviousTick[i] = blockOnCurrentTick; + blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + break; } + blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; } blockOnPreviousTick[i] = blockOnCurrentTick; } } + private void sendRedstonePulse() { + if (!isProvidingPower) { + isProvidingPower = true; + pulseTimer++; + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); + worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord, getBlockType(), 1); + } + } + public int getOutputPower() { return isProvidingPower ? 15 : 0; } From 30e75381ac6ca4e77854169e42bf9c5d9ba8a3b3 Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Wed, 17 Dec 2025 12:34:27 +0800 Subject: [PATCH 03/11] NBT Data check + Recipe + Infopage --- .../utilitiesinexcess/client/IMCForNEI.java | 3 + .../common/recipe/RecipeLoader.java | 13 +++++ ...TileEntityAdvancedBlockUpdateDetector.java | 58 +++++++++++++++---- .../assets/utilitiesinexcess/lang/en_US.lang | 2 +- 4 files changed, 64 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/client/IMCForNEI.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/client/IMCForNEI.java index 053e1928..dd63ea59 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/client/IMCForNEI.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/client/IMCForNEI.java @@ -66,6 +66,9 @@ public static void IMCSender() { sendInfoPage("", "nei.infopage.uie.drum.1"); sendInfoPage("", "nei.infopage.uie.block_update_detector.1"); + sendInfoPage( + "", + "nei.infopage.uie.advanced.block_update_detector.1"); sendInfoPage("", "nei.infopage.uie.rain_muffler.1"); sendInfoPage("", "nei.infopage.uie.sound_muffler.1"); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java index 5d37f76d..b411bf6e 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java @@ -163,6 +163,19 @@ public static void run() { 'p', Blocks.sticky_piston); + // Advanced Block Update Detector + addShapedRecipe( + ModBlocks.ADVANCED_BLOCK_UPDATE_DETECTOR, + "srs", + "rbr", + "srs", + 's', + Blocks.stone, + 'r', + Blocks.redstone_block, + 'b', + ModBlocks.BLOCK_UPDATE_DETECTOR); + // Trash Can (Items) addShapedRecipe( ModBlocks.TRASH_CAN_ITEM, diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index 20c993be..e2e0c608 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -1,6 +1,10 @@ package com.fouristhenumber.utilitiesinexcess.common.tileentities; +import java.util.Objects; + import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -13,6 +17,7 @@ public class TileEntityAdvancedBlockUpdateDetector extends TileEntity { private boolean[] scanningOnFace = { true, true, true, true, true, true }; private Block[] blockOnPreviousTick = new Block[6]; private int[] blockMetadataOnPreviousTick = new int[6]; + private String[] tileEntityNBTSerializedOnPreviousTick = new String[6]; @Override public void updateEntity() { @@ -36,23 +41,54 @@ public void updateEntity() { xCoord + ForgeDirection.getOrientation(i).offsetX, yCoord + ForgeDirection.getOrientation(i).offsetY, zCoord + ForgeDirection.getOrientation(i).offsetZ); - if (blockOnCurrentTick != blockOnPreviousTick[i] - && !(blockOnCurrentTick instanceof BlockAdvancedUpdateDetector)) { - sendRedstonePulse(); + if (blockOnPreviousTick[i] == null) { blockOnPreviousTick[i] = blockOnCurrentTick; - break; - } else { - int blockMetadataOnCurrentTick = worldObj.getBlockMetadata( - xCoord + ForgeDirection.getOrientation(i).offsetX, - yCoord + ForgeDirection.getOrientation(i).offsetY, - zCoord + ForgeDirection.getOrientation(i).offsetZ); - if (blockMetadataOnCurrentTick != blockMetadataOnPreviousTick[i]) { + } else if (blockOnCurrentTick != blockOnPreviousTick[i] + && !(blockOnCurrentTick instanceof BlockAdvancedUpdateDetector) + && !(blockOnCurrentTick == Blocks.redstone_wire)) { sendRedstonePulse(); blockOnPreviousTick[i] = blockOnCurrentTick; + break; + } else { + int blockMetadataOnCurrentTick = worldObj.getBlockMetadata( + xCoord + ForgeDirection.getOrientation(i).offsetX, + yCoord + ForgeDirection.getOrientation(i).offsetY, + zCoord + ForgeDirection.getOrientation(i).offsetZ); + if (blockMetadataOnCurrentTick != blockMetadataOnPreviousTick[i]) { + sendRedstonePulse(); + blockOnPreviousTick[i] = blockOnCurrentTick; + blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + break; + } blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + } + if (blockOnCurrentTick.hasTileEntity(0)) { + if (blockOnPreviousTick[i] == null) { + blockOnPreviousTick[i] = blockOnCurrentTick; + } else if (!blockOnPreviousTick[i].hasTileEntity(0)) { + sendRedstonePulse(); + blockOnPreviousTick[i] = blockOnCurrentTick; break; } - blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + NBTTagCompound compound = new NBTTagCompound(); + worldObj + .getTileEntity( + xCoord + ForgeDirection.getOrientation(i).offsetX, + yCoord + ForgeDirection.getOrientation(i).offsetY, + zCoord + ForgeDirection.getOrientation(i).offsetZ) + .writeToNBT(compound); + String tileEntityNBTSerializedOnCurrentTick = compound.toString(); + if (tileEntityNBTSerializedOnPreviousTick[i] == null) { + blockOnPreviousTick[i] = blockOnCurrentTick; + tileEntityNBTSerializedOnPreviousTick[i] = tileEntityNBTSerializedOnCurrentTick; + } else if (!Objects + .equals(tileEntityNBTSerializedOnCurrentTick, tileEntityNBTSerializedOnPreviousTick[i])) { + sendRedstonePulse(); + blockOnPreviousTick[i] = blockOnCurrentTick; + tileEntityNBTSerializedOnPreviousTick[i] = tileEntityNBTSerializedOnCurrentTick; + break; + } + tileEntityNBTSerializedOnPreviousTick[i] = tileEntityNBTSerializedOnCurrentTick; } blockOnPreviousTick[i] = blockOnCurrentTick; } diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index e959cab7..45a83ca0 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -350,7 +350,7 @@ tile.block_update_detector.name=Block Update Detector nei.infopage.uie.block_update_detector.1=This mechanism keeps tabs on neighboring blocks and will emit a redstone pulse if any of them receive a block update. tile.advanced_block_update_detector.name=Advanced Block Update Detector -nei.infopage.uie.advanced_block_update_detector.1=The Advanced Block Update Detector, similarly to it's regular version will check for block updates, however it also reacts at changes within internal data, such as storage. +nei.infopage.uie.advanced.block_update_detector.1=The Advanced Block Update Detector, similarly to it's regular version will check for block updates, however it also reacts at changes within internal data, such as storage or metadata. tile.drum.name=Drum tile.drum.desc=Holds %s buckets of fluid From 08273a7777a2b00b0cd42cd72d79233e534067fa Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Wed, 17 Dec 2025 20:16:56 +0800 Subject: [PATCH 04/11] TileEntity code rework --- ...TileEntityAdvancedBlockUpdateDetector.java | 85 +++++++++---------- 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index e2e0c608..5ed63aac 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -8,16 +8,14 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockAdvancedUpdateDetector; - public class TileEntityAdvancedBlockUpdateDetector extends TileEntity { private boolean isProvidingPower = false; private int pulseTimer = 0; - private boolean[] scanningOnFace = { true, true, true, true, true, true }; - private Block[] blockOnPreviousTick = new Block[6]; - private int[] blockMetadataOnPreviousTick = new int[6]; - private String[] tileEntityNBTSerializedOnPreviousTick = new String[6]; + private final boolean[] scanningOnFace = { true, true, true, true, true, true }; + private final Block[] blockOnPreviousTick = new Block[6]; + private final int[] blockMetadataOnPreviousTick = new int[6]; + private final NBTTagCompound[] tileEntityNBTCompoundOnPreviousTick = new NBTTagCompound[6]; @Override public void updateEntity() { @@ -27,68 +25,63 @@ public void updateEntity() { if (isProvidingPower && pulseTimer > 0) { pulseTimer--; - if (pulseTimer <= 0) { - isProvidingPower = false; - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); - } + isProvidingPower = false; + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); } - for (int i = 0; i < 6; i++) { + for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { if (!scanningOnFace[i]) { continue; } + ForgeDirection neighborDirection = ForgeDirection.getOrientation(i); Block blockOnCurrentTick = worldObj.getBlock( - xCoord + ForgeDirection.getOrientation(i).offsetX, - yCoord + ForgeDirection.getOrientation(i).offsetY, - zCoord + ForgeDirection.getOrientation(i).offsetZ); - if (blockOnPreviousTick[i] == null) { + xCoord + neighborDirection.offsetX, + yCoord + neighborDirection.offsetY, + zCoord + neighborDirection.offsetZ); + int blockMetadataOnCurrentTick = worldObj.getBlockMetadata( + xCoord + neighborDirection.offsetX, + yCoord + neighborDirection.offsetY, + zCoord + neighborDirection.offsetZ); + if (Objects.equals(blockOnPreviousTick[i], null)) { blockOnPreviousTick[i] = blockOnCurrentTick; - } else if (blockOnCurrentTick != blockOnPreviousTick[i] - && !(blockOnCurrentTick instanceof BlockAdvancedUpdateDetector) - && !(blockOnCurrentTick == Blocks.redstone_wire)) { + } else if (blockOnCurrentTick != blockOnPreviousTick[i] && !(blockOnCurrentTick == Blocks.redstone_wire)) { + sendRedstonePulse(); + blockOnPreviousTick[i] = blockOnCurrentTick; + blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + break; + } else { + if (blockMetadataOnCurrentTick != blockMetadataOnPreviousTick[i]) { sendRedstonePulse(); blockOnPreviousTick[i] = blockOnCurrentTick; - break; - } else { - int blockMetadataOnCurrentTick = worldObj.getBlockMetadata( - xCoord + ForgeDirection.getOrientation(i).offsetX, - yCoord + ForgeDirection.getOrientation(i).offsetY, - zCoord + ForgeDirection.getOrientation(i).offsetZ); - if (blockMetadataOnCurrentTick != blockMetadataOnPreviousTick[i]) { - sendRedstonePulse(); - blockOnPreviousTick[i] = blockOnCurrentTick; - blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; - break; - } blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + break; } - if (blockOnCurrentTick.hasTileEntity(0)) { - if (blockOnPreviousTick[i] == null) { - blockOnPreviousTick[i] = blockOnCurrentTick; - } else if (!blockOnPreviousTick[i].hasTileEntity(0)) { + blockMetadataOnPreviousTick[i] = blockMetadataOnCurrentTick; + } + if (blockOnCurrentTick.hasTileEntity(blockMetadataOnPreviousTick[i])) { + if (!blockOnPreviousTick[i].hasTileEntity(blockMetadataOnPreviousTick[i])) { sendRedstonePulse(); blockOnPreviousTick[i] = blockOnCurrentTick; break; } - NBTTagCompound compound = new NBTTagCompound(); + NBTTagCompound tileEntityNBTCompoundOnCurrentTick = new NBTTagCompound(); worldObj .getTileEntity( - xCoord + ForgeDirection.getOrientation(i).offsetX, - yCoord + ForgeDirection.getOrientation(i).offsetY, - zCoord + ForgeDirection.getOrientation(i).offsetZ) - .writeToNBT(compound); - String tileEntityNBTSerializedOnCurrentTick = compound.toString(); - if (tileEntityNBTSerializedOnPreviousTick[i] == null) { + xCoord + neighborDirection.offsetX, + yCoord + neighborDirection.offsetY, + zCoord + neighborDirection.offsetZ) + .writeToNBT(tileEntityNBTCompoundOnCurrentTick); + if (tileEntityNBTCompoundOnPreviousTick[i] == null) { blockOnPreviousTick[i] = blockOnCurrentTick; - tileEntityNBTSerializedOnPreviousTick[i] = tileEntityNBTSerializedOnCurrentTick; - } else if (!Objects - .equals(tileEntityNBTSerializedOnCurrentTick, tileEntityNBTSerializedOnPreviousTick[i])) { + tileEntityNBTCompoundOnPreviousTick[i] = tileEntityNBTCompoundOnCurrentTick; + } else + if (!Objects.equals(tileEntityNBTCompoundOnCurrentTick, tileEntityNBTCompoundOnPreviousTick[i])) { sendRedstonePulse(); blockOnPreviousTick[i] = blockOnCurrentTick; - tileEntityNBTSerializedOnPreviousTick[i] = tileEntityNBTSerializedOnCurrentTick; + tileEntityNBTCompoundOnPreviousTick[i] = tileEntityNBTCompoundOnCurrentTick; break; } - tileEntityNBTSerializedOnPreviousTick[i] = tileEntityNBTSerializedOnCurrentTick; + tileEntityNBTCompoundOnPreviousTick[i] = tileEntityNBTCompoundOnCurrentTick; } blockOnPreviousTick[i] = blockOnCurrentTick; } From 7726eb4fb8dbe2dd5b27ed618bb892c2e8fd7d75 Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Thu, 18 Dec 2025 09:04:34 +0800 Subject: [PATCH 05/11] Implemented face toggling through shift-right click, breakability of both BUDs --- .../blocks/BlockAdvancedUpdateDetector.java | 29 ++++++++++++++-- .../common/blocks/BlockUpdateDetector.java | 2 ++ ...TileEntityAdvancedBlockUpdateDetector.java | 33 +++++++++++++++++-- .../assets/utilitiesinexcess/lang/en_US.lang | 1 + 4 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java index 470117df..cb89be3e 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java @@ -1,8 +1,12 @@ package com.fouristhenumber.utilitiesinexcess.common.blocks; +import static net.minecraft.util.Facing.facings; + import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -14,6 +18,8 @@ public BlockAdvancedUpdateDetector() { super(Material.rock); setBlockName("advanced_block_update_detector"); setBlockTextureName("utilitiesinexcess:advanced_block_update_detector"); + setHardness(1.0F); + setHarvestLevel("pickaxe", 0); } @Override @@ -29,8 +35,8 @@ public boolean canProvidePower() { @Override public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { TileEntity tileEntity = world.getTileEntity(x, y, z); - if (tileEntity instanceof TileEntityAdvancedBlockUpdateDetector tileBUD) { - return tileBUD.getOutputPower(); + if (tileEntity instanceof TileEntityAdvancedBlockUpdateDetector tileABUD) { + return tileABUD.getOutputPower(); } return 0; } @@ -39,4 +45,23 @@ public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int sid public boolean isNormalCube(IBlockAccess world, int x, int y, int z) { return true; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float subX, + float subY, float subZ) { + if (!player.isSneaking()) { + return false; + } + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity instanceof TileEntityAdvancedBlockUpdateDetector tileABUD) { + tileABUD.toggleFace(side); + player.addChatMessage( + new ChatComponentTranslation( + "chat.tile.advanced_block_update_detector.toggle", + facings[side], + tileABUD.getScanning(side))); + return true; + } + return false; + } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockUpdateDetector.java index 91eb9bfa..6574a80d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockUpdateDetector.java @@ -16,6 +16,8 @@ public BlockUpdateDetector() { super(Material.rock); setBlockName("block_update_detector"); setBlockTextureName("utilitiesinexcess:block_update_detector"); + setHardness(1.0F); + setHarvestLevel("pickaxe", 0); } @Override diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index 5ed63aac..1ab52a2a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -13,9 +13,17 @@ public class TileEntityAdvancedBlockUpdateDetector extends TileEntity { private boolean isProvidingPower = false; private int pulseTimer = 0; private final boolean[] scanningOnFace = { true, true, true, true, true, true }; - private final Block[] blockOnPreviousTick = new Block[6]; - private final int[] blockMetadataOnPreviousTick = new int[6]; - private final NBTTagCompound[] tileEntityNBTCompoundOnPreviousTick = new NBTTagCompound[6]; + private final Block[] blockOnPreviousTick = new Block[ForgeDirection.VALID_DIRECTIONS.length]; + private final int[] blockMetadataOnPreviousTick = new int[ForgeDirection.VALID_DIRECTIONS.length]; + private final NBTTagCompound[] tileEntityNBTCompoundOnPreviousTick = new NBTTagCompound[ForgeDirection.VALID_DIRECTIONS.length]; + + public void toggleFace(int face) { + scanningOnFace[face] = !scanningOnFace[face]; + } + + public boolean getScanning(int face) { + return scanningOnFace[face]; + } @Override public void updateEntity() { @@ -87,6 +95,25 @@ public void updateEntity() { } } + @Override + public void readFromNBT(NBTTagCompound compound) { + super.readFromNBT(compound); + byte scannedFaces = compound.getByte("faces"); + for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + scanningOnFace[i] = (scannedFaces >> i) > 0; + } + } + + @Override + public void writeToNBT(NBTTagCompound compound) { + super.writeToNBT(compound); + byte scannedFaces = 0; + for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + scannedFaces += (byte) ((scanningOnFace[i] ? 1 : 0) << i); + } + compound.setByte("faces", scannedFaces); + } + private void sendRedstonePulse() { if (!isProvidingPower) { isProvidingPower = true; diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index 45a83ca0..e6e71b66 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -351,6 +351,7 @@ nei.infopage.uie.block_update_detector.1=This mechanism keeps tabs on neighborin tile.advanced_block_update_detector.name=Advanced Block Update Detector nei.infopage.uie.advanced.block_update_detector.1=The Advanced Block Update Detector, similarly to it's regular version will check for block updates, however it also reacts at changes within internal data, such as storage or metadata. +chat.tile.advanced_block_update_detector.toggle=Side %s set to redstone output %s. tile.drum.name=Drum tile.drum.desc=Holds %s buckets of fluid From 845c9f1e98e22199f91b7f1aa1b171bce761146e Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Thu, 18 Dec 2025 09:17:43 +0800 Subject: [PATCH 06/11] Register ABUD's redstone state in NBT --- .../tileentities/TileEntityAdvancedBlockUpdateDetector.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index 1ab52a2a..d110532d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -102,6 +102,8 @@ public void readFromNBT(NBTTagCompound compound) { for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { scanningOnFace[i] = (scannedFaces >> i) > 0; } + isProvidingPower = compound.getBoolean("powered"); + pulseTimer = compound.getInteger("pulse"); } @Override @@ -112,6 +114,8 @@ public void writeToNBT(NBTTagCompound compound) { scannedFaces += (byte) ((scanningOnFace[i] ? 1 : 0) << i); } compound.setByte("faces", scannedFaces); + compound.setBoolean("powered", isProvidingPower); + compound.setInteger("pulse", pulseTimer); } private void sendRedstonePulse() { From 9b1783bfccb47ac32f3949f3b582b2ff78b00803 Mon Sep 17 00:00:00 2001 From: loenaaaa Date: Tue, 30 Dec 2025 13:14:56 +0800 Subject: [PATCH 07/11] Change texture, add new texture for when ABUD fires signal --- .../blocks/BlockAdvancedUpdateDetector.java | 18 +++++++++++++++++- ...TileEntityAdvancedBlockUpdateDetector.java | 12 ++++++++++++ .../blocks/advanced_block_update_detector.png | Bin 315 -> 0 bytes .../advanced_block_update_detector_active.png | Bin 0 -> 647 bytes ...dvanced_block_update_detector_inactive.png | Bin 0 -> 630 bytes 5 files changed, 29 insertions(+), 1 deletion(-) delete mode 100644 src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector.png create mode 100644 src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector_active.png create mode 100644 src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector_inactive.png diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java index cb89be3e..4a21e3c7 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java @@ -4,9 +4,11 @@ import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -14,14 +16,28 @@ public class BlockAdvancedUpdateDetector extends BlockContainer { + private IIcon iconInactive; + private IIcon iconActive; + public BlockAdvancedUpdateDetector() { super(Material.rock); setBlockName("advanced_block_update_detector"); - setBlockTextureName("utilitiesinexcess:advanced_block_update_detector"); setHardness(1.0F); setHarvestLevel("pickaxe", 0); } + @Override + public void registerBlockIcons(IIconRegister reg){ + iconInactive = reg.registerIcon("utilitiesinexcess:advanced_block_update_detector_inactive"); + iconActive = reg.registerIcon("utilitiesinexcess:advanced_block_update_detector_active"); + } + + @Override + public IIcon getIcon(int side, int meta) { + boolean active = (meta) == 1; + return active ? iconActive : iconInactive; + } + @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityAdvancedBlockUpdateDetector(); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index d110532d..c80e5f2c 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -34,6 +34,7 @@ public void updateEntity() { if (isProvidingPower && pulseTimer > 0) { pulseTimer--; isProvidingPower = false; + updateBlockState(); worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); } @@ -95,6 +96,16 @@ public void updateEntity() { } } + private void updateBlockState() { + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + int newMeta = isProvidingPower ? 1 : 0; + + if (meta != newMeta) { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, newMeta, 3); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + } + @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); @@ -122,6 +133,7 @@ private void sendRedstonePulse() { if (!isProvidingPower) { isProvidingPower = true; pulseTimer++; + updateBlockState(); worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord, getBlockType(), 1); } diff --git a/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector.png b/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector.png deleted file mode 100644 index e4f924641a8969a843e74bb7574b04de83a09eac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?e4MP5XPf$K0QEt)1ps@6cz0qfp zfULLqp|;Wytf#rGcApSh!BcuA#r)Z)3ri-Zq^;00vuHkZCbn~7&N_!9EbB}QdJQK2 x&1K);XRs^(rjK}=PJ3??r>BcAyaIFzgQu&X%Q~loCIF^&V*>yH diff --git a/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector_active.png b/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector_active.png new file mode 100644 index 0000000000000000000000000000000000000000..9b95666d5250ef6359a2ea7dfd568f5b44b61e00 GIT binary patch literal 647 zcmV;20(kw2P)Px%K}keGR5*=&lQC->K@f$%7>QfStH5HPIZPUJMH&-_fYlopZd|w&q;{%nj2cyu zl}d%x$%Ugopw1>;3M10S5D>Tu9PWhR4$iXH-dkKG#py0qlc@%FX5X86Z(bc99{vGP zN|7W9FY}F!4d(MXLI?oTG{qQ$QmV*H07pkhNGZ`;Bc@wfsCj#?zY3cKaWLBuRLFe#X<9>qY}> zEj#@_JN-Vlx3}Eg-SPhXocdsZ<2VI?>$(_YG6v;xnQtd21#%u?7!rmd0N!FuAq3+f z;OXfJr4%Kl)Y6u%wOltEgki|%(TJ&(eBIr}_kG?h1kmq*L6`!Win1C6Arpv z;yA`yTcG>CkMH{hi`i^Onx?!xJ0prB(ln)%BnjnmnW>cQ4~L9{fN>BYgrK&dTSyD+ z^!s>P^RQrB7-`b!z@i{$0T9PAaU2(Kp4NpMjWMhUAqrDWIvqT%sSgHAlCH0>FE!`p zt5ho45_4~Bt@(X%0l+)gC5j^I^*T`$@zCpKv|rQ$l+rZi>go!m6ha8@@9#0jz~Zd) hvjvLt&QIDH!(ZR_B|r)A7k2;v002ovPDHLkV1oSdB*6dx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector_inactive.png b/src/main/resources/assets/utilitiesinexcess/textures/blocks/advanced_block_update_detector_inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..c13d8944fe4e8cc084fb021d171f60b209da37a8 GIT binary patch literal 630 zcmV-+0*U>JP)Px%FiAu~R5*=&lRs+|Q5400vwwVVH#@~6JL%V{5`vxE34VYSDPtE9MQ~RHSGIGB z*et9zi6GcmNeUtP2m!mKH`Q24nt3o;W|KFMWm${ac{&!p>J|6gd(OG%dOJHiO8})5 zNs{pQe`8~VG)<9G0+3}H#u$`R?q37g-QA_tYB8J5Xti4W?-eySH#eM|oa7A(Fu=w0 zS9#_B9ss`YBZMFw9|CZ9^0qXnqLgyrpMy7u#gg`*hwu9Uq-l!Q8h_ZwRy{6nh57}Sy^VLqQD7EA2oM_6k~ z4?hE-S2Fl=3_yF(Lk#=a$q_*i{4ud!uXE?+Q*4^%dRK-;Q3OB;h{X~BDJAVekK5Z@ zlv31`QYDwIwXnZO6h&;EonxyW(S!ShVMwrAr?r-5vq_R9RFWiNZEdaOxNBDR+~gt$ z)9Dl;1aTba9so3(%@WZ2`i(6!=f}ftF5&wH;_MtbdhJ3L1OZB^e2rIESES=ZwAQ(V z)$}k73B%B_m`$#Oy3 z93QxXf(3xq8m)B+T%^$$Lq$sILa{kMKrEIn2Zb-~cDn>F!q;dtaubVe&t^03efr=` zisP7Ww@VzybUwc4-&%lLmSvoto}!dOO3C&0HO3fNopo`xfIIKvq>VBB27 Date: Tue, 30 Dec 2025 13:15:10 +0800 Subject: [PATCH 08/11] sa --- .../common/blocks/BlockAdvancedUpdateDetector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java index 4a21e3c7..89bbe5d5 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockAdvancedUpdateDetector.java @@ -27,7 +27,7 @@ public BlockAdvancedUpdateDetector() { } @Override - public void registerBlockIcons(IIconRegister reg){ + public void registerBlockIcons(IIconRegister reg) { iconInactive = reg.registerIcon("utilitiesinexcess:advanced_block_update_detector_inactive"); iconActive = reg.registerIcon("utilitiesinexcess:advanced_block_update_detector_active"); } From 94541a337765df9b85021728d429380f79d794ac Mon Sep 17 00:00:00 2001 From: FourIsTheNumber <33456283+FourIsTheNumber@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:47:48 -0400 Subject: [PATCH 09/11] Update IGI --- src/main/resources/assets/utilitiesinexcess/lang/en_US.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index a062cae5..97370bd4 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -350,7 +350,7 @@ tile.block_update_detector.name=Block Update Detector nei.infopage.uie.block_update_detector.1=This mechanism keeps tabs on neighboring blocks and will emit a redstone pulse if any of them receive a block update. tile.advanced_block_update_detector.name=Advanced Block Update Detector -nei.infopage.uie.advanced.block_update_detector.1=The Advanced Block Update Detector, similarly to it's regular version will check for block updates, however it also reacts at changes within internal data, such as storage or metadata. +nei.infopage.uie.advanced.block_update_detector.1=Like the standard Block Update Detector, this block will emit a redstone pulse on neighboring block updates. However, it also reacts to changes to tile-entity data or metdata even without a block update. Shift right click any face of the ABUD to toggle scanning on that side. chat.tile.advanced_block_update_detector.toggle=Side %s set to redstone output %s. tile.drum.name=Drum From d9ae6ceedfa0dfc535e5d0bee65bdaff728c731e Mon Sep 17 00:00:00 2001 From: FourIsTheNumber <33456283+FourIsTheNumber@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:48:01 -0400 Subject: [PATCH 10/11] == --- .../tileentities/TileEntityAdvancedBlockUpdateDetector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java index c80e5f2c..46d8c272 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityAdvancedBlockUpdateDetector.java @@ -51,7 +51,7 @@ public void updateEntity() { xCoord + neighborDirection.offsetX, yCoord + neighborDirection.offsetY, zCoord + neighborDirection.offsetZ); - if (Objects.equals(blockOnPreviousTick[i], null)) { + if (blockOnPreviousTick[i] == null) { blockOnPreviousTick[i] = blockOnCurrentTick; } else if (blockOnCurrentTick != blockOnPreviousTick[i] && !(blockOnCurrentTick == Blocks.redstone_wire)) { sendRedstonePulse(); From 32149e81137b4e45536ad650c3d31b05e3e94dce Mon Sep 17 00:00:00 2001 From: FourIsTheNumber <33456283+FourIsTheNumber@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:52:39 -0400 Subject: [PATCH 11/11] Typo --- src/main/resources/assets/utilitiesinexcess/lang/en_US.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index 3b27b82e..1e938f73 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -356,7 +356,7 @@ tile.block_update_detector.name=Block Update Detector nei.infopage.uie.block_update_detector.1=This mechanism keeps tabs on neighboring blocks and will emit a redstone pulse if any of them receive a block update. tile.advanced_block_update_detector.name=Advanced Block Update Detector -nei.infopage.uie.advanced.block_update_detector.1=Like the standard Block Update Detector, this block will emit a redstone pulse on neighboring block updates. However, it also reacts to changes to tile-entity data or metdata even without a block update. Shift right click any face of the ABUD to toggle scanning on that side. +nei.infopage.uie.advanced.block_update_detector.1=Like the standard Block Update Detector, this block will emit a redstone pulse on neighboring block updates. However, it also reacts to changes to tile-entity data or metadata even without a block update. Shift right click any face of the ABUD to toggle scanning on that side. chat.tile.advanced_block_update_detector.toggle=Side %s set to redstone output %s. tile.drum.name=Drum