Skip to content

Commit aeb9110

Browse files
authored
Fix #1083: Machine and machine-like blocks don't conduct redstone anymore (#1084)
1 parent 4029561 commit aeb9110

File tree

6 files changed

+38
-11
lines changed

6 files changed

+38
-11
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ neoForge {
244244
gameDirectory = project.file("build/gametest")
245245
}
246246
}
247+
248+
validateAccessTransformers = true
247249
}
248250

249251
configurations {

src/main/java/aztech/modern_industrialization/MIBlock.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import net.minecraft.world.item.Item;
5656
import net.minecraft.world.item.ItemDisplayContext;
5757
import net.minecraft.world.level.block.Block;
58+
import net.minecraft.world.level.block.Blocks;
5859
import net.minecraft.world.level.block.SoundType;
5960
import net.minecraft.world.level.block.state.BlockBehaviour;
6061
import net.minecraft.world.level.material.MapColor;
@@ -82,17 +83,17 @@ public static void init(IEventBus modBus) {
8283

8384
// Bronze stuff
8485
public static final BlockDefinition<TrashCanBlock> TRASH_CAN = block("Automatic Trash Can", "trash_can",
85-
BlockDefinitionParams.defaultStone().withBlockConstructor(TrashCanBlock::new).destroyTime(6.0f).explosionResistance(1200))
86+
BlockDefinitionParams.defaultStone().withBlockConstructor(TrashCanBlock::new).destroyTime(6.0f).explosionResistance(1200).dontConductRedstone())
8687
.withBlockRegistrationEvent(TrashCanBlock::onRegister);
8788

8889
// Other
89-
public static final BlockDefinition<Block> BASIC_MACHINE_HULL = block("Basic Machine Hull", MIBlockKeys.BASIC_MACHINE_HULL.location().getPath());
90-
public static final BlockDefinition<Block> ADVANCED_MACHINE_HULL = block("Advanced Machine Hull", MIBlockKeys.ADVANCED_MACHINE_HULL.location().getPath());
91-
public static final BlockDefinition<Block> TURBO_MACHINE_HULL = block("Turbo Machine Hull", MIBlockKeys.TURBO_MACHINE_HULL.location().getPath());
92-
public static final BlockDefinition<Block> HIGHLY_ADVANCED_MACHINE_HULL = block("Highly Advanced Machine Hull", MIBlockKeys.HIGHLY_ADVANCED_MACHINE_HULL.location().getPath());
93-
public static final BlockDefinition<Block> QUANTUM_MACHINE_HULL = block("Quantum Machine Hull", MIBlockKeys.QUANTUM_MACHINE_HULL.location().getPath(), BlockDefinitionParams.defaultStone().explosionResistance(6000f));
90+
public static final BlockDefinition<Block> BASIC_MACHINE_HULL = nonConductorBlock("Basic Machine Hull", MIBlockKeys.BASIC_MACHINE_HULL.location().getPath());
91+
public static final BlockDefinition<Block> ADVANCED_MACHINE_HULL = nonConductorBlock("Advanced Machine Hull", MIBlockKeys.ADVANCED_MACHINE_HULL.location().getPath());
92+
public static final BlockDefinition<Block> TURBO_MACHINE_HULL = nonConductorBlock("Turbo Machine Hull", MIBlockKeys.TURBO_MACHINE_HULL.location().getPath());
93+
public static final BlockDefinition<Block> HIGHLY_ADVANCED_MACHINE_HULL = nonConductorBlock("Highly Advanced Machine Hull", MIBlockKeys.HIGHLY_ADVANCED_MACHINE_HULL.location().getPath());
94+
public static final BlockDefinition<Block> QUANTUM_MACHINE_HULL = block("Quantum Machine Hull", MIBlockKeys.QUANTUM_MACHINE_HULL.location().getPath(), BlockDefinitionParams.defaultStone().explosionResistance(6000f).dontConductRedstone());
9495

95-
public static final BlockDefinition<Block> FUSION_CHAMBER = block("Fusion Chamber", "fusion_chamber");
96+
public static final BlockDefinition<Block> FUSION_CHAMBER = nonConductorBlock("Fusion Chamber", "fusion_chamber");
9697
public static final BlockDefinition<Block> INDUSTRIAL_TNT = blockExplosive("Industrial TNT", "industrial_tnt");
9798
public static final BlockDefinition<Block> NUKE = blockExplosive("Nuke", "nuke");
9899

@@ -128,7 +129,7 @@ public static void init(IEventBus modBus) {
128129

129130

130131
public static final BlockDefinition<CreativeStorageUnitBlock> CREATIVE_STORAGE_UNIT = block("Creative Storage Unit",
131-
"creative_storage_unit", BlockDefinitionParams.defaultStone().withBlockConstructor(CreativeStorageUnitBlock::new));
132+
"creative_storage_unit", BlockDefinitionParams.defaultStone().withBlockConstructor(CreativeStorageUnitBlock::new).dontConductRedstone());
132133

133134
// Materials
134135
public static final BlockDefinition<Block> BLOCK_FIRE_CLAY_BRICKS = block("Fire Clay Bricks", "fire_clay_bricks",
@@ -157,6 +158,10 @@ public static BlockDefinition<Block> block(String englishName, String id) {
157158
return MIBlock.block(englishName, id, BlockDefinitionParams.defaultStone());
158159
}
159160

161+
public static BlockDefinition<Block> nonConductorBlock(String englishName, String id) {
162+
return MIBlock.block(englishName, id, BlockDefinitionParams.defaultStone().dontConductRedstone());
163+
}
164+
160165
public static BlockDefinition<Block> blockExplosive(String englishName, String id) {
161166
return MIBlock.block(
162167
englishName,
@@ -312,6 +317,16 @@ public BlockDefinitionParams<T> isValidSpawn(BlockBehaviour.StateArgumentPredica
312317
return this;
313318
}
314319

320+
public BlockDefinitionParams<T> dontConductRedstone() {
321+
this.props.isRedstoneConductor(Blocks::never);
322+
return this;
323+
}
324+
325+
public BlockDefinitionParams<T> isRedstoneConductor(BlockBehaviour.StatePredicate isRedstoneConductor) {
326+
this.props.isRedstoneConductor(isRedstoneConductor);
327+
return this;
328+
}
329+
315330
public BlockDefinitionParams<T> destroyTime(float destroyTime) {
316331
this.props.destroyTime(destroyTime);
317332
return this;

src/main/java/aztech/modern_industrialization/blocks/storage/barrel/BarrelBlock.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import net.minecraft.world.entity.player.Player;
3838
import net.minecraft.world.item.ItemStack;
3939
import net.minecraft.world.level.Level;
40+
import net.minecraft.world.level.block.Blocks;
4041
import net.minecraft.world.level.block.EntityBlock;
4142
import net.minecraft.world.level.block.state.BlockBehaviour;
4243
import net.minecraft.world.level.material.MapColor;
@@ -47,7 +48,8 @@
4748
public class BarrelBlock extends AbstractStorageBlock<ItemVariant> implements EntityBlock {
4849

4950
public BarrelBlock(EntityBlock factory, StorageBehaviour<ItemVariant> behaviour) {
50-
super(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).destroyTime(4.0f).isValidSpawn(MobSpawning.NO_SPAWN), factory, behaviour);
51+
super(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).destroyTime(4.0f).isValidSpawn(MobSpawning.NO_SPAWN)
52+
.isRedstoneConductor(Blocks::never), factory, behaviour);
5153
}
5254

5355
private static boolean useBlock(BlockHitResult hitResult, InteractionHand hand, Player player, Level world) {

src/main/java/aztech/modern_industrialization/blocks/storage/tank/TankBlock.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import net.minecraft.world.item.ItemStack;
3535
import net.minecraft.world.level.BlockGetter;
3636
import net.minecraft.world.level.Level;
37+
import net.minecraft.world.level.block.Blocks;
3738
import net.minecraft.world.level.block.EntityBlock;
3839
import net.minecraft.world.level.block.state.BlockBehaviour;
3940
import net.minecraft.world.level.block.state.BlockState;
@@ -43,7 +44,8 @@
4344
public class TankBlock extends AbstractStorageBlock<FluidVariant> implements EntityBlock {
4445

4546
public TankBlock(EntityBlock factory, StorageBehaviour<FluidVariant> behaviour) {
46-
super(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).destroyTime(4.0f).noOcclusion().isValidSpawn(MobSpawning.NO_SPAWN), factory,
47+
super(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).destroyTime(4.0f).noOcclusion().isValidSpawn(MobSpawning.NO_SPAWN)
48+
.isRedstoneConductor(Blocks::never), factory,
4749
behaviour);
4850
}
4951

src/main/java/aztech/modern_industrialization/machines/init/MachineRegistrationHelper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.util.function.Supplier;
4242
import net.minecraft.core.BlockPos;
4343
import net.minecraft.world.level.block.Block;
44+
import net.minecraft.world.level.block.Blocks;
4445
import net.minecraft.world.level.block.entity.BlockEntityType;
4546
import net.minecraft.world.level.block.state.BlockState;
4647

@@ -68,7 +69,8 @@ public static Supplier<BlockEntityType<?>> registerMachine(String englishName, S
6869
.withModel((block, gen) -> {
6970
// Model generation is handled in the model provider already.
7071
})
71-
.isValidSpawn(MobSpawning.NO_SPAWN));
72+
.isValidSpawn(MobSpawning.NO_SPAWN)
73+
.isRedstoneConductor(Blocks::never));
7274

7375
return MIRegistries.BLOCK_ENTITIES.register(id, () -> {
7476
Block block = blockDefinition.asBlock();

src/main/resources/META-INF/accesstransformer.cfg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ public-f net.minecraft.client.gui.components.AbstractWidget render(Lnet/minecraf
55
# Used for menu interactions
66
public net.minecraft.world.inventory.AbstractContainerMenu createCarriedSlotAccess()Lnet/minecraft/world/entity/SlotAccess;
77

8+
# Used for block state properties
9+
# TODO: PR to NeoForge
10+
public net.minecraft.world.level.block.Blocks never(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z
11+
812
# Used for ore registration
913
public net.minecraft.data.worldgen.placement.OrePlacements commonOrePlacement(ILnet/minecraft/world/level/levelgen/placement/PlacementModifier;)Ljava/util/List;
1014

0 commit comments

Comments
 (0)