The resistor wires are returned when the marx generator is disassembled now, closes #62
This commit is contained in:
parent
63d9fca789
commit
c6d2a26a6d
|
@ -93,8 +93,8 @@ dependencies {
|
||||||
//runtime "codechicken:ChickenASM:1.12-1.0.2.7"
|
//runtime "codechicken:ChickenASM:1.12-1.0.2.7"
|
||||||
//runtime "mrtjpcore:MrTJPCore-1.12.2:2.1.3.35:universal"
|
//runtime "mrtjpcore:MrTJPCore-1.12.2:2.1.3.35:universal"
|
||||||
//Tech Reborn
|
//Tech Reborn
|
||||||
compileOnly "TechReborn:TechReborn-1.12:2.6.+:dev"
|
compileOnly "TechReborn:TechReborn-1.12:2.6.9.7:universal"
|
||||||
compileOnly "RebornCore:RebornCore-1.12:3.2.+:dev"
|
compileOnly "RebornCore:RebornCore-1.12:3.2.+:universal"
|
||||||
//Others
|
//Others
|
||||||
compileOnly 'com.elytradev:mirage:2.0.1-SNAPSHOT'
|
compileOnly 'com.elytradev:mirage:2.0.1-SNAPSHOT'
|
||||||
compileOnly "mezz.jei:jei_1.12:4.+"
|
compileOnly "mezz.jei:jei_1.12:4.+"
|
||||||
|
|
|
@ -78,6 +78,7 @@ public abstract class TileEntityIWMultiblock extends TileEntityIWBase implements
|
||||||
T master = master(here);
|
T master = master(here);
|
||||||
return master!=null?master:def;
|
return master!=null?master:def;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disassemble() {
|
public void disassemble() {
|
||||||
if (formed && !world.isRemote) {
|
if (formed && !world.isRemote) {
|
||||||
BlockPos startPos = getOrigin();
|
BlockPos startPos = getOrigin();
|
||||||
|
|
|
@ -23,6 +23,7 @@ import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler;
|
||||||
import blusunrize.immersiveengineering.api.energy.wires.WireType;
|
import blusunrize.immersiveengineering.api.energy.wires.WireType;
|
||||||
import blusunrize.immersiveengineering.api.energy.wires.redstone.IRedstoneConnector;
|
import blusunrize.immersiveengineering.api.energy.wires.redstone.IRedstoneConnector;
|
||||||
import blusunrize.immersiveengineering.api.energy.wires.redstone.RedstoneWireNetwork;
|
import blusunrize.immersiveengineering.api.energy.wires.redstone.RedstoneWireNetwork;
|
||||||
|
import blusunrize.immersiveengineering.common.IESaveData;
|
||||||
import blusunrize.immersiveengineering.common.blocks.BlockTypes_MetalsIE;
|
import blusunrize.immersiveengineering.common.blocks.BlockTypes_MetalsIE;
|
||||||
import blusunrize.immersiveengineering.common.blocks.metal.*;
|
import blusunrize.immersiveengineering.common.blocks.metal.*;
|
||||||
import blusunrize.immersiveengineering.common.util.Utils;
|
import blusunrize.immersiveengineering.common.util.Utils;
|
||||||
|
@ -159,8 +160,6 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable,
|
||||||
return getPos().subtract(offset).offset(facing.getOpposite(), 3);
|
return getPos().subtract(offset).offset(facing.getOpposite(), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public IBlockState getOriginalBlock() {
|
public IBlockState getOriginalBlock() {
|
||||||
int forward = getForward();
|
int forward = getForward();
|
||||||
|
@ -191,6 +190,53 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disassemble() {
|
||||||
|
boolean active = formed && !world.isRemote;
|
||||||
|
IndustrialWires.logger.info("Calling disassemble for {}, active {}", pos, active);
|
||||||
|
super.disassemble();
|
||||||
|
if (active) {
|
||||||
|
final int forward = -1;
|
||||||
|
BlockPos master = pos.subtract(offset);
|
||||||
|
ItemStack coil = new ItemStack(IEObjects.itemWireCoil, 1, 2);
|
||||||
|
WireType type = WireType.STEEL;
|
||||||
|
TargetingInfo dummy = new TargetingInfo(EnumFacing.DOWN, 0, 0, 0);
|
||||||
|
for (int up = 0; up < stageCount - 1; ++up) {
|
||||||
|
for (int right = 0; right < 2; ++right) {
|
||||||
|
BlockPos lowerPos = offset(master, facing, mirrored, right, forward, up);
|
||||||
|
BlockPos upperPos = lowerPos.up();
|
||||||
|
IndustrialWires.logger.info("Lower: {}, upper: {}, master: {}", lowerPos, upperPos, master);
|
||||||
|
TileEntity lowerTE = world.getTileEntity(lowerPos);
|
||||||
|
if (!(lowerTE instanceof IImmersiveConnectable)) {
|
||||||
|
world.spawnEntity(new EntityItem(world, lowerPos.getX() + .5, lowerPos.getY() + .5,
|
||||||
|
lowerPos.getZ() + .5, coil));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
TileEntity upperTE = world.getTileEntity(upperPos);
|
||||||
|
if (!(upperTE instanceof IImmersiveConnectable)) {
|
||||||
|
world.spawnEntity(new EntityItem(world, lowerPos.getX() + .5, lowerPos.getY() + .5,
|
||||||
|
lowerPos.getZ() + .5, coil));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
IImmersiveConnectable lowerIIC = (IImmersiveConnectable) lowerTE;
|
||||||
|
IImmersiveConnectable upperIIC = (IImmersiveConnectable) upperTE;
|
||||||
|
ImmersiveNetHandler.Connection conn = ImmersiveNetHandler.INSTANCE.addAndGetConnection(world,
|
||||||
|
lowerPos, upperPos, 1, type);
|
||||||
|
lowerIIC.connectCable(type, dummy, upperIIC);
|
||||||
|
upperIIC.connectCable(type, dummy, lowerIIC);
|
||||||
|
ImmersiveNetHandler.INSTANCE.addBlockData(world, conn);
|
||||||
|
IESaveData.setDirty(world.provider.getDimension());
|
||||||
|
lowerTE.markDirty();
|
||||||
|
IBlockState state = world.getBlockState(lowerPos);
|
||||||
|
world.notifyBlockUpdate(lowerPos, state, state, 3);
|
||||||
|
upperTE.markDirty();
|
||||||
|
state = world.getBlockState(upperPos);
|
||||||
|
world.notifyBlockUpdate(upperPos, state, state, 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
ApiUtils.checkForNeedlessTicking(this);
|
ApiUtils.checkForNeedlessTicking(this);
|
||||||
|
@ -540,8 +586,9 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable,
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnectCable(WireType cableType, TargetingInfo target) {
|
public boolean canConnectCable(WireType cableType, TargetingInfo target, Vec3i offset) {
|
||||||
if (hasConnection) {
|
if (hasConnection) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -585,7 +632,7 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable,
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vec3d getRaytraceOffset(IImmersiveConnectable link) {
|
public Vec3d getConnectionOffset(ImmersiveNetHandler.Connection con) {
|
||||||
Matrix4 transf = getBaseTransform();
|
Matrix4 transf = getBaseTransform();
|
||||||
if (getRight()==0) {
|
if (getRight()==0) {
|
||||||
return transf.apply(new Vec3d(.5, .5, 7/16D));
|
return transf.apply(new Vec3d(.5, .5, 7/16D));
|
||||||
|
@ -594,24 +641,19 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3d getConnectionOffset(ImmersiveNetHandler.Connection con) {
|
|
||||||
return getRaytraceOffset(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate()
|
public void validate()
|
||||||
{
|
{
|
||||||
super.validate();
|
super.validate();
|
||||||
ImmersiveNetHandler.INSTANCE.resetCachedIndirectConnections();
|
if (!world.isRemote)
|
||||||
|
ApiUtils.addFutureServerTask(world, () -> ImmersiveNetHandler.INSTANCE.onTEValidated(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate()
|
public void invalidate()
|
||||||
{
|
{
|
||||||
super.invalidate();
|
super.invalidate();
|
||||||
if (world.isRemote)
|
if (world.isRemote && !IndustrialWires.proxy.isSingleplayer())
|
||||||
ImmersiveNetHandler.INSTANCE.clearConnectionsOriginatingFrom(pos, world);
|
ImmersiveNetHandler.INSTANCE.clearConnectionsOriginatingFrom(pos, world);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue