From 6cda5acc3de4bfd513dc043622e8ad301a94d751 Mon Sep 17 00:00:00 2001 From: alltra101ify Date: Fri, 27 Nov 2015 15:46:43 -0500 Subject: [PATCH] Some things that I accidently left out during the last push... --- .../modGUIs/GuiAdvancedWasteHandler.java | 56 +++ .../modblocks/AdvancedWasteHandler.java | 160 +++++++ .../TileEntityAdvancedWasteHandler.java | 46 ++ .../ContainerAdvancedWasteHandler.java | 52 +++ .../TileEntityGenerator.java | 429 ++++++++++++++++++ .../AdvancedWasteHandler_false_bottom.png | Bin 0 -> 2025 bytes .../AdvancedWasteHandler_false_front.png | Bin 0 -> 1983 bytes .../AdvancedWasteHandler_false_sides.png | Bin 0 -> 2120 bytes .../AdvancedWasteHandler_false_top.png | Bin 0 -> 1480 bytes .../AdvancedWasteHandler_true_bottom.png | Bin 0 -> 2014 bytes .../AdvancedWasteHandler_true_front.png | Bin 0 -> 6970 bytes ...AdvancedWasteHandler_true_front.png.mcmeta | 9 + .../AdvancedWasteHandler_true_sides.png | Bin 0 -> 7397 bytes ...AdvancedWasteHandler_true_sides.png.mcmeta | 9 + .../AdvancedWasteHandler_true_top.png | Bin 0 -> 2809 bytes .../AdvancedWasteHandler_true_top.png.mcmeta | 9 + .../AdvancedWasteHandler/BlockOfASHAD.png | Bin 0 -> 2094 bytes .../textures/gui/GuiAdvancedWasteHandler.png | Bin 0 -> 2580 bytes 18 files changed, 770 insertions(+) create mode 100644 src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modGUIs/GuiAdvancedWasteHandler.java create mode 100644 src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/AdvancedWasteHandler.java create mode 100644 src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/tileentities/TileEntityAdvancedWasteHandler.java create mode 100644 src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modcontainers/ContainerAdvancedWasteHandler.java create mode 100644 src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/reference/moditemblockreference/TileEntityGenerator.java create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_bottom.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_front.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_sides.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_top.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_bottom.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_front.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_front.png.mcmeta create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_sides.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_sides.png.mcmeta create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png.mcmeta create mode 100644 src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/BlockOfASHAD.png create mode 100644 src/main/resources/assets/asu/textures/gui/GuiAdvancedWasteHandler.png diff --git a/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modGUIs/GuiAdvancedWasteHandler.java b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modGUIs/GuiAdvancedWasteHandler.java new file mode 100644 index 0000000..12210e1 --- /dev/null +++ b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modGUIs/GuiAdvancedWasteHandler.java @@ -0,0 +1,56 @@ +package org.bitbucket.alltra101ify.advancedsatelliteutilization.modGUIs; + +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks.tileentities.TileEntityAdvancedWasteHandler; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modcontainers.ContainerAdvancedWasteHandler; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.reference.ModInfo; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.util.ResourceLocation; + +public class GuiAdvancedWasteHandler extends GuiContainer { + + int currentcooldownscaled; + + int currentpowerscaled; + + int currentconversion; + + private TileEntityAdvancedWasteHandler tileentity; + + private ResourceLocation resource = new ResourceLocation(ModInfo.MODID + ":" + "textures/gui/GuiAdvancedWasteHandler.png"); + + public GuiAdvancedWasteHandler(InventoryPlayer inventoryplayer, TileEntityAdvancedWasteHandler tileentity) { + super(new ContainerAdvancedWasteHandler(inventoryplayer, tileentity)); + this.tileentity = tileentity; + this.xSize = 176; + this.ySize = 187; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float f, int mx, int my) { + this.mc.getTextureManager().bindTexture(resource); + currentcooldownscaled = this.tileentity.cooldownscaled(51); + currentpowerscaled = this.tileentity.powerScaled(55); + currentconversion = this.tileentity.genscaled(52); + + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + drawTexturedModalRect(guiLeft+74, guiTop+44, 176, 0, currentcooldownscaled, 16); + drawTexturedModalRect(guiLeft+14, guiTop+44, 176, 16, currentpowerscaled, 16); + drawTexturedModalRect(guiLeft+41, guiTop+65, 176, 32, currentconversion, 16); + drawCenteredString(fontRendererObj, "Advanced Waste Handler", guiLeft+90, guiTop-10, 0xFFFFFF); + + + if (mx > guiLeft+14 && mx < guiLeft+70 && my > guiTop+44 && my < guiTop+64) { + drawString(fontRendererObj, tileentity.currentPower + "/" + tileentity.maxpower, guiLeft+110, guiTop+70, 0xa8a8a8); + } + + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } +} diff --git a/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/AdvancedWasteHandler.java b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/AdvancedWasteHandler.java new file mode 100644 index 0000000..ef8ee6d --- /dev/null +++ b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/AdvancedWasteHandler.java @@ -0,0 +1,160 @@ +package org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks; + +import java.util.Random; + +import org.bitbucket.alltra101ify.advancedsatelliteutilization.AdvancedSatelliteUtilization; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modGUIs.ModGUIs; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks.tileentities.TileEntityAdvancedWasteHandler; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks.tileentities.TileEntityEnderCoreGenerator; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.moditems.ModItems; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.reference.ModCreativeTabs; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.reference.ModInfo; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.reference.moditemblockreference.ModMachineBlock; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class AdvancedWasteHandler extends ModMachineBlock { + boolean active; + + public IIcon icon[] = new IIcon[4]; + + protected AdvancedWasteHandler(boolean active) { + super(Material.rock); + this.active = active; + setBlockName("AdvancedWasteHandler_" + active); + if (!active) setCreativeTab(ModCreativeTabs.TabASU); + setBlockTextureName(ModInfo.MODID + ":" + "AdvancedWasteHandler/" + getUnlocalizedName().substring(5)); + setResistance(8); + setHardness(8); + setHarvestLevel("pickaxe", 2); + if (active) setLightLevel(0.9f); + } + @Override + public TileEntity createNewTileEntity(World w, int var) { + return new TileEntityAdvancedWasteHandler(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entitylivingbase, ItemStack item) { + int i = MathHelper.floor_double((double)(entitylivingbase.rotationYaw * 4.0f/360.0f) + 0.5D) & 3; + switch (i) { + case 0: world.setBlockMetadataWithNotify(x, y, z, 2, 2); + break; + case 1: world.setBlockMetadataWithNotify(x, y, z, 5, 2); + break; + case 2: world.setBlockMetadataWithNotify(x, y, z, 3, 2); + break; + case 3: world.setBlockMetadataWithNotify(x, y, z, 4, 2); + break; + } + super.onBlockPlacedBy(world, x, y, z, entitylivingbase, item); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister icon) { + this.icon[0] = icon.registerIcon(ModInfo.MODID + ":" + "AdvancedWasteHandler/" + getUnlocalizedName().substring(5) + "_front"); + this.icon[1] = icon.registerIcon(ModInfo.MODID + ":" + "AdvancedWasteHandler/" + getUnlocalizedName().substring(5)+ "_sides"); + this.icon[2] = icon.registerIcon(ModInfo.MODID + ":" + "AdvancedWasteHandler/" + getUnlocalizedName().substring(5)+ "_top"); + this.icon[3] = icon.registerIcon(ModInfo.MODID + ":" + "AdvancedWasteHandler/" + getUnlocalizedName().substring(5)+ "_bottom"); + super.registerBlockIcons(icon); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + IIcon iconreturned; + if (meta == 0) { + switch (side) { + case 0: iconreturned = icon[3]; + break; + case 1: iconreturned = icon[2]; + break; + case 3: iconreturned = icon[0]; + break; + default: iconreturned = icon[1]; + } + } else if (side == 1) { + iconreturned = this.icon[2]; + }else if (side == 0) { + iconreturned = this.icon[3]; + } else if (side != meta) { + iconreturned = this.icon[1]; + } else { + iconreturned = this.icon[0]; + } + return iconreturned; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == ModItems.wrench) { + int info[] = this.wrenched(player, world, x, y, z, true, (int) ((TileEntityAdvancedWasteHandler)world.getTileEntity(x, y, z)).currentPower, (byte) ((TileEntityAdvancedWasteHandler)world.getTileEntity(x, y, z)).powerScaled(100), new ItemStack(ModBlocks.AdvancedWasteHandler, 1)); + switch (info[1]) { + case 0: ((TileEntityAdvancedWasteHandler)world.getTileEntity(x, y, z)).currentPower = info[0]; + break; + + case 1: FMLNetworkHandler.openGui(player, AdvancedSatelliteUtilization.instance, ModGUIs.ADVANCEDWASTEHANDLERID, world, x, y, z); + break; + } + } else if (((TileEntityAdvancedWasteHandler)world.getTileEntity(x, y, z)).humanInterface() && !world.isRemote) { + FMLNetworkHandler.openGui(player, AdvancedSatelliteUtilization.instance, ModGUIs.ADVANCEDWASTEHANDLERID, world, x, y, z); + return true; + } + return false; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(ModBlocks.AdvancedWasteHandler); + } + + @Override + public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { + return Item.getItemFromBlock(ModBlocks.AdvancedWasteHandler); + } + + public static void updateGenerator(World world, int x, int y, int z, boolean active) { + int meta = world.getBlockMetadata(x, y, z); + TileEntity te = (TileEntityAdvancedWasteHandler)world.getTileEntity(x, y, z); + + if (active) { + world.setBlock(x, y, z, ModBlocks.AdvancedWasteHandler_active); + } else { + world.setBlock(x, y, z, ModBlocks.AdvancedWasteHandler); + } + + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + + if (te != null) { + te.validate(); + world.setTileEntity(x, y, z, te); + } + } + + @Override + public void randomDisplayTick(World world, int x, int y, int z, Random r) { + if (active) { + for (int i = 0; i < 4; i++) { + world.spawnParticle("explode", x+0.4F, y+1.3F, z+0.55f, 0, 0.01F, 0); + } + } + super.randomDisplayTick(world, x, y, z, r); + } + +} diff --git a/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/tileentities/TileEntityAdvancedWasteHandler.java b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/tileentities/TileEntityAdvancedWasteHandler.java new file mode 100644 index 0000000..4a3c9f4 --- /dev/null +++ b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modblocks/tileentities/TileEntityAdvancedWasteHandler.java @@ -0,0 +1,46 @@ +package org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks.tileentities; + +import net.minecraft.init.Items; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks.AdvancedWasteHandler; +import org.bitbucket.alltra101ify.advancedsatelliteutilization.reference.moditemblockreference.TileEntityGenerator; + +public class TileEntityAdvancedWasteHandler extends TileEntityGenerator implements ISidedInventory { + int fuelqueue[] = new int[6]; + Item item[] = new Item[6]; + public TileEntityAdvancedWasteHandler() { + for (int i = 0; i < fuelqueue.length; i++) { + fuelqueue[i] = 5; + } + + item[0] = Items.bone; + item[1] = Items.clay_ball; + item[2] = Items.slime_ball; + item[3] = Items.egg; + item[4] = Items.feather; + item[5] = Items.rotten_flesh; + + this.ItemValidityByItem(item); + this.configureVars(fuelqueue); + + this.setSimple(); + + this.setMaxPower(1000); + this.configureVars(200); + setItems(new ItemStack[11]); + setUpgradeslotstart(8); + + setFuelConversionSpeed(0.25F); + } + + @Override + public void updateEntity() { + + AdvancedWasteHandler.updateGenerator(worldObj, xCoord, yCoord, zCoord, this.currentfuelqueue > 0 && this.currentfuelqueue <= 4 || this.currentcooldown > 0); + super.updateEntity(); + } + +} diff --git a/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modcontainers/ContainerAdvancedWasteHandler.java b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modcontainers/ContainerAdvancedWasteHandler.java new file mode 100644 index 0000000..12849f3 --- /dev/null +++ b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/modcontainers/ContainerAdvancedWasteHandler.java @@ -0,0 +1,52 @@ +package org.bitbucket.alltra101ify.advancedsatelliteutilization.modcontainers; + +import org.bitbucket.alltra101ify.advancedsatelliteutilization.modblocks.tileentities.TileEntityAdvancedWasteHandler; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerAdvancedWasteHandler extends Container { + public static byte input[] = new byte[11]; + public TileEntityAdvancedWasteHandler tileentity; + + public ContainerAdvancedWasteHandler(InventoryPlayer inventoryplayer, TileEntityAdvancedWasteHandler tileentity) { + this.tileentity = tileentity; + + for (int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(inventoryplayer, i, 8 + i * 18, 163)); + } + + for (byte i = 0; i < 3; i++) { + for (byte j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(inventoryplayer, 9 + j + i * 9, 8 + j * 18, 105 + i * 18)); + } + } + + for (int i = 0; i < input.length; i++) { + input[i] = (byte) i; + } + + for (int i = 8; i < input.length; i++) { + this.addSlotToContainer(new Slot(tileentity, input[i], 6 + (i-8)*26, 4)); + } + + for (int i = 0; i < 8; i++) { + this.addSlotToContainer(new Slot(tileentity, input[i], 6 + i*18, 25)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) { + // TODO Auto-generated method stub + return true; + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2SlotId) { + return null; + } + +} diff --git a/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/reference/moditemblockreference/TileEntityGenerator.java b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/reference/moditemblockreference/TileEntityGenerator.java new file mode 100644 index 0000000..aebd9c2 --- /dev/null +++ b/src/main/java/org/bitbucket/alltra101ify/advancedsatelliteutilization/reference/moditemblockreference/TileEntityGenerator.java @@ -0,0 +1,429 @@ +package org.bitbucket.alltra101ify.advancedsatelliteutilization.reference.moditemblockreference; + +import java.util.Random; + +import org.bitbucket.alltra101ify.advancedsatelliteutilization.moditems.ModItems; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +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.tileentity.TileEntity; + +public class TileEntityGenerator extends TileEntity implements ISidedInventory { + protected ItemStack[] items; + public boolean toggle, multiblock; + protected String customName; + public int maxpower, cooldown, currentcooldown, fuelqueue[], count, upgradeslotstart; + public float FuelConversionSpeed, currentfuelqueue, currentPower; + public float rotationX, rotationY, speed, speedSlower; + Item[] validItemByItem; + String validItemByString, particle; + protected int x, y, z; + @Override + public void updateEntity() { + if (currentcooldown != 0) { + currentcooldown--; + } + for (int i = upgradeslotstart; i < items.length; i++) { + if (items[i] != null) { + if (currentcooldown >= 1 && items[i].getItem() == ModItems.fanModule) { + currentcooldown--; + } else if (toggle && items[i].getItem() == ModItems.conversionSpeedUpgrade && currentfuelqueue >= 2) { + currentfuelqueue = currentfuelqueue - 2; + currentPower = currentPower + 2; + } + } + } + + + if (!multiblock && toggle) { + toggle = false; + } + + if (currentfuelqueue > maxpower) { + currentfuelqueue = maxpower; + } + + if (currentPower >= maxpower) { + currentPower = maxpower; + } + if (currentPower <= 0) { + currentPower = 0; + } + + if (toggle) { + for (int j = 0; j < upgradeslotstart; j++) { + //Register fuel and such using item and fuel index system + if (items[j] != null && this.validItemByItem != null) { + for (int i = 0; i < validItemByItem.length; i++) { + if (currentcooldown == 0 && currentfuelqueue <= maxpower - fuelqueue[i] && items[j].getItem() == validItemByItem[i]) { + if (items[j].stackSize == 1) { + this.items[j] = null; + } else { + items[j].splitStack(1); + if (this.items[j].stackSize == 0) { + this.items[j] = null; + + } + } + this.currentfuelqueue += fuelqueue[i]; + this.currentcooldown = cooldown; + } + } + } else + //Register fuel and such by default or customized index fuel + if (items[j] != null && this.validItemByString !=null) { + if (currentfuelqueue <= maxpower - fuelqueue[0] && currentcooldown == 0) { + if (items[j].stackSize == 1) { + this.items[j] = null; + } else { + items[j].splitStack(1); + if (this.items[j].stackSize == 0) { + this.items[j] = null; + } + } + this.currentfuelqueue += fuelqueue[0]; + this.currentcooldown = cooldown; + } + } + } + + if (currentfuelqueue > 0 && currentPower != maxpower) { + if (currentfuelqueue >= FuelConversionSpeed) { + currentfuelqueue -= FuelConversionSpeed; + currentPower += FuelConversionSpeed; + } else if (currentfuelqueue < FuelConversionSpeed && currentfuelqueue >= 1) { + currentfuelqueue --; + currentPower ++; + } else if (currentfuelqueue >= 0.05F) { + currentfuelqueue = currentfuelqueue - 0.05F; + currentPower = currentPower + 0.05F; + } + } + } + rotationY += speed; + if (rotationY > 6.3f) { + rotationY = 0f; + } + + rotationX += speedSlower; + if (rotationX >= 6.3f) { + rotationX = 0f; + } + + if (toggle && speed < 0.055f) { + speed += 0.0005f; + speedSlower += 0.00007f; + + } else if (toggle == false && speed > 0f) { + speed -= 0.0005f; + speedSlower -= 0.00007f; + + } + } + + public int powerScaled(int scale) { + return (int) (this.currentPower * scale / maxpower); + } + + public int genscaled(int scale) { + return (int) (this.currentfuelqueue * scale / maxpower); + } + + public int cooldownscaled(int scale) { + return (this.currentcooldown * scale / cooldown); + } + + public boolean humanInterface() { + for (int i = upgradeslotstart; i < items.length; i++) { + if (items[i] != null && items[i].getItem() == ModItems.humanInterfaceGate) { + return true; + } + } + return false; + } + + public void setUpgradeslotstart(int upgradeslotstart) { + this.upgradeslotstart = upgradeslotstart; + } + + public Packet getDescriptionPacket() { + NBTTagCompound tag = new NBTTagCompound(); + writeToNBT(tag); + + return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, tag); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + readFromNBT(pkt.func_148857_g()); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + @Override + public int getSizeInventory() { + + return this.items.length; + } + + @Override + public ItemStack getStackInSlot(int slotNumber) { + + return this.items[slotNumber]; + } + + @Override + public ItemStack decrStackSize(int slotNumber, int amountDecr) { + + if (this.items[slotNumber] != null) { + //how much is returned to the hand + ItemStack itemstack; + + if (this.items[slotNumber].stackSize <= amountDecr) { + itemstack = this.items[slotNumber]; + this.items[slotNumber] = null; + } else { + itemstack = items[slotNumber].splitStack(amountDecr); + if (this.items[slotNumber].stackSize == 0) { + this.items[slotNumber] = null; + } + } + + return itemstack; + } + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int p_70304_1_) { + + return null; + } + + public void setFuelConversionSpeed(float fuelConversionSpeed) { + FuelConversionSpeed = fuelConversionSpeed; + } + + @Override + public void setInventorySlotContents(int slotNumber, ItemStack itemstack) { + this.items[slotNumber] = itemstack; + if (itemstack != null + && itemstack.stackSize > this.getInventoryStackLimit()) { + itemstack.stackSize = this.getInventoryStackLimit(); + } + } + + protected void setCustomInventoryName(String customName) { + + this.customName = customName; + + } + + @Override + public boolean hasCustomInventoryName() { + boolean customname = false; + if (customName != null) { + customname = true; + } + return customname; + } + + @Override + public int getInventoryStackLimit() { + + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer p_70300_1_) { + + return true; + } + + @Override + public void openInventory() { + + } + + @Override + public void closeInventory() { + + } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + + return null; + } + + @Override + public boolean canInsertItem(int p_1020071_, ItemStack p_102007_2_, + int p_102007_3_) { + + return false; + } + + @Override + public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_, + int p_102008_3_) { + + return false; + } + + @Override + public String getInventoryName() { + return null; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemstack) { + return isItemValidForFuelSlot(itemstack); + } + + public boolean isItemValidForFuelSlot(ItemStack itemstack) { + boolean itemvalid = false; + if (this.validItemByString != null && itemstack.getItem().getUnlocalizedName().toLowerCase().contains(this.validItemByString)) { + itemvalid = true; + } else if (this.validItemByItem != null) { + for (int i1 = 0; i1 < this.validItemByItem.length; i1++) { + if (itemstack.getItem().equals(this.validItemByItem[i1])) { + itemvalid = true; + break; + } + } + } + + return itemvalid; + } + + + /** + * @param fuelqueue how much more fuel do we give? + * @param maxpower self-explanatory + * @param cooldown cool down time to transfer next item to fuel (in ticks) + */ + public void configureVars(int[] fuelqueue, int maxpower, int cooldown) { + this.fuelqueue = fuelqueue; + this.maxpower = maxpower; + this.cooldown = cooldown; + } + + public void configureVars (int[] fuelqueue) { + this.fuelqueue = fuelqueue; + } + + public void configureVars (int cooldown) { + this.cooldown = cooldown; + } + + public void setItems(ItemStack[] items) { + this.items = items; + } + + public void setMaxPower (int maxpower) { + this.maxpower = maxpower; + } + public void ItemValidityByItem(Item[] item) { + this.validItemByItem = item; + } + /** + * + * @param string (should only be used for testing as there is very little control) Sets what is valid by name of item. + */ + public void itemValidityByString(String string) { + this.validItemByString = string; + } + + public int RetrievePower (int amountofpower) { + if (currentPower >= amountofpower) { + currentPower = currentPower - amountofpower; + } + return amountofpower; + } + + public void setCoords(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + public void setParticle(String particle) { + this.particle = particle; + } + + @Override + public void writeToNBT(NBTTagCompound var1) { + var1.setFloat("rotationY", this.rotationY); + var1.setFloat("rotationX", this.rotationX); + var1.setFloat("speed", this.speed); + var1.setBoolean("toggle", this.toggle); + var1.setFloat("speedSlower", this.speedSlower); + var1.setBoolean("multiblock", this.multiblock); + var1.setFloat("currentPower", this.currentPower); + var1.setFloat("Fuel", this.currentfuelqueue); + var1.setInteger("currentCooldown", this.currentcooldown); + var1.setInteger("cooldown", this.cooldown); + + NBTTagList slots = new NBTTagList(); + for (int i = 0; i < items.length; i++) { + if (this.items[i] != null) { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("itemPos", (byte) i); + this.items[i].writeToNBT(item); + slots.appendTag(item); + } + } + + if (this.hasCustomInventoryName()) { + var1.setString("customName", this.customName); + } + var1.setTag("items", slots); + super.writeToNBT(var1); + + } + + @Override + public void readFromNBT(NBTTagCompound var1) { + this.rotationY = var1.getFloat("rotationY"); + this.rotationX = var1.getFloat("rotationX"); + this.speed = var1.getFloat("speed"); + this.toggle = var1.getBoolean("toggle"); + this.speedSlower = var1.getFloat("speedSlower"); + this.currentPower = var1.getFloat("currentPower"); + this.multiblock = var1.getBoolean("multiblock"); + this.currentfuelqueue = var1.getFloat("Fuel"); + this.currentcooldown = var1.getInteger("currentCooldown"); + this.cooldown = var1.getInteger("cooldown"); + + NBTTagList slots = var1.getTagList("items", 10); + this.items = new ItemStack[getSizeInventory()]; + + for (int i = 0; i < slots.tagCount(); i++) { + NBTTagCompound item = slots.getCompoundTagAt(i); + byte itemPos = item.getByte("itemPos"); + + if (itemPos >= 0 && itemPos < this.items.length) { + this.items[itemPos] = ItemStack.loadItemStackFromNBT(item); + } + + if (var1.hasKey("customName")) { + this.setCustomInventoryName(var1.getString("customName")); + } + + } + + super.readFromNBT(var1); + } + + public void setSimple() { + this.multiblock = true; + this.toggle = true; + } + +} \ No newline at end of file diff --git a/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_bottom.png b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..80d6bde8d61808f29afb6bf86398a927f5b5f81b GIT binary patch literal 2025 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 Rl%oIu002ovPDHLkV1gd7#%%xq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_sides.png b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_false_sides.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2577fb6e83c946b42f3e5083daeda19a12bb77 GIT binary patch literal 2120 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_sides.png.mcmeta b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_sides.png.mcmeta new file mode 100644 index 0000000..824bb0e --- /dev/null +++ b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_sides.png.mcmeta @@ -0,0 +1,9 @@ +{ + "animation":{ + "width":32, + "height":32, + "interpolate": true, + "frametime":2, + "frames":[0,1,2,3,4,5,6,7,8,9,10,11,10,9,8,7,6,4,2,1,0] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5e27aafd5f5f0adf9a2caed0689a2b10da35f3a0 GIT binary patch literal 2809 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%0DR7q`NM1fV7-}s_GMkG@u~Eb6 z_V6~rRaH-=S;5Fj?3NZ1IvSHeM-!l8q!edzIs}gt)2>i4`((ovdl2K5)eSdO+8MD;Mb|1S*`b?+ez)7zl}JVGT^^Q$%-V)6#Xwb=w`DWq}6o*ae4FG zg+`{t+LyVTcK*~)xyaAbXufZD>Ei(fNux5(Sc!B{+62=71A|yF9RL6T literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png.mcmeta b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png.mcmeta new file mode 100644 index 0000000..224af3d --- /dev/null +++ b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/AdvancedWasteHandler_true_top.png.mcmeta @@ -0,0 +1,9 @@ +{ + "animation":{ + "width":32, + "height":32, + "interpolate": true, + "frametime":2, + "frames":[0,1,2,3,4,5,6,7,8,9,10,11,11,10,9,8,7,6,4,2,1,0] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/BlockOfASHAD.png b/src/main/resources/assets/asu/textures/blocks/AdvancedWasteHandler/BlockOfASHAD.png new file mode 100644 index 0000000000000000000000000000000000000000..3b170be750bdee160e30a26f3df73608ab865ac4 GIT binary patch literal 2094 zcmV+}2+{Y6P)NklPS65dzH#h&;O0l-K77PYG9?$CPs(aPl zuj;R67M7Nl-oJle zT_qei9FEJ&%frKiY&NsLzMf1b6~REj@AFBLxZlY!H=Vk>5_h^P16w;9;&7Z(@%2m9$vn(*T| z2(N`h!H~C9qE(erg#&sZxm-8b*GGk;-JRWRE=!>>h{a-*)F1GB+#bm#5yZ-hjk5Ii z_EuF@;b2vge*N|4`1ojhdkYh)q!`o>>UDaJTHRk`<{ zOiWCeOeUkzI5adgpc~MrHFT@Dx38zCSE*FKdGn^MtgNoCj$52g$Nc>KHtgo*x9j&b;*P0r!xwFEDY}MG<(9+WK z{P}YQ<(3y;pFMlVhOhkg`0?Y19Iq?>Q&(5{pi;i#(W6KFD&HcT5CI!LHa9ob*FVA^ z!9BP=udvzamH-@i&CJY9PfuH|BD>Mi(c$4?ywSK|&1R>1 zvoo_(QYIU)bN0b{q<>(%M>WGNiv3;BbC z0|=GPW`R6ViAE!9YauRPb-Nw3%;9jkoXWmFxQY#E{`BcnK3~|{Dqan=xElBh0!j{t z9c0<^+!A9w9+xDo*z5oigWldA*}-qPDgsKxGc2%7g$~B?liro)nIb_C*rAnG81T_=rRz5Rgn=E(nMt2?KfBz_QPuKcAd@+}+#D zZEbCAY{nDGNH`*Vc--Vl1Y`-~!HaP4VPRozetvppW^!`MY!>Yr8ylm;v{$Rqkf~Cs z;`F0%t|2 z$$00#MZh%!m?F$se~on63KIa$1`|RC)+CC}-FXE+v!IW>Dl7jXf4{@KOc6HlqqVh# z3vbCG7|LSz;K2jgiW}e~hw<0e*4EzMuCQ9cv3bl$S&aPs>*t?wjt%e!piCR8F*`dq zJv}ouH7!n#84ZSE<_iNutq}u8t=4pO{IjgAoR|g&2SGNVzzSl`&CMxtxon2X7YCi- zEjBnbL_zTH^ZCDh`^IQI0s{L#AdpDJ!7&oz^?9XLMj{YcrB78=)nv@=umqSD3I)Kq zv$L&0NiYcb0vwFKlH%gakki;LhA!C{(G z7pKd0C0LTr<#I#=0TtnJI1~zr@mpMAKz0DwE-$YR4-ZK(y|I}}rlQfP%x%bua-ca# zjjU+h-QBVSigS)0?C-;>k{-n3F;Fke+#WElQVBhvMBMV_%NInA(>vSS*-VzCLpz1H*`c5wF#1)%~JlZ{MN^VzTpvgb0!L zPFg3e7BK-CY2Y3G5ESVz=>bW@9hNXJ9Qj)K_jj9=bMvI9wSU0;97 z7YezY0Aezcj7Flt5XAP~0$1pPN~tV4I5|BbSwxNZPcAExNMI9Wd2&|C-KrKmW;o9_wK`uFEqoWFnnzHspWT?)m2 Y0bM+1?O<6w3;+NC07*qoM6N<$f)&K~82|tP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/asu/textures/gui/GuiAdvancedWasteHandler.png b/src/main/resources/assets/asu/textures/gui/GuiAdvancedWasteHandler.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfb989da6c70897617552135c77d4cafa08fa06 GIT binary patch literal 2580 zcmeHIdr*_t65lTnlu$y@h!qeK5rVJ!KpAnMi3J3K7(o!OiagCv=ZpsK-U3k0IURj8*m-q2B0ZGO+YsTQURs_-vitX zSOusRP&=RwK%Icw0e1lI0@Mwt7tp@|JpkMTxEJvEfFA(r2lNoo0HDW!G=PQx4Fehh zGzRDypyz-l0lfq?4QK|?Ye4@2gy0Q^H(JQf&Q_^ZI-QPT;4k^pGEkSgNj3XW68yye z%rg9$1^j=Wvz%E3L#bzQJOHwiN;vy5Q z9oMW~vk8Cxp&Edl!j zy0nwX1KG5ljOZHcxVd38rO)#Hb@62#cZwF}*oT@_$L4W^zpPK8M}E4l)BZC0H2ba& zy~4yP7nG5E8g=p&GXZaM#BuW~U z?5^)KPKc?0Z}Am(fi~pH&f=DP_d<)v+!sr{O!^0P(vOt2RYRGSjo+ab!@LNwg=etn zD|43;!=uw#q<+?G+hySu*227=D-}Lo!T6z7_ ze9guk#M5PI*Ghw3r|omiU2f~+APZKD{m*Vx`TWY84MS?Z_7mL&B~dw6^OLB=AL50N z^#*uB95d^4waa|f<}RPui4qs~Z|PTeouD30A5@Z^;0s%z*;f7 zEvMF1VaFL{g(P+m)$>k!N#bND+)V_5>E79Wc?Y-TSZT^jldqK?JD%vvzpY>Q$mCM; zKMt6*#?*Ii4%xV~u$El+w~F{vJAC;ER?9`JzcsL8f;Y(T!kaD|q=r`%2|5C)1)s76 zFz4eLyGFa5MInVTS;NjB5{0eaouhkfYW;xC-<&HV_@QoO#NmA;d1+ii-P6=tS@#8g zVZmy3m^=J%`;mO>BOF$3%~pahe5=x9viOGOUyR4H_licA!5+UxrD|yHXEnBsXZ1sQ znM2~9(OdJKm#`(keI^06Qn#MBfFmc3h;q?}g=GKsp0afU;clwHoOOdqOW@&RV~!j+ zR}7VPo1bPSyKrTKRE5(sR=DY_y&nrm)`&ekDhz9Wy>>TIsFYDxin{E_1T*HRZKBCD7KjMH7n)nREH4D>|-3|JO-=ZtWv(z+CurtPL@u_ zlJTX&8GH^F8MH|po$WZKK1Lj&qY>M>D1*iOb}RAO0aGF<;xd>o&L3_Fv)ME`A$2}` z--$9dWv1B++OYi@L#1q+z@r7xMpVW6?fmzxF6=jC2KrUygFSCMnH`SNmv2treeAhYGhm3W zVMl+`2zSG_YBd86JQp376--^IclZs;E`Zxj30w>oK+h^Z8Ey7|jQ$a6^X1=Y=X7-U Vx%dvYQM3QJm%G@ld~0a>e*xz?3$XwI literal 0 HcmV?d00001