diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index b561e1d24..91629717a 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -12,7 +12,6 @@ import com.hbm.handler.GunConfiguration; import com.hbm.handler.HbmKeybinds; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.interfaces.IItemHUD; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; @@ -167,7 +166,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { return getBeltSize(player, getBeltType(player, stack, main)) > 0; } else { - return getMag(stack) >= 0 + config.roundsPerCycle; + //return getMag(stack) >= 0 + config.roundsPerCycle; + return getMag(stack) > 0; } } @@ -220,6 +220,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { for(int k = 0; k < altConfig.roundsPerCycle; k++) { + if(altConfig.reloadType != altConfig.RELOAD_NONE && !hasAmmo(stack, player, true)) + break; + if(config.bulletsMax > config.bulletsMin) bullets += world.rand.nextInt(config.bulletsMax - config.bulletsMin); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index f12ae4af4..1aeae437c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -97,6 +97,7 @@ import com.hbm.tileentity.network.*; import com.hbm.tileentity.turret.*; import com.hbm.util.BobMathUtil; import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.wiaj.cannery.Jars; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -121,6 +122,8 @@ public class ClientProxy extends ServerProxy { registerItemRenderer(); registerEntityRenderer(); registerBlockRenderer(); + + Jars.initJars(); RenderingRegistry.addNewArmourRendererPrefix("5"); RenderingRegistry.addNewArmourRendererPrefix("6"); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index e433e7f7f..f375b7a72 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -657,9 +657,13 @@ public class ModEventHandlerClient { list.add(EnumChatFormatting.GOLD + "Adds multiplier " + entry.value + " to the custom nuke stage " + entry.type); } - CanneryBase cannery = Jars.canneries.get(comp); - if(cannery != null) { - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("cannery.f1")); + try { + CanneryBase cannery = Jars.canneries.get(comp); + if(cannery != null) { + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("cannery.f1")); + } + } catch(Exception ex) { + list.add(EnumChatFormatting.RED + "Error loading cannery: " + ex.getLocalizedMessage()); } /*ItemStack copy = stack.copy(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 2ffb6c25b..75b5a3b19 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -10,17 +10,15 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.main.ModEventHandler; -import com.hbm.main.ModEventHandlerImpact; +import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.fluid.IFluidStandardTransceiver; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.EnumSkyBlock; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver { +public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, INBTPacketReceiver { public int age = 0; public FluidTank[] tanks; @@ -43,13 +41,16 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA if(age >= 2) { age = 0; } - - this.tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - this.tanks[1].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + + if(this.waterTimer > 0) + this.waterTimer--; int convert = Math.min(tanks[0].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); tanks[0].setFill(tanks[0].getFill() - convert); + if(convert > 0) + this.waterTimer = 20; + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); if(MainRegistry.proxy.getImpactFire(worldObj) > 0 && light > 7) { // Make both steam and water evaporate during firestorms... @@ -63,15 +64,20 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA fillFluidInit(tanks[1].getTankType()); - } else { - - if(tanks[0].getFill() > 0) { - this.waterTimer = 20; - } else if(this.waterTimer > 0){ - this.waterTimer--; - } + NBTTagCompound data = new NBTTagCompound(); + this.tanks[0].writeToNBT(data, "0"); + this.tanks[1].writeToNBT(data, "1"); + data.setByte("timer", (byte) this.waterTimer); + INBTPacketReceiver.networkPack(this, data, 150); } } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.tanks[0].readFromNBT(nbt, "0"); + this.tanks[1].readFromNBT(nbt, "1"); + this.waterTimer = nbt.getByte("timer"); + } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java index c29bd6b3d..771e275f4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java @@ -1,9 +1,6 @@ package com.hbm.tileentity.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.UpgradeManager; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; @@ -22,7 +19,6 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -329,7 +325,7 @@ public class TileEntityMachineMiningDrill extends TileEntityMachineBase implemen * */ public boolean tryDrill(int x, int y, int z) { - if(worldObj.getBlock(x, y, z) == Blocks.air || !isMinableOreo(x, y, z)) + if(worldObj.getBlock(x, y, z).isAir(worldObj, x, y, z) || !isMinableOreo(x, y, z)) return false; if(worldObj.getBlock(x, y, z).getMaterial().isLiquid()) { worldObj.func_147480_a(x, y, z, false); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index cc37550a2..806a425e6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -419,7 +419,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen } private boolean canBreak(Block block, int x, int y, int z) { - return block != Blocks.air && block.getBlockHardness(worldObj, x, y, z) >= 0 && !block.getMaterial().isLiquid() && block != Blocks.bedrock; + return block.isAir(worldObj, x, y, z) && block.getBlockHardness(worldObj, x, y, z) >= 0 && !block.getMaterial().isLiquid() && block != Blocks.bedrock; } public int getRange() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index dfafe55b4..a3aa409dd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -3,7 +3,6 @@ package com.hbm.tileentity.machine; import com.hbm.entity.missile.EntityMinerRocket; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.items.ISatChip; -import com.hbm.items.machine.ItemSatChip; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteMiner; @@ -49,21 +48,19 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent @Override public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { + if(slots[i] != null) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } else { - return null; + return null; } } @Override public void setInventorySlotContents(int i, ItemStack itemStack) { slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } } @@ -89,11 +86,10 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; } } @@ -105,30 +101,26 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 2 || i == 3 || i == 4 || i == 5) - { + if(i == 2 || i == 3 || i == 4 || i == 5) { return false; } return true; } - + @Override public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { + if(slots[i] != null) { + if(slots[i].stackSize <= j) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { + if(slots[i].stackSize == 0) { slots[i] = null; } - + return itemStack1; } else { return null; @@ -139,15 +131,13 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { + + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { + if(b0 >= 0 && b0 < slots.length) { slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } @@ -157,13 +147,11 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); + nbt1.setByte("slot", (byte) i); slots[i].writeToNBT(nbt1); list.appendTag(nbt1); } @@ -172,10 +160,9 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return access; - } + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return access; + } @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { @@ -193,68 +180,68 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent public void updateEntity() { if(!worldObj.isRemote) { - + if(data == null) - data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - - if(data == null) { - worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); - data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - data.markDirty(); + data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - if(data != null && slots[15] != null) { - int freq = ISatChip.getFreqS(slots[15]); - - Satellite sat = data.getSatFromFreq(freq); - - int delay = 10 * 60 * 1000; - - if(sat instanceof SatelliteMiner) { - - SatelliteMiner miner = (SatelliteMiner)sat; - - if(miner.lastOp + delay < System.currentTimeMillis()) { - - EntityMinerRocket rocket = new EntityMinerRocket(worldObj); - rocket.posX = xCoord + 0.5; - rocket.posY = 300; - rocket.posZ = zCoord + 0.5; - - rocket.satelliteClassName = miner.getClass().getName(); - - rocket.getDataWatcher().updateObject(17, freq); - worldObj.spawnEntityInWorld(rocket); - miner.lastOp = System.currentTimeMillis(); - data.markDirty(); - } - } - } - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5)); - - for(Entity e : list) { - - if(e instanceof EntityMinerRocket) { - - EntityMinerRocket rocket = (EntityMinerRocket)e; - - if(slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { - rocket.setDead(); - ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.tots); - break; - } - - if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { - unloadCargo(rocket.satelliteClassName); - } - } - } + if(data == null) { + worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); + data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + } + data.markDirty(); - ejectInto(xCoord + 2, yCoord, zCoord); - ejectInto(xCoord - 2, yCoord, zCoord); - ejectInto(xCoord, yCoord, zCoord + 2); - ejectInto(xCoord, yCoord, zCoord - 2); + if(data != null && slots[15] != null) { + int freq = ISatChip.getFreqS(slots[15]); + + Satellite sat = data.getSatFromFreq(freq); + + int delay = 10 * 60 * 1000; + + if(sat instanceof SatelliteMiner) { + + SatelliteMiner miner = (SatelliteMiner) sat; + + if(miner.lastOp + delay < System.currentTimeMillis()) { + + EntityMinerRocket rocket = new EntityMinerRocket(worldObj); + rocket.posX = xCoord + 0.5; + rocket.posY = 300; + rocket.posZ = zCoord + 0.5; + + rocket.satelliteClassName = miner.getClass().getName(); + + rocket.getDataWatcher().updateObject(17, freq); + worldObj.spawnEntityInWorld(rocket); + miner.lastOp = System.currentTimeMillis(); + data.markDirty(); + } + } + } + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5)); + + for(Entity e : list) { + + if(e instanceof EntityMinerRocket) { + + EntityMinerRocket rocket = (EntityMinerRocket) e; + + if(slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { + rocket.setDead(); + ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.tots); + break; + } + + if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { + unloadCargo(rocket.satelliteClassName); + } + } + } + + ejectInto(xCoord + 2, yCoord, zCoord); + ejectInto(xCoord - 2, yCoord, zCoord); + ejectInto(xCoord, yCoord, zCoord + 2); + ejectInto(xCoord, yCoord, zCoord - 2); } } @@ -268,7 +255,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent for(int i = 0; i < items; i++) { ItemStack stack = ((WeightedRandomObject)WeightedRandom.getRandomItem(rand, cargo)).asStack(); - addToInv(stack); + addToInv(stack.copy()); } } @@ -276,12 +263,14 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent for(int i = 0; i < 15; i++) { - if(slots[i] != null && slots[i].getItem() == stack.getItem() && slots[i].getItemDamage() == stack.getItemDamage() && - slots[i].stackSize < slots[i].getMaxStackSize()) { + if(slots[i] != null && slots[i].getItem() == stack.getItem() && slots[i].getItemDamage() == stack.getItemDamage() && slots[i].stackSize < slots[i].getMaxStackSize()) { - slots[i].stackSize++; + int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); - return; + slots[i].stackSize += toAdd; + stack.stackSize -= toAdd; + + if(stack.stackSize <= 0) return; } } @@ -351,16 +340,28 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent } } - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } + AxisAlignedBB bb = null; @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } + + return bb; } + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 2edfcb54b..5fd40bbe0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -3,7 +3,6 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/wiaj/cannery/Jars.java b/src/main/java/com/hbm/wiaj/cannery/Jars.java index 6398fc5e6..800482d3f 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Jars.java +++ b/src/main/java/com/hbm/wiaj/cannery/Jars.java @@ -9,7 +9,7 @@ public class Jars { public static HashMap canneries = new HashMap(); - static { + public static void initJars() { canneries.put(new ComparableStack(ModBlocks.heater_firebox), new CanneryFirebox()); canneries.put(new ComparableStack(ModBlocks.machine_stirling), new CanneryStirling()); canneries.put(new ComparableStack(ModBlocks.machine_stirling_steel), new CanneryStirling()); diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_festive.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_festive.png new file mode 100644 index 000000000..9185238a0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_nuke_festive.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png b/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png new file mode 100644 index 000000000..36223f0f0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png differ