diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 36cd4e00c..eda698874 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -68,9 +68,6 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_nether_fire) { return rand.nextInt(10) == 0 ? ModItems.ingot_phosphorus : ModItems.powder_fire; } - if(this == ModBlocks.block_meteor) { - return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor); - } if(this == ModBlocks.block_meteor_cobble) { return ModItems.fragment_meteorite; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java index 5e4a5937f..5f0261791 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.IBlockMulti; +import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.config.ServerConfig; @@ -39,8 +40,9 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; -public class BlockStorageCrate extends BlockContainer implements IBlockMulti, ITooltipProvider { +public class BlockStorageCrate extends BlockContainer implements IBlockMulti, ILookOverlay, ITooltipProvider { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -152,14 +154,28 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT } } - if(inv instanceof TileEntityCrateBase) - nbt.setBoolean("spiders", ((TileEntityCrateBase) inv).hasSpiders); + if(inv instanceof TileEntityCrateBase) { + TileEntityCrateBase crate = (TileEntityCrateBase) inv; + // Saves memory and ensures consistency between crafted crates and mined ones + if (crate.hasSpiders) { + nbt.setBoolean("spiders", true); + } + } if(!nbt.hasNoTags()) { drop.stackTagCompound = nbt; + } + if(inv instanceof TileEntityCrateBase) { + TileEntityCrateBase crate = (TileEntityCrateBase) inv; + if (crate.hasCustomInventoryName()) { + drop.setStackDisplayName(crate.getInventoryName()); + } + } + + if (drop.hasTagCompound()) { try { - byte[] abyte = CompressedStreamTools.compress(nbt); + byte[] abyte = CompressedStreamTools.compress(drop.stackTagCompound); if(abyte.length > 6000) { player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!")); @@ -220,8 +236,14 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT lockable.lock(); } } + if(inv instanceof TileEntityCrateBase) { - ((TileEntityCrateBase) inv).hasSpiders = stack.stackTagCompound.getBoolean("spiders"); + TileEntityCrateBase crate = (TileEntityCrateBase) inv; + crate.hasSpiders = stack.stackTagCompound.getBoolean("spiders"); + + if (stack.hasDisplayName()) { + crate.setCustomName(stack.getDisplayName()); + } } } @@ -354,4 +376,20 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT } } } + + @Override + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if (!(te instanceof IInventory)) + return; + + IInventory inv = (IInventory) te; + + if (!inv.hasCustomInventoryName()) + return; + + ILookOverlay.printGeneric(event, inv.getInventoryName(), 0xffff00, 0x404000, new ArrayList(0)); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockWoodStructure.java b/src/main/java/com/hbm/blocks/generic/BlockWoodStructure.java index b094874ac..74fdb220a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockWoodStructure.java +++ b/src/main/java/com/hbm/blocks/generic/BlockWoodStructure.java @@ -5,6 +5,7 @@ import java.util.List; import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockEnumMulti; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.render.block.ISBRHUniversal; import com.hbm.render.util.RenderBlocksNT; import com.hbm.util.EnumUtil; @@ -16,6 +17,7 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -53,7 +55,7 @@ public class BlockWoodStructure extends BlockEnumMulti implements ISBRHUniversal EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class, world.getBlockMetadata(x, y, z)); setBlockBounds(0, 0, 0, 1, 1, 1); if(type == type.ROOF) setBlockBounds(0F, 0F, 0F, 1F, 0.1875F, 1F); - if(type == type.SCAFFOLD) setBlockBounds(0F, 0F, 0F, 1F, 1F, 1F); + if(type == type.SCAFFOLD) setBlockBounds(0.0625F, 0F, 0.0625F, 1F - 0.0625F, 1F, 1F - 0.0625F); if(type == type.CEILING) setBlockBounds(0F, 0.875F, 0F, 1F, 1F, 1F); } @@ -62,6 +64,21 @@ public class BlockWoodStructure extends BlockEnumMulti implements ISBRHUniversal setBlockBoundsBasedOnState(world, x, y, z); super.addCollisionBoxesToList(world, x, y, z, aabb, list, collider); } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return super.getCollisionBoundingBoxFromPool(world, x, y, z); + } + + public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k) { + int meta = world.getBlockMetadata(i, j, k); + EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class, meta); + + if (type == type.SCAFFOLD) return AxisAlignedBB.getBoundingBox(i, j, k, i + 1, j + 1, k + 1); + + return super.getSelectedBoundingBoxFromPool(world, i, j, k); + } @Override public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) { @@ -149,4 +166,18 @@ public class BlockWoodStructure extends BlockEnumMulti implements ISBRHUniversal return true; } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + if (entity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) entity; + + int meta = world.getBlockMetadata(x, y, z); + EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class,meta); + if (type != type.SCAFFOLD) return; + + HbmPlayerProps props = HbmPlayerProps.getData(player); + props.isOnLadder = true; + } + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java index f8fb34a2c..67e58f18f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java @@ -10,6 +10,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineAutosaw; import com.hbm.util.i18n.I18nUtil; +import api.hbm.block.IToolable; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -22,7 +23,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class MachineAutosaw extends BlockContainer implements ILookOverlay, ITooltipProvider { +public class MachineAutosaw extends BlockContainer implements ILookOverlay, ITooltipProvider, IToolable { public MachineAutosaw() { super(Material.iron); @@ -72,6 +73,24 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay, IToo return true; } + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + if(tool != ToolType.SCREWDRIVER) + return false; + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineAutosaw)) + return false; + + TileEntityMachineAutosaw saw = (TileEntityMachineAutosaw) te; + + saw.isSuspended = !saw.isSuspended; + saw.markDirty(); + + return true; + } + @Override public void printHook(Pre event, World world, int x, int y, int z) { @@ -84,6 +103,10 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay, IToo List text = new ArrayList(); text.add(saw.tank.getTankType().getLocalizedName() + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); + + if (saw.isSuspended) { + text.add(EnumChatFormatting.RED + "! " + I18nUtil.resolveKey(getUnlocalizedName() + ".suspended") + " !"); + } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFan.java b/src/main/java/com/hbm/blocks/machine/MachineFan.java index 37a96e5f8..333f7323f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFan.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFan.java @@ -3,11 +3,17 @@ package com.hbm.blocks.machine; import java.util.List; import com.hbm.blocks.ITooltipProvider; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.PlayerInformPacket; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.ChatBuilder; import api.hbm.block.IBlowable; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; @@ -15,9 +21,12 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -65,10 +74,11 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro return false; } - public static class TileEntityFan extends TileEntity { + public static class TileEntityFan extends TileEntityLoadedBase { public float spin; public float prevSpin; + public boolean falloff = true; @Override public void updateEntity() { @@ -103,10 +113,17 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro List affected = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5 + Math.min(x, 0), yCoord + 0.5 + Math.min(y, 0), zCoord + 0.5 + Math.min(z, 0), xCoord + 0.5 + Math.max(x, 0), yCoord + 0.5 + Math.max(y, 0), zCoord + 0.5 + Math.max(z, 0)).expand(0.5, 0.5, 0.5)); for(Entity e : affected) { + + double coeff = push; + + if(!falloff) { + double dist = e.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + coeff *= 1.5 * (1 - dist / range / 2); + } - e.motionX += dir.offsetX * push; - e.motionY += dir.offsetY * push; - e.motionZ += dir.offsetZ * push; + e.motionX += dir.offsetX * coeff; + e.motionY += dir.offsetY * coeff; + e.motionZ += dir.offsetZ * coeff; } if(worldObj.isRemote && worldObj.rand.nextInt(30) == 0) { @@ -121,6 +138,10 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro this.prevSpin -= 360; this.spin -= 360; } + + if(!worldObj.isRemote) { + networkPackNT(150); + } } @Override @@ -128,21 +149,63 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.falloff = nbt.getBoolean("falloff"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("falloff", falloff); + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(falloff); + } + + @Override + public void deserialize(ByteBuf buf) { + falloff = buf.readBoolean(); + } } @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { - if(tool != ToolType.SCREWDRIVER) return false; - int meta = world.getBlockMetadata(x, y, z); + if(tool == ToolType.SCREWDRIVER) { + int meta = world.getBlockMetadata(x, y, z); - if(meta == 0) world.setBlockMetadataWithNotify(x, y, z, 1, 3); - if(meta == 1) world.setBlockMetadataWithNotify(x, y, z, 0, 3); - if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 3); - if(meta == 3) world.setBlockMetadataWithNotify(x, y, z, 2, 3); - if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 5, 3); - if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 4, 3); - - return true; + if(meta == 0) world.setBlockMetadataWithNotify(x, y, z, 1, 3); + if(meta == 1) world.setBlockMetadataWithNotify(x, y, z, 0, 3); + if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 3); + if(meta == 3) world.setBlockMetadataWithNotify(x, y, z, 2, 3); + if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 5, 3); + if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 4, 3); + + return true; + } + + if(tool == ToolType.HAND_DRILL) { + TileEntityFan tile = (TileEntityFan) world.getTileEntity(x, y, z); + + if(tile != null) { + tile.falloff = !tile.falloff; + tile.markDirty(); + + if(!world.isRemote) { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(this.getUnlocalizedName() + (tile.falloff ? ".falloffOn" : ".falloffOff")).color(EnumChatFormatting.GOLD).flush(), MainRegistry.proxy.ID_FAN_MODE), (EntityPlayerMP) player); + + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "random.click", 0.5F, 0.5F); + } + } + + return true; + } + + return false; } @Override diff --git a/src/main/java/com/hbm/inventory/SlotPattern.java b/src/main/java/com/hbm/inventory/SlotPattern.java index c40b92091..a6957c7ac 100644 --- a/src/main/java/com/hbm/inventory/SlotPattern.java +++ b/src/main/java/com/hbm/inventory/SlotPattern.java @@ -5,14 +5,22 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; public class SlotPattern extends Slot { protected boolean canHover = true; + + protected boolean allowStackSize = false; public SlotPattern(IInventory inv, int index, int x, int y) { super(inv, index, x, y); } + + public SlotPattern(IInventory inv, int index, int x, int y, boolean allowStackSize) { + super(inv, index, x, y); + this.allowStackSize = allowStackSize; + } @Override public boolean canTakeStack(EntityPlayer player) { @@ -24,6 +32,17 @@ public class SlotPattern extends Slot { return 1; } + @Override + public void putStack(ItemStack stack) { + if (stack != null) { + stack = stack.copy(); + + if (!allowStackSize) + stack.stackSize = 1; + } + super.putStack(stack); + } + public SlotPattern disableHover() { this.canHover = false; return this; diff --git a/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java b/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java index 0c5c3ff51..2c8b0438b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java +++ b/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java @@ -24,7 +24,7 @@ public class ContainerAutocrafter extends ContainerBase { this.addSlotToContainer(new SlotPattern(tedf, j + i * 3, 44 + j * 18, 22 + i * 18)); } } - this.addSlotToContainer(new SlotPattern(tedf, 9, 116, 40)); + this.addSlotToContainer(new SlotPattern(tedf, 9, 116, 40, true)); /* RECIPE */ addSlots(tedf,10, 44, 86, 3, 3); @@ -74,13 +74,7 @@ public class ContainerAutocrafter extends ContainerBase { } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); autocrafter.matcher.initPatternSmart(autocrafter.getWorldObj(), slot.getStack(), index); autocrafter.updateTemplateGrid(); diff --git a/src/main/java/com/hbm/inventory/container/ContainerCartDestroyer.java b/src/main/java/com/hbm/inventory/container/ContainerCartDestroyer.java index 356a97d92..cff9ae430 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCartDestroyer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCartDestroyer.java @@ -66,13 +66,7 @@ public class ContainerCartDestroyer extends Container { if(slot.getHasStack()) ret = slot.getStack().copy(); - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); return ret; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java b/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java index 925b3d7e1..c50c6014f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java @@ -48,13 +48,7 @@ public class ContainerCounterTorch extends ContainerBase { return ret; } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); radio.matcher.initPatternStandard(radio.getWorldObj(), slot.getStack(), index); return ret; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java index 9c0abe3a6..1da5825e1 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java @@ -105,13 +105,7 @@ public class ContainerCraneExtractor extends ContainerBase { return ret; } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); extractor.matcher.initPatternStandard(extractor.getWorldObj(), slot.getStack(), index); return ret; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java index 7b35961ee..17de36f86 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java @@ -100,13 +100,7 @@ public class ContainerCraneGrabber extends ContainerBase { return ret; } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); grabber.matcher.initPatternStandard(grabber.getWorldObj(), slot.getStack(), index); return ret; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneRouter.java b/src/main/java/com/hbm/inventory/container/ContainerCraneRouter.java index d30d8c8ae..79de2466f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneRouter.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneRouter.java @@ -52,13 +52,7 @@ public class ContainerCraneRouter extends ContainerBase { } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); router.initPattern(slot.getStack(), index); return ret; diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java index bdc788c44..13a8bbb0e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java @@ -85,13 +85,7 @@ public class ContainerDroneRequester extends ContainerCrateBase { return ret; } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); requester.matcher.initPatternStandard(requester.getWorldObj(), slot.getStack(), index); return ret; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java index d85a2953f..2e988f28a 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java @@ -94,13 +94,7 @@ public class ContainerMachineCustom extends Container { } else { - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); custom.matcher.initPatternSmart(player.worldObj, slot.getStack(), index - 10); return ret; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMassStorage.java b/src/main/java/com/hbm/inventory/container/ContainerMassStorage.java index 899cbc3f2..fae68ad3a 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMassStorage.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMassStorage.java @@ -27,32 +27,40 @@ public class ContainerMassStorage extends ContainerBase { } @Override - public ItemStack transferStackInSlot(EntityPlayer player, int par2) { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack result = null; + Slot slot = (Slot) this.inventorySlots.get(index); - if(var4 != null && var4.getHasStack()) { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if(par2 == 0 || par2 == 2) { - if(!this.mergeItemStack(var5, storage.getSizeInventory(), this.inventorySlots.size(), true)) { - return null; - } - } else if(!this.mergeItemStack(var5, 0, 1, false)) { - return null; - } - - if(var5.stackSize == 0) { - var4.putStack((ItemStack) null); - } else { - var4.onSlotChanged(); - } - - var4.onPickupFromSlot(player, var5); + // Refill instantly if needed, then do regular slot behavior + if(index == 2 && slot != null && !slot.getHasStack()) { + slot.putStack(storage.quickExtract()); } - return var3; + if(slot != null && slot.getHasStack()) { + ItemStack initial = slot.getStack(); + result = initial.copy(); + + if(index == 0 || index == 2) { + if(!this.mergeItemStack(initial, storage.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + // Try to insert instantly, then fall back to regular slot behavior + if(!storage.quickInsert(initial) && !this.mergeItemStack(initial, 0, 1, false)) { + return null; + } + } + + if(initial.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + + slot.onPickupFromSlot(player, initial); + } + + return result; } @Override @@ -79,13 +87,7 @@ public class ContainerMassStorage extends ContainerBase { if(storage.getStockpile() > 0) return ret; - slot.putStack(held != null ? held.copy() : null); - - if(slot.getHasStack()) { - slot.getStack().stackSize = 1; - } - - slot.onSlotChanged(); + slot.putStack(held); return ret; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java b/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java index 9796028ea..91eaab7f3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java +++ b/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java @@ -39,9 +39,7 @@ public class ContainerPneumoTube extends ContainerBase { tube.nextMode(index); return ret; } else { - slot.putStack(held != null ? held.copy() : null); - if(slot.getHasStack()) slot.getStack().stackSize = 1; - slot.onSlotChanged(); + slot.putStack(held); tube.initPattern(slot.getStack(), index); return ret; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index a91652ef0..398f4e1fb 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Locale; import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -153,6 +154,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { return (int) Math.ceil((stacks.size() - 1) / (5 * 7)); } + @Override public void updateScreen() { if(currentPage < 0) currentPage = 0; @@ -160,6 +162,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { currentPage = getPageCount(); } + @Override public void drawScreen(int mouseX, int mouseY, float f) { this.drawDefaultBackground(); this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); @@ -168,6 +171,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { GL11.glEnable(GL11.GL_LIGHTING); } + @Override public void initGui() { super.initGui(); this.guiLeft = (this.width - this.xSize) / 2; @@ -204,6 +208,26 @@ public class GUIScreenTemplateFolder extends GuiScreen { buttons.add(new FolderButton(guiLeft + 25 + (27 * 4) + 18, guiTop + 26 + (27 * 3), 2, "Next")); } + @Override + public void handleMouseInput() { + super.handleMouseInput(); + + if(Mouse.getEventButton() == -1) { + int scroll = Mouse.getEventDWheel(); + + if(scroll < 0) { + if(currentPage > 0) + currentPage--; + updateButtons(); + } else if(scroll > 0) { + if(currentPage < getPageCount()) + currentPage++; + updateButtons(); + } + } + } + + @Override protected void mouseClicked(int i, int j, int k) { if(i >= guiLeft + 45 && i < guiLeft + 117 && j >= guiTop + 211 && j < guiTop + 223) { @@ -251,6 +275,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { search.drawTextBox(); } + @Override protected void keyTyped(char p_73869_1_, int p_73869_2_) { if (this.search.textboxKeyTyped(p_73869_1_, p_73869_2_)) { diff --git a/src/main/java/com/hbm/items/ItemInventory.java b/src/main/java/com/hbm/items/ItemInventory.java index dd897a66e..7c1aa0c47 100644 --- a/src/main/java/com/hbm/items/ItemInventory.java +++ b/src/main/java/com/hbm/items/ItemInventory.java @@ -38,49 +38,52 @@ public abstract class ItemInventory implements IInventory { } public NBTTagCompound checkNBT(NBTTagCompound nbt) { - if(nbt != null && !nbt.hasNoTags()) { - Random random = new Random(); + + if(nbt == null || nbt.hasNoTags()) + return null; - try { - byte[] abyte = CompressedStreamTools.compress(nbt); + Random random = new Random(); - if (abyte.length > 6000) { - player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!")); - for (int i1 = 0; i1 < this.getSizeInventory(); ++i1) { - ItemStack itemstack = this.getStackInSlot(i1); + try { + byte[] abyte = CompressedStreamTools.compress(nbt); - if (itemstack != null) { - float f = random.nextFloat() * 0.8F + 0.1F; - float f1 = random.nextFloat() * 0.8F + 0.1F; - float f2 = random.nextFloat() * 0.8F + 0.1F; + if (abyte.length > 6000) { + player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!")); + for (int i1 = 0; i1 < this.getSizeInventory(); ++i1) { + ItemStack itemstack = this.getStackInSlot(i1); - while (itemstack.stackSize > 0) { - int j1 = random.nextInt(21) + 10; + if (itemstack != null) { + float f = random.nextFloat() * 0.8F + 0.1F; + float f1 = random.nextFloat() * 0.8F + 0.1F; + float f2 = random.nextFloat() * 0.8F + 0.1F; - if (j1 > itemstack.stackSize) { - j1 = itemstack.stackSize; - } + while (itemstack.stackSize > 0) { + int j1 = random.nextInt(21) + 10; - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(player.worldObj, player.posX + f, player.posY + f1, player.posZ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) { - entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float) random.nextGaussian() * f3 + player.motionX; - entityitem.motionY = (float) random.nextGaussian() * f3 + 0.2F + player.motionY; - entityitem.motionZ = (float) random.nextGaussian() * f3 + player.motionZ; - player.worldObj.spawnEntityInWorld(entityitem); + if (j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(player.worldObj, player.posX + f, player.posY + f1, player.posZ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) random.nextGaussian() * f3 + player.motionX; + entityitem.motionY = (float) random.nextGaussian() * f3 + 0.2F + player.motionY; + entityitem.motionZ = (float) random.nextGaussian() * f3 + player.motionZ; + player.worldObj.spawnEntityInWorld(entityitem); } } - - return new NBTTagCompound(); // Reset. } - } catch (IOException ignored) {} - } + + return null; // Reset. + } + } catch (IOException ignored) {} + return nbt; } diff --git a/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java b/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java index cf24e36c3..97d2cb7e8 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java +++ b/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java @@ -122,7 +122,11 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider @Override public String getInventoryName() { - return findCrateType(target.getItem()).getInventoryName(); + TileEntityCrateBase tile = findCrateType(target.getItem()); + if (hasCustomInventoryName()) { + tile.setCustomName(target.getDisplayName()); + } + return tile.getInventoryName(); } @Override @@ -150,6 +154,10 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider nbt.setTag("slot" + i, slot); } + if (nbt.hasNoTags()) { + nbt = null; + } + target.setTagCompound(nbt); } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index d587ebe4b..29682d1b8 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -98,6 +98,7 @@ import net.minecraft.util.*; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.event.CommandEvent; import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.EntityEvent; @@ -107,6 +108,7 @@ import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.event.entity.player.AnvilRepairEvent; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerFlyableFallEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -1248,6 +1250,26 @@ public class ModEventHandler { } } + @SubscribeEvent + public void onAnvilRepair(AnvilRepairEvent event) { + + // Anvil renaming no longer increments the repair cost + // Note: Forge has a bug, the names are wrong. Right is output, output is left, left is right + if(event.left == null && event.right != null && event.output != null) { + int oldRepairCost = event.output.getRepairCost(); + + if (oldRepairCost > 0) { + event.right.setRepairCost(oldRepairCost); + } else if (event.right.hasTagCompound()) { + NBTTagCompound nbt = event.right.getTagCompound(); + nbt.removeTag("RepairCost"); + if (nbt.hasNoTags()) { + event.right.setTagCompound(null); + } + } + } + } + @SubscribeEvent public void onClickSign(PlayerInteractEvent event) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 4a8300535..1598278d7 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -68,6 +68,7 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; +import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; @@ -86,6 +87,7 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -1098,6 +1100,28 @@ public class ModEventHandlerClient { } } + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onPlayerTick(TickEvent.PlayerTickEvent event) { + EntityPlayer player = event.player; + + int x = MathHelper.floor_double(player.posX); + int y = MathHelper.floor_double(player.posY); + int z = MathHelper.floor_double(player.posZ); + Block b = player.worldObj.getBlock(x, y, z); + + // Support climbing freestanding vines and chains using spacebar + if ( + b.isLadder(player.worldObj, x, y, z, player) && + b.getCollisionBoundingBoxFromPool(player.worldObj, x, y, z) == null && + !player.capabilities.isFlying && + GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) && + player.motionY < 0.15 + ) { + player.motionY = 0.15; + } + } + @SideOnly(Side.CLIENT) @SubscribeEvent(priority = EventPriority.LOW) public void onMouseClicked(InputEvent.MouseInputEvent event) { diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 4e9d7704d..fdbe22529 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -30,9 +30,10 @@ public class ServerProxy { public static final int ID_HUD = 7; public static final int ID_DETONATOR = 8; public static final int ID_FLUID_ID = 9; - public static final int ID_TOOLABILITY = 10; - public static final int ID_GUN_MODE = 11; - public static final int ID_GAS_HAZARD = 12; + public static final int ID_FAN_MODE = 10; + public static final int ID_TOOLABILITY = 11; + public static final int ID_GUN_MODE = 12; + public static final int ID_GAS_HAZARD = 13; public ITranslate getI18n() { return I18N; } diff --git a/src/main/java/com/hbm/tileentity/TileEntityInventoryBase.java b/src/main/java/com/hbm/tileentity/TileEntityInventoryBase.java index 4278443fe..4e0c4177e 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityInventoryBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityInventoryBase.java @@ -62,6 +62,7 @@ public abstract class TileEntityInventoryBase extends TileEntity implements ISid public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -145,6 +146,8 @@ public abstract class TileEntityInventoryBase extends TileEntity implements ISid slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -163,5 +166,9 @@ public abstract class TileEntityInventoryBase extends TileEntity implements ISid } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index e38bf2f63..7d0805030 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -71,6 +71,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -161,6 +162,8 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -179,6 +182,10 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public void updateRedstoneConnection(DirPos pos) { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java index 2955f12f4..3c24c9e4d 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java @@ -94,6 +94,7 @@ public class TileEntityBombMulti extends TileEntity implements ISidedInventory, public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -156,6 +157,8 @@ public class TileEntityBombMulti extends TileEntity implements ISidedInventory, slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -174,6 +177,10 @@ public class TileEntityBombMulti extends TileEntity implements ISidedInventory, } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isLoaded(){ diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 12dd8bab2..55c08edce 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -109,6 +109,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -523,6 +524,8 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -545,6 +548,10 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index a5e49a870..cbee47c97 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -118,6 +118,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -520,6 +521,8 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -543,6 +546,10 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java index 5fdaa194d..2cd516e6e 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java @@ -92,6 +92,7 @@ public class TileEntityNukeBoy extends TileEntity implements ISidedInventory, IG public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeBoy extends TileEntity implements ISidedInventory, IG slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeBoy extends TileEntity implements ISidedInventory, IG } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java index e245c8669..625c1c3ce 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java @@ -98,6 +98,7 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory, public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -161,6 +162,8 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory, slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -180,6 +183,10 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory, } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public static HashMap entries = new HashMap(); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java index b843bdb3e..21c781c93 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java @@ -92,6 +92,7 @@ public class TileEntityNukeFleija extends TileEntity implements ISidedInventory, public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeFleija extends TileEntity implements ISidedInventory, slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeFleija extends TileEntity implements ISidedInventory, } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java index 8eb136372..d2586b225 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java @@ -92,6 +92,7 @@ public class TileEntityNukeGadget extends TileEntity implements ISidedInventory, public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeGadget extends TileEntity implements ISidedInventory, slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeGadget extends TileEntity implements ISidedInventory, } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } /*public int getNukeTier() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java index 021789895..148a21a57 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java @@ -92,6 +92,7 @@ public class TileEntityNukeMan extends TileEntity implements ISidedInventory, IG public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeMan extends TileEntity implements ISidedInventory, IG slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeMan extends TileEntity implements ISidedInventory, IG } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean exp1() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java index 1d924acd1..b9ebadf0c 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java @@ -92,6 +92,7 @@ public class TileEntityNukeMike extends TileEntity implements ISidedInventory, I public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeMike extends TileEntity implements ISidedInventory, I slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeMike extends TileEntity implements ISidedInventory, I } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java index 099807c3a..d10c60aba 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java @@ -92,6 +92,7 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory, IGU public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory, IGU slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory, IGU } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java index b3fa2dd11..b9aaa4f71 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java @@ -93,6 +93,7 @@ public class TileEntityNukePrototype extends TileEntity implements ISidedInvento public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -155,6 +156,8 @@ public class TileEntityNukePrototype extends TileEntity implements ISidedInvento slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -173,6 +176,10 @@ public class TileEntityNukePrototype extends TileEntity implements ISidedInvento } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java index 45f5ccbf1..6c214e607 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java @@ -92,6 +92,7 @@ public class TileEntityNukeSolinium extends TileEntity implements ISidedInventor public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeSolinium extends TileEntity implements ISidedInventor slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeSolinium extends TileEntity implements ISidedInventor } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java index f01665074..86ee45beb 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java @@ -92,6 +92,7 @@ public class TileEntityNukeTsar extends TileEntity implements ISidedInventory, I public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityNukeTsar extends TileEntity implements ISidedInventory, I slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -172,6 +175,10 @@ public class TileEntityNukeTsar extends TileEntity implements ISidedInventory, I } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } public boolean isReady() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index 8481f713a..5776fa53a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -149,6 +149,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU @Override public void setCustomName(String name) { this.name = name; + markDirty(); } public boolean hasPower() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java index 7ddaaca52..26e1cbc47 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java @@ -143,6 +143,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -224,6 +225,8 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -250,6 +253,10 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java index 2f8bb86d2..466072d46 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java @@ -6,6 +6,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.ArmorUtil; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -25,11 +26,12 @@ public abstract class TileEntityLockableBase extends TileEntityLoadedBase { MainRegistry.logger.error("A block has been set to locked state before setting pins, this should not happen and may cause errors! " + this.toString()); } isLocked = true; + markDirty(); } - public void setPins(int pins) { lock = pins; } + public void setPins(int pins) { lock = pins; markDirty(); } public int getPins() { return lock; } - public void setMod(double mod) { lockMod = mod; } + public void setMod(double mod) { lockMod = mod; markDirty(); } public double getMod() { return lockMod; } @Override @@ -50,6 +52,24 @@ public abstract class TileEntityLockableBase extends TileEntityLoadedBase { nbt.setDouble("lockMod", lockMod); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeInt(lock); + buf.writeBoolean(isLocked); + buf.writeDouble(lockMod); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + lock = buf.readInt(); + isLocked = buf.readBoolean(); + lockMod = buf.readDouble(); + } + public boolean canAccess(EntityPlayer player) { if(!isLocked) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index 15a099436..7c6df467c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -91,6 +91,7 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -166,6 +167,8 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -186,6 +189,10 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java index af5d11cf7..ad554d93a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -22,14 +23,20 @@ import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; +import net.minecraft.block.IGrowable; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardReceiver, IFluidCopiable { @@ -45,6 +52,8 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB public FluidTank tank; public boolean isOn; + public boolean isSuspended; + private int forceSkip; public float syncYaw; public float rotationYaw; public float prevRotationYaw; @@ -69,7 +78,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB if(!worldObj.isRemote) { - if(worldObj.getTotalWorldTime() % 20 == 0) { + if(!isSuspended && worldObj.getTotalWorldTime() % 20 == 0) { if(tank.getFill() > 0) { tank.setFill(tank.getFill() - 1); this.isOn = true; @@ -80,7 +89,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB this.subscribeToAllAround(tank.getTankType(), this); } - if(isOn) { + if(isOn && !isSuspended) { Vec3 pivot = Vec3.createVectorHelper(xCoord + 0.5, yCoord + 1.75, zCoord + 0.5); Vec3 upperArm = Vec3.createVectorHelper(0, 0, -4); upperArm.rotateAroundX((float) Math.toRadians(80 - rotationPitch)); @@ -119,28 +128,41 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB this.rotationYaw -= 360; } - Vec3 grace = Vec3.createVectorHelper(0, 0, -3.5); - grace.rotateAroundY(-(float) Math.toRadians(rotationYaw)); - grace.xCoord += pivot.xCoord; - grace.yCoord += pivot.yCoord; - grace.zCoord += pivot.zCoord; + if(forceSkip > 0) { + forceSkip--; + } else { + final double CUT_ANGLE = Math.toRadians(5); + double rotationYawRads = Math.toRadians((rotationYaw + 270) % 360); - Vec3 detector = Vec3.createVectorHelper(0, 0, -9); - detector.rotateAroundY(-(float) Math.toRadians(rotationYaw)); - detector.xCoord += pivot.xCoord; - detector.yCoord += pivot.yCoord; - detector.zCoord += pivot.zCoord; - MovingObjectPosition pos = worldObj.func_147447_a(grace, detector, false, false, false); + outer: + for(int dx = -9; dx <= 9; dx++) { + for(int dz = -9; dz <= 9; dz++) { + int sqrDst = dx * dx + dz * dz; - if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { + if(sqrDst <= 4 || sqrDst > 81) + continue; + + double angle = Math.atan2(dz, dx); + double relAngle = Math.abs(angle - rotationYawRads); + relAngle = Math.abs((relAngle + Math.PI) % (2 * Math.PI) - Math.PI); - Block b = worldObj.getBlock(pos.blockX, pos.blockY, pos.blockZ); + if(relAngle > CUT_ANGLE) + continue; - if(b.getMaterial() == Material.wood || b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { + int x = xCoord + dx; + int y = yCoord + 1; + int z = zCoord + dz; - int meta = worldObj.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ); - if(!shouldIgnore(b, meta)) { + Block b = worldObj.getBlock(x, y, z); + if(!(b.getMaterial() == Material.wood || b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants)) + continue; + + int meta = worldObj.getBlockMetadata(x, y, z); + if(shouldIgnore(worldObj, x, y, z, b, meta)) + continue; + state = 1; + break outer; } } } @@ -181,7 +203,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB this.lastSpin = this.spin; - if(isOn) { + if(isOn && !isSuspended) { this.spin += 15F; Vec3 vec = Vec3.createVectorHelper(0.625, 0, 1.625); @@ -212,11 +234,15 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB } /** Anything additionally that the detector nor the blades should pick up on, like non-mature willows */ - public static boolean shouldIgnore(Block b, int meta) { + public static boolean shouldIgnore(World world, int x, int y, int z, Block b, int meta) { if(b == ModBlocks.plant_tall) { return meta == EnumTallFlower.CD2.ordinal() + 8 || meta == EnumTallFlower.CD3.ordinal() + 8; } + if((b instanceof IGrowable)) { + return ((IGrowable) b).func_149851_a(world, x, y, z, world.isRemote); + } + return false; } @@ -225,21 +251,64 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB Block b = worldObj.getBlock(x, y, z); int meta = worldObj.getBlockMetadata(x, y, z); - if(shouldIgnore(b, meta)) { - return; - } - - if(b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { - worldObj.func_147480_a(x, y, z, true); - return; - } - - if(b.getMaterial() == Material.wood) { - fellTree(x, y, z); - if(state == 1) { - state = 2; + if(!shouldIgnore(worldObj, x, y, z, b, meta)) { + if(b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { + cutCrop(x, y, z); + } else if(b.getMaterial() == Material.wood) { + fellTree(x, y, z); + if(state == 1) { + state = 2; + } } } + + // Return when hitting a wall + if(state == 1 && worldObj.getBlock(x, y, z).isNormalCube(worldObj, x, y, z)) { + state = 2; + forceSkip = 5; + } + } + + protected void cutCrop(int x, int y, int z) { + + Block soil = worldObj.getBlock(x, y - 1, z); + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + + worldObj.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(b) + (meta << 12)); + + Block replacementBlock = Blocks.air; + int replacementMeta = 0; + + if (!worldObj.isRemote && !worldObj.restoringBlockSnapshots) { + ArrayList drops = b.getDrops(worldObj, x, y, z, meta, 0); + boolean replanted = false; + + for (ItemStack drop : drops) { + if (!replanted && drop.getItem() instanceof IPlantable) { + IPlantable seed = (IPlantable) drop.getItem(); + + if(soil.canSustainPlant(worldObj, x, y - 1, z, ForgeDirection.UP, seed)) { + replacementBlock = seed.getPlant(worldObj, x, y, z); + replacementMeta = seed.getPlantMetadata(worldObj, x, y, z); + replanted = true; + drop.stackSize -= 1; + } + } + + float delta = 0.7F; + double dx = (double)(worldObj.rand.nextFloat() * delta) + (double)(1.0F - delta) * 0.5D; + double dy = (double)(worldObj.rand.nextFloat() * delta) + (double)(1.0F - delta) * 0.5D; + double dz = (double)(worldObj.rand.nextFloat() * delta) + (double)(1.0F - delta) * 0.5D; + + EntityItem entityItem = new EntityItem(worldObj, x + dx, y + dy, z + dz, drop); + entityItem.delayBeforeCanPickup = 10; + worldObj.spawnEntityInWorld(entityItem); + } + } + + worldObj.setBlock(x, y, z, replacementBlock, replacementMeta, 3); } protected void fellTree(int x, int y, int z) { @@ -279,6 +348,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB @Override public void serialize(ByteBuf buf) { buf.writeBoolean(this.isOn); + buf.writeBoolean(this.isSuspended); buf.writeFloat(this.rotationYaw); buf.writeFloat(this.rotationPitch); this.tank.serialize(buf); @@ -287,6 +357,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB @Override public void deserialize(ByteBuf buf) { this.isOn = buf.readBoolean(); + this.isSuspended = buf.readBoolean(); this.syncYaw = buf.readFloat(); this.syncPitch = buf.readFloat(); this.turnProgress = 3; //use 3-ply for extra smoothness @@ -297,6 +368,8 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.isOn = nbt.getBoolean("isOn"); + this.isSuspended = nbt.getBoolean("isSuspended"); + this.forceSkip = nbt.getInteger("skip"); this.rotationYaw = nbt.getFloat("yaw"); this.rotationPitch = nbt.getFloat("pitch"); this.state = nbt.getInteger("state"); @@ -307,6 +380,8 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IB public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setBoolean("isOn", this.isOn); + nbt.setBoolean("isSuspended", this.isSuspended); + nbt.setInteger("skip", this.forceSkip); nbt.setFloat("yaw", this.rotationYaw); nbt.setFloat("pitch", this.rotationPitch); nbt.setInteger("state", this.state); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java index 59d6f43bf..0881ffd57 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java @@ -73,6 +73,7 @@ public class TileEntityMachineKeyForge extends TileEntity implements ISidedInven public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -138,6 +139,8 @@ public class TileEntityMachineKeyForge extends TileEntity implements ISidedInven slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -156,6 +159,10 @@ public class TileEntityMachineKeyForge extends TileEntity implements ISidedInven } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index c7e49bdfc..c4c0d2699 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -79,6 +79,7 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -142,6 +143,8 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -159,6 +162,10 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index e5a502f0c..79223e5c5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -83,6 +83,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -151,6 +152,8 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -169,6 +172,10 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index 527e24803..85b71dd0a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -60,7 +60,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : "container.satDock"; } @Override public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - public void setCustomName(String name) { this.customName = name; } + public void setCustomName(String name) { this.customName = name; markDirty(); } @Override public int getInventoryStackLimit() { return 64; } @Override @@ -111,6 +111,8 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -127,6 +129,10 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override public int[] getAccessibleSlotsFromSide(int p_94128_1_) { return access; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java index 7e95c91ad..2ffadacba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java @@ -73,6 +73,7 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -132,6 +133,8 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -148,6 +151,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index f948a67f4..5fe3ae5ca 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -83,6 +83,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -154,6 +155,8 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -173,6 +176,10 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java index 7c10537d6..4ed07f066 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java @@ -82,6 +82,7 @@ public class TileEntityMachineSiren extends TileEntity implements ISidedInventor public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -149,6 +150,8 @@ public class TileEntityMachineSiren extends TileEntity implements ISidedInventor slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -168,6 +171,10 @@ public class TileEntityMachineSiren extends TileEntity implements ISidedInventor } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 9ca467285..a3a8b3ded 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -32,7 +32,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public FluidTank water; public FluidTank steam; - private long lastCastTick = 0; + private long lastProgressTick = 0; public String getName() { return "container.machineStrandCaster"; @@ -77,7 +77,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase int moldsToCast = maxProcessable(); // Makes it flush the buffers after 10 seconds of inactivity, or when they're full - if (moldsToCast > 0 && (moldsToCast >= 9 || worldObj.getWorldTime() >= lastCastTick + 200)) { + if (moldsToCast > 0 && (moldsToCast >= 9 || worldObj.getWorldTime() >= lastProgressTick + 200)) { ItemMold.Mold mold = this.getInstalledMold(); @@ -108,7 +108,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase water.setFill(water.getFill() - getWaterRequired() * moldsToCast); steam.setFill(steam.getFill() + getWaterRequired() * moldsToCast); - lastCastTick = worldObj.getWorldTime(); + lastProgressTick = worldObj.getWorldTime(); } networkPackNT(150); @@ -226,6 +226,8 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase stack.amount -= required; + lastProgressTick = world.getWorldTime(); + return stack; } @@ -272,7 +274,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase super.writeToNBT(nbt); water.writeToNBT(nbt, "w"); steam.writeToNBT(nbt, "s"); - nbt.setLong("t", lastCastTick); + nbt.setLong("t", lastProgressTick); } @Override @@ -280,7 +282,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase super.readFromNBT(nbt); water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); - lastCastTick = nbt.getLong("t"); + lastProgressTick = nbt.getLong("t"); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 3180fbefa..85e982856 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -136,6 +136,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -211,6 +212,8 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -233,6 +236,10 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java index 1b2c61d5b..72882cabd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java @@ -79,6 +79,7 @@ public class TileEntityRtgFurnace extends TileEntity implements ISidedInventory, public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -150,6 +151,8 @@ public class TileEntityRtgFurnace extends TileEntity implements ISidedInventory, slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -169,6 +172,10 @@ public class TileEntityRtgFurnace extends TileEntity implements ISidedInventory, } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java index 238a68c28..5371416dd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java @@ -75,6 +75,7 @@ public class TileEntityWasteDrum extends TileEntity implements ISidedInventory, public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -141,6 +142,8 @@ public class TileEntityWasteDrum extends TileEntity implements ISidedInventory, slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -160,6 +163,10 @@ public class TileEntityWasteDrum extends TileEntity implements ISidedInventory, } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java index 0ebc3d3dc..27702f37a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java @@ -66,6 +66,7 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -134,6 +135,8 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } } @@ -153,6 +156,10 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java index 1dac5081a..dca8dec9c 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java @@ -9,6 +9,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.world.World; import java.util.Random; @@ -61,6 +64,7 @@ public abstract class TileEntityCrateBase extends TileEntityLockableBase impleme public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -127,6 +131,8 @@ public abstract class TileEntityCrateBase extends TileEntityLockableBase impleme } } this.hasSpiders = nbt.getBoolean("spiders"); + + customName = nbt.getString("name"); } @Override @@ -145,6 +151,22 @@ public abstract class TileEntityCrateBase extends TileEntityLockableBase impleme } nbt.setTag("items", list); nbt.setBoolean("spiders", hasSpiders); + + if (customName != null) { + nbt.setString("name", customName); + } + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + writeToNBT(nbt); + return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { + readFromNBT(packet.func_148857_g()); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 423e99f8f..a2984cb93 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -91,6 +91,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void setCustomName(String name) { this.customName = name; + markDirty(); } @Override @@ -115,6 +116,8 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I this.redHigh = nbt.getShort("redHigh"); this.lastRedstone = nbt.getByte("lastRedstone"); this.priority = ConnectionPriority.values()[nbt.getByte("priority")]; + + customName = nbt.getString("name"); } @Override @@ -126,6 +129,10 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I nbt.setShort("redHigh", redHigh); nbt.setByte("lastRedstone", lastRedstone); nbt.setByte("priority", (byte)this.priority.ordinal()); + + if (customName != null) { + nbt.setString("name", customName); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java index d283b8269..8d939f523 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java @@ -62,7 +62,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPa if(this.getType() == null) this.stack = 0; - if(getType() != null && getStockpile() < getCapacity() && slots[0] != null && slots[0].isItemEqual(getType()) && ItemStack.areItemStackTagsEqual(slots[0], getType())) { + if(canInsert(slots[0])) { int remaining = getCapacity() - getStockpile(); int toRemove = Math.min(remaining, slots[0].stackSize); @@ -95,6 +95,44 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPa } } + public boolean canInsert(ItemStack stack) { + return getType() != null && getStockpile() < getCapacity() && stack != null && stack.isItemEqual(getType()) && ItemStack.areItemStackTagsEqual(stack, getType()); + } + + public boolean quickInsert(ItemStack stack) { + if (!canInsert(stack)) + return false; + + int remaining = getCapacity() - getStockpile(); + + if (remaining < stack.stackSize) + return false; + + this.stack += stack.stackSize; + stack.stackSize = 0; + this.markDirty(); + + return true; + } + + public ItemStack quickExtract() { + if (!output) { + return null; + } + + int amount = getType().getMaxStackSize(); + + if (getStockpile() < amount) + return null; + + ItemStack result = slots[1].copy(); + result.stackSize = amount; + this.stack -= amount; + this.markDirty(); + + return result; + } + @Override public void serialize(ByteBuf buf) { buf.writeInt(this.stack); @@ -132,12 +170,12 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPa @Override public void openInventory() { - this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.storageOpen", 1.0F, 1.0F); + this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.storageOpen", 0.5F, 1.0F); } @Override public void closeInventory() { - this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.storageClose", 1.0F, 1.0F); + this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.storageClose", 0.5F, 1.0F); } @Override @@ -196,9 +234,9 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPa if(data.hasKey("toggle")) { this.output = !output; } + if(data.hasKey("slot") && this.getStockpile() <= 0){ setFilterContents(data); - if(slots[1] != null) slots[1].stackSize = 1; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java index 73e07b745..5ccb78658 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java @@ -70,7 +70,7 @@ public abstract class TileEntityRequestNetworkContainer extends TileEntityReques @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : getName(); } public abstract String getName(); @Override public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - public void setCustomName(String name) { this.customName = name; } + public void setCustomName(String name) { this.customName = name; markDirty(); } @Override public int getInventoryStackLimit() { return 64; } @Override @@ -117,6 +117,8 @@ public abstract class TileEntityRequestNetworkContainer extends TileEntityReques slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } + + customName = nbt.getString("name"); } @Override @@ -135,5 +137,9 @@ public abstract class TileEntityRequestNetworkContainer extends TileEntityReques } } nbt.setTag("items", list); + + if (customName != null) { + nbt.setString("name", customName); + } } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 07e008e66..f91e9da1a 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4160,7 +4160,9 @@ tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke tile.factory_titanium_hull.name=Fabrikblock tile.fallout.name=Fallout tile.fan.name=Ventilator -tile.fan.desc=Kann mit Redstone aktiviert werden$Bewegt Entities bis zu 10 Blöcke$Rechtsclick mit Schraubenzieher um den Ventilator umzudrehen +tile.fan.desc=Kann mit Redstone aktiviert werden$Bewegt Entities bis zu 10 Blöcke$Rechtsclick mit Schraubenzieher um den Ventilator umzudrehen$Klicken Sie mit der rechten Maustaste mit der Handbohrmaschine um den Modus zu wechseln +tile.fan.falloffOn=Die Lüfterleistung nimmt mit der Entfernung ab +tile.fan.falloffOff=Konstante Lüfterleistung tile.fence_metal.name=Maschendrahtzaun tile.fence_metal_post.name=Maschendrahtzaun-Pfahl tile.field_disturber.name=Hochenergiefeld-Jammer @@ -4341,6 +4343,7 @@ tile.machine_assemfac.name=Fertigungsfabrik tile.machine_autocrafter.name=Automatische Werkbank tile.machine_autosaw.name=Automatische Kreissäge tile.machine_autosaw.desc=Schneidet Pflanzen nieder, pflanzt Bäume nach$Akzeptiert:$-Holzöl$-Ethanol$-Fischöl$-Schweröl +tile.machine_autosaw.suspended=Angehalten tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energiespeicherblock tile.machine_battery_potato.name=Kartoffelbatterieblock diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 65a86647a..332d2a13f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5283,7 +5283,9 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout tile.fan.name=Fan -tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip +tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip$Right-click with hand drill to switch mode +tile.fan.falloffOn=Fan power decreases with distance +tile.fan.falloffOff=Consistent fan power tile.fence_metal.name=Chainlink Fence tile.fence_metal_post.name=Chainlink Fence Post tile.field_disturber.name=High Energy Field Jammer @@ -5475,6 +5477,7 @@ tile.machine_assemfac.name=Assembly Factory tile.machine_autocrafter.name=Automatic Crafting Table tile.machine_autosaw.name=Automatic Buzz Saw tile.machine_autosaw.desc=Cuts down nearby plants, re-plants trees$Accepts:$-Wood oil$-Ethanol$-Fish oil$-Heavy oil +tile.machine_autosaw.suspended=Suspended tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block diff --git a/src/main/resources/assets/hbm/lang/it_IT.lang b/src/main/resources/assets/hbm/lang/it_IT.lang index c3d83825d..691badc0e 100644 --- a/src/main/resources/assets/hbm/lang/it_IT.lang +++ b/src/main/resources/assets/hbm/lang/it_IT.lang @@ -5356,7 +5356,9 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout tile.fan.name=Fan -tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip +tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip$Right-click with hand drill to switch mode +tile.fan.falloffOn=Fan power decreases with distance +tile.fan.falloffOff=Consistent fan power tile.fence_metal.name=Chainlink Fence tile.fence_metal_post.name=Chainlink Fence Post tile.field_disturber.name=High Energy Field Jammer @@ -5537,6 +5539,7 @@ tile.machine_assemfac.name=Assembly Factory tile.machine_autocrafter.name=Automatic Crafting Table tile.machine_autosaw.name=Automatic Buzz Saw tile.machine_autosaw.desc=Cuts down nearby plants, re-plants trees$Accepts:$-Wood oil$-Ethanol$-Fish oil$-Heavy oil +tile.machine_autosaw.suspended=Suspended tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang index ab2877189..f33a8a715 100644 --- a/src/main/resources/assets/hbm/lang/pl_PL.lang +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -4720,6 +4720,9 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout tile.fan.name=Fan +tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip$Right-click with hand drill to switch mode +tile.fan.falloffOn=Fan power decreases with distance +tile.fan.falloffOff=Consistent fan power tile.fence_metal.name=Chainlink Fence tile.field_disturber.name=High Energy Field Jammer tile.filing_cabinet.green.name=Dusty Filing Cabinet @@ -4873,6 +4876,7 @@ tile.machine_assembler.name=Assembly Machine tile.machine_assemfac.name=Assembly Factory tile.machine_autocrafter.name=Automatic Crafting Table tile.machine_autosaw.name=Automatic Buzz Saw +tile.machine_autosaw.suspended=Suspended tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 9208e7f21..5c3efa442 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -5530,7 +5530,9 @@ tile.factory_titanium_furnace.name=Люк доступа базовой фабр tile.factory_titanium_hull.name=Корпус базовой фабрики tile.fallout.name=Радиоактивный осадок tile.fan.name=Вентилятор -tile.fan.desc=Активируется редстоуном$Толкает существ до 10 блоков$ПКМ отвёрткой чтобы повернуть +tile.fan.desc=Активируется редстоуном$Толкает существ до 10 блоков$ПКМ отвёрткой чтобы повернуть$ПКМ ручным сверлом чтобы переключить режим +tile.fan.falloffOn=Сила вентилятора уменьшается с расстоянием +tile.fan.falloffOff=Постоянная сила вентилорая tile.fence_metal.name=Проволочная сетка tile.fence_metal_post.name=Столб проволочной сетки tile.field_disturber.name=Подавитель высокоэнергитических полей @@ -5720,6 +5722,7 @@ tile.machine_assemfac.name=Сборочный завод tile.machine_autocrafter.name=Автоматический верстак tile.machine_autosaw.name=Автоматическая пила tile.machine_autosaw.desc=Срубает ближайшие растения, пересаживает деревья$Принимает:$-Древесное масло$-Этанол$-Рыбное масло$-Тяжелую нефть +tile.machine_autosaw.suspended=Приостановлена tile.machine_bat9000.name=Охереть-большая цистерна 9000 tile.machine_battery.name=Энергохранилище tile.machine_battery_potato.name=Картофельная батарея diff --git a/src/main/resources/assets/hbm/lang/uk_UA.lang b/src/main/resources/assets/hbm/lang/uk_UA.lang index f51ef5b6a..28776824b 100644 --- a/src/main/resources/assets/hbm/lang/uk_UA.lang +++ b/src/main/resources/assets/hbm/lang/uk_UA.lang @@ -5267,7 +5267,9 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Заводський блок tile.fallout.name=Радіоактивні опади tile.fan.name=Вентилятор -tile.fan.desc=Активується за допомогою редстоуну$Піднімає об'єкти на 10 блоків$Клацніть правою кнопкою миші викруткою, щоб перевернути +tile.fan.desc=Активується за допомогою редстоуну$Піднімає об'єкти на 10 блоків$Клацніть правою кнопкою миші викруткою, щоб перевернути$ПКМ ручним свердлом, щоб переключити режим +tile.fan.falloffOn=Сила вентилятора зменшується з відстанню +tile.fan.falloffOff=Постійна сила вентилятора tile.fence_metal.name=Огорожа рабиця tile.fence_metal_post.name=Огорожа рабиця стовп tile.field_disturber.name=Заглушник високоенергетичного поля @@ -5458,6 +5460,7 @@ tile.machine_assemfac.name=Збиральна фабрика tile.machine_autocrafter.name=Автоматичний верстак tile.machine_autosaw.name=Автоматична пила tile.machine_autosaw.desc=Вирубує рослини поруч, заново висажує дерева$Приймає:$-Деревну смолу$-Етанол$-Риб'ячий жир$-Важку нафту +tile.machine_autosaw.suspended=Припинено tile.machine_bat9000.name=Big-Ass цистерна 9000 tile.machine_battery.name=Блок накопичувач енергії tile.machine_battery_potato.name=Блок картопляних батарейок diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index e7727585b..20b27d397 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -5005,7 +5005,9 @@ tile.factory_titanium_furnace.name=工厂端口 tile.factory_titanium_hull.name=工厂外壳 tile.fallout.name=辐射尘 tile.fan.name=风扇 -tile.fan.desc=使用红石激活$将实体推至最多10个方块外$用螺丝刀右键点击即可翻转 +tile.fan.desc=使用红石激活$将实体推至最多10个方块外$用螺丝刀右键点击即可翻转$使用手钻右键切换模式 +tile.fan.falloffOn=风扇功率随距离增加而减小 +tile.fan.falloffOff=风扇功率恒定 tile.fence_metal.name=铁丝网围栏 tile.fence_metal_post.name=铁丝网围栏立柱 tile.field_disturber.name=高能场干扰机 @@ -5188,6 +5190,7 @@ tile.machine_assemfac.name=装配厂 tile.machine_autocrafter.name=自动工作台 tile.machine_autosaw.name=自动嗡嗡锯 tile.machine_autosaw.desc=砍伐附近的植物,重新种植树木$接受:$-木油$-乙醇$-鱼油$-重油 +tile.machine_autosaw.suspended=暂停 tile.machine_bat9000.name=巨尻-9000 储罐 tile.machine_battery.name=蓄电池 tile.machine_battery_potato.name=马铃薯电池组