From 5ed6760db9486321eb8f84810e7a41413eb83b00 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 15 Mar 2017 09:45:13 +0000 Subject: [PATCH] Machines no longer explode when they receive too much power, they just smoke. Fix a crash with the power net. (cherry picked from commit 2ae5951) --- .../parts/powerCables/CableMultipart.java | 4 +++- src/main/java/techreborn/power/TRPowerNet.java | 16 ++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/techreborn/parts/powerCables/CableMultipart.java b/src/main/java/techreborn/parts/powerCables/CableMultipart.java index 5aee6390c..88769070e 100644 --- a/src/main/java/techreborn/parts/powerCables/CableMultipart.java +++ b/src/main/java/techreborn/parts/powerCables/CableMultipart.java @@ -228,9 +228,11 @@ public abstract class CableMultipart extends Multipart if(network == null && cableMultipart.network != null){ network = cableMultipart.network; network.addElement(this); - } else if (network != cableMultipart.network){ + } else if (network != null && cableMultipart.network != null && network != cableMultipart.network){ network = cableMultipart.network.merge(network); network.addElement(this); + } else { + findAndJoinNetwork(getWorld(), getPos()); } } } diff --git a/src/main/java/techreborn/power/TRPowerNet.java b/src/main/java/techreborn/power/TRPowerNet.java index 922028ec1..d94be3475 100644 --- a/src/main/java/techreborn/power/TRPowerNet.java +++ b/src/main/java/techreborn/power/TRPowerNet.java @@ -24,10 +24,11 @@ package techreborn.power; -import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.WorldServer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import reborncore.api.power.IEnergyInterfaceTile; @@ -296,11 +297,14 @@ public class TRPowerNet { int total = 0; if (tile.canAcceptEnergy(side.getOpposite()) && max > 0) { if (type.tier.ordinal() > tile.getTier().ordinal() && max > tile.getMaxInput()) { - if (tile instanceof TileEntity) { - ((TileEntity) tile).getWorld().createExplosion( - new EntityTNTPrimed(((TileEntity) tile).getWorld()), - ((TileEntity) tile).getPos().getX(), ((TileEntity) tile).getPos().getY(), - ((TileEntity) tile).getPos().getZ(), 2.5F, true); + if (tile instanceof TileEntity && ((TileEntity) tile).getWorld() instanceof WorldServer) { + WorldServer worldServer = (WorldServer) ((TileEntity) tile).getWorld(); + if(worldServer.rand.nextInt(5) == 0){ + double x = (double)((TileEntity) tile).getPos().getX() + worldServer.rand.nextDouble() + (side.getFrontOffsetX() / 2); + double y = (double)((TileEntity) tile).getPos().getY() + worldServer.rand.nextDouble() + 1; + double z = (double)((TileEntity) tile).getPos().getZ() + worldServer.rand.nextDouble()+ (side.getFrontOffsetZ() / 2); + worldServer.spawnParticle(EnumParticleTypes.SMOKE_LARGE, x, y, z,1, 0.0D, 0.0D, 0.0D, 0D); + } } return 0; }