mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge pull request #1387 from MellowArpeggiation/hardon
Quantum virtual particles
This commit is contained in:
commit
5f2606c65e
@ -428,8 +428,8 @@ public class ModEventHandlerRenderer {
|
|||||||
int[] ranges = ForgeModContainer.blendRanges;
|
int[] ranges = ForgeModContainer.blendRanges;
|
||||||
int distance = 0;
|
int distance = 0;
|
||||||
|
|
||||||
if(settings.fancyGraphics && settings.renderDistanceChunks >= 0 && settings.renderDistanceChunks < ranges.length) {
|
if(settings.fancyGraphics && settings.renderDistanceChunks >= 0) {
|
||||||
distance = ranges[settings.renderDistanceChunks];
|
distance = ranges[Math.min(settings.renderDistanceChunks, ranges.length - 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
float r = 0F;
|
float r = 0F;
|
||||||
@ -456,7 +456,7 @@ public class ModEventHandlerRenderer {
|
|||||||
if(doesBiomeApply) {
|
if(doesBiomeApply) {
|
||||||
fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider);
|
fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider);
|
||||||
} else {
|
} else {
|
||||||
fogRGBMultiplier = Vec3.createVectorHelper(red, green, blue);
|
fogRGBMultiplier = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return fogRGBMultiplier;
|
return fogRGBMultiplier;
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
@ -107,6 +108,9 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
power = Library.chargeTEFromItems(slots, 4, power, maxPower);
|
power = Library.chargeTEFromItems(slots, 4, power, maxPower);
|
||||||
drawPower();
|
drawPower();
|
||||||
|
|
||||||
|
particles.addAll(particlesToAdd);
|
||||||
|
particlesToAdd.clear();
|
||||||
|
|
||||||
if(delay <= 0 && this.isOn && particles.size() < maxParticles && slots[0] != null && slots[1] != null && power >= maxPower * 0.75) {
|
if(delay <= 0 && this.isOn && particles.size() < maxParticles && slots[0] != null && slots[1] != null && power >= maxPower * 0.75) {
|
||||||
|
|
||||||
if(ioMode != MODE_HOPPER || (slots[0].stackSize > 1 && slots[1].stackSize > 1)) {
|
if(ioMode != MODE_HOPPER || (slots[0].stackSize > 1 && slots[1].stackSize > 1)) {
|
||||||
@ -134,6 +138,25 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
particlesToRemove.clear();
|
particlesToRemove.clear();
|
||||||
|
|
||||||
|
//Sort the virtual particles by momentum, and run through them until we have enough momentum to complete the recipe
|
||||||
|
//If we succeed, "collapse" the cheapest particle that had enough momentum
|
||||||
|
//If we fail to make anything, "collapse" the most expensive particle
|
||||||
|
if(particles.isEmpty() && !particlesCompleted.isEmpty()) {
|
||||||
|
ItemStack[] result = null;
|
||||||
|
Particle particle = null;
|
||||||
|
|
||||||
|
particlesCompleted.sort((p1, p2) -> { return p1.momentum - p2.momentum; });
|
||||||
|
for(Particle p : particlesCompleted) {
|
||||||
|
particle = p;
|
||||||
|
result = HadronRecipes.getOutput(p.item1, p.item2, p.momentum, analysisOnly);
|
||||||
|
if(result != null) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
process(particle, result);
|
||||||
|
|
||||||
|
particlesCompleted.clear();
|
||||||
|
}
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
data.setBoolean("isOn", isOn);
|
data.setBoolean("isOn", isOn);
|
||||||
data.setLong("power", power);
|
data.setLong("power", power);
|
||||||
@ -151,9 +174,9 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void process(Particle p) {
|
private void process(Particle p, ItemStack[] result) {
|
||||||
|
//Collapse this particle to real by consuming power
|
||||||
ItemStack[] result = HadronRecipes.getOutput(p.item1, p.item2, p.momentum, analysisOnly);
|
p.consumePower();
|
||||||
|
|
||||||
if(result == null) {
|
if(result == null) {
|
||||||
this.state = HadronRecipes.returnCode;
|
this.state = HadronRecipes.returnCode;
|
||||||
@ -166,9 +189,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
if((slots[2] == null || (slots[2].getItem() == result[0].getItem() && slots[2].stackSize < slots[2].getMaxStackSize())) &&
|
if((slots[2] == null || (slots[2].getItem() == result[0].getItem() && slots[2].stackSize < slots[2].getMaxStackSize())) &&
|
||||||
(slots[3] == null || (slots[3].getItem() == result[1].getItem() && slots[3].stackSize < slots[3].getMaxStackSize()))) {
|
(slots[3] == null || (slots[3].getItem() == result[1].getItem() && slots[3].stackSize < slots[3].getMaxStackSize()))) {
|
||||||
|
|
||||||
for(int i = 2; i <= 3; i++ ) {
|
for(int i = 2; i <= 3; i++) {
|
||||||
|
|
||||||
//System.out.println("yes");
|
|
||||||
if(slots[i] == null)
|
if(slots[i] == null)
|
||||||
slots[i] = result[i - 2].copy();
|
slots[i] = result[i - 2].copy();
|
||||||
else
|
else
|
||||||
@ -252,17 +273,18 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
particlesToRemove.add(p);
|
particlesToRemove.add(p);
|
||||||
|
|
||||||
if(!p.isExpired())
|
if(!p.isExpired())
|
||||||
process(p);
|
particlesCompleted.add(p);
|
||||||
|
|
||||||
p.expired = true;
|
p.expired = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static final int maxParticles = 1;
|
static final int maxParticles = 1;
|
||||||
List<Particle> particles = new ArrayList();
|
List<Particle> particles = new ArrayList<Particle>();
|
||||||
List<Particle> particlesToRemove = new ArrayList();
|
List<Particle> particlesToRemove = new ArrayList<Particle>();
|
||||||
|
List<Particle> particlesToAdd = new ArrayList<Particle>();
|
||||||
|
List<Particle> particlesCompleted = new ArrayList<Particle>();
|
||||||
|
|
||||||
private void updateParticles() {
|
private void updateParticles() {
|
||||||
|
|
||||||
for(Particle particle : particles) {
|
for(Particle particle : particles) {
|
||||||
particle.update();
|
particle.update();
|
||||||
}
|
}
|
||||||
@ -328,6 +350,25 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
this.stat_success = false;
|
this.stat_success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void expire(Particle particle, EnumHadronState reason) {
|
||||||
|
if(particle.expired)
|
||||||
|
return;
|
||||||
|
|
||||||
|
particle.consumePower();
|
||||||
|
for(Particle p : particles) {
|
||||||
|
p.expired = true;
|
||||||
|
particlesToRemove.add(p);
|
||||||
|
}
|
||||||
|
worldObj.newExplosion(null, particle.posX + 0.5, particle.posY + 0.5, particle.posZ + 0.5, 10, false, false);
|
||||||
|
|
||||||
|
//If any particles expire, cancel any succeeding particles, since they'll confuse the player
|
||||||
|
particlesCompleted.clear();
|
||||||
|
|
||||||
|
TileEntityHadron.this.state = reason;
|
||||||
|
TileEntityHadron.this.delay = delayError;
|
||||||
|
TileEntityHadron.this.setExpireStats(reason, particle.momentum, particle.posX, particle.posY, particle.posZ);
|
||||||
|
}
|
||||||
|
|
||||||
public class Particle {
|
public class Particle {
|
||||||
|
|
||||||
//Starting values
|
//Starting values
|
||||||
@ -347,6 +388,16 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
int cl1 = 0;
|
int cl1 = 0;
|
||||||
|
|
||||||
boolean expired = false;
|
boolean expired = false;
|
||||||
|
boolean cloned = false;
|
||||||
|
|
||||||
|
//Quantum mechanical ass particle
|
||||||
|
//Virtual particles traverse the accelerator without consuming electrical power
|
||||||
|
//The cheapest valid route to the analysis chamber is then turned into a real particle, consuming power
|
||||||
|
List<TileEntityHadronPower> plugs = new ArrayList<TileEntityHadronPower>();
|
||||||
|
|
||||||
|
//Quantum particles should only traverse a schottky direction ONCE
|
||||||
|
//Keep a list of traversed diodes and directions
|
||||||
|
HashMap<TileEntityHadronDiode, List<ForgeDirection>> history = new HashMap<TileEntityHadronDiode, List<ForgeDirection>>();
|
||||||
|
|
||||||
public Particle(ItemStack item1, ItemStack item2, ForgeDirection dir, int posX, int posY, int posZ) {
|
public Particle(ItemStack item1, ItemStack item2, ForgeDirection dir, int posX, int posY, int posZ) {
|
||||||
this.item1 = item1.copy();
|
this.item1 = item1.copy();
|
||||||
@ -362,21 +413,20 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
this.momentum = 0;
|
this.momentum = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void expire(EnumHadronState reason) {
|
//Clones the particle and gives it a new direction
|
||||||
|
public Particle clone(ForgeDirection dir) {
|
||||||
if(expired)
|
Particle p = new Particle(item1, item2, dir, posX, posY, posZ);
|
||||||
return;
|
p.momentum = momentum;
|
||||||
|
p.charge = charge;
|
||||||
this.expired = true;
|
p.analysis = analysis;
|
||||||
particlesToRemove.add(this);
|
p.isCheckExempt = isCheckExempt;
|
||||||
worldObj.newExplosion(null, posX + 0.5, posY + 0.5, posZ + 0.5, 10, false, false);
|
p.cl0 = cl0;
|
||||||
//System.out.println("Last dir: " + dir.name());
|
p.cl1 = cl1;
|
||||||
//System.out.println("Last pos: " + posX + " " + posY + " " + posZ);
|
p.expired = expired;
|
||||||
//Thread.currentThread().dumpStack();
|
p.plugs = new ArrayList<TileEntityHadronPower>(plugs);
|
||||||
|
p.history = new HashMap<TileEntityHadronDiode, List<ForgeDirection>>(history);
|
||||||
TileEntityHadron.this.state = reason;
|
p.cloned = true;
|
||||||
TileEntityHadron.this.delay = delayError;
|
return p;
|
||||||
TileEntityHadron.this.setExpireStats(reason, this.momentum, posX, posY, posZ);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isExpired() {
|
public boolean isExpired() {
|
||||||
@ -388,7 +438,13 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
if(expired) //just in case
|
if(expired) //just in case
|
||||||
return;
|
return;
|
||||||
|
|
||||||
changeDirection(this);
|
//Recently cloned particles have already a set direction, this prevents infinite recursion
|
||||||
|
if(cloned) {
|
||||||
|
cloned = false;
|
||||||
|
} else {
|
||||||
|
changeDirection(this);
|
||||||
|
}
|
||||||
|
|
||||||
makeSteppy(this);
|
makeSteppy(this);
|
||||||
|
|
||||||
if(!this.isExpired()) //only important for when the current segment is the core
|
if(!this.isExpired()) //only important for when the current segment is the core
|
||||||
@ -397,7 +453,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
isCheckExempt = false; //clearing up the exemption we might have held from the previous turn, AFTER stepping
|
isCheckExempt = false; //clearing up the exemption we might have held from the previous turn, AFTER stepping
|
||||||
|
|
||||||
if(charge < 0)
|
if(charge < 0)
|
||||||
this.expire(EnumHadronState.ERROR_NO_CHARGE);
|
expire(this, EnumHadronState.ERROR_NO_CHARGE);
|
||||||
|
|
||||||
if(cl0 > 0) cl0--;
|
if(cl0 > 0) cl0--;
|
||||||
if(cl1 > 0) cl1--;
|
if(cl1 > 0) cl1--;
|
||||||
@ -427,6 +483,14 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
this.momentum += coilVal;
|
this.momentum += coilVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void consumePower() {
|
||||||
|
for(TileEntityHadronPower plug : plugs) {
|
||||||
|
long bit = 10000;
|
||||||
|
int times = (int) (plug.getPower() / bit);
|
||||||
|
plug.setPower(plug.getPower() - times * bit);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -452,7 +516,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
if(te instanceof TileEntityHadron) {
|
if(te instanceof TileEntityHadron) {
|
||||||
|
|
||||||
if(p.analysis != 3)
|
if(p.analysis != 3)
|
||||||
p.expire(EnumHadronState.ERROR_NO_ANALYSIS);
|
expire(p, EnumHadronState.ERROR_NO_ANALYSIS);
|
||||||
else
|
else
|
||||||
this.finishParticle(p);
|
this.finishParticle(p);
|
||||||
|
|
||||||
@ -460,7 +524,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(block.getMaterial() != Material.air && block != ModBlocks.hadron_diode)
|
if(block.getMaterial() != Material.air && block != ModBlocks.hadron_diode)
|
||||||
p.expire(EnumHadronState.ERROR_OBSTRUCTED_CHANNEL);
|
expire(p, EnumHadronState.ERROR_OBSTRUCTED_CHANNEL);
|
||||||
|
|
||||||
if(block == ModBlocks.hadron_diode)
|
if(block == ModBlocks.hadron_diode)
|
||||||
p.isCheckExempt = true;
|
p.isCheckExempt = true;
|
||||||
@ -532,7 +596,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
//not a valid coil: kablam!
|
//not a valid coil: kablam!
|
||||||
if(!isValidCoil(block)) {
|
if(!isValidCoil(block)) {
|
||||||
p.expire(EnumHadronState.ERROR_EXPECTED_COIL);
|
expire(p, EnumHadronState.ERROR_EXPECTED_COIL);
|
||||||
} else {
|
} else {
|
||||||
p.charge -= coilVal;
|
p.charge -= coilVal;
|
||||||
p.incrementCharge(block, meta, coilVal);
|
p.incrementCharge(block, meta, coilVal);
|
||||||
@ -566,7 +630,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
int times = (int) (plug.getPower() / bit); //how many charges the plug has to offer
|
int times = (int) (plug.getPower() / bit); //how many charges the plug has to offer
|
||||||
|
|
||||||
p.charge += times;
|
p.charge += times;
|
||||||
plug.setPower(plug.getPower() - times * bit);
|
p.plugs.add(plug);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -576,10 +640,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//System.out.println("Was exempt: " + p.isCheckExempt);
|
expire(p, EnumHadronState.ERROR_MALFORMED_SEGMENT);
|
||||||
//worldObj.setBlock(a, b, c, Blocks.dirt);
|
|
||||||
|
|
||||||
p.expire(EnumHadronState.ERROR_MALFORMED_SEGMENT);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -591,14 +652,17 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
//if the analysis chamber is too big, destroy
|
//if the analysis chamber is too big, destroy
|
||||||
if(p.analysis > 3)
|
if(p.analysis > 3)
|
||||||
p.expire(EnumHadronState.ERROR_ANALYSIS_TOO_LONG);
|
expire(p, EnumHadronState.ERROR_ANALYSIS_TOO_LONG);
|
||||||
|
|
||||||
if(p.analysis == 2) {
|
if(p.analysis == 2) {
|
||||||
this.worldObj.playSoundEffect(p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5, "fireworks.blast", 2.0F, 2F);
|
//Only pop for the first particle
|
||||||
|
if(this.state != EnumHadronState.ANALYSIS) {
|
||||||
|
this.worldObj.playSoundEffect(p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5, "fireworks.blast", 2.0F, 2F);
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setString("type", "hadron");
|
||||||
|
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5), new TargetPoint(worldObj.provider.dimensionId, p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5, 25));
|
||||||
|
}
|
||||||
this.state = EnumHadronState.ANALYSIS;
|
this.state = EnumHadronState.ANALYSIS;
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
|
||||||
data.setString("type", "hadron");
|
|
||||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5), new TargetPoint(worldObj.provider.dimensionId, p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5, 25));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//if operating in line accelerator mode, halt after 2 blocks and staart the reading
|
//if operating in line accelerator mode, halt after 2 blocks and staart the reading
|
||||||
@ -610,7 +674,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
//if the analysis stops despite being short of 3 steps in the analysis chamber, destroy
|
//if the analysis stops despite being short of 3 steps in the analysis chamber, destroy
|
||||||
if(p.analysis > 0 && p.analysis < 3)
|
if(p.analysis > 0 && p.analysis < 3)
|
||||||
p.expire(EnumHadronState.ERROR_ANALYSIS_TOO_SHORT);
|
expire(p, EnumHadronState.ERROR_ANALYSIS_TOO_SHORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -641,7 +705,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
if(diode.getConfig(p.dir.getOpposite().ordinal()) != DiodeConfig.IN) {
|
if(diode.getConfig(p.dir.getOpposite().ordinal()) != DiodeConfig.IN) {
|
||||||
//it appears as if we have slammed into the side of a diode, ouch
|
//it appears as if we have slammed into the side of a diode, ouch
|
||||||
p.expire(EnumHadronState.ERROR_DIODE_COLLISION);
|
expire(p, EnumHadronState.ERROR_DIODE_COLLISION);
|
||||||
}
|
}
|
||||||
|
|
||||||
//there's a diode ahead, turn off checks so we can make the curve
|
//there's a diode ahead, turn off checks so we can make the curve
|
||||||
@ -664,28 +728,32 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
TileEntityHadronDiode diode = (TileEntityHadronDiode)te;
|
TileEntityHadronDiode diode = (TileEntityHadronDiode)te;
|
||||||
|
|
||||||
//the direction in which we were going anyway is an output, so we will keep going
|
boolean hasTurnedCurrent = false;
|
||||||
if(diode.getConfig(dir.ordinal()) == DiodeConfig.OUT) {
|
|
||||||
return;
|
|
||||||
|
|
||||||
//well then, iterate through some random directions and hope a valid output shows up
|
if(!p.history.containsKey(diode))
|
||||||
} else {
|
p.history.put(diode, new ArrayList<ForgeDirection>());
|
||||||
|
|
||||||
List<ForgeDirection> dirs = getRandomDirs();
|
List<ForgeDirection> usedDirections = p.history.get(diode);
|
||||||
|
|
||||||
for(ForgeDirection d : dirs) {
|
//Instance a new particle for each required fork
|
||||||
|
for(ForgeDirection d : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
if(d == dir || d == dir.getOpposite())
|
if(!usedDirections.contains(d) && diode.getConfig(d.ordinal()) == DiodeConfig.OUT) {
|
||||||
continue;
|
if(!hasTurnedCurrent) {
|
||||||
|
|
||||||
//looks like we can leave!
|
|
||||||
if(diode.getConfig(d.ordinal()) == DiodeConfig.OUT) {
|
|
||||||
//set the direction and leave this hellhole
|
|
||||||
p.dir = d;
|
p.dir = d;
|
||||||
return;
|
hasTurnedCurrent = true;
|
||||||
|
} else {
|
||||||
|
Particle clone = p.clone(d);
|
||||||
|
clone.history.get(diode).add(d);
|
||||||
|
particlesToAdd.add(clone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Add the used direction to the main particle AFTER cloning, so the clones don't get incorrect travel history
|
||||||
|
usedDirections.add(p.dir);
|
||||||
|
|
||||||
|
//If we managed to exit, keep going
|
||||||
|
if(hasTurnedCurrent) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//next step is air or the core, proceed
|
//next step is air or the core, proceed
|
||||||
@ -714,7 +782,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
//it seems like there are two or more possible ways, which is not allowed without a diode
|
//it seems like there are two or more possible ways, which is not allowed without a diode
|
||||||
//sorry kid, nothing personal
|
//sorry kid, nothing personal
|
||||||
} else {
|
} else {
|
||||||
p.expire(EnumHadronState.ERROR_BRANCHING_TURN);
|
expire(p, EnumHadronState.ERROR_BRANCHING_TURN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -726,7 +794,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.expire(EnumHadronState.ERROR_OBSTRUCTED_CHANNEL);
|
expire(p, EnumHadronState.ERROR_OBSTRUCTED_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user