Initial work on machine explosions, I will need to update the API to allow finer control over what explodes
This commit is contained in:
parent
58b202a782
commit
0de43bfe2d
2 changed files with 12 additions and 9 deletions
|
@ -382,7 +382,10 @@ public abstract class CableMultipart extends Multipart implements IOccludingPart
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void resetNetwork() {
|
public final void resetNetwork() {
|
||||||
network.removeElement(this);
|
if(network != null){
|
||||||
|
network.removeElement(this);
|
||||||
|
}
|
||||||
|
|
||||||
network = null;
|
network = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import net.minecraft.util.EnumFacing;
|
||||||
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;
|
||||||
|
import reborncore.common.powerSystem.TilePowerAcceptor;
|
||||||
import techreborn.events.TRTickHandler;
|
import techreborn.events.TRTickHandler;
|
||||||
import techreborn.parts.CableMultipart;
|
import techreborn.parts.CableMultipart;
|
||||||
import techreborn.parts.EnumCableType;
|
import techreborn.parts.EnumCableType;
|
||||||
|
@ -30,6 +31,7 @@ public class TRPowerNet {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void tick(PowerTickEvent evt) {
|
public void tick(PowerTickEvent evt) {
|
||||||
if(tick < 20){
|
if(tick < 20){
|
||||||
|
tick ++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(tick % 80 == 0){
|
if(tick % 80 == 0){
|
||||||
|
@ -154,14 +156,6 @@ public class TRPowerNet {
|
||||||
return cables.size() + ": " + endpoints.toString();
|
return cables.size() + ": " + endpoints.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int drainEnergy(int maxReceive, boolean simulate) {
|
|
||||||
maxReceive = Math.min(maxReceive, this.getIOLimit());
|
|
||||||
int drain = Math.min(maxReceive, energy);
|
|
||||||
if (!simulate)
|
|
||||||
energy -= drain;
|
|
||||||
return drain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int addEnergy(int maxAdd, boolean simulate) {
|
public int addEnergy(int maxAdd, boolean simulate) {
|
||||||
if (energy >= this.getIOLimit())
|
if (energy >= this.getIOLimit())
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -206,6 +200,12 @@ public class TRPowerNet {
|
||||||
public int addEnergy(int max) {
|
public int addEnergy(int max) {
|
||||||
int total = 0;
|
int total = 0;
|
||||||
if (tile.canAcceptEnergy(EnumFacing.NORTH)) {
|
if (tile.canAcceptEnergy(EnumFacing.NORTH)) {
|
||||||
|
if(type.transferRate > tile.getMaxInput()){
|
||||||
|
if(tile instanceof TilePowerAcceptor){
|
||||||
|
((TilePowerAcceptor) tile).getWorld().createExplosion(null, ((TilePowerAcceptor) tile).getPos().getX(), ((TilePowerAcceptor) tile).getPos().getY(), ((TilePowerAcceptor) tile).getPos().getZ(), 5F, true);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
int add = max - total;
|
int add = max - total;
|
||||||
total += tile.addEnergy(add, false);
|
total += tile.addEnergy(add, false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue