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)
This commit is contained in:
modmuss50 2017-03-15 09:45:13 +00:00
parent 50093455ab
commit 5ed6760db9
No known key found for this signature in database
GPG key ID: 203A5ED4D3E48BEA
2 changed files with 13 additions and 7 deletions

View file

@ -228,9 +228,11 @@ public abstract class CableMultipart extends Multipart
if(network == null && cableMultipart.network != null){ if(network == null && cableMultipart.network != null){
network = cableMultipart.network; network = cableMultipart.network;
network.addElement(this); network.addElement(this);
} else if (network != cableMultipart.network){ } else if (network != null && cableMultipart.network != null && network != cableMultipart.network){
network = cableMultipart.network.merge(network); network = cableMultipart.network.merge(network);
network.addElement(this); network.addElement(this);
} else {
findAndJoinNetwork(getWorld(), getPos());
} }
} }
} }

View file

@ -24,10 +24,11 @@
package techreborn.power; package techreborn.power;
import net.minecraft.entity.item.EntityTNTPrimed;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import reborncore.api.power.IEnergyInterfaceTile; import reborncore.api.power.IEnergyInterfaceTile;
@ -296,11 +297,14 @@ public class TRPowerNet {
int total = 0; int total = 0;
if (tile.canAcceptEnergy(side.getOpposite()) && max > 0) { if (tile.canAcceptEnergy(side.getOpposite()) && max > 0) {
if (type.tier.ordinal() > tile.getTier().ordinal() && max > tile.getMaxInput()) { if (type.tier.ordinal() > tile.getTier().ordinal() && max > tile.getMaxInput()) {
if (tile instanceof TileEntity) { if (tile instanceof TileEntity && ((TileEntity) tile).getWorld() instanceof WorldServer) {
((TileEntity) tile).getWorld().createExplosion( WorldServer worldServer = (WorldServer) ((TileEntity) tile).getWorld();
new EntityTNTPrimed(((TileEntity) tile).getWorld()), if(worldServer.rand.nextInt(5) == 0){
((TileEntity) tile).getPos().getX(), ((TileEntity) tile).getPos().getY(), double x = (double)((TileEntity) tile).getPos().getX() + worldServer.rand.nextDouble() + (side.getFrontOffsetX() / 2);
((TileEntity) tile).getPos().getZ(), 2.5F, true); 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; return 0;
} }