From a60b5a04a5d93e129cb7dd1ab427b69486c0f4d7 Mon Sep 17 00:00:00 2001 From: DarkVenom Date: Sun, 25 Aug 2024 01:58:02 +0300 Subject: [PATCH 1/2] Allow energy cables to be quickly replaced while holding wrench in offhand --- .../pipes/impl/PipeItem.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java b/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java index e6417e6a2..bd3597fe0 100644 --- a/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java +++ b/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java @@ -23,15 +23,20 @@ */ package aztech.modern_industrialization.pipes.impl; +import aztech.modern_industrialization.MITags; import aztech.modern_industrialization.pipes.MIPipes; import aztech.modern_industrialization.pipes.api.PipeNetworkData; +import aztech.modern_industrialization.pipes.api.PipeNetworkNode; import aztech.modern_industrialization.pipes.api.PipeNetworkType; import aztech.modern_industrialization.pipes.electricity.ElectricityNetworkData; +import aztech.modern_industrialization.pipes.electricity.ElectricityNetworkNode; import aztech.modern_industrialization.pipes.fluid.FluidNetworkData; import aztech.modern_industrialization.pipes.item.ItemNetworkData; +import java.util.HashSet; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -128,6 +133,32 @@ private boolean tryPlaceAt(UseOnContext context, BlockPos pos) { // If there is a block entity we try to add the pipe. BlockEntity be = world.getBlockEntity(pos); if (be instanceof PipeBlockEntity pipeBe) { + var player = context.getPlayer(); + if(player != null && player.getOffhandItem().is(MITags.WRENCHES) && isCable()) { + if (!world.isClientSide()) { + var cablesToRemove = new HashSet(); + // save cables which we need to remove + for (PipeNetworkNode pipe : pipeBe.getNodes()) { + var isCablePipe = pipe instanceof ElectricityNetworkNode; + if(!isCablePipe) continue; + cablesToRemove.add(pipe.getType()); + } + // remove all energy cables + for(PipeNetworkType type : cablesToRemove) { + pipeBe.removePipeAndDropContainedItems(type); + world.addFreshEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(MIPipes.INSTANCE.getPipeItem(type)))); + } + world.blockUpdated(pos, Blocks.AIR); + if (pipeBe.canAddPipe(type)) { + if (!world.isClientSide()) { + pipeBe.addPipe(type, defaultData.clone()); + return true; + } + return false; + } + } + return true; + } if (pipeBe.canAddPipe(type)) { if (!world.isClientSide()) { pipeBe.addPipe(type, defaultData.clone()); From d30becac1090601c05d67f54df770e5fb22f85db Mon Sep 17 00:00:00 2001 From: DarkVenom Date: Sun, 25 Aug 2024 02:38:20 +0300 Subject: [PATCH 2/2] Formatting fixes --- .../modern_industrialization/pipes/impl/PipeItem.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java b/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java index bd3597fe0..3adfa199a 100644 --- a/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java +++ b/src/main/java/aztech/modern_industrialization/pipes/impl/PipeItem.java @@ -134,19 +134,21 @@ private boolean tryPlaceAt(UseOnContext context, BlockPos pos) { BlockEntity be = world.getBlockEntity(pos); if (be instanceof PipeBlockEntity pipeBe) { var player = context.getPlayer(); - if(player != null && player.getOffhandItem().is(MITags.WRENCHES) && isCable()) { + if (player != null && player.getOffhandItem().is(MITags.WRENCHES) && isCable()) { if (!world.isClientSide()) { var cablesToRemove = new HashSet(); // save cables which we need to remove for (PipeNetworkNode pipe : pipeBe.getNodes()) { var isCablePipe = pipe instanceof ElectricityNetworkNode; - if(!isCablePipe) continue; + if (!isCablePipe) + continue; cablesToRemove.add(pipe.getType()); } // remove all energy cables - for(PipeNetworkType type : cablesToRemove) { + for (PipeNetworkType type : cablesToRemove) { pipeBe.removePipeAndDropContainedItems(type); - world.addFreshEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(MIPipes.INSTANCE.getPipeItem(type)))); + world.addFreshEntity( + new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(MIPipes.INSTANCE.getPipeItem(type)))); } world.blockUpdated(pos, Blocks.AIR); if (pipeBe.canAddPipe(type)) {