diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java index 24be5194a..34e8205f6 100644 --- a/src/main/java/api/hbm/energymk2/PowerNetMK2.java +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -40,7 +40,7 @@ public class PowerNetMK2 extends NodeNet> provIt = providerEntries.entrySet().iterator(); while(provIt.hasNext()) { Entry entry = provIt.next(); - if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } + if(timestamp - entry.getValue() > timeout || isBadLink(entry.getKey())) { provIt.remove(); continue; } long src = Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); if(src > 0) { providers.add(new Pair(entry.getKey(), src)); @@ -58,7 +58,7 @@ public class PowerNetMK2 extends NodeNet entry = recIt.next(); - if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } + if(timestamp - entry.getValue() > timeout || isBadLink(entry.getKey())) { recIt.remove(); continue; } long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); if(rec > 0) { int p = entry.getKey().getPriority().ordinal(); diff --git a/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java b/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java index 76cf0f484..411f91a77 100644 --- a/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java +++ b/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java @@ -53,7 +53,7 @@ public class FluidNetMK2 extends NodeNet entry = iterator.next(); - if(currentTime - entry.getValue() > timeout) { iterator.remove(); continue; } + if(currentTime - entry.getValue() > timeout || isBadLink(entry.getKey())) { iterator.remove(); continue; } IFluidProviderMK2 provider = entry.getKey(); int[] pressureRange = provider.getProvidingPressureRange(type); for(int p = pressureRange[0]; p <= pressureRange[1]; p++) { @@ -69,7 +69,7 @@ public class FluidNetMK2 extends NodeNet entry = iterator.next(); - if(currentTime - entry.getValue() > timeout) { iterator.remove(); continue; } + if(currentTime - entry.getValue() > timeout || isBadLink(entry.getKey())) { iterator.remove(); continue; } IFluidReceiverMK2 receiver = entry.getKey(); int[] pressureRange = receiver.getReceivingPressureRange(type); for(int p = pressureRange[0]; p <= pressureRange[1]; p++) { diff --git a/src/main/java/api/hbm/fluidmk2/IFluidUserMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidUserMK2.java index a39f40889..1e60f7585 100644 --- a/src/main/java/api/hbm/fluidmk2/IFluidUserMK2.java +++ b/src/main/java/api/hbm/fluidmk2/IFluidUserMK2.java @@ -2,7 +2,9 @@ package api.hbm.fluidmk2; import com.hbm.inventory.fluid.tank.FluidTank; -public interface IFluidUserMK2 extends IFluidConnectorMK2 { +import api.hbm.tile.ILoadedTile; + +public interface IFluidUserMK2 extends IFluidConnectorMK2, ILoadedTile { public static final int HIGHEST_VALID_PRESSURE = 5; public static final int[] DEFAULT_PRESSURE_RANGE = new int[] {0, 0}; diff --git a/src/main/java/api/hbm/tile/ILoadedTile.java b/src/main/java/api/hbm/tile/ILoadedTile.java index 65ad9d14c..33b221bde 100644 --- a/src/main/java/api/hbm/tile/ILoadedTile.java +++ b/src/main/java/api/hbm/tile/ILoadedTile.java @@ -1,5 +1,6 @@ package api.hbm.tile; +/** For anything that should be removed off networks when considered unloaded, only affects providers and receivers, not links. Must not necessarily be a tile. */ public interface ILoadedTile { public boolean isLoaded(); diff --git a/src/main/java/com/hbm/blocks/machine/BlockPWR.java b/src/main/java/com/hbm/blocks/machine/BlockPWR.java index a9dd6506c..0320a76a1 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockPWR.java +++ b/src/main/java/com/hbm/blocks/machine/BlockPWR.java @@ -324,5 +324,18 @@ public class BlockPWR extends BlockContainer implements IBlockCT { return false; } + + public boolean isLoaded = true; + + @Override + public boolean isLoaded() { + return isLoaded; + } + + @Override + public void onChunkUnload() { + super.onChunkUnload(); + this.isLoaded = false; + } } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 25c557f13..b14eb9ae5 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -6406,16 +6406,6 @@ public class ModItems { GameRegistry.registerItem(mp_chip_4, mp_chip_4.getUnlocalizedName()); GameRegistry.registerItem(mp_chip_5, mp_chip_5.getUnlocalizedName()); - /*GameRegistry.registerItem(missile_skin_camo, missile_skin_camo.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_desert, missile_skin_desert.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_flames, missile_skin_flames.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_manly_pink, missile_skin_manly_pink.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_orange_insulation, missile_skin_orange_insulation.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_sleek, missile_skin_sleek.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_soviet_glory, missile_skin_soviet_glory.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_soviet_stank, missile_skin_soviet_stank.getUnlocalizedName()); - GameRegistry.registerItem(missile_skin_metal, missile_skin_metal.getUnlocalizedName());*/ - //Satellites GameRegistry.registerItem(sat_mapper, sat_mapper.getUnlocalizedName()); GameRegistry.registerItem(sat_scanner, sat_scanner.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index 96a9b099f..45cb4d0bc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -97,6 +97,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei public GunConfig getConfig(ItemStack stack, int index) { GunConfig cfg = configs_DNA[index]; + if(stack == null) return cfg; return WeaponUpgradeManager.eval(cfg, stack, O_GUNCONFIG + index, this); } diff --git a/src/main/java/com/hbm/uninos/NodeNet.java b/src/main/java/com/hbm/uninos/NodeNet.java index 55d50f1e4..f37446cec 100644 --- a/src/main/java/com/hbm/uninos/NodeNet.java +++ b/src/main/java/com/hbm/uninos/NodeNet.java @@ -7,6 +7,9 @@ import java.util.List; import java.util.Random; import java.util.Set; +import api.hbm.tile.ILoadedTile; +import net.minecraft.tileentity.TileEntity; + public abstract class NodeNet { /** Global random for figuring things out like random leftover distribution */ @@ -79,4 +82,10 @@ public abstract class NodeNet { this.receiverEntries.clear(); this.providerEntries.clear(); } + + public static boolean isBadLink(Object o) { + if(o instanceof ILoadedTile && !((ILoadedTile) o).isLoaded()) return true; + if(o instanceof TileEntity && ((TileEntity) o).isInvalid()) return true; + return false; + } } diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_weapon_modifier.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_weapon_modifier.png index 076e7a978..e2a97539a 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_weapon_modifier.png and b/src/main/resources/assets/hbm/textures/gui/machine/gui_weapon_modifier.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png index 27e251a79..29693d238 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png and b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png differ