Fixed crashes when using the wires without IC2, closes #41

This commit is contained in:
malte0811 2018-09-03 20:10:38 +02:00
parent a9a481c1cf
commit cbcc95a010
4 changed files with 17 additions and 32 deletions

View File

@ -21,8 +21,6 @@ import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDirectio
import blusunrize.immersiveengineering.common.blocks.TileEntityIEBase;
import com.elytradev.mirage.lighting.IColoredLight;
import com.elytradev.mirage.lighting.Light;
import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergyEmitter;
import ic2.api.energy.tile.IEnergySink;
import malte0811.industrialWires.IWConfig;
@ -31,6 +29,7 @@ import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.IBlockBoundsIW;
import malte0811.industrialWires.blocks.IHasDummyBlocksIW;
import malte0811.industrialWires.blocks.ISyncReceiver;
import malte0811.industrialWires.compat.Compat;
import malte0811.industrialWires.network.MessageTileSyncIW;
import malte0811.industrialWires.util.Beziers;
import malte0811.industrialWires.util.ConversionUtil;
@ -53,7 +52,6 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.fml.common.Optional;
@ -86,7 +84,6 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
public int timeTillActive = -1;
private double tStep = 0;
private double consumtionJoule;
private boolean addedToIC2Net = false;
private int soundPhase;
private Vec3d soundPos;
public double salt;
@ -111,6 +108,12 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
40 * consumtionJoule);
}
@Override
public void onLoad() {
super.onLoad();
Compat.loadIC2Tile.accept(this);
}
@Override
public void update() {
ApiUtils.checkForNeedlessTicking(this);
@ -118,9 +121,6 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
return;
}
if (!world.isRemote) {
if (hasIC2&&!addedToIC2Net) {
addToIC2Net();
}
if ((controlControls[0][0] == null || timeTillActive == -1 || t >= 1)
&& energy.getEnergyStoredJ() >= 2 * consumtionJoule) {
for (int j = 0; j < size.movementPoints; j++) {
@ -187,12 +187,6 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
}
}
@Optional.Method(modid = "ic2")
private void addToIC2Net() {
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
addedToIC2Net = true;
}
private void initArc(int delay) {
if (controlMovement == null) {
initControl();
@ -463,31 +457,22 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
@Override
public void onChunkUnload() {
if (hasIC2) {
removeFromIC2Net();
Compat.unloadIC2Tile.accept(this);
}
addedToIC2Net = false;
super.onChunkUnload();
}
@Override
public void invalidate() {
if (hasIC2)
removeFromIC2Net();
Compat.unloadIC2Tile.accept(this);
if (world.isRemote) {
//stop sound
IndustrialWires.proxy.playJacobsLadderSound(this, -1, soundPos);
}
addedToIC2Net = false;
super.invalidate();
}
@Optional.Method(modid = "ic2")
private void removeFromIC2Net() {
if (!world.isRemote && addedToIC2Net) {
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
}
}
@Nonnull
@Override

View File

@ -20,7 +20,6 @@ import blusunrize.immersiveengineering.api.energy.wires.*;
import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.AbstractConnection;
import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection;
import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDirectionalTile;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergyAcceptor;
import ic2.api.energy.tile.IEnergyEmitter;
import ic2.api.energy.tile.IEnergySink;
@ -40,7 +39,6 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.*;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@ -295,7 +293,7 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
@Override
public void invalidate() {
if (!world.isRemote)
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
Compat.unloadIC2Tile.accept(this);
super.invalidate();
}
@ -303,7 +301,7 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
public void onChunkUnload() {
super.onChunkUnload();
if (!world.isRemote)
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
Compat.unloadIC2Tile.accept(this);
}
@Override

View File

@ -17,6 +17,7 @@ package malte0811.industrialWires.compat;
import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.api.tool.ToolboxHandler;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import crafttweaker.CraftTweakerAPI;
import ic2.api.energy.event.EnergyTileLoadEvent;
@ -44,6 +45,7 @@ import pl.asie.charset.api.wires.IBundledReceiver;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Consumer;
@ -53,6 +55,7 @@ public class Compat {
public static final String CRAFTTWEAKER_ID = "crafttweaker";
public static final String CHARSET_ID = "charset";
public static BiFunction<ItemStack, Template.BlockInfo, ItemStack> stackFromInfo = (s, i)->s;
public static BiFunction<String, String, List<ItemStack>> getIC2Item = (s, s2)->ImmutableList.of();
static Consumer<MarxOreHandler.OreInfo> addMarx = (o) -> {
};
static Consumer<MarxOreHandler.OreInfo> removeMarx = (o) -> {
@ -143,6 +146,7 @@ public class Compat {
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) te));
}
};
getIC2Item = (type, variant)->ImmutableList.of(IC2Items.getItem(type, variant));
try {
Class<?> teb = Class.forName("ic2.core.block.TileEntityBlock");
Method getPickBlock = teb.getDeclaredMethod("getPickBlock", EntityPlayer.class, RayTraceResult.class);

View File

@ -16,9 +16,9 @@
package malte0811.industrialWires.crafting;
import blusunrize.immersiveengineering.api.ApiUtils;
import ic2.api.item.IC2Items;
import malte0811.industrialWires.IEObjects;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.compat.Compat;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraftforge.oredict.OreIngredient;
@ -35,9 +35,7 @@ public final class IC2TRHelper {
return new OreIngredient("itemRubber");
}
}
if (IndustrialWires.hasIC2) {
stacks.add(IC2Items.getItem(type, variant));
}
stacks.addAll(Compat.getIC2Item.apply(type, variant));
if (IndustrialWires.hasTechReborn) {
switch (type) {
case "cable":